Commit Graph

53 Commits

Author SHA1 Message Date
jhb
237efaa08a Various fixes to hptmv(4):
- Replace the global driver lock with a per-instance device lock.
- Use the per-instance device lock instead of Giant for the CAM sim lock.
- Add global locks to protect the adapter list and DPC queues.
- Use wakeup() and mtx_sleep() to wait for certain events like the
  controller going idle rather than polling via timeouts passed to
  tsleep().
- Use callout(9) instead of timeout(9).
- Mark the interrupt handler MPSAFE.
- Remove compat shims for FreeBSD versions older than 8.0.

Reviewed by:	Steve Chang <ychang@highpoint-tech.com>
2014-08-05 23:58:49 +00:00
hselasky
35b126e324 Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
gjb
fc21f40567 Revert r267961, r267973:
These changes prevent sysctl(8) from returning proper output,
such as:

 1) no output from sysctl(8)
 2) erroneously returning ENOMEM with tools like truss(1)
    or uname(1)
 truss: can not get etype: Cannot allocate memory
2014-06-27 22:05:21 +00:00
hselasky
bd1ed65f0f Extend the meaning of the CTLFLAG_TUN flag to automatically check if
there is an environment variable which shall initialize the SYSCTL
during early boot. This works for all SYSCTL types both statically and
dynamically created ones, except for the SYSCTL NODE type and SYSCTLs
which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to
be used in the case a tunable sysctl has a custom initialisation
function allowing the sysctl to still be marked as a tunable. The
kernel SYSCTL API is mostly the same, with a few exceptions for some
special operations like iterating childrens of a static/extern SYSCTL
node. This operation should probably be made into a factored out
common macro, hence some device drivers use this. The reason for
changing the SYSCTL API was the need for a SYSCTL parent OID pointer
and not only the SYSCTL parent OID list pointer in order to quickly
generate the sysctl path. The motivation behind this patch is to avoid
parameter loading cludges inside the OFED driver subsystem. Instead of
adding special code to the OFED driver subsystem to post-load tunables
into dynamically created sysctls, we generalize this in the kernel.

Other changes:
- Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask"
to "hw.pcic.intr_mask".
- Removed redundant TUNABLE statements throughout the kernel.
- Some minor code rewrites in connection to removing not needed
TUNABLE statements.
- Added a missing SYSCTL_DECL().
- Wrapped two very long lines.
- Avoid malloc()/free() inside sysctl string handling, in case it is
called to initialize a sysctl from a tunable, hence malloc()/free() is
not ready when sysctls from the sysctl dataset are registered.
- Bumped FreeBSD version to indicate SYSCTL API change.

MFC after:	2 weeks
Sponsored by:	Mellanox Technologies
2014-06-27 16:33:43 +00:00
delphij
941bee44fc Apply vendor fixes to the High Point drivers:
- Don't call xpt_free_path() in os_query_remove_device() and
   always return TRUE.
 - Update os_buildsgl() to support build logical SG table which
   will be used by lower RAID module.
 - Return CAM_SEL_TIMEOUTstatus for SCSIcommand failed as target
   missing.

Many thanks to HighPoint for providing this driver update.

Submitted by:	Steve Chang
Reviewed by:	mav
MFC after:	3 days
2014-06-11 18:24:51 +00:00
scottl
e9cc92746f Re-do r255853. Along with adding back the API/ABI changes from the
original, this hides the contents of cam_compat.h from ktrace/kdump/truss,
avoiding problems there.  There are no user-servicable parts in there, so
no need for those tools to be groping around in there.

Approved by:    re
2013-09-25 17:16:21 +00:00
gjb
d965f28ba1 Revert r255853 pending fixes to build errors in usr.bin/kdump
Approved by:	re (implicit)
2013-09-25 01:48:45 +00:00
scottl
108b7070e7 Update the CAM API for FreeBSD 10:
- Remove the timeout_ch field.  It's been deprecated since FreeBSD 7.0;
  MPSAFE drivers should be managing their own timeout storage.  The
  remaining non-MPSAFE drivers have been modified to also manage their own
  storage, and should be considered for updating to MPSAFE (or removal)
  during the FreeBSD 10.x lifecycle.

- Add fields related to soft timeouts and quality of service, to be used
  in upcoming work.

- Add room for more flags in the CCB header and path_inq structures.

- Begin support for extended 64-bit LUNs.

