Commit Graph

106 Commits

Author SHA1 Message Date
petrov 7d83b6157f Comment out debug printf. 2003-04-16 18:53:50 +00:00
pk 557a5199d2 Make this driver MP-safe by using a single spin lock to guard all its entrances. 2003-02-04 20:05:11 +00:00
pk ac9d761168 The introduction of FAS366 support annihilated the `reselect-while-selecting'
workaround for the ESP100 variant.
2003-01-30 11:03:45 +00:00
petrov 94f3e9b824 Reset the driver on scsibus reset. 2002-10-06 21:35:33 +00:00
provos 0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
mycroft 5031fe3837 Update copyright. 2002-09-25 06:23:29 +00:00
mycroft 04f09a4b0c Additional fixes to make 16 targets work on FAS366. 2002-09-25 05:19:20 +00:00
mycroft 06c9e05c76 Oof, this driver needs a lot more work to support 16 targets. 2002-09-24 13:29:44 +00:00
mycroft b200651116 Tell the scsibus layer we have 16 targets on the FAS366. 2002-09-22 19:05:11 +00:00
petrov dc81a805ea Use driver reset in case 'internal state mismatch'. 2002-09-16 21:49:15 +00:00
petrov a413e88543 Accept WDTR from device(based on John Heasley patch for SCSI3 drive).
Do not define NCR53C9X_DEBUG.
2002-08-26 06:23:32 +00:00
petrov 3a67429963 Start SYNC/WIDE renegotiating in controller reset, rearrange debug output. 2002-08-26 05:17:48 +00:00
lukem 21ebff3b67 implement SCBUSIORESET by calling ncr53c9x_scsi_reset() 2002-06-21 13:27:49 +00:00
bouyer e5727031fb Implement mstohz() as discussed on tech-kern, and use it in SCSI drivers
to convert xs->timeout to callout() parameter.
2002-04-05 18:27:45 +00:00
petrov 71419e9eb9 Return from interrupt handler after chip init(reset). 2002-04-02 09:48:27 +00:00
jdolecek 9977ae0589 ncr53c9x_attach(): if sc_rev is NCR53C90_86C01, set it to ESP100 once
the variant name is printed.
This fixes a problem that the card would be treated as ESP100 in
ncr53c9x_reset(), but not on couple other places (pointed out by
Andy Doran in private e-mail).

g/c now redundant case entry in ncr53c9x_reset()
2002-03-24 17:16:19 +00:00
thorpej a180cee23b Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map).  Try to deal with this:

* Group all information about the backend allocator for a pool in a
  separate structure.  The pool references this structure, rather than
  the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
  to become available, but will still fail if it cannot callocate KVA
  space for the pages.  If this happens, carefully drain all pools using
  the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
  some pages, and use that information to make draining easier and more
  efficient.
* Get rid of PR_URGENT.  There was only one use of it, and it could be
  dealt with by the caller.

From art@openbsd.org.
2002-03-08 20:48:27 +00:00
tsutsui 84926576f1 Call malloc(9) with M_ZERO flag instead of memset() after malloc(). 2002-01-12 16:03:11 +00:00
jdolecek 08733c9d51 add NCR_VARIANT_NCR53C90_86C01 "NCR53C90 (86C01)"
treat exactly like NCR_VARIANT_ESP100
2001-12-03 23:27:31 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem a4bae8b066 add/cleanup RCSID 2001-11-13 13:14:31 +00:00
tsutsui 064be15283 Use common macro to check message length. 2001-11-04 12:03:41 +00:00
tsutsui 5309850228 Fix timeout overflow caused by "scsictl format" on machines HZ==100. 2001-07-26 15:51:04 +00:00
chs 864f123d5a add a missing newline in a printf. 2001-07-10 00:36:36 +00:00
thorpej 0884f20bf7 bzero -> memset 2001-07-07 16:13:44 +00:00
thorpej 7711ad565b bcopy -> memcpy 2001-07-07 15:53:13 +00:00
petrov 9d59ae231c adjust fas register fields names 2001-05-23 18:32:26 +00:00
bouyer 8aa2f73d43 Enable tagged queuing again; should work now with scsipi_base rev 1.42 2001-05-18 12:57:42 +00:00
bouyer 19b0c05827 Ops, don't forget to increment li->used for each tagged command. 2001-04-30 13:58:32 +00:00
bouyer 1346d56311 - don't wait when called from interrupt context (basically this means we
can't sleep in HBA drivers)
- pool_get can fail, so return XS_RESOURCE_SHORTAGE instead of panic()
- don't try to bzero() a NULL pointer
2001-04-28 15:09:42 +00:00
bouyer 856411129e Disable tagged queuing for now, it causes commands timeouts.
Note that it's not worse since thorpej_scsipi integration: tagged queuing
was not used before, because of a tag message rejected at probe time.
2001-04-26 17:09:39 +00:00
bouyer 937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
tsutsui f39a68828d Make sure to check SC_ACCEL_TAGS in ncr53c9x_ioctl()
even if sync transfer is disabled or not supported.
2001-04-21 07:28:22 +00:00
tsutsui 64eed5859d Clean up ncr53c9x_select():
- Define NCR_F_SELATN3 for sc_features and use it to check if the chip
  supports SELATN3 command
- Make conditions of sending messages a bit simpler.
2001-04-21 05:35:20 +00:00
tsutsui f2e3f6d5d4 Cosmetics. (tab/space etc.) 2001-04-20 17:32:33 +00:00
petrov b0605f71d5 fas support added 2001-03-29 02:58:38 +00:00
eeh 905ef1b7fa Use the SCSIACCEL ioctl() to turn on TAG QUEUEs. 2001-01-19 23:04:23 +00:00
briggs 9a73f8b22b Make _sure_ that we do not use selatn3 when it is not present. Fixes a
problem on pmax reported by Izumi Tsutsui.  Tested also on alpha and mac68k.
2000-12-20 15:49:03 +00:00
eeh d1ab475964 Make the driver negotiate sync again and remove some (hopefully) superfluous
DELAY()s.
2000-12-20 03:19:34 +00:00
pk c6bd81f8a6 Fix reversed logic when setting setting sync-negotiation ability flag 2000-12-19 14:08:17 +00:00
briggs 7ea0edc288 If the target rejects a tag message, turn off tagged transfers for that target.
Also, adjust message/command construction in ncr53c9x_select() to work no
matter how the structure alignment works out (needed at least for m68k).
Tested by me on mac68k & alpha, and sanity-checked by eeh.
2000-12-18 23:39:44 +00:00
briggs d25ab824c8 Back out previous change. It appears to be in error. There is something
else that is causing the esp driver on the mac68k to fail miserably.
2000-12-17 04:38:29 +00:00
briggs 0debc0e91e At least the 53c96 does not work with the selatn3 command. Disable it
for both the 53c94 and 53c96.  This also addresses PR port-mac68k/11716.
2000-12-17 03:29:03 +00:00
eeh af770220fa Fix for chips that don't grok NCRCMD_SELATN3. 2000-12-10 19:25:07 +00:00
fvdl d26269e0a6 'error' was not initialized in the _ioctl function, potentially returning
!= 0 values in the non-error case.
2000-12-04 11:18:49 +00:00
eeh 03e0f9950a Fix bug in non-dma select code i added. 2000-12-03 23:25:24 +00:00
augustss a51ea43fd6 Make this compile again (on i386). 2000-12-01 04:37:54 +00:00
pk d736ce5086 We don't need <sys/proc.h>, <sys/user.h> and <machine/cpu.h>. 2000-11-30 23:21:39 +00:00
pk 55fa60c3e5 De-__P(). 2000-11-30 23:12:43 +00:00
pk 03903e1da8 KNF patrol. 2000-11-30 23:01:03 +00:00