Commit Graph

49 Commits

Author SHA1 Message Date
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
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
wiz
1e378c4c12 precede, not preceed. 2001-08-20 12:00:46 +00:00
thorpej
623f83a793 Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places. 2001-07-19 16:25:23 +00:00
thorpej
7711ad565b bcopy -> memcpy 2001-07-07 15:53:13 +00:00
ross
e3f2f91bfb Split pci and eisa/isa attachment calls, plus misc cleanup. 2001-05-03 20:34:54 +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
thorpej
fd7ed72be1 Add BUS_DMA_STREAMING to data transfer maps. 2001-03-07 23:07:12 +00:00
soren
290a66c213 Reduce probe noise. 2000-11-21 05:23:37 +00:00
thorpej
275539f03c NBPG -> PAGE_SIZE 2000-11-14 18:21:00 +00:00
simonb
5d4fa9b0ce Revert rev 1.31 of bha.c (and associtated changes in the headers and
config glue files).

Fixes PR kern/9841.  Tested by Tracy J. Di Marco White with a bt948
and 6 disks.
2000-10-03 14:07:36 +00:00
mrg
314f1e97c5 remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h> 2000-06-28 17:12:48 +00:00
augustss
169ac5b3c1 Remove register declarations. 2000-03-30 12:41:09 +00:00
thorpej
fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
thorpej
1268cc5d6c If we got an xfer from our backlog queue, don't allow sleeping; we're in
interrupt context.

XXX This is fixed properly in the thorpej_scsipi branch, but that won't
be ready for 1.5, I don't think.
2000-02-12 19:12:52 +00:00
mycroft
d486b755ca Fix prototype of bha_ccb_phsy_kv() so this compiled on the Mac again. 1999-10-09 22:46:20 +00:00
thorpej
a3ef0b7a6d Fix compilation of ISA bha front-end. PR #8528, Takahiro Kambe. 1999-10-01 18:17:12 +00:00
thorpej
415b44a62a Rework the Buslogic SCSI driver in preparation for some pending improvements
to the SCSIPI subsystem.
- Determine more characteristics about the board, including the number
  of concurrent commands that the processor can execute at a time.
- Rework memory allocation strategy so that we can do dynamic pre-allocation
  of resources according to workload.

Thanks to the Linux Buslogic driver for having some useful comments.
1999-09-30 23:12:28 +00:00
ross
5709f532d1 Random compile nits in BHADEBUG code. 1999-01-14 04:47:18 +00:00
thorpej
7a9cc5bfbc Update for changed scsipi_xfer struct. 1998-12-09 08:37:50 +00:00
mjacob
74bc9f26d5 Update HBAs to incorporate the new max_lun property. 1998-12-05 19:43:33 +00:00
thorpej
5f0577babc Adapt to the new scsipi_adapter interface. 1998-11-19 21:43:00 +00:00
thorpej
29d472f53d Garbage-collect the open_target_lu and close_target_lu entry points from
struct scsipi_adapter; they were not used.

Add a scsipi_ioctl entry point to struct scsipi_adapter.  This will be
used to issue ioctl commands to the host adapters.

Inspired by PR #6090, from Matt Jacob.
1998-10-10 00:28:28 +00:00
mycroft
a1ac68819f Assign my copyrights to TNF. 1998-08-17 00:26:32 +00:00
jonathan
466e784ee1 defopt DDB. 1998-07-04 22:18:13 +00:00
mjacob
1acc8b53b5 Cute buglet: you can end up with zero CCBs if there were no targets
seen by the adapter. Always leave a minimum so the adapter can
finish attaching- it may be there w/o targets for a reason.
1998-04-28 23:57:53 +00:00
thorpej
e08a44b196 - Perform all necessary bus_dmamap_sync() operations.
- Greatly simplify allocation and DMA mapping of the mailbox and ccbs.
- Be more robust against resource shortage errors, and report errors better.
1998-02-06 23:06:44 +00:00
thorpej
8abe76d2f0 Add offset and length parameters to bus_dmamap_sync(), used for specifiying
partial syncs of a DMA mapping.
1998-02-04 05:12:46 +00:00
thorpej
a7c5c1ef3c Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC to
BUS_DMA_COHERENT.
1998-02-04 00:32:55 +00:00
thorpej
2538ed1062 Use offsetof() from libkern.h 1998-01-28 02:23:04 +00:00
thorpej
095c4c092d Adjust for config changes. 1998-01-12 09:23:08 +00:00
thorpej
03a0c2d900 Implement a simple queueing mechanism that makes these drivers much
more robust in resource shortage situations, basically identical to
code I added to the "ahc" driver some time ago.