- Bump the CAM version number to 0x18, but add compat shims.  Tested with
  camcontrol and smartctl.

Reviewed by:    nathanw, ken, kib
Approved by:    re
Obtained from:  Netflix
2013-09-24 16:50:53 +00:00
eadler
4f9ab6c580 Fxi a bunch of typos.
PR:	misc/174625
Submitted by:	Jeremy Chadwick <jdc@koitsu.org>
2013-05-10 16:41:26 +00:00
mav
df40a0e7ef Move hptmv and mpt drivers shutdown a bit later to the SHUTDOWN_PRI_LAST
stage of shutdown_post_sync.  That should allow CAM to do final cache flush
at the SHUTDOWN_PRI_DEFAULT without using polling magic.

MFC after:	3 days
2013-04-24 19:00:45 +00:00
kib
bd7f0fa0bb 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.

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>)
2013-02-12 16:57:20 +00:00
delphij
d7e79a2a14 It seems that what the code really meant is that when a write is completed,
do a BUS_DMASYNC_POSTWRITE over the DMA map.  The way it currently is would
only do POSTREAD for read transactions.

Submitted by:	Sascha Wildner
MFC after:	1 month
2012-09-07 19:00:27 +00:00
eadler
9463606153 Adding missing dependancies for loading hptiop(4), hptmv(4) and isp(4) as modules.
PR:		kern/166239
Submitted by:	Pavel Timofeev <timp87@gmail.com>
Discussed on:	-stable, -scsi
Reviewed by:	scottl
No objection from: mjacob
Approved by:	cperciva
MFC after:	3 days
2012-06-01 04:34:49 +00:00
scottl
32e16cef40 Convert a number of drivers to obtaining their parent DMA tag from their
PCI device attachment.
2012-03-12 08:03:51 +00:00
uqs
bb016fc00a Remove spurious 8bit chars, turning files into plain ASCII. 2012-01-15 13:23:33 +00:00
marius
c5cf0f6b20 - Just use cam_calc_geometry(9) on newer version of FreeBSD rather than
duplicating it.
- In hptmv(4) and hptrr(4) use __FBSDID and DEVMETHOD_END.
2011-11-23 21:43:51 +00:00
jeff
2d7d8c05e7 - Merge changes to the base system to support OFED. These include
a wider arg2 for sysctl, updates to vlan code, IFT_INFINIBAND,
   and other miscellaneous small features.
2011-03-21 09:40:01 +00:00
mav
86d0f9df6c Report transport type in XPT_PATH_INQ.
MFC after:	3 days
2010-06-19 13:42:14 +00:00
mbr
7450f52a57 Remove extraneous semicolons, no functional changes.
Submitted by:	Marc Balmer <marc@msys.ch>
MFC after:	1 week
2010-01-07 21:01:37 +00:00
mav
c25fc50a5e MFp4:
Remove unused ATAPI definitions, conflicting with ata.h.

Submitted by:	scottl
2009-06-24 20:43:51 +00:00
delphij
af51670d80 Use DEVICE_SHUTDOWN(9) mechanism for shutdown handler.
Suggested by:	jhb
2009-04-09 07:45:23 +00:00
delphij
ba65fe81aa When multiple cards are present, register a shutdown handler for each card
instead of just register one for the first adapter.  Without doing this
there would be some data loss upon shutdown because data could be ignored
when flushing to disk.

MFC after:	3 days
2009-04-07 16:40:31 +00:00
delphij
5758952bad Update driver to vendor's version 1.16 plus some local changes:
- override_kernel_driver() has been removed since this is an
   in-tree version of driver.
 - __DATE__ and __TIME__ removed from version string to make
   binary update builders happy.
 - Utilize pause(9) for __FreeBSDversion >= 700033 (redo 167086).
 - Utilize kproc_suspend_check() for __FreeBSDversion >= 800002.
   (redo 172836).
 - Don't read past end of pVDevice (redo 143787).
 - Make sure that controller and channel are initialized (redo 169823).
 - Don't include cam/cam_xpt_periph.h (redo 158177).

MFC After:	3 days
2009-04-07 16:38:25 +00:00
julian
51d643caa6 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.
2007-10-20 23:23:23 +00:00
scottl
ff584e70fa 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.
2007-06-17 05:55:54 +00:00
mjacob
8e5e208b6f Perhaps a better fix- make the called function do the (possible never reached)
initialization. Do a token amount of style cleanup.

Poked by: bde
2007-05-21 09:26:47 +00:00
mjacob
02c830db95 Make gcc 4.2 happy by initiatlizing controller && channel prior
to a call to a function which *might* then initialize them.

MFC after:	3 days
2007-05-20 16:49:09 +00:00
scottl
7605c12c0f 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.
2007-04-15 08:49:19 +00:00
jhb
9081d44243 Use pause() rather than tsleep() on stack variables and function pointers. 2007-02-27 17:23:29 +00:00
piso
6a2ffa86e5 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@
2007-02-23 12:19:07 +00:00
jhb
2cd5f6bd1c - Use a regular mutex rather than a spin mutex. This driver doesn't need
a spin mutex since it doesn't have an INTR_FAST interrupt handler.
  Beyond that the driver is still under Giant anyway.
- Remove unneeded locking during attach across operations that can't be
  called with locks held (such as bus_dma_tag_create()).

MFC after:		1 week
Not objected to by:	scottl
2007-01-04 20:28:17 +00:00
phk
ef310efff8 Since DELAY() was moved, most <machine/clock.h> #includes have been
unnecessary.
2006-05-16 14:37:58 +00:00
scottl
c97e09528c Remove some header polution. 2006-04-30 16:44:41 +00:00
ru
522e9c2b7b Fix -Wundef. 2005-12-04 02:12:43 +00:00
schweikh
fd806854c9 Don't augment the DRIVER_VERSION "v1.12" with __DATE__ and __TIME__.
This is the only file of > 1700 files in a buildkernel here doing that.
It makes reproducible builds (same source => same binary) impossible.

Spotted by:	devel/ccache
2005-11-13 10:13:31 +00:00
scottl
28cd9f9628 Fix a typo that broke LINT. 2005-09-08 14:13:36 +00:00
scottl
2a42f59489 Import new version of the HPTMV driver from Highpoint. The major change
here is the support for amd64, as well as possible support for PAE.  Many
thanks to Highpoint for continuing to support FreeBSD.

Obtained from:  Steve Chang @ Highpoint
MFC After: 3 days.
2005-09-07 23:33:26 +00:00
nyan
0fce92f5c4 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)
2005-05-29 04:42:30 +00:00
sam
0f37f556b7 check copyin return value (and while we're at it copyout too)
Noticed by:	Coverity Prevent analysis tool
2005-03-31 05:15:27 +00:00
sam
fd379eb29a plug resource leak
Noticed by:	Coverity Prevent analysis tool
2005-03-29 01:46:25 +00:00
das
64406ce1fb Don't read past the end of pVDevice[]. (Previously, we would iterate
twice as many times as there were entries in the array.)

Spotted by:	Ted Unangst using the Coverity Prevent static analysis tool
Reviewed by:	scottl
2005-03-18 05:43:34 +00:00
das
caf92f76fe Don't write past the end of the VendorId field (and into the ProductId
field).

Spotted by:	Ted Unangst using the Coverity Prevent static analysis tool
Reviewed by:	scottl
2005-03-18 05:43:31 +00:00
scottl
4d2ae547ed Clean up the botching of the previous repo-copy. Reference the included
headers from the correct location.

Submitted by: Tai-hwa Liang
2005-03-02 15:13:37 +00:00
scottl
234c4487a0 Move all of the hptmv files to /sys/dev/hptmv so that they won't be mistaken
for being on a CVS vendor branch.  The files were moved via a repo-copy.
2005-03-02 05:14:28 +00:00
obrien
f2b675e741 Add FreeBSD ID. 2005-02-28 00:53:29 +00:00
sam
95526fd399 avoid sneaky double free
Noticed by:	Coverity Prevent analysis tool
Reviewed by:	scottl
2005-02-25 00:16:53 +00:00
sam
a2dc045488 plug resource leak
Noticed by:	Coverity Prevent analysis tool
Reviewed by:	scottl
2005-02-24 02:24:24 +00:00
imp
4b319958e7 Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
njl
ae7f7772e5 Move launching the worker thread from a SYSINIT to the first device's
attach.  This fixes the previous behavior where systems without hptmv
hardware always had a worker thread running.
2004-12-19 19:42:54 +00:00
scottl
3f4ffafdb8 Fix some warnings that only triggered in LINT. 2004-10-24 09:23:07 +00:00