aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/twa
Commit message (Collapse)AuthorAgeFilesLines
* MFC r212008,212028,212210 the updated twa(4) driver minus maxio changeXin LI2010-09-1512-258/+387
| | | | | | | | | which depends on cam(4) revision r195534. The change have been tested on stable/7 with 3ware 9650SE at iXsystems. Notes: svn path=/stable/7/; revision=212678
* MFC r209860:Xin LI2010-07-092-3/+3
| | | | | | | | | | | | Don't use pack() for structures that is used purely for software state. Otherwise the resulting, unaligned mutex structure would trigger panic. Submitted by: Tom Cough <tom.couch lsi.com> Reported/Tested by: jhb PR: kern/148464 Notes: svn path=/stable/7/; revision=209863
* MFC r208969,209268:Xin LI2010-06-2113-468/+194
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Driver update of twa(4) from LSI. Many thanks to LSI for continuing to support FreeBSD. 1) Timeout ioctl command timeouts. Do not reset the controller if ioctl command completed successfully. 2) Remove G66_WORKAROUND code (this bug never shipped). 3) Remove unnecessary interrupt lock (intr_lock). 4) Timeout firmware handshake for PChip reset (don't wait forever). 5) Handle interrupts inline. 6) Unmask command interrupt ONLY when adding a command to the pending queue. 7) Mask command interrupt ONLY after removing the last command from the pending queue. 8) Remove TW_OSLI_DEFERRED_INTR_USED code. 9) Replace controller "state" with separate data fields to avoid races: TW_CLI_CTLR_STATE_ACTIVE ctlr->active TW_CLI_CTLR_STATE_INTR_ENABLED ctlr->interrupts_enabled TW_CLI_CTLR_STATE_INTERNAL_REQ_BUSY ctlr->internal_req_busy TW_CLI_CTLR_STATE_GET_MORE_AENS ctlr->get_more_aens TW_CLI_CTLR_STATE_RESET_IN_PROGRESS ctlr->reset_in_progress TW_CLI_CTLR_STATE_RESET_PHASE1_IN_PROGRESS ctlr->reset_phase1_in_progress 10) Fix "req" leak in twa_action() when simq is frozen and req is NOT null. 11) Replace softc "state" with separate data fields to avoid races: TW_OSLI_CTLR_STATE_OPEN sc->open TW_OSLI_CTLR_STATE_SIMQ_FROZEN sc->simq_frozen 12) Fix reference to TW_OSLI_REQ_FLAGS_IN_PROGRESS in tw_osl_complete_passthru() 13) Use correct CAM status values. Change CAM_REQ_CMP_ERR to CAM_REQ_INVALID. Remove use of CAM_RELEASE_SIMQ for physical data addresses. 14) Do not freeze/ release the simq with non I/O commands. When it is appropriate to temporarily freeze the simq with an I/O command use: xpt_freeze_simq(sim, 1); ccb->ccb_h.status |= CAM_RELEASE_SIMQ; otherwise use: xpt_freeze_simq(sim, 1); xpt_release_simq(sim, 1); Submitted by: Tom Couch <tom.couch lsi.com> PR: kern/147694 Notes: svn path=/stable/7/; revision=209405
* MFC: Reenable 64-bit DMA for twa(4) controllers, but use a boundary of 4GBJohn Baldwin2009-03-303-7/+13
| | | | | | | | | | | to prevent individual transactions from crossing a 4GB address boundary. Due to bus_size_t type limitations, the driver uses a 2GB boundary in PAE kernels. Approved by: re (kensmith) Notes: svn path=/stable/7/; revision=190568
* MFC r183660: Limit DMA memory to lower addressable 4GB, withoutXin LI2008-10-141-4/+4
| | | | | | | | | | this patch, we can reliably provoke data corruption on systems equipped with a plenty of memory during high load. Approved by: re (kib) Notes: svn path=/stable/7/; revision=183892
* Merge rev 1.6: Disable defered interrupt processing. There are reports thatScott Long2007-10-191-0/+2
| | | | | | | | | | this feature still works with the 4BSD scheduler, but I'm disabling it anyways for the sake of safety. Approved by: re Notes: svn path=/stable/7/; revision=172808
* Update to version 3.70.03.007 from the vendor. This adds support for newScott Long2007-10-099-63/+89
| | | | | | | | | | | | SAS-enabled cards. It also makes the driver MPSAFE, eliminating some problems that resulted from CAM becoming MPSAFE. Many thanks to 3Ware/AMCC for continuing to support FreeBSD. Submitted by: Manjunath Ranganathaiah Approved by: re Notes: svn path=/head/; revision=172496
* Prepare for future integration between CAM and newbus. xpt_bus_registerScott Long2007-06-171-1/+1
| | | | | | | | | | 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. Notes: svn path=/head/; revision=170872
* Minor update to version 3.70.03.007Scott Long2007-05-192-2/+2
| | | | Notes: svn path=/head/; revision=169742
* The version string scheme embeds the freebsd major release version,Scott Long2007-05-102-2/+2
| | | | | | | | something that I wasn't aware of with the last import. Adjust the string accordingly for 7-CURRENT. Notes: svn path=/head/; revision=169452
* Import version 3.60.03.006 of the TWA driver:Scott Long2007-05-0919-48797/+103
| | | | | | | | | | | | | | | | | | | This patch does the following: - Remove un-necessary code that is not even compiling into the driver under TW_OSL_NON_DMA_MEM_ALLOC_PER_REQUEST defines. - Remove bundled firmware image and associated "files" entry for tw_cl_fwimg.c - Remove bundled firmware flashing routines. We now have tw_update userspace FreeBSD controller flash utility. - Fix driver crash on load due to shared interrupt. - Fix 2 lock leaks for Giant lock. - Fix CCB leak. - Add support for 9650SE controllers. Many thanks to 3Ware/AMCC for continuing to support FreeBSD. Notes: svn path=/head/; revision=169400
* Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM willScott Long2007-04-151-1/+1
| | | | | | | | | | | | | | 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. Notes: svn path=/head/; revision=168752
* o break newbus api: add a new argument of type driver_filter_t toPaolo Pisati2007-02-231-13/+31
| | | | | | | | | | | | | | | | 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@ Notes: svn path=/head/; revision=166901
* Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed.Matt Jacob2006-12-111-0/+2
| | | | | | | | | PR: 106543 Reviewed by: Adam Radford MFC after: 3 days Notes: svn path=/head/; revision=165106
* 2nd and final commit that moves us to CAM_NEW_TRAN_CODEMatt Jacob2006-11-021-7/+0
| | | | | | | | | as the default. Reviewed by multitudes. Notes: svn path=/head/; revision=163896
* The first of 3 major steps to move the CAM layer forward to usingMatt Jacob2006-10-311-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=163816
* Use utc_offset() where applicable, and hide the internals of itPoul-Henning Kamp2006-10-021-3/+1
| | | | | | | as static variables. Notes: svn path=/head/; revision=162970
* First part of a little cleanup in the calendar/timezone/RTC handling.Poul-Henning Kamp2006-10-022-2/+2
| | | | | | | | | Move relevant variables to <sys/clock.h> and fix #includes as necessary. Use libkern's much more time- & spamce-efficient BCD routines. Notes: svn path=/head/; revision=162954
* Remove header pollution.Scott Long2006-04-301-1/+0
| | | | Notes: svn path=/head/; revision=158180
* twa corresponding to the 9.3.0.1 release on the 3ware website. This driver hasVinod Kashyap2005-11-0816-22601/+44153
| | | | | | | | support for the 9xxxSX controllers, along with the earlier 9xxxS series controllers. Notes: svn path=/head/; revision=152213
* Normalize a significant number of kernel malloc type names:Robert Watson2005-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | - Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat. - Remove punctuation that is incompatible with using memory type names as file names, such as '/' characters. - Disambiguate some collisions by adding subsystem prefixes to some memory types. - Generally prefer lower case to upper case. - If the same type is defined in multiple architecture directories, attempt to use the same name in additional cases. Not all instances were caught in this change, so more work is required to finish this conversion. Similar changes are required for UMA zone names. Notes: svn path=/head/; revision=151897
* Don't pollute the entire kernel build with -I$S/dev/twa.David E. O'Brien2005-09-115-12/+12
| | | | Notes: svn path=/head/; revision=149968
* Acquire Giant before making some CAM calls that need Giant to be held.Vinod Kashyap2005-06-112-1/+5
| | | | Notes: svn path=/head/; revision=147285
* Make call to tw_cl_deferred_interrupt in twa_poll, not dependent on theVinod Kashyap2005-04-291-2/+12
| | | | | | | return value from tw_cl_interrupt. Notes: svn path=/head/; revision=145688
* The latest release of the FreeBSD driver (twa) forVinod Kashyap2005-04-1227-31878/+36425
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3ware's 9xxx series controllers. This corresponds to the 9.2 release (for FreeBSD 5.2.1) on the 3ware website. Highlights of this release are: 1. The driver has been re-architected to use a "Common Layer" (all tw_cl* files), which is a consolidation of all OS-independent parts of the driver. The FreeBSD OS specific portions of the driver go into an "OS Layer" (all tw_osl* files). This re-architecture is to achieve better maintainability, consistency of behavior across OS's, and better portability to new OS's (drivers for new OS's can be written by just adding an OS Layer that's specific to the OS, by complying to a "Common Layer Programming Interface" API. 2. The driver takes advantage of multiple processors. 3. The driver has a new firmware image bundled, the new features of which include Online Capacity Expansion and multi-lun support, among others. More details about 3ware's 9.2 release can be found here: http://www.3ware.com/download/Escalade9000Series/9.2/9.2_Release_Notes_Web.pdf Since the Common Layer is used across OS's, the FreeBSD specific include path for header files (/sys/dev/twa) is not part of the #include pre-processor directive in any of the source files. For being able to integrate twa into the kernel despite this, Makefile.<arch> has been changed to add the include path to CFLAGS. Reviewed by: scottl Notes: svn path=/head/; revision=144966
* check copyin+copyout return values when processing TWA_IOCTL_GET_LOCKSam Leffler2005-03-271-4/+6
| | | | | | | Noticed by: Coverity Prevent analysis tool Notes: svn path=/head/; revision=144169
* Kill MAJOR_AUTOPoul-Henning Kamp2005-03-171-2/+0
| | | | Notes: svn path=/head/; revision=143748
* Use the correct flags for bus_dma_tag_create().Scott Long2005-03-061-2/+2
| | | | Notes: svn path=/head/; revision=143189
* Use BUS_PROBE_DEFAULT in preference to 0. Also for vx, returnWarner Losh2005-03-011-1/+1
| | | | | | | | BUS_PROBE_LOW_PRIORITY in stead of ifdef for devices that xl and vx both support so that xl will snarf them on up. Notes: svn path=/head/; revision=142880
* Bumped up the driver version, following recent changes.Vinod Kashyap2005-02-121-1/+1
| | | | Notes: svn path=/head/; revision=141709
* 1. Revert back to the way the older driver handled XPT_PATH_INQ. This seems toVinod Kashyap2005-02-103-7/+7
| | | | | | | | | | | | fix the problem with device discovery seen by some people. 2. Change to make 3ware CLI/3DM work on amd64. 3. Fix a potential problem that could cause the driver to do strlen(NULL) when using older firmware. Reviewed by:scottl Notes: svn path=/head/; revision=141662
* Changes corresponding to the 9.1.5.2 release of twa on the 3ware website.Vinod Kashyap2005-01-058-19447/+22110
| | | | | | | | | | | | | | | The main changes are: 1. Use of multiple bus dma tags. 2. Timing of CAM requests by the driver. 3, Firmware interface change relating to retrieving AEN's. 4. Removal of twa_intrhook. 5. Bundling of latest firmware with BBU capability. Reviewed by:re Approved by:re Notes: svn path=/head/; revision=139723
* Changes to make twa work on amd64.Vinod Kashyap2004-08-182-2/+2
| | | | | | | | Reviewed by:re Approved by:re Notes: svn path=/head/; revision=133963
* Fix a typo that made the busdma tag have a 0 highaddr. This driver heavilyScott Long2004-06-241-1/+1
| | | | | | | abuses busdma in other ways, and those will likely be fixed another day. Notes: svn path=/head/; revision=131071
* Do the dreaded s/dev_t/struct cdev */Poul-Henning Kamp2004-06-162-5/+5
| | | | | | | Bump __FreeBSD_version accordingly. Notes: svn path=/head/; revision=130585
* Add missing <sys/module.h> includesPoul-Henning Kamp2004-05-301-0/+1
| | | | Notes: svn path=/head/; revision=129879
* Undid scottl's recent changes.Vinod Kashyap2004-05-173-2/+41
| | | | Notes: svn path=/head/; revision=129344
* Remove twa_intrhook prototype.Scott Long2004-05-151-1/+0
| | | | | | | Submitted by: cperciva Notes: svn path=/head/; revision=129265
* Set the cpi.hba_inquiry field to something useful.Scott Long2004-05-151-1/+1
| | | | Notes: svn path=/head/; revision=129262
* Remove the config_intrhook as it is not needed.Scott Long2004-05-152-39/+1
| | | | Notes: svn path=/head/; revision=129261
* Unbreak LINT on 64-bit platforms. Note that this code is not style(9)-Dag-Erling Smørgrav2004-04-023-5/+6
| | | | | | | | | | compliant, but I'll leave that for someone else. Noticed by: tinderbox Pointy hat to: the usual suspects Notes: svn path=/head/; revision=127746
* Initial check-in of the device driver for 3ware's 9000 seriesVinod Kashyap2004-03-3010-0/+29268
PATA/SATA RAID controllers. This driver is a SIM under CAM, and so, behaves like a driver for a SCSI controller. Notes: svn path=/head/; revision=127600