Thanks to Brad Spencer for the testing help.
1997-11-04 05:58:22 +00:00
thorpej
711fc71012 When creating ccbs, be a little more informative about why we couldn't
shoud creation/initialization of a ccb fail.  Also, don't panic in
these situations.  Instead, simply return an error condition and allow
the caller to deal with it.  It may be the case that we were able to
create one ccb what we can grab, and continue to hobble along.
1997-10-28 23:06:21 +00:00
thorpej
d1bfbc66c6 Syncronize with changes to aha.c:
Adjust the number of ccbs allocated during initialization.
Every ccb could potentially lock 64k of memory for dma buffers if bounce
buffers are used.  Instead of BHA_CCB_MAX ccbs using 2MByte, only
sc_link.openings ccbs per device are allocated.  Thus we now use only
256KByte per device present.
(hannken)

Fix a couple of errors in bha_create_ccbs():
- Don't ever let the number of CCBs be creater than BHA_CCB_MAX.
- Fix a fencepost that caused the last CCB allocated to never be put
  on the freelist.
(thorpej)
1997-10-28 19:13:36 +00:00
bouyer
6f3bab1f59 Merge scsipi branch in the mainline. This add support for ATAPI devices
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
1997-08-27 11:22:52 +00:00
thorpej
fbc0df0a1a Pull thorpej-bus-dma branch into mainline. 1997-06-06 23:30:02 +00:00
thorpej
c0c810cbe0 Initialize the scsi_link before calling bha_init(), since that is how
we check for "wide controller" now.
1997-04-11 01:34:25 +00:00
mycroft
080350dc0d Use a temporary data structure for holding probe information, rather than a
full softc.
1997-03-28 23:47:08 +00:00
cgd
4c654c0acf fixes from Matt Jacob so that these can compile and run on the Alpha.
(aic7xxx has been tested and works on the Alpha, bha has not yet been
tested on thne Alpha.)
1997-03-13 00:38:48 +00:00
mycroft
54133e5f93 Remove a previous gratuitous change, and KNF police. 1997-01-17 22:09:09 +00:00
thorpej
fca7fce17e Deal with targets > 7 on wide Buslogic controllers. Remember the "wide"
bit from the extended setup inquiry and key off it to:
- Force synchronous negotiation on targs > 7.
- Read additional information returned by wide cards on inquire setup.
- Read sync period on targs > 7.
- Display sync period/offset on targs > 7.
- Set scsi_link.max_target to 15.
cvs: ----------------------------------------------------------------------
1996-12-20 21:35:10 +00:00
thorpej
d502e68402 Fill in sc_link.max_target 1996-12-10 21:27:16 +00:00
thorpej
a4f9e46a87 The MODIFY_IOPORT command does not generate an HACC (command complete)
signal; don't wait for it.

Add a "clarification" cast to the last argument to bha_cmd() in
bha_disable_isacompat().
1996-11-28 00:43:26 +00:00
jonathan
79b026a8f3 * Add command struct and modifier definitions for controlling the
ISA-compatible port space of PCI buslogic cards.

* Add call to bha_pci.c to disable the ISA-compatible ports of a PCI
  device.  The ISA-compatible ports are enabled by default, which
  causes the card to be autoconfigured a second time as an ISA device,
  which appears to deadlock the card.

* Change bha_cmd() to return the number of bytes it actually received
  in response to a command, or -1 on error.

*  Use heuristics (checking for bha-only registers, and checking the size
   of the response to BHA_INQURE_EXTENDED) to bha_find, to make sure the
   bha driver never matches an aha (Adaptec    1542 or compatible) device.

A single kernel should now boot on either Adaptec or BusLogic controllers,
provided we always probe for BusLogic devices before Adaptec devices,
but this has not yet been verified.
1996-11-05 03:04:28 +00:00
thorpej
16c4c5af26 New bus.h implementation/interface:
- No more distinction between i/o-mapped and memory-mapped
	  devices.  It's all "bus space" now, and space tags
	  differentiate the space with finer grain than the
	  bus chipset tag.
	- Add memory barrier methods.
	- Implement space alloc/free methods.
	- Implement region read/write methods (like memcpy to/from
	  bus space).
This interface provides a better abstraction for dealing with
machine-independent chipset drivers.
1996-10-21 22:24:37 +00:00
christos
86373f8cf9 backout kprintf changes 1996-10-13 01:37:04 +00:00
christos
48635ba80c - printf -> kprintf, sprintf -> ksprintf
- ifdef unused variable
1996-10-10 22:14:18 +00:00
mycroft
06fdef11fd Split the BusLogic driver apart, and rename it to `bha (like BSDi). 1996-08-31 20:18:24 +00:00