267654 |
20-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
264735 |
21-Apr-2014 |
sbruno |
MFC r264127
Add PCI-IDs for TBD Gen9 RAID controller HBAs from HP to ciss(4)
Submitted by: Benesh, Scott <scott.benesh@hp.com> Sponsored by: Yahoo! Inc.
|
264511 |
15-Apr-2014 |
sbruno |
MFC r264354 but change the lock arg and implementation to fit the current state of CAM in stable/9
Fix insta-panic on assert of unlocked periph mtx in ciss(4) when logical volume state changes.
I'm still setting the mergeinfo as done here as the intent of the MFC, if not the EXACT code is being implemented.
Reviewed by: mav@ Sponsored by: Yahoo! Inc
|
255432 |
09-Sep-2013 |
sbruno |
MFC r253980 - new pciids for ciss(4) support
|
253160 |
10-Jul-2013 |
sbruno |
Jump on the 9.2r MFC bonanza and update ciss(4)
r250031 - zero a data structure for notifications
r250022 r249977 r249947 r249908 - handle cases of controllers advertising an sg_list of less than CISS_MAX_SG_ELEMENTS. Fixes ciss(4) ZMR cases.
|
253037 |
08-Jul-2013 |
mav |
MFC r249468: Stop abusing xpt_periph in random plases that really have no periph related to CCB, for example, bus scanning. NULL value is fine in such cases and it is correctly logged in debug messages as "noperiph". If at some point we need some real XPT periphs (alike to pmpX now), quite likely they will be per-bus, and not a single global instance as xpt_periph now.
|
251874 |
18-Jun-2013 |
scottl |
Big MFC of the physbio changes necessary for unmapped I/O. These changes have been in production at Netflix for several months with significant success.
MFC r246713:
Reform the busdma API so that new types may be added without modifying every architecture's busdma_machdep.c. It is done by unifying the bus_dmamap_load_buffer() routines so that they may be called from MI code. The MD busdma is then given a chance to do any final processing in the complete() callback.
MFC r249538: Some compilers issue a warning when wider integer is casted to narrow pointer. Supposedly shut down the warning by casting through uintptr_t.
MFC r251479: Simplify the checking of flags for cam_periph_mapmem(). This gets rid of a lot of code redundancy and grossness at very minor expense.
MFC r251837: MFC r251842: Add infrastructure for doing compatibility shims, as has been sorely needed for the last 10 years. Far too much of the internal API is exposed, and every small adjustment causes applications to stop working. To kick this off, bump the API version to 0x17 as should have been done with r246713, but add shims to compensate. Thanks to the shims, there should be no visible change in application behavior.
Submitted by: kib, jeffr Approved by: kib Obtained from: Netflix
|
250367 |
08-May-2013 |
sbruno |
MFC r249815
Return a lun count of 1 and a lun id of 0 when CAM attempts a REPORT_LUNS command on a disk device. This quieseces some noise on the console that recently appeared.
|
249898 |
25-Apr-2013 |
sbruno |
MFC r249349
Repair camcontrol output and use CAM defined values for string sizes
|
249635 |
19-Apr-2013 |
sbruno |
MFC r249170
Notify CAM on state* change to a logical volume not status. This resolves the issues reported regarding camcontrol devlist not showing the rebuild states of volumes unless an explicit camcontrol rescan was executed.
|
249455 |
14-Apr-2013 |
sbruno |
MFC r248824 & r248826
Fix compile with CISS_DEBUG defined
Fix DDB hook to actually work again
|
249132 |
05-Apr-2013 |
mav |
MFC r227293 (by ed): Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.
This means that their use is restricted to a single C file.
|
248494 |
19-Mar-2013 |
sbruno |
MFC r247279
The 5300 series ciss(4) board does not work in performant mode with our currnet initialization sequence. Set it to simple mode only so that systems can be updated from stable/7 to newer installations.
At some point, we should figure out why we cannot initialize performant mode on this board.
PR: kern/153361 Reviewed by: scottl Obtained from: Yahoo! Inc.
|
246152 |
31-Jan-2013 |
sbruno |
MFC r245459
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.
|
242548 |
04-Nov-2012 |
peter |
MFC r242089: limit of 15 -> 63 logical volumes
|
235743 |
21-May-2012 |
jhb |
Toss bogus mergeinfo.
|
235738 |
21-May-2012 |
sbruno |
MFC r235634
Fix and update battery status bits according to linux driver
|
233024 |
16-Mar-2012 |
scottl |
MFC 232854,232874,232882,232883,232886 for bus_get_dma_tag()
|
231772 |
15-Feb-2012 |
ken |
MFC r229997, r230033, and r230334
Bring the CAM Target Layer into stable/9.
r230334 | ken | 2012-01-19 11:42:03 -0700 (Thu, 19 Jan 2012) | 19 lines
Quiet some clang warnings when compiling CTL.
ctl_error.c, ctl_error.h: Take out the ctl_sense_format enumeration, and use scsi_sense_data_type instead.
Remove ctl_get_sense_format() and switch ctl_build_ua() over to using scsi_sense_data_type.
ctl_backend_ramdisk.c, ctl_backend_block.c: Use C99 structure initializers instead of GNU initializers.
ctl.c: Switch over to using the SCSI sense format enumeration instead of the CTL-specific enumeration.
Submitted by: dim (partially) MFC after: 1 month
r230033 | ken | 2012-01-12 15:08:33 -0700 (Thu, 12 Jan 2012) | 5 lines
Silence some unnecessary verbosity.
Reported by: mav MFC after: 1 month
r229997 | ken | 2012-01-11 17:34:33 -0700 (Wed, 11 Jan 2012) | 170 lines
Add the CAM Target Layer (CTL).
CTL is a disk and processor device emulation subsystem originally written for Copan Systems under Linux starting in 2003. It has been shipping in Copan (now SGI) products since 2005.
It was ported to FreeBSD in 2008, and thanks to an agreement between SGI (who acquired Copan's assets in 2010) and Spectra Logic in 2010, CTL is available under a BSD-style license. The intent behind the agreement was that Spectra would work to get CTL into the FreeBSD tree.
Some CTL features:
- Disk and processor device emulation. - Tagged queueing - SCSI task attribute support (ordered, head of queue, simple tags) - SCSI implicit command ordering support. (e.g. if a read follows a mode select, the read will be blocked until the mode select completes.) - Full task management support (abort, LUN reset, target reset, etc.) - Support for multiple ports - Support for multiple simultaneous initiators - Support for multiple simultaneous backing stores - Persistent reservation support - Mode sense/select support - Error injection support - High Availability support (1) - All I/O handled in-kernel, no userland context switch overhead.
(1) HA Support is just an API stub, and needs much more to be fully functional.
ctl.c: The core of CTL. Command handlers and processing, character driver, and HA support are here.
ctl.h: Basic function declarations and data structures.
ctl_backend.c, ctl_backend.h: The basic CTL backend API.
ctl_backend_block.c, ctl_backend_block.h: The block and file backend. This allows for using a disk or a file as the backing store for a LUN. Multiple threads are started to do I/O to the backing device, primarily because the VFS API requires that to get any concurrency.
ctl_backend_ramdisk.c: A "fake" ramdisk backend. It only allocates a small amount of memory to act as a source and sink for reads and writes from an initiator. Therefore it cannot be used for any real data, but it can be used to test for throughput. It can also be used to test initiators' support for extremely large LUNs.
ctl_cmd_table.c: This is a table with all 256 possible SCSI opcodes, and command handler functions defined for supported opcodes.
ctl_debug.h: Debugging support.
ctl_error.c, ctl_error.h: CTL-specific wrappers around the CAM sense building functions.
ctl_frontend.c, ctl_frontend.h: These files define the basic CTL frontend port API.
ctl_frontend_cam_sim.c: This is a CTL frontend port that is also a CAM SIM. This frontend allows for using CTL without any target-capable hardware. So any LUNs you create in CTL are visible in CAM via this port.
ctl_frontend_internal.c, ctl_frontend_internal.h: This is a frontend port written for Copan to do some system-specific tasks that required sending commands into CTL from inside the kernel. This isn't entirely relevant to FreeBSD in general, but can perhaps be repurposed.
ctl_ha.h: This is a stubbed-out High Availability API. Much more is needed for full HA support. See the comments in the header and the description of what is needed in the README.ctl.txt file for more details.
ctl_io.h: This defines most of the core CTL I/O structures. union ctl_io is conceptually very similar to CAM's union ccb.
ctl_ioctl.h: This defines all ioctls available through the CTL character device, and the data structures needed for those ioctls.
ctl_mem_pool.c, ctl_mem_pool.h: Generic memory pool implementation used by the internal frontend.
ctl_private.h: Private data structres (e.g. CTL softc) and function prototypes. This also includes the SCSI vendor and product names used by CTL.
ctl_scsi_all.c, ctl_scsi_all.h: CTL wrappers around CAM sense printing functions.
ctl_ser_table.c: Command serialization table. This defines what happens when one type of command is followed by another type of command.
ctl_util.c, ctl_util.h: CTL utility functions, primarily designed to be used from userland. See ctladm for the primary consumer of these functions. These include CDB building functions.
scsi_ctl.c: CAM target peripheral driver and CTL frontend port. This is the path into CTL for commands from target-capable hardware/SIMs.
README.ctl.txt: CTL code features, roadmap, to-do list.
usr.sbin/Makefile: Add ctladm.
ctladm/Makefile, ctladm/ctladm.8, ctladm/ctladm.c, ctladm/ctladm.h, ctladm/util.c: ctladm(8) is the CTL management utility. It fills a role similar to camcontrol(8). It allow configuring LUNs, issuing commands, injecting errors and various other control functions.
usr.bin/Makefile: Add ctlstat.
ctlstat/Makefile ctlstat/ctlstat.8, ctlstat/ctlstat.c: ctlstat(8) fills a role similar to iostat(8). It reports I/O statistics for CTL.
sys/conf/files: Add CTL files.
sys/conf/NOTES: Add device ctl.
sys/cam/scsi_all.h: To conform to more recent specs, the inquiry CDB length field is now 2 bytes long.
Add several mode page definitions for CTL.
sys/cam/scsi_all.c: Handle the new 2 byte inquiry length.
sys/dev/ciss/ciss.c, sys/dev/ata/atapi-cam.c, sys/cam/scsi/scsi_targ_bh.c, scsi_target/scsi_cmds.c, mlxcontrol/interface.c: Update for 2 byte inquiry length field.
scsi_da.h: Add versions of the format and rigid disk pages that are in a more reasonable format for CTL.
amd64/conf/GENERIC, i386/conf/GENERIC, ia64/conf/GENERIC, sparc64/conf/GENERIC: Add device ctl.
i386/conf/PAE: The CTL frontend SIM at least does not compile cleanly on PAE.
Sponsored by: Copan Systems, SGI and Spectra Logic MFC after: 1 month
|
231030 |
05-Feb-2012 |
sbruno |
MFC r230313, r230316, r230323, r230588
Support new raid controllers
|
226067 |
06-Oct-2011 |
ken |
MFC r225950:
Add descriptor sense support to CAM, and honor sense residuals properly in CAM.
Desriptor sense is a new sense data format that originated in SPC-3. Among other things, it allows for an 8-byte info field, which is necessary to pass back block numbers larger than 4 bytes.
This change adds a number of new functions to scsi_all.c (and therefore libcam) that abstract out most access to sense data.
This includes a bump of CAM_VERSION, because the CCB ABI has changed. Userland programs that use the CAM pass(4) driver will need to be recompiled.
camcontrol.c: Change uses of scsi_extract_sense() to use scsi_extract_sense_len().
Use scsi_get_sks() instead of accessing sense key specific data directly.
scsi_modes: Update the control mode page to the latest version (SPC-4).
scsi_cmds.c, scsi_target.c: Change references to struct scsi_sense_data to struct scsi_sense_data_fixed. This should be changed to allow the user to specify fixed or descriptor sense, and then use scsi_set_sense_data() to build the sense data.
ps3cdrom.c: Use scsi_set_sense_data() instead of setting sense data manually.
cam_periph.c: Use scsi_extract_sense_len() instead of using scsi_extract_sense() or accessing sense data directly.
cam_ccb.h: Bump the CAM_VERSION from 0x15 to 0x16. The change of struct scsi_sense_data from 32 to 252 bytes changes the size of struct ccb_scsiio, but not the size of union ccb. So the version must be bumped to prevent structure mis-matches.
scsi_all.h: Lots of updated SCSI sense data and other structures.
Add function prototypes for the new sense data functions.
Take out the inline implementation of scsi_extract_sense(). It is now too large to put in a header file.
Add macros to calculate whether fields are present and filled in fixed and descriptor sense data
scsi_all.c: In scsi_op_desc(), allow the user to pass in NULL inquiry data, and we'll assume a direct access device in that case.
Changed the SCSI RESERVED sense key name and description to COMPLETED, as it is now defined in the spec.
Change the error recovery action for a number of read errors to prevent lots of retries when the drive has said that the block isn't accessible. This speeds up reconstruction of the block by any RAID software running on top of the drive (e.g. ZFS).
In scsi_sense_desc(), allow for invalid sense key numbers. This allows calling this routine without checking the input values first.
Change scsi_error_action() to use scsi_extract_sense_len(), and handle things when invalid asc/ascq values are encountered.
Add a new routine, scsi_desc_iterate(), that will call the supplied function for every descriptor in descriptor format sense data.
Add scsi_set_sense_data(), and scsi_set_sense_data_va(), which build descriptor and fixed format sense data. They currently default to fixed format sense data.
Add a number of scsi_get_*() functions, which get different types of sense data fields from either fixed or descriptor format sense data, if the data is present.
Add a number of scsi_*_sbuf() functions, which print formatted versions of various sense data fields. These functions work for either fixed or descriptor sense.
Add a number of scsi_sense_*_sbuf() functions, which have a standard calling interface and print the indicated field. These functions take descriptors only.
Add scsi_sense_desc_sbuf(), which will print a formatted version of the given sense descriptor.
Pull out a majority of the scsi_sense_sbuf() function and put it into scsi_sense_only_sbuf(). This allows callers that don't use struct ccb_scsiio to easily utilize the printing routines. Revamp that function to handle descriptor sense and use the new sense fetching and printing routines.
Move scsi_extract_sense() into scsi_all.c, and implement it in terms of the new function, scsi_extract_sense_len(). The _len() version takes a length (which should be the sense length - residual) and can indicate which fields are present and valid in the sense data.
Add a couple of new scsi_get_*() routines to get the sense key, asc, and ascq only.
mly.c: Rename struct scsi_sense_data to struct scsi_sense_data_fixed.
sbp_targ.c: Use the new sense fetching routines to get sense data instead of accessing it directly.
sbp.c: Change the firewire/SCSI sense data transformation code to use struct scsi_sense_data_fixed instead of struct scsi_sense_data. This should be changed later to use scsi_set_sense_data().
ciss.c: Calculate the sense residual properly. Use scsi_get_sense_key() to fetch the sense key.
mps_sas.c, mpt_cam.c: Set the sense residual properly.
iir.c: Use scsi_set_sense_data() instead of building sense data by hand.
iscsi_subr.c: Use scsi_extract_sense_len() instead of grabbing sense data directly.
umass.c: Use scsi_set_sense_data() to build sense data.
Grab the sense key using scsi_get_sense_key().
Calculate the sense residual properly.
isp_freebsd.h: Use scsi_get_*() routines to grab asc, ascq, and sense key values.
Calculate and set the sense residual.
Approved by: re (kib) Sponsored by: Spectra Logic Corporation
|
225736 |
23-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
213354 |
02-Oct-2010 |
kib |
Cosmetic: make it less confusing when displaying RAID 1 level, that might be 1+0 as well.
PR: kern/150936 MFC after: 2 weeks
|
207335 |
28-Apr-2010 |
jhb |
Initialize the callout structure earlier in attach before calling any routines that can fail since ciss_free() always tries to stop and drain the callout.
|
204648 |
03-Mar-2010 |
mav |
Several changes to fix livelock under high load, introduced by r203489: - change the way in which command queue overflow is handled; - do not expose to CAM two command slots, used for driver's internal purposes; - allow driver to use up to 1024 command slots, instead of 256 before.
|
203524 |
05-Feb-2010 |
mav |
When hacking INQUIRY result, make sure that it is right INQUIRY and there is enough of result to hack.
|
203489 |
04-Feb-2010 |
mav |
Return CAM_RELEASE_SIMQ flag only when it is needed, when SIM really was frozen before and should be released.
|
203108 |
28-Jan-2010 |
mav |
MFp4: Large set of CAM inprovements.
- Unify bus reset/probe sequence. Whenever bus attached at boot or later, CAM will automatically reset and scan it. It allows to remove duplicate code from many drivers. - Any bus, attached before CAM completed it's boot-time initialization, will equally join to the process, delaying boot if needed. - New kern.cam.boot_delay loader tunable should help controllers that are still unable to register their buses in time (such as slow USB/ PCCard/ CardBus devices), by adding one more event to wait on boot. - To allow synchronization between different CAM levels, concept of requests priorities was extended. Priorities now split between several "run levels". Device can be freezed at specified level, allowing higher priority requests to pass. For example, no payload requests allowed, until PMP driver enable port. ATA XPT negotiate transfer parameters, periph driver configure caching and so on. - Frozen requests are no more counted by request allocation scheduler. It fixes deadlocks, when frozen low priority payload requests occupying slots, required by higher levels to manage theit execution. - Two last changes were holding proper ATA reinitialization and error recovery implementation. Now it is done: SATA controllers and Port Multipliers now implement automatic hot-plug and should correctly recover from timeouts and bus resets. - Improve SCSI error recovery for devices on buses without automatic sense reporting, such as ATAPI or USB. For example, it allows CAM to wait, while CD drive loads disk, instead of immediately return error status. - Decapitalize diagnostic messages and make them more readable and sensible. - Teach PMP driver to limit maximum speed on fan-out ports. - Make boot wait for PMP scan completes, and make rescan more reliable. - Fix pass driver, to return CCB to user level in case of error. - Increase number of retries in cd driver, as device may return several UAs.
|
200637 |
17-Dec-2009 |
gavin |
Don't panic due to unlocking an unowned mutex if we fail during attach.
PR: kern/139053 Reviewed by: scottl Approved by: ed (mentor) MFC after: 2 weeks
|
197263 |
16-Sep-2009 |
scottl |
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.
|
197262 |
16-Sep-2009 |
scottl |
Fix locking around copyout() operations.
|
197261 |
16-Sep-2009 |
scottl |
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.
|
197260 |
16-Sep-2009 |
scottl |
Increase CISS_MAX_PHYSTGT to 256 so that it matches what the controller might give us. Without this, certain data structures get sized incorrectly, leading to a panic on certain cards that want to use high-value target numbers.
|
195776 |
20-Jul-2009 |
scottl |
Fix an apparently harmless typo.
Approved by: re
|
195663 |
13-Jul-2009 |
scottl |
Revert the CISS driver to 64K i/o, the previous change was in error and missing a lot of needed infrastructure.
Approved by: re
|
195534 |
10-Jul-2009 |
scottl |
Separate the parallel scsi knowledge out of the core of the XPT, and modularize it so that new transports can be created.
Add a transport for SATA
Add a periph+protocol layer for ATA
Add a driver for AHCI-compliant hardware.
Add a maxio field to CAM so that drivers can advertise their max I/O capability. Modify various drivers so that they are insulated from the value of MAXPHYS.
The new ATA/SATA code supports AHCI-compliant hardware, and will override the classic ATA driver if it is loaded as a module at boot time or compiled into the kernel. The stack now support NCQ (tagged queueing) for increased performance on modern SATA drives. It also supports port multipliers.
ATA drives are accessed via 'ada' device nodes. ATAPI drives are accessed via 'cd' device nodes. They can all be enumerated and manipulated via camcontrol, just like SCSI drives. SCSI commands are not translated to their ATA equivalents; ATA native commands are used throughout the entire stack, including camcontrol. See the camcontrol manpage for further details. Testing this code may require that you update your fstab, and possibly modify your BIOS to enable AHCI functionality, if available.
This code is very experimental at the moment. The userland ABI/API has changed, so applications will need to be recompiled. It may change further in the near future. The 'ada' device name may also change as more infrastructure is completed in this project. The goal is to eventually put all CAM busses and devices until newbus, allowing for interesting topology and management options.
Few functional changes will be seen with existing SCSI/SAS/FC drivers, though the userland ABI has still changed. In the future, transports specific modules for SAS and FC may appear in order to better support the topologies and capabilities of these technologies.
The modularization of CAM and the addition of the ATA/SATA modules is meant to break CAM out of the mold of being specific to SCSI, letting it grow to be a framework for arbitrary transports and protocols. It also allows drivers to be written to support discrete hardware without jeopardizing the stability of non-related hardware. While only an AHCI driver is provided now, a Silicon Image driver is also in the works. Drivers for ICH1-4, ICH5-6, PIIX, classic IDE, and any other hardware is possible and encouraged. Help with new transports is also encouraged.
Submitted by: scottl, mav Approved by: re
|
192450 |
20-May-2009 |
imp |
We no longer need to use d_thread_t, migrate to struct thread *.
|
192361 |
19-May-2009 |
scottl |
Updated PCI ID's from the vendor
|
188845 |
20-Feb-2009 |
scottl |
Tell CAM that CISS logical devices support tagged queueing. This fixes the low "max device openings" count that has led to poor performance in FreeBSD 7.0 and 7.1
|
182422 |
29-Aug-2008 |
scottl |
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.
|
181177 |
02-Aug-2008 |
scottl |
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.
|
180454 |
11-Jul-2008 |
scottl |
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.
|
179705 |
10-Jun-2008 |
ps |
Add support for the P212, P410, P410i, P411, and P812 HP Smart Array controllers.
Submitted by: Scott Benesh at HP
|
179041 |
16-May-2008 |
ps |
Remove a check that didn't allow > 12 byte CDB's to be issued to ciss. This should allow volumes > 2TB to work.
Reported by: Emil Mikulic
|
176136 |
10-Feb-2008 |
iwasaki |
Add `hw.ciss.nop_message_heartbeat' tunable (default disabled) for NOP-message polling in ciss_periodic(). Note that setting the tunable to non-zero can be workaround only for `ADAPTER HEARTBEAT FAILED' problem, and may freeze the system w/o the problem.
Reviewed by: scottl Reported by: Attila Nagy MFC after: 3 days
|
175762 |
28-Jan-2008 |
iwasaki |
Don't repeat error logging about NOP message sending if ciss_report_request() return an error (which is most likely data underrun).
Noticed by: Mark Atkinson MFC after: 1 week
|
173366 |
05-Nov-2007 |
iwasaki |
Fix NOP message sending in ciss_periodic() which causes panic with option INVARIANTS.
Reviewed by: simokawa Tested by: noriyosi_kawano MFC after: 1 week
|
172836 |
20-Oct-2007 |
julian |
Rename the kthread_xxx (e.g. kthread_create()) calls to kproc_xxx as they actually make whole processes. Thos makes way for us to add REAL kthread_create() and friends that actually make theads. it turns out that most of these calls actually end up being moved back to the thread version when it's added. but we need to make this cosmetic change first.
I'd LOVE to do this rename in 7.0 so that we can eventually MFC the new kthread_xxx() calls.
|
172608 |
13-Oct-2007 |
iwasaki |
Add NOP-message polling to ciss_periodic(). Disable adapter by detecting adapter is dead.
Tested by: Masaki YATSU(on RELENG_6) Reviewed by: scottl MFC after: 1 week
|
172590 |
12-Oct-2007 |
scottl |
Fix a mistake made in the MPSAFE commit that caused CAM to serialize requests to the controller.
|
170872 |
17-Jun-2007 |
scottl |
Prepare for future integration between CAM and newbus. xpt_bus_register now takes a device_t to be the parent of the bus that is being created. Most SIMs have been updated with a reasonable argument, but a few exceptions just pass NULL for now. This argument isn't used yet and the newbus integration likely won't be ready until after 7.0-RELEASE.
|
170318 |
05-Jun-2007 |
scottl |
Satisfy witness during shutdown
|
169563 |
14-May-2007 |
scottl |
Eliminate M_TEMP.
|
169200 |
02-May-2007 |
scottl |
Streamline locking in ciss_free()
|
169160 |
01-May-2007 |
scottl |
MPSAFE ciss driver
|
168752 |
15-Apr-2007 |
scottl |
Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will use to synchornize and protect all data objects that are used for that SIM. Drivers that are not yet MPSAFE register Giant and operate as usual. RIght now, no drivers are MPSAFE, though a few will be changed in the coming week as this work settles down.
The driver API has changed, so all CAM drivers will need to be recompiled. The userland API has not changed, so tools like camcontrol do not need to be recompiled.
|
166901 |
23-Feb-2007 |
piso |
o break newbus api: add a new argument of type driver_filter_t to bus_setup_intr()
o add an int return code to all fast handlers
o retire INTR_FAST/IH_FAST
For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current
Reviewed by: many Approved by: re@
|
164773 |
30-Nov-2006 |
maxim |
o ciss.ko depends on cam and pci.
PR: kern/105989 Submitted by: nork MFC after: 1 month
|
163896 |
02-Nov-2006 |
mjacob |
2nd and final commit that moves us to CAM_NEW_TRAN_CODE as the default.
Reviewed by multitudes.
|
163816 |
31-Oct-2006 |
mjacob |
The first of 3 major steps to move the CAM layer forward to using the CAM_NEW_TRAN_CODE that has been in the tree for some years now.
This first step consists solely of adding to or correcting CAM_NEW_TRAN_CODE pieces in the kernel source tree such that a both a GENERIC (at least on i386) and a LINT build with CAM_NEW_TRAN_CODE as an option will compile correctly and run (at least with some the h/w I have).
After a short settle time, the other pieces (making CAM_NEW_TRAN_CODE the default and updating libcam and camcontrol) will be brought in.
This will be an incompatible change in that the size of structures related to XPT_PATH_INQ and XPT_{GET,SET}_TRAN_SETTINGS change in both size and content. However, basic system operation and basic system utilities work well enough with this change.
Reviewed by: freebsd-scsi and specific stakeholders
|
159061 |
30-May-2006 |
ps |
Spin until a request structure is available in the ioctl path.
|
158651 |
16-May-2006 |
phk |
Since DELAY() was moved, most <machine/clock.h> #includes have been unnecessary.
|
157889 |
20-Apr-2006 |
ps |
Free another memory leak when dealing with disk notification.
|
157879 |
19-Apr-2006 |
ps |
Free some previously leaked memory on module unload.
|
153472 |
16-Dec-2005 |
ps |
It seems ciss should ignore overrun and underrun on a SCSI INQUIRY command. This fixes some weird booting issues on newer versions of the firmware on the MSA20.
Reported by: Philippe Pegon <Philippe dot Pegon at crc dot u-strasbg dot fr>
|
152316 |
11-Nov-2005 |
ps |
Update PCI ids to add the E200, E200i, P400, and P400i storage controllers. Remove the E400 since it is not a real product.
Submitted by: HP
|
148904 |
09-Aug-2005 |
ps |
There's no reason to check the valence. This allows ciss to work on the P600.
|
146734 |
29-May-2005 |
nyan |
Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 and amd64. The optimization is a trivial on recent machines.
Reviewed by: -arch (imp, marcel, dfr)
|
146337 |
18-May-2005 |
ps |
Support passthru ioctl commands from 32bit binaries.
|
145622 |
28-Apr-2005 |
ps |
Add support for the P600 and name the E400.
|
145258 |
19-Apr-2005 |
ps |
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.
|
144262 |
29-Mar-2005 |
sam |
handle ciss_lookup failure
Noticed by: Coverity Prevent analysis tool
|
143161 |
05-Mar-2005 |
imp |
Use BUS_PROBE_DEFAULT for pci probe return value
|
142161 |
21-Feb-2005 |
scottl |
- Remove dead code. - Protect against negative values as array indexes.
Submitted by: Coverity Prevent analysis tool
|
140534 |
20-Jan-2005 |
ps |
Remove 6422, V100 and add the P600.
Submitted by: John Cagle
|
133908 |
16-Aug-2004 |
peter |
ciss's interrupt handler was missing the INTR_ENTROPY flag.
|
132829 |
29-Jul-2004 |
ps |
Clean up structure packing.
|
132769 |
28-Jul-2004 |
kan |
Make __packed attribute apply to structs themselves, not their typedefs. GCC 3.4.2 issues warning about that.
|
132768 |
28-Jul-2004 |
ps |
Name non-physical devices.
|
130946 |
22-Jun-2004 |
ps |
Reset the update flag when scanning for new devices.
|
130929 |
22-Jun-2004 |
ps |
Use the maximum physical bus when rescanning those targets. This fixes a panic on cards which do not have any drives attached.
|
130891 |
21-Jun-2004 |
ps |
on media exchange, update/rescan the drives. This allows a volume in a failed stated to come back on-line without a reboot.
|
130878 |
21-Jun-2004 |
ps |
There is no need to call ciss_media_accept async anymore since all notify events are handled in a kthread.
|
130874 |
21-Jun-2004 |
scottl |
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
|
130585 |
16-Jun-2004 |
phk |
Do the dreaded s/dev_t/struct cdev */ Bump __FreeBSD_version accordingly.
|
130540 |
15-Jun-2004 |
ps |
If a device is not ONLINE, do not attempt to submit any commands or I/O to the volume. This solves a panic when removing a disk in a RAID 0 volume.
Reported by: le
|
130129 |
05-Jun-2004 |
ps |
Document the 64bit version of blocks_to_recover for logical drive status. Pad the struct to 1024 bytes as defined in the firmware spec.
|
130127 |
05-Jun-2004 |
ps |
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>
|
130081 |
04-Jun-2004 |
ps |
Update logical drive structure
|
129796 |
28-May-2004 |
ps |
Define another HOTPLUG event.
|
129345 |
17-May-2004 |
ps |
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>
|
128662 |
26-Apr-2004 |
ps |
make this compile/work with CISS_DEBUG defined.
|
128545 |
22-Apr-2004 |
ps |
define some new fields in the physical drive structure and pad the structure to 512 bytes.
|
128430 |
19-Apr-2004 |
ps |
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.
|
128412 |
19-Apr-2004 |
ps |
Report only new new events when initially attaching to the controller.
|
128377 |
18-Apr-2004 |
ps |
move the cleanup of the control device into ciss_free and add some ifdefs for the diffrent kthread_create API between -current and -stable
|
128337 |
16-Apr-2004 |
ps |
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.
|
128334 |
16-Apr-2004 |
ps |
Whitespace cleanup.
|
128259 |
14-Apr-2004 |
ps |
Don't allow the driver to be unloaded if the device node is open.
|
128257 |
14-Apr-2004 |
ps |
Do not catch signals when waiting for a request. This fixes a nasty race when issuing commands from userland.
|
127135 |
17-Mar-2004 |
njl |
Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
|
126080 |
21-Feb-2004 |
phk |
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.
|
126076 |
21-Feb-2004 |
phk |
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.
|
124678 |
18-Jan-2004 |
ru |
Fixed a memory leak.
Reported by: Stanford Metacompilation research group
|
123508 |
13-Dec-2003 |
ps |
White space cleanup
|
123307 |
08-Dec-2003 |
ps |
Correct the READ/WRITE CDB direction definition.
Submitted by: John Cagle <john.cagle@hp.com>
|
123298 |
08-Dec-2003 |
ps |
Define RAID 5+1 and RAID ADG fault tolerances
|
122189 |
07-Nov-2003 |
ps |
Add PCID for 6i controller
Submitted by: John Cagle <john.cagle@hp.com>
|
121120 |
15-Oct-2003 |
ps |
Print the correct logical drive lun number returned by the controller.
|
119886 |
08-Sep-2003 |
ps |
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.
|
119277 |
22-Aug-2003 |
imp |
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.
|
118833 |
12-Aug-2003 |
ps |
Support EINPROGRESS and properly deal with 64bit physical addressing.
|
117482 |
12-Jul-2003 |
ps |
Check the status of the user command and return the proper error to the user.
|
117481 |
12-Jul-2003 |
ps |
Quiet down ciss unless bootverbose is set.
|
117126 |
01-Jul-2003 |
scottl |
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
|
116867 |
26-Jun-2003 |
ps |
Give the correct size for the command map to busdma.
|
115482 |
31-May-2003 |
phk |
Fix off-by-one error in drive number check. Don't return(foo(...)) in function returning void.
Found by: FlexeLint
|
115202 |
21-May-2003 |
ps |
Make ciss usable under PAE
Approved by: re (scottl)
|
113035 |
03-Apr-2003 |
ps |
Add support for the HP Smart Array 6400 EM
Change the interrupt mask for the Smart Array 6xxx controllers after discussions w/ HP.
|
112367 |
18-Mar-2003 |
phk |
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.
|
111979 |
08-Mar-2003 |
phk |
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.
|
111815 |
03-Mar-2003 |
phk |
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)
|
111747 |
02-Mar-2003 |
phk |
Put cdevsw initialization on canonical format.
|
111119 |
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
111097 |
18-Feb-2003 |
ps |
Add some PCI device ID's from HP
|
110366 |
05-Feb-2003 |
ps |
Properly get the drive geometry from the controller. This should fix booting off of volumes > 255GB.
|
110365 |
05-Feb-2003 |
ps |
Close a memory leak when rescanning the bus.
|
109623 |
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
106039 |
27-Oct-2002 |
mux |
Fix a bunch of warnings on 64 bit platforms in the CISS_DEBUG case by appropriately using %z and %j.
|
106037 |
27-Oct-2002 |
mux |
Fix a warning when CISS_DEBUG is defined.
|
105997 |
26-Oct-2002 |
mux |
Add a missing destroy_dev().
|
104094 |
28-Sep-2002 |
phk |
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
|
103870 |
23-Sep-2002 |
alfred |
use __packed.
|
103844 |
23-Sep-2002 |
alfred |
use __packed/__aligned rather than GCC-specific __attribute__.
|
102291 |
22-Aug-2002 |
archie |
Replace (ab)uses of "NULL" where "0" is really meant.
|
95756 |
29-Apr-2002 |
ps |
- 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!
|
94412 |
11-Apr-2002 |
ps |
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
|
88113 |
18-Dec-2001 |
peter |
Fix warning; line 1640: ciss_abort_request defined but not used.
|
87599 |
10-Dec-2001 |
obrien |
Update to C99, s/__FUNCTION__/__func__/, also don't use ANSI string concatenation.
|
87187 |
02-Dec-2001 |
msmith |
Catch up with the proc -> d_thread_t change.
|
87011 |
27-Nov-2001 |
msmith |
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
|