aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sym
Commit message (Collapse)AuthorAgeFilesLines
* Prevent overflow issues in timeout processingSteven Hartland2014-11-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Previously, any timeout value for which (timeout * hz) will overflow the signed integer, will give weird results, since callout(9) routines will convert negative values of ticks to '1'. For unsigned integer overflow we will get sufficiently smaller timeout values than expected. Switch from callout_reset, which requires conversion to int based ticks to callout_reset_sbt to avoid this. Also correct isci to correctly resolve ccb timeout. This was based on the original work done by Eygene Ryabinkin <rea@freebsd.org> back in 5 Aug 2011 which used a macro to help avoid the overlow. Differential Revision: https://reviews.freebsd.org/D1157 Reviewed by: mav, davide MFC after: 1 month Sponsored by: Multiplay Notes: svn path=/head/; revision=274819
* Remove ia64.Marcel Moolenaar2014-07-071-2/+0
| | | | | | | | | | | | | | | | | | | | This includes: o All directories named *ia64* o All files named *ia64* o All ia64-specific code guarded by __ia64__ o All ia64-specific makefile logic o Mention of ia64 in comments and documentation This excludes: o Everything under contrib/ o Everything under crypto/ o sys/xen/interface o sys/sys/elf_common.h Discussed at: BSDcan Notes: svn path=/head/; revision=268351
* Don't destroy bus_dma maps created by bus_dmamem_alloc(). In some cases,John Baldwin2014-06-101-5/+1
| | | | | | | | | | | | don't create a map before calling bus_dmamem_alloc() (such maps were leaked). It is believed that the extra destroy of the map was generally harmless since bus_dmamem_alloc() often uses special maps for which bus_dmamap_destroy() is a no-op (e.g. on x86). Reviewed by: scottl Notes: svn path=/head/; revision=267340
* In sys/dev/sym/sym_hipd.c, remove static functions sym_que_first(),Dimitry Andric2013-12-251-21/+0
| | | | | | | | | sym_que_last() and sym_remque_tail(), which are all unused since r53790. MFC after: 3 days Notes: svn path=/head/; revision=259880
* Update PCI drivers to no longer look at the MEMIO-enabled bit in the PCIScott Long2013-08-121-12/+6
| | | | | | | | | | | | | | | | | | | | command register. The lazy BAR allocation code in FreeBSD sometimes disables this bit when it detects a range conflict, and will re-enable it on demand when a driver allocates the BAR. Thus, the bit is no longer a reliable indication of capability, and should not be checked. This results in the elimination of a lot of code from drivers, and also gives the opportunity to simplify a lot of drivers to use a helper API to set the busmaster enable bit. This changes fixes some recent reports of disk controllers and their associated drives/enclosures disappearing during boot. Submitted by: jhb Reviewed by: jfv, marius, achadd, achim MFC after: 1 day Notes: svn path=/head/; revision=254263
* - Flag sym(4) as supporting unmapped I/O; all necessary conversion actuallyMarius Strobl2013-06-051-3/+2
| | | | | | | | already has been done as part of r246713. - Revert a part of r251402 in order to appease clang. Notes: svn path=/head/; revision=251403
* Handle/mark/nuke unused arguments.Marius Strobl2013-06-051-49/+49
| | | | Notes: svn path=/head/; revision=251402
* CAM_DEV_QFREEZE handling should only be done on request submission butMarius Strobl2013-06-041-14/+3
| | | | | | | | | | | neither on completion nor by SIM drivers in the first place. This issue has been revealed by r249466. Reviewed by: mav MFC after: 3 days Notes: svn path=/head/; revision=251394
* Don't try and negotiate sync mode if either period or offset are zero.Matt Jacob2013-02-251-17/+24
| | | | | | | | | PR: kern/163064 Partially Submitted by: Peter <pmc@citylink.dinoex.sub.org> MFC after: 1 month Notes: svn path=/head/; revision=247266
* Reform the busdma API so that new types may be added without modifyingKonstantin Belousov2013-02-121-43/+7
| | | | | | | | | | | | | | | | | | | | | | | | 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. The cam changes unify the bus_dmamap_load* handling in cam drivers. The arm and mips implementations are updated to track virtual addresses for sync(). Previously this was done in a type specific way. Now it is done in a generic way by recording the list of virtuals in the map. Submitted by: jeff (sponsored by EMC/Isilon) Reviewed by: kan (previous version), scottl, mjacob (isp(4), no objections for target mode changes) Discussed with: ian (arm changes) Tested by: marius (sparc64), mips (jmallet), isci(4) on x86 (jharris), amd64 (Fabian Keil <freebsd-listen@fabiankeil.de>) Notes: svn path=/head/; revision=246713
* Use better arm memory barrierWarner Losh2013-01-111-1/+2
| | | | Notes: svn path=/head/; revision=245275
* Clang complains about the comparision of fak < 0 always beingWarner Losh2013-01-101-1/+0
| | | | | | | | | false. It is right. Delete it because on the next line we catch all 'negative' cases with the test > 2, since 'negative' numbers are just really big unsigned numbers and we do an identical action. Notes: svn path=/head/; revision=245263
* Add memory barrier macros for ARMOleksandr Tymoshenko2012-12-131-0/+2
| | | | Notes: svn path=/head/; revision=244170
* Revert the use of BUS_DMA_ALLOCNOW when creating the DMA tag for userMarius Strobl2012-07-191-2/+2
| | | | | | | | | | | | | | | | data introduced in r236061. Using that flag doesn't make that much sense on this case as the DMA maps using it are also created during sym_pci_attach(). Moreover, due to the maxsegsz parameter used, doing so may exhaust the bounce pages pool on architectures requiring bounce pages. [1] While at it, use a slightly more appropriate maxsegsz parameter. PR: 169526 Submitted by: Mike Watters [1] MFC after: 3 days Notes: svn path=/head/; revision=238621
* Fix a braino in r236469; the number of DMA tags required for handlingMarius Strobl2012-06-142-8/+6
| | | | | | | | | | | | | MAXPHYS should be based on PAGE_SIZE rather than SYM_CONF_DMA_BOUNDARY. While at it, reuse the SYM_CONF_MAX_SG macro for specifying the maximum number of DMA tags so sym(4) itself doesn't size memory beyond what's required for handling MAXPHYS. PR: 168928 MFC after: 3 days Notes: svn path=/head/; revision=237101
* Take advantage of nitems().Marius Strobl2012-06-021-4/+1
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=236488
* Remove extraneous empty lines.Marius Strobl2012-05-261-32/+0
| | | | | | | MFC after: 3 day Notes: svn path=/head/; revision=236063
* - When creating the DMA tag for user data, don't ask for more segmentsMarius Strobl2012-05-262-39/+29
| | | | | | | | | | | | | | | | | than required for handling MAXPHYS and report the resulting maximum I/O size to CAM instead of implicitly limiting it to DFLTPHYS. - Move the variables of sym_action2() out of nested scope as required by style(9) and remove extraneous curly braces. - Replace a magic value for PCIR_COMMAND with the appropriate macro. - Use DEVMETHOD_END. - Use NULL instead of 0 for pointers. Tested with a HBA donated by wilko. MFC after: 3 days Notes: svn path=/head/; revision=236061
* Merge from r225950:Marius Strobl2011-10-071-5/+9
| | | | | | | | | Set the sense residual properly. Reviewed by: ken Notes: svn path=/head/; revision=226095
* More spelling fixes.Marius Strobl2011-04-222-2/+2
| | | | | | | Submitted by: N.J. Mann Notes: svn path=/head/; revision=220950
* - Correct spelling. [1]Marius Strobl2011-04-224-17/+13
| | | | | | | | | - Remove variables which are unused besides initialization. [2] Submitted by: brucec [1], Christoph Mallon [2] Notes: svn path=/head/; revision=220944
* Fix typos - remove duplicate "the".Rebecca Cran2011-02-212-2/+2
| | | | | | | | | PR: bin/154928 Submitted by: Eitan Adler <lists at eitanadler.com> MFC after: 3 days Notes: svn path=/head/; revision=218909
* - On sparc64 obtain the initiator ID from the Open Firmware device treeMarius Strobl2010-04-271-4/+9
| | | | | | | | in order to match what the PROM built-in driver uses. - Remove some no longer used includes. Notes: svn path=/head/; revision=207285
* While certain supported Symbios/LSI SCSI chips (532c896, 53c1000, 53c1010)Stefan Eßer2009-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | do support 64bit addresses, the current SCRIPTS code supports only 32bit addresses causing data corruption for buffer addresses >4GB. This problem affects 64bit machines with more than 4GB RAM or amd64 with 4GB and memory hole remapping. Work-around this problem with a bus_dma tag that requests bounce-buffers for addresses >4GB. This causes some overhead, but given the maximum SCSI bus speed of 160MB/s compared, the effect should hardly be noticeable. The problem was reported by Mike Watters (mike at mwatters net) who also verified that this fix cures the problem. Since this change is a NOOP on systems with less than 4GB RAM and fixes data corruption (in RAM and on disk) on systems with more than 4GB, I hope that this change is accepted for 8.0. MFC after: 3 days (pending approval) Notes: svn path=/head/; revision=198719
* Use xpt_register_async() in order to remove code duplication.Marius Strobl2008-10-141-7/+3
| | | | | | | MFC after: 1 month Notes: svn path=/head/; revision=183895
* Allow 53C1010 without NVRAM to negotiate Ultra-3.Marius Strobl2008-08-071-0/+2
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=181399
* - Const'ify firmware and lookup-tables.Marius Strobl2008-05-155-53/+53
| | | | | | | | | | - Obsolete redundant inst_name and unit members of struct sym_hcb. - Fix three more NULL vs. 0 confusions. - Use device_set_softc(9) to tell the bus layer that this driver allocates a instance of struct sym_hcb itself. Notes: svn path=/head/; revision=179029
* - Use bus_{read,write}_*(9) instead of bus_space_{read,write}_*(9)Marius Strobl2008-04-241-118/+155
| | | | | | | | | | | | | | | | | | in order to get rid of bus space handle and tag in struct sym_hcb. - Remove unused members related to bus addresses in struct sym_hcb. - sym(4) takes care of allocating an instance of struct sym_hcb itself so don't let newbus allocate it as an unused softc also. - Add basic MPSAFE locking. This includes changing the sym(4) CCBs to be allocated up-front instead of on demand as needed. Besides making these allocations more likely to succeed, this also solves the problem of calling bus_dmamap_create(9) with the SIM mutex held. Reviewed by: scottl MFC after: 1 month Notes: svn path=/head/; revision=178468
* - Use NULL instead of 0 for pointers.Marius Strobl2008-04-241-587/+579
| | | | | | | | | | | - Remove superfluous returns in functions returning void. - In sym_alloc_lcb_tags() return directly instead of jumping to a label which just returns. - Fix some spelling in comments. - Remove trailing whitespace. Notes: svn path=/head/; revision=178466
* Fix Symbios driver on amd64: Since amd64 has 64 bit pointers but the sameStefan Eßer2007-07-201-12/+17
| | | | | | | | | | | | | | | | | | | | | | | 4KB pages as i386, data structures that just fit in one page on i386 (and on 64 bit architectures with 8KB pages) can be distributed over two pages on amd64. This is a porblem in the case of the Symbios driver, since the SCRIPTS engine in the SCSI chip operates on physical addresses and needs physically contiguous memory. Earlier patches used contigmalloc on amd64, but this version replaces part of a structure by a pointer to that data. In order to not introduce an extra indirection for other architectures, the change has been made conditional on __amd64__. Earlier attempts to repair this problem are removed (i.e. the macros that made amd64 use contigmalloc). The fix was submitted by Jan Mikkelsen and modified by me to only affect amd64. PR: 89550 Submitted by: janm at transactionware dot com (Jan Mikkelsen) Approved by: re (Hiroki Sato) MFC after: 2 weeks Notes: svn path=/head/; revision=171524
* Fix various compilation warnings for gcc-4.2.Matt Jacob2007-06-231-1/+1
| | | | | | | Approved by: re (bruce) Notes: svn path=/head/; revision=170996
* 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
* 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
* Fix typo in comment.Thomas Quinot2007-03-051-3/+3
| | | | Notes: svn path=/head/; revision=167248
* o break newbus api: add a new argument of type driver_filter_t toPaolo Pisati2007-02-231-1/+1
| | | | | | | | | | | | | | | | 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
* Change the remainder of the drivers for DMA'ing devices enabled in theMarius Strobl2007-01-211-5/+1
| | | | | | | | | | | sparc64 GENERIC and the sound device drivers known working on sparc64 to use bus_get_dma_tag() to obtain the parent DMA tag so we can get rid of the sparc64_root_dma_tag kludge eventually. Except for ath(4), sk(4), stge(4) and ti(4) these changes are runtime tested (unless I booted up the wrong kernels again...). Notes: svn path=/head/; revision=166165
* 2nd and final commit that moves us to CAM_NEW_TRAN_CODEMatt Jacob2006-11-021-116/+0
| | | | | | | | | as the default. Reviewed by multitudes. Notes: svn path=/head/; revision=163896
* Commit the results of the typo hunt by Darren Pilgrim.Yaroslav Tykhiy2006-08-042-2/+2
| | | | | | | | | | | | | This change affects documentation and comments only, no real code involved. PR: misc/101245 Submitted by: Darren Pilgrim <darren pilgrim bitfreak org> Tested by: md5(1) MFC after: 1 week Notes: svn path=/head/; revision=160964
* Remove various bits of conditional Alpha code and fixup a few comments.John Baldwin2006-05-121-2/+0
| | | | Notes: svn path=/head/; revision=158471
* FreeBSD has had endian conversion macros for a long time. Axe the customScott Long2005-12-051-46/+2
| | | | | | | | | macros in this driver. MFC After: 3 days Notes: svn path=/head/; revision=153145
* Use a compile-time detection of 64-bit addressing so that thisRuslan Ermilov2005-12-041-11/+8
| | | | | | | | | compiles on 32-bit machines. Reported by: ale Notes: svn path=/head/; revision=153085
* Fix -Wundef.Ruslan Ermilov2005-12-041-8/+11
| | | | Notes: svn path=/head/; revision=153072
* Remove bus_{mem,p}io.h and related code for a micro-optimization on i386Yoshihiro Takahashi2005-05-291-10/+0
| | | | | | | | | and amd64. The optimization is a trivial on recent machines. Reviewed by: -arch (imp, marcel, dfr) Notes: svn path=/head/; revision=146734
* eliminate double free when sym_cam_attach failsSam Leffler2005-03-261-2/+7
| | | | | | | Noticed by: Coverity Prevent analysis tool Notes: svn path=/head/; revision=144147
* Use BUS_PROBE_DEFAULTWarner Losh2005-03-061-1/+2
| | | | Notes: svn path=/head/; revision=143168
* avoid null ptr derefSam Leffler2005-02-251-3/+4
| | | | | | | | Noticed by: Coverity Prevent analysis tool Reviewed by: scottl Notes: svn path=/head/; revision=142515
* Start each of the license/copyright comments with /*-, minor shuffle of linesWarner Losh2005-01-066-6/+6
| | | | Notes: svn path=/head/; revision=139749
* Attempt to fix Symbios driver on amd64. The private memory allocationStefan Eßer2005-01-011-0/+10
| | | | | | | | | | | | | | | | | function provided by the driver limits allocations to the page size, i.e. 4KB on i385 and 8KB on typical 64 bit processors. Since amd64 has 64 bit pointers, but only 4KB pages, an array of pointers that just fits into one page on all the other processors, does require 2 pages on amd64. In order to make this driver useful on amd64, the allocation unit has been increased to 2 pages on amd64 and contigmalloc() is used instead of malloc(). All other processor types are unaffected by this change. This modification has only been compile-tested on amd64, yet, but should just work (FLW). Notes: svn path=/head/; revision=139545
* Make it depend on PCI as well.Matt Jacob2004-09-101-0/+1
| | | | | | | Submitted by: Stefan eSSer Notes: svn path=/head/; revision=135041
* Make sym depend, as a module, on cam.Matt Jacob2004-09-101-0/+1
| | | | | | | Submitted by:"Norikatsu Shigemura" <nork@FreeBSD.org> Notes: svn path=/head/; revision=135040