#
259065 |
|
07-Dec-2013 |
gjb |
- Copy stable/10 (r259064) to releng/10.0 as part of the 10.0-RELEASE cycle. - Update __FreeBSD_version [1] - Set branch name to -RC1
[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so start releng/10.0 at '100' so the branch is started with a value ending in zero.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
254263 |
|
12-Aug-2013 |
scottl |
Update PCI drivers to no longer look at the MEMIO-enabled bit in the PCI 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
|
#
246713 |
|
12-Feb-2013 |
kib |
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>)
|
#
242479 |
|
02-Nov-2012 |
mjacob |
Don't allow for more than one segment for the control space since we're not set up to deal with that.
MFC after: 1 week
|
#
240219 |
|
07-Sep-2012 |
mjacob |
Remove useless extra test.
Pointed out by: Sascha of DragonFly BSD MFC after: 2 weeks
|
#
239502 |
|
21-Aug-2012 |
mjacob |
Remove dependence on MAXPHYS.
MFC after: 1 month
|
#
239218 |
|
12-Aug-2012 |
mjacob |
Fix an oops where we wiped out DMA maps. Don't allocate extended command space for anything less than a 2300.
MFC after: 1 month X-MFC: 238869
|
#
239010 |
|
03-Aug-2012 |
mjacob |
Oops. We only do allocate room for extended commands and responses for 2300 cards are newer.
Sponsored by: Spectralogic Noticed by: Our Friend Manfred MFC after: 1 month X-MFC: 238869
|
#
238869 |
|
28-Jul-2012 |
mjacob |
----------- MISC CHANGES
Add a new async event- ISP_TARGET_NOTIFY_ACK, that will guarantee eventual delivery of a NOTIFY ACK. This is tons better than just ignoring the return from isp_notify_ack and hoping for the best.
Clean up the lower level lun enable code to be a bit more sensible.
Fix a botch in isp_endcmd which was messing up the sense data.
Fix notify ack for SRR to use a sensible error code in the case of a reject.
Clean up and make clear what kind of firmware we've loaded and what capabilities it has. ----------- FULL (252 byte) SENSE DATA
In CTIOs for the ISP, there's only a limimted amount of space to load SENSE DATA for associated CHECK CONDITIONS (24 or 26 bytes). This makes it difficult to send full SENSE DATA that can be up to 252 bytes.
Implement MODE 2 responses which have us build the FCP Response in system memory which the ISP will put onto the wire directly.
On the initiator side, the same problem occurs in that a command status response only has a limited amount of space for SENSE DATA. This data is supplemented by status continuation responses that the ISP pushes onto the response queue after the status response. We now pull them all together so that full sense data can be returned to the periph driver.
This is supported on 23XX, 24XX and 25XX cards.
This is also preparation for doing >16 byte CDBs.
----------- FC TAPE
Implement full FC-TAPE on both initiator and target mode side. This capability is driven by firmware loaded, board type, board NVRAM settings, or hint configuration options to enable or disable. This is supported for 23XX, 24XX and 25XX cards.
On the initiator side, we pretty much just have to generate a command reference number for each command we send out. This is FCP-4 compliant in that we do this per ITL nexus to generate the allowed 1 thru 255 CRN.
In order to support the target side of FC-TAPE, we now pay attention to more of the PRLI word 3 parameters which will tell us whether an initiator wants confirmed responses. While we're at it, we'll pay attention to the initiator view too and report it.
On sending back CTIOs, we will notice whether the initiator wants confirmed responses and we'll set up flags to do so.
If a response or data frame is lost the initiator sends us an SRR (Sequence Retransmit Request) ELS which shows up as an SRR notify and all outstanding CTIOs are nuked with SRR Received status. The SRR notify contains the offset that the initiator wants us to restart the data transfer from or to retransmit the response frame.
If the ISP driver still has the CCB around for which the data segment or response applies, it will retransmit.
However, we typically don't know about a lost data frame until we send the FCP Response and the initiator totes up counters for data moved and notices missing segments. In this case we've already completed the data CCBs already and sent themn back up to the periph driver. Because there's no really clean mechanism yet in CAM to handle this, a hack has been put into place to complete the CTIO CCB with the CAM_MESSAGE_RECV status which will have a MODIFY DATA POINTER extended message in it. The internal ISP target groks this and ctl(8) will be modified to deal with this as well.
At any rate, the data is retransmitted and an an FCP response is sent. The whole point here is to successfully complete a command so that you don't have to depend on ULP (SCSI) to have to recover, which in the case of tape is not really possible (hence the name FC-TAPE).
Sponsored by: Spectralogic MFC after: 1 month
|
#
237537 |
|
24-Jun-2012 |
mjacob |
Clean up multi-id mode so it's driven by the f/w loaded, not by some hint setting. Do more preparations for FC-Tape. Clean up resource counting for 24XX or later chipsets so we find out after EXEC_FIRMWARE what is actually supported. Set target mode exchange count based upon whether or not we are supporting simultaneous target/initiator mode. Clean up some old (pre-24XX) xfwoption and zfwoption issues.
Sponsored by: Spectralogic MFC after: 3 days
|
#
237210 |
|
17-Jun-2012 |
mjacob |
Prepare for FC-Tape support. This involved doing a lot of little cleanups and crosschecks against firmware documentation. We now check and report FC firmware attributes and at least are now prepared for the upper 48 bits of f/w attributes (which are probably for the 8100 or later cards). This involed changing how inbits and outbits are calculated for varios commands, hopefully clearer and cleaner. This also caused me to clean up the actual mailbox register usage. Finally, we are now unconditionally using a CRN for initiator mode.
A longstanding issue with the 2400/2500 is that they do *not* support a "Prefer PTP followed by loop", which explains why enabling that caused the f/w to crash.
A slightly more invasive change is to let the firmware load entirely drive whether multi_id support is enabled or not.
Sponsored by: Spectralogic MFC after: 1 week
|
#
237135 |
|
15-Jun-2012 |
mjacob |
If debug values were set, the default from tval floated down and triggered an attempt to set multiple virtual ports whether you wanted them or not.
MFC after: 3 days
|
#
236379 |
|
01-Jun-2012 |
eadler |
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
|
#
227548 |
|
16-Nov-2011 |
mjacob |
Was chasing down a failure to load f/w on a 2400. It turns out that the card is actually broken, or needs a BIOS upgrade for 64 bit loads, but this uncovered a couple of misplaced opcode definitions and some missing continual mbox command cases, so might as well update them here.
|
#
224856 |
|
13-Aug-2011 |
mjacob |
Most of these changes to isp are to allow for isp.ko unloading. We also revive loop down freezes. We also externaliz within isp isp_prt_endcmd so something outside the core module can print something about a command completing. Also some work in progress to assist in handling timed out commands better.
Partially Sponsored by: Panasas Approved by: re (kib) MFC after: 1 month
|
#
219471 |
|
10-Mar-2011 |
mjacob |
Add support QLE220 card- an 2500 lookalike.
Obtained mostly from: Roman && Konstantin MFC after: 1 week
|
#
218691 |
|
14-Feb-2011 |
marius |
- Use the correct DMA tag/map pair for synchronize the FC scratch area. - Allocate coherent DMA memory for the request/response queue area and and the FC scratch area.
These changes allow isp(4) to work properly on sparc64 with usage of the IOMMU streaming buffers enabled.
Approved by: mjacob MFC after: 2 weeks
|
#
208761 |
|
02-Jun-2010 |
mjacob |
Various minor and not so minor fixes suggested by Coverity. In at least one case, it's amazing that target mode worked at all.
Found by: Coverity. MFC after: 2 weeks
|
#
207579 |
|
03-May-2010 |
marius |
On sparc64 obtain the initiator ID from the Open Firmware device tree in order to match what the PROM built-in driver uses.
Approved by: mjacob
|
#
205236 |
|
17-Mar-2010 |
mjacob |
Put gone device timer into a structure tag that can hold more than 32 seconds. Oops.
Untangle some of the confusion about what role means when it's in the FCPARAM/SDPARAM or isp_fc/isp_spi structures. This fixed a problem about seeing targets appear if you've turned off autologin and find them, or rather don't, via camcontrol rescan.
MFC after: 1 month
|
#
204397 |
|
27-Feb-2010 |
mjacob |
Revamp the pieces of some of the stuff I forgot to do when shifting to 32 bit handles. The RIO (reduced interrupt operation) and fast posting for the parallel SCSI cards were all 16 bit handles. Furthermore, target mode parallel SCSI only can have 16 bit handles.
Use part of a supplied patch to switch over to using 32 bit handles. Be a bit more conservative here and only do this for parallel SCSI for the 12160 (Ultra3) cards. There were a lot of marginal Ultra2 cards, and, frankly, few are findable now for testing.
Fix the target handle routine to only do 16 bit handles for parallel SCSI cards. This is okay because the upper sixteen bits of the new 32 bit handles is a sequence number to help protect against duplicate completions. This would be very unlikely to happen with parallel SCSI target mode, and wasn't present before, so we're no worse off than we used to be.
While we're at it, finally split the async mailbox completion handlers into FC and parallel SCSI functions. This makes it much cleaner and easier to figure out what is or isn't a legal async mailbox completion code for different card classes.
PR: kern/144250 Submitted partially by: Charles D MFC after: 1 week
|
#
204384 |
|
27-Feb-2010 |
mjacob |
Fix misallocation error in target mode.
MFC after: 1 day
|
#
203444 |
|
03-Feb-2010 |
mjacob |
Redo how commands handles are created and managed and implement sequence numbers and handle types in rational way. This will better protect from (unwittingly) dealing with stale handles/commands.
Fix the watchdog timeout code to better protect itself from mistakes.
If we run an abort on a putatively timed out command, the command may in fact get completed, so check to make sure the command we're timing it out is still around. If the abort succeeds, btw, the command should get returned via a different path.
|
#
196008 |
|
31-Jul-2009 |
mjacob |
Add 8Gb support (isp_2500). Fix a fair number of configuration and firmware loading bugs.
Target mode support has received some serious attention to make it more usable and stable.
Some backward compatible additions to CAM have been made that make target mode async events easier to deal with have also been put into place.
Further refinement and better support for NP-IV (N-port Virtualization) is now in place.
Code for release prior to RELENG_7 has been stripped away for code clarity.
Sponsored by: Copan Systems
Reviewed by: scottl, ken, jung-uk kim Approved by: re
|
#
171057 |
|
26-Jun-2007 |
mjacob |
Pointy hat to me. Committed with building.
Approved by: re (ken, implicit)
|
#
171051 |
|
26-Jun-2007 |
mjacob |
Extension of previous commit- when we have 2k login firmware, we need to put out a ispreqt2e_t structure onto the request queue- not a ispreqt2_t structure. I forgot that the 23XX can use a t2 structure.
Approved by: re (ken, implicitly) MFC after: 3 days
|
#
171028 |
|
25-Jun-2007 |
mjacob |
Yet another bug- when we have 2k login firmware, we need to put out a ispreqt3e_t structure onto the request queue- not a ispreqt3_t structure. We weren't. This turns out only to really matter for big endian machines.
Approved by: re (ken) MFC after: 3 days
|
#
170563 |
|
11-Jun-2007 |
mjacob |
Only try and set a segment lim size to 1 << 32 iff bus_size_t > 4.
|
#
169459 |
|
11-May-2007 |
mjacob |
Fix pointy-hat problem with BUS_DMA_ROOTARG macro that caused problems for sparc64. Candidate for immediate MFC.
Noticed by: Everyone-maxim contacted.
|
#
169292 |
|
05-May-2007 |
mjacob |
Make this an MP safe driver but also still be multi-release. Seems to work on RELENG_4 through -current and also on sparc64 now. There may still be some issues with the auto attach/detach code to sort out.
MFC after: 3 days
|
#
168240 |
|
01-Apr-2007 |
mjacob |
Temporarily desupport simultaneous target and initiator mode.
When the linux port changes were imported which split the target command list to be separate from the initiator command list and the handle format changed to encode a type in the handle the implications to the function isp_handle_index (which only the NetBSD/OpenBSD/FreeBSD ports use) were overlooked.
The fault is twofold: first, the index into the DMA maps in isp_pci is wrong because a target command handle with the type bit left in place caused a bad index (and panic) into dma map. Secondly, the assumption of the array of DMA maps in either PCS or SBUS attachment structures is that there is a linear mapping between handle index and DMA map index. This can no longer be true if there are overlapping index spaces for initiator mode and target mode commands.
These changes bandaid around the problem by forcing us to not have simultaneous dual roles and doing the appropriate masking to make sure things are indexed correctly. A longer term fix is being devloped.
|
#
167821 |
|
22-Mar-2007 |
mjacob |
MFP4: a) Some constification from NetBSD (gcc 4.1.2) b) Split default param fetching/setting into scsi and fibre functions and retry the fibre fetch more than once.
MFC after: 1 week
|
#
167501 |
|
13-Mar-2007 |
mjacob |
Move bus_space_tag and bus_space_handle register access tokens into the common isp_osinfo structure instead of being in bus specific structures. This allows us to implement a SYNC_REG MEMORYBARRIER call (using bus_space_barrier) and also reduce the amount of bus specific wrapper structure usages in isp_pci && isp_sbus.
MFC after: 3 days
|
#
167473 |
|
12-Mar-2007 |
mjacob |
Fix compilation issues found in RELENG_4 port and merge the diffs back to -current to keep versions identical.
|
#
167403 |
|
10-Mar-2007 |
mjacob |
Fix some stupid copyright mistakes that have been there for quite some time.
|
#
166935 |
|
23-Feb-2007 |
mjacob |
Redo previous newbus related change to be kinder to multi-release support.
|
#
166901 |
|
23-Feb-2007 |
piso |
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@
|
#
166895 |
|
23-Feb-2007 |
mjacob |
There is a problem in setting/getting 'options'- if we check things early, we haven't set board type, so we can't correctly check for some options. Fix this by splitting option setting/getting into generic, pci and then later board specific, option setting/getting.
This was noticed when setting 'iid' (or 'hard loop id') didn't work all of a sudden.
Noticed by: Mike Drangula (thanks!) via Jung-uk Kim (thanks!)
|
#
166615 |
|
10-Feb-2007 |
mjacob |
add a missing piece for 2432
|
#
166614 |
|
10-Feb-2007 |
mjacob |
Putative untested 2432 (PCI-E) support.
|
#
166177 |
|
22-Jan-2007 |
mjacob |
Clean up some of the various platform and release specific dma tag stuff so it is centralized in isp_freebsd.h.
Take out PCI posting flushed in qla2100/2200 register reads except for 2100s.
|
#
165817 |
|
05-Jan-2007 |
mjacob |
error print cleanup && turn off ints if RISC is paused
|
#
165338 |
|
18-Dec-2006 |
mjacob |
Restore revision 1.126 that got accidentally nuked.
|
#
165269 |
|
16-Dec-2006 |
mjacob |
Implement ISP_RESET0 for PCI and SBUS attachments- isp_reset has been modified to call ISP_RESET0 if it fails to do a reset. This gives us a chance to disable interrupts.
|
#
165061 |
|
10-Dec-2006 |
mjacob |
Remove dependency on ispfw and firmware as modules. Either they're there early and the ispfw sets have registered themselves, or they're not.
The module dependency stuff isn't quite what we want anyway. If the user doesn't want the load placed on system memory by loading the firmware, they don't specify it to be loaded (either by being linked in or via being a module to be loaded and then hooked in with firmware(9)). It doesn't then make sense to then override what they want by pulling it in anyway.
This might be able to work if we were able to pull in just exactly what we needed for the card we have- but that's an optimization left for the future.
|
#
164370 |
|
18-Nov-2006 |
mjacob |
Make the SAN login/logout stuff more common between different chipsets and provied an isp_control entry point so that the outer layers can do PLOGI/LOGO explicitly. Add MS IOCB support. This completes the cycle for base support for SMI-S.
|
#
164361 |
|
17-Nov-2006 |
mjacob |
Disable code to set max read byte count on the 2400.
It caused a panic in writing the config register on a system. Turn it off until we take the time to understand it.
Reported by and Testing by: Anton
|
#
164272 |
|
14-Nov-2006 |
mjacob |
Push things closer to path failover by implementing loop down and gone device timers and zombie state entries. There are tunables that can be used to select a number of parameters.
loop_down_limit - how long to wait for loop to come back up before declaring all devices dead (default 300 seconds)
gone_device_time- how long to wait for a device that has appeared to leave the loop or fabric to reappear (default 30 seconds)
Internal tunables include (which should be externalized):
quick_boot_time- how long to wait when booting for loop to come up
change_is_bad- whether or not to accept devices with the same WWNN/WWPN that reappear at a different PortID as being the 'same' device.
Keen students of some of the subtle issues here will ask how one can keep devices from being re-accepted at all (the answer is to set a gone_device_time to zero- that effectively would be the same thing).
|
#
163899 |
|
02-Nov-2006 |
mjacob |
Add 4Gb (24XX) support and lay the foundation for a lot of new stuff.
|
#
161932 |
|
02-Sep-2006 |
mjacob |
Restore multi-version cleanliness.
|
#
161928 |
|
02-Sep-2006 |
jmg |
add a newbus method for obtaining the bus's bus_dma_tag_t... This is required by arches like sparc64 (not yet implemented) and sun4v where there are seperate IOMMU's for each PCI bus... For all other arches, it will end up returning NULL, which makes it a no-op...
Convert a few drivers (the ones we've been working w/ on sun4v) to the new convection... Eventually all drivers will need to replace the parent tag of NULL, w/ bus_get_dma_tag(dev), though dev is usually different for each driver, and will require hand inspection...
Reviewed by: scottl (earlier version)
|
#
161794 |
|
01-Sep-2006 |
mjacob |
More ispfwfunc definitions funnies which break pre-7.0 builds.
|
#
161487 |
|
20-Aug-2006 |
mjacob |
Fix RELENG_4 code version- isp_roles wasn't getting initialized so it ended up defaulting to ISP_ROLE_NONE. My testing hadn't caught it because I was deliberatly setting role via ioctl.
Thanks to user Toni for lending me an alpha to test this on.
MFC after: 0 days
|
#
161270 |
|
14-Aug-2006 |
mjacob |
The register offset is within 4K, not 256 bytes, for some QLogic cards.
|
#
160410 |
|
16-Jul-2006 |
mjacob |
Some rearrangement of headers to minimize diffs with outside of FreeBSD repository and to clean up the license header so as to not pollute the license with file function.
Zero all mailbox structures prior to use (just in case). Change the outgoing mailbox count for INIT_FIRMWARE to be correct.
|
#
160338 |
|
14-Jul-2006 |
mjacob |
Don't attach 2422's yet. It just confuses everyone.
|
#
160212 |
|
09-Jul-2006 |
mjacob |
Convert isp(4) and ispfw(4) to use firmware(9) to manage firmware loading for the QLogic cards.
Because isp(4) exists before the root is mounted, it's not really possible for us to use the kernel's linker to load modules directly from disk- that's really too bad.
However, the this is still a net win in in that the firmware has been split up on a per chip (and in some cases, functionality) basis, so the amount of stuff loaded *can* be substantially less than the 1.5MB of firmware images that ispfw now manages. That is, each specific f/w set is now also built as a module. For example, QLogic 2322 f/w is built as isp_2322.ko and Initiator/Target 1080 firmware is built as isp_1080_it.ko.
For compatibility purposes (i.e., to perturb folks the least), we also still build all of the firmware as one ispfw.ko module.
This allows us to let 'ispfw_LOAD' keep on working in existing loader.conf files. If you now want to strip this down to just the firmware for your h/w, you can then change loader.conf to load the f/w you specifically want.
We also still allow for ispfw to be statically built (e.g., for PAE and sparc64).
Future changes will look at f/w unloading and also role switching that then uses the kernel linker to load different ips f/w sets. MFC after: 2 months
|
#
160080 |
|
03-Jul-2006 |
mjacob |
Do various fixes to support firmware loading for the 2322 (and by extension, the 2422).
One peculiar thing I've found with the 2322 is that if you don't force it to do Hard LoopID acquisition, the firmware crashes. This took a while to figure out.
While we're at it, fix various bugs having to do with NVRAM reading and option setting with respect to pieces of NVRAM.
|
#
158817 |
|
22-May-2006 |
mjacob |
Remove bzero/bcopy vestiges
Be cognizant as to whether we're running 2KLogin f/w in target mode and do the appropriate loopid load based upon that.
Do a first cut (seems to work, at least for amd64) at 64 bit target mode for fibre channel cards. We could probably also do it for SPI cards, but that's not supported right now.
|
#
157943 |
|
21-Apr-2006 |
mjacob |
Some more gratuitous format and name changes.
Pull in some target mode changes from a private branch. Pull in some more RELENG_4 compilation changes.
A lot of lines changed, but not much content change yet.
|
#
155704 |
|
14-Feb-2006 |
mjacob |
a) clean up some declaration stuff (i.e., make more modern with respect to getting rid u_int for uint and so on).
b) Turn back on 64 bit DAC support. Cheeze it a bit in that we have two DMA callback functions- one when we have bus_addr_t > 4 bits in width and the other which should be normal. Even Cheezier in that we turn off setting up DMA maps to be BUS_SPACE_MAXADDR if we're in ISP_TARGET_MODE. More work on this in a week or so.
c) Tested under amd64 and 1MB DFLTPHYS, sparc64, i386 (PAE, but insufficient memory to really test > 4GB). LINT check under amd64.
MFC after: 1 month
|
#
155285 |
|
04-Feb-2006 |
mjacob |
Actually, no, I had it wrong in 1.109. The arguments to bus_dma_create_tag are bus_addr_t, not bus_size_t.
In any case, turn off DAC support entirely until it is revamped to actually work *correctly* for 64 bit platforms (not using a PAE definition and for both initiator and target mode).
|
#
155273 |
|
04-Feb-2006 |
scottl |
i386/PAE defines bus_size_t to be 32-bits when it likely should be 64-bits. Fixing it is left for another day, so just hack around it for now.
|
#
155228 |
|
02-Feb-2006 |
mjacob |
Remove use of inlines and use the functions as a library.
Larger code space, possibly performance hit, but more portable. Certainly less questionable use of inlining.
Suggested by: des
|
#
154850 |
|
26-Jan-2006 |
mjacob |
oops
|
#
154846 |
|
26-Jan-2006 |
mjacob |
Put in at least an attempt to ID the 2422 (4Gb part)
|
#
154704 |
|
23-Jan-2006 |
mjacob |
First of several commits as this driver is dusted off and maybe brought up to date. Principle changes for this reelase is to support 2K Port Login firmware. This allows us to support the 2322 (and 2422 4Gb) cards which only come with the 2K Port Login firmware. The 2322 should now work- but we don't have firmware sets for it in ispfw (as the change to load 2K Port Login f/w hasn't been made- that f/w is so big it has to be loaded in more than one chunk).
Other changes are the beginnings of cleaning up some long standing target mode issues. The next changes here will incorporate a lot of bug fixes from others.
Finally, some copyright cleanup and attempts to make the parts of the driver that are FreeBSD specific start conforming more to FreeBSD style.
MFC after: 1 month
|
#
153462 |
|
15-Dec-2005 |
jhb |
Use uintmax_t and %j to print bus dma segment members rather than casting to long long and using %ll.
|
#
146734 |
|
29-May-2005 |
nyan |
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)
|
#
146080 |
|
11-May-2005 |
mjacob |
Fix some incorrectly swapped fields in an ICB. Access a PCI register with correct width.
Obtained from: Dmitry Valeryevich Trikoz
|
#
143160 |
|
05-Mar-2005 |
imp |
Use BUS_PROBE_DEFAULT for pci probe return value
|
#
140648 |
|
23-Jan-2005 |
mjacob |
Support the DELL OEM 2312 cards (1077,6312).
Many thanks to Stormweb for making the h/w available for testing.
MFC after: 2 days
|
#
135594 |
|
23-Sep-2004 |
mjacob |
PAE support changes that included at least some minimal actual testing with a kernel that booted.
|
#
134895 |
|
07-Sep-2004 |
mjacob |
Do the small amount of tweaking to support PAE for at least initiator mode. I was unable to test this as the PAE kernel crashed with a "cannot copy LDT" before coming up. When this gets a bit more testing, I'll fix the PAE conf file to allow isp devices.
PR: 59728
|
#
129643 |
|
24-May-2004 |
njl |
Store the target handles in a separate list from normal commands. Add a CTIO fast post routine to handle CTIO completions.
Submitted by: mjacob
|
#
127135 |
|
17-Mar-2004 |
njl |
Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
|
#
125545 |
|
07-Feb-2004 |
mjacob |
If we're defined to have a default role for target mode, make it just ISP_ROLE_TARGET- not both.
MFC after: 1 week
|
#
119418 |
|
24-Aug-2003 |
obrien |
Use __FBSDID(). Also some minor style cleanups.
|
#
119280 |
|
22-Aug-2003 |
imp |
Prefer new location of pci include files (which have only been in the tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD.
|
#
117126 |
|
01-Jul-2003 |
scottl |
Mega busdma API commit.
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg. Lockfunc allows a driver to provide a function for managing its locking semantics while using busdma. At the moment, this is used for the asynchronous busdma_swi and callback mechanism. Two lockfunc implementations are provided: busdma_lock_mutex() performs standard mutex operations on the mutex that is specified from lockfuncarg. dftl_lock() is a panic implementation and is defaulted to when NULL, NULL are passed to bus_dma_tag_create(). The only time that NULL, NULL should ever be used is when the driver ensures that bus_dmamap_load() will not be deferred. Drivers that do not provide their own locking can pass busdma_lock_mutex,&Giant args in order to preserve the former behaviour.
sparc64 and powerpc do not provide real busdma_swi functions, so this is largely a noop on those platforms. The busdma_swi on is64 is not properly locked yet, so warnings will be emitted on this platform when busdma callback deferrals happen.
If anyone gets panics or warnings from dflt_lock() being called, please let me know right away.
Reviewed by: tmm, gibbs
|
#
111119 |
|
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
#
109623 |
|
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
#
108549 |
|
02-Jan-2003 |
mjacob |
Make compiles (LINT and/or ISP_TARGET_MODE options) happier by making sure printf type format args and actual args match.
Reviewed by: Sam Leffler <sam@errno.com>
|
#
104916 |
|
11-Oct-2002 |
mjacob |
This should enable 10160 support. As best as I can tell, the same f/w as 12160 is used, and otherwise, this is just a single channel variant of the 10160.
MFC after: 0 days
|
#
103822 |
|
23-Sep-2002 |
mjacob |
Re-specify the bus space creation such that if we have ISP_DAC_SUPPORTED defined, we set the address space limitation to BUS_SPACE_UNRESTRICTED, otherwise to BUS_SPACE_MAXADDR_32BIT.
If we have a 1240, ULTRA2 or better, or an FC card, the boundary limit is BUS_SPACE_UNRESTRICTED and segment limit is BUS_SPACE_MAXADDR_32BIT.
The older 1020/1040 cards have boundary and segment limits of BUS_SPACE_MAXADDR_24BIT.
|
#
102014 |
|
17-Aug-2002 |
mjacob |
Fix the incorrect parsing of the Risc2Host isr. For RIO_16, fast posting command completion, and fast post CTIO completion, the upper half of Risc2Host is a copy of mailbox #1- *not* mailbox #0.
MFC after: 1 day
|
#
100689 |
|
25-Jul-2002 |
mjacob |
Don't test against default_iid being zero as a test for whether we set something- iid 0 is valid.
|
#
100680 |
|
25-Jul-2002 |
mjacob |
Make sure that if are in fact using 'full SMP', make the interrupt flags include INTR_MPSAFE. Put the flags in a common place so that both isp_sbus && isp_pci DTRT.
In isp_mbxdma setup, drop any locks prior to calling things like bus_dmatag_create. This gets rid of these obnoxious WITNESS messages about 'sleeping with locks held' blah blah blah blah blah.
|
#
99756 |
|
11-Jul-2002 |
mjacob |
'Support' for ISP SBus cards.
This code does not imply that SBus cards work yet. They hang for me. But I can't netboot the latest snapshot on my ultra1e, and things hang at bus_setup_intr time.
Since I'm offline for a while, I thought I'd toss this in in case somebody else who has a bit better luck wants to fart around with it. Please try and wait until I get back to check things in.
|
#
99596 |
|
08-Jul-2002 |
mjacob |
Add override so that we can force set our hard loopdid.
MFC after: 1 week
|
#
98285 |
|
16-Jun-2002 |
mjacob |
Set all 23XX cards as 'touched' (we have trouble, unpredictably, about running ABOUT FIRMWARE with some that were started by BIOS downloads).
Redo CTIO2 dma mapping- use continuation segments instead of multiple CTIO2s. Thanks to Veritas for sponsoring this work (in a different context).
MFC after: 1 week
|
#
93837 |
|
04-Apr-2002 |
mjacob |
Fix bus dma segment count to be based off of MAXPHYS, not BUS_SPACE_MAXSIZE. Grumble. I've seen better documented architectures out of Redmond.
Redo fabric evaluation to not use GET ALL NEXT (GA_NXT). Switches seem to be trying to wriggle out of supporting this well. Instead, use GID_FT to get a list of Port IDs and then use GPN_ID/GNN_ID to find the port and node wwn. This should make working on fabrics a bit cleaner and more stable.
This also caused some cleanup of SNS subcommand canonicalization so that we can actually check for FS_ACC and FS_RJT, and if we get an FS_RJT, print out the reason and explanation codes.
We'll keep the old GA_NXT method around if people want to uncomment a controlling definition in ispvar.h.
This also had us clean up ISPASYNC_FABRICDEV to use a local lportdb argument and to have the caller explicitly say that a device is at the end of the fabric list.
MFC after: 1 week
|
#
93818 |
|
04-Apr-2002 |
jhb |
Change callers of mtx_init() to pass in an appropriate lock type name. In most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used.
Tested on: i386, alpha, sparc64
|
#
93706 |
|
02-Apr-2002 |
mjacob |
Redo stuff for sparc64- primarily fix bus dma implementation. The endian stuff was right, but the busdma stuff was massively not right.
Didn't really test on ia64 or i386- don't have the former h/w and my FreeBSD-current disk is unwell right now. Hope that this is okay.
MFC after: 1 week
|
#
90813 |
|
17-Feb-2002 |
mjacob |
More for f/w crash dumps (bug fixing and adding ioctl entry points and hints to enable for specific units)
MFC after: 1 week
|
#
90753 |
|
17-Feb-2002 |
mjacob |
Hints for WWN are now WWNN and/or WWPN.
MFC after: 1 week
|
#
90224 |
|
04-Feb-2002 |
mjacob |
+ A variety of 23XX changes: disable MWI on 2300
based on function code, set an 'isp_port' for the 2312- it's a separate instance, but the NVRAM is shared, and the second port's NVRAM is at offset 256.
+ Enable RIO operation for LVD SCSI cards. This makes a *big* difference as even under reasonable load we get batched completions of about 30 commands at a time on, say, an ISP1080.
+ Do 'continuation' mailbox commands- this allows us to specify a work area within the softc and 'continue' repeated mailbox commands. This is more or less on an ad hoc basis and is currently only used for firmware loading (which f/w now loads substantially faster becuase the calling thread is only woken when all the f/w words are loaded- not for each one of the 40000 f/w words that gets loaded).
+ If we're about to return from isp_intr with a 'bogus interrupt' indication, and we're not a 23XX card, check to see whether the semaphore register is currently *2* (not *1* as it should be) and whether there's an async completion sitting in outgoing mailbox0. This seems to capture cases of lost fast posting and RIO interrupts that the 12160 && 1080 have been known to pump out under extreme load (extreme, as in > 250 active commands).
+ FC_SCRATCH_ACQUIRE/FC_SCRATCH_RELEASE macros.
+ Endian correct swizzle/unswizzle of an ATIO2 that has a WWPN in it.
MFC after: 1 week
|
#
87635 |
|
10-Dec-2001 |
mjacob |
Major restructuring for swizzling to the request queue and unswizzling from the response queue. Instead of the ad hoc ISP_SWIZZLE_REQUEST, we now have a complete set of inline functions in isp_inline.h. Each platform is responsible for providing just one of a set of ISP_IOX_{GET,PUT}{8,16,32} macros.
The reason this needs to be done is that we need to have a single set of functions that will work correctly on multiple architectures for both little and big endian machines. It also needs to work correctly in the case that we have the request or response queues in memory that has to be treated specially (e.g., have ddi_dma_sync called on it for Solaris after we update it or before we read from it). It also has to handle the SBus cards (for platforms that have them) which, while on a Big Endian machine, do *not* require *most* of the request/response queue entry fields to be swizzled or unswizzled.
One thing that falls out of this is that we no longer build requests in the request queue itself. Instead, we build the request locally (e.g., on the stack) and then as part of the swizzling operation, copy it to the request queue entry we've allocated. I thought long and hard about whether this was too expensive a change to make as it in a lot of cases requires an extra copy. On balance, the flexbility is worth it. With any luck, the entry that we build locally stays in a processor writeback cache (after all, it's only 64 bytes) so that the cost of actually flushing it to the memory area that is the shared queue with the PCI device is not all that expensive. We may examine this again and try to get clever in the future to try and avoid copies.
Another change that falls out of this is that MEMORYBARRIER should be taken a lot more seriously. The macro ISP_ADD_REQUEST does a MEMORYBARRIER on the entry being added. But there had been many other places this had been missing. It's now very important that it be done.
Additional changes:
Fix a longstanding buglet of sorts. When we get an entry via isp_getrqentry, the iptr value that gets returned is the value we intend to eventually plug into the ISP registers as the entry *one past* the last one we've written- *not* the current entry we're updating. All along we've been calling sync functions on the wrong index value. Argh. The 'fix' here is to rename all 'iptr' variables as 'nxti' to remember that this is the 'next' pointer- not the current pointer.
Devote a single bit to mboxbsy- and set aside bits for output mbox registers that we need to pick up- we can have at least one command which does not have any defined output registers (MBOX_EXECUTE_FIRMWARE).
MFC after: 2 weeks
|
#
84597 |
|
06-Oct-2001 |
mjacob |
Whups- remember to zero the isr pointer arg.
|
#
84596 |
|
06-Oct-2001 |
mjacob |
Respect QLogic's errata- read BIU_ISR even on the 2300 to see if there's an interrupt (avoids PCI parity errors which can occur on the 2312 if you access some registers from the host at the same time the RISC on the 2312 is C accessing them).
MFC after: 1 day
|
#
83026 |
|
04-Sep-2001 |
mjacob |
If we're on an interrupt stack, mark things so that we don't try and cv_wait for mailbox commands to complete if we start them from here.
Fix residuals for target mode such that we only check the residual and set it in the CTIO if this is the last CTIO (when we're sending status).
MFC after: 4 weeks
|
#
82689 |
|
31-Aug-2001 |
mjacob |
Add 2 Gigabit Fibre Channel support (2300 && 2312 cards). This required some reworking (and consequent cleanup) of the interrupt service code.
Also begin to start a cleanup of target mode support that will (eventually) not require more inforamtion routed with the ATIO to come back with the CTIO other than tag.
MFC after: 4 weeks
|
#
79239 |
|
04-Jul-2001 |
mjacob |
Some possibly helpful casts.
|
#
78233 |
|
14-Jun-2001 |
peter |
Fix warnings: 554: passing arg 4 of `resource_string_value' from incompatible pointer type 576: passing arg 4 of `resource_string_value' from incompatible pointer type 593: passing arg 4 of `resource_string_value' from incompatible pointer type
|
#
77365 |
|
28-May-2001 |
mjacob |
Spring MegaChange #1.
----
Make a device for each ISP- really usable only with devfs and add an ioctl entry point (this can be used to (re)set debug levels, reset the HBA, rescan the fabric, issue lips, etc).
----
Add in a kernel thread for Fibre Channel cards. The purpose of this thread is to be woken up to clean up after Fibre Channel events block things. Basically, any FC event that casts doubt on the location or identify of FC devices blocks the queues. When, and if, we get the PORT DATABASE CHANGED or NAME SERVER DATABASE CHANGED async event, we activate the kthread which will then, in full thread context, re-evaluate the local loop and/or the fabric. When it's satisfied that things are stable, it can then release the blocked queues and let commands flow again.
The prior mechanism was a lazy evaluation. That is, the next command to come down the pipe after change events would pay the full price for re-evaluation. And if this was done off of a softcall, it really could hang up the system.
These changes brings the FreeBSD port more in line with the Solaris, Linux and NetBSD ports. It also, more importantly, gets us being more proactive about topology changes which could then be reflected upwards to CAM so that the periph driver can be informed sooner rather than later when things arrive or depart.
---
Add in the (correct) usage of locking macros- we now have lock transition macros which allow us to transition from holding the CAM lock (Giant) and grabbing the softc lock and vice versa. Switch over to having this HBA do real locking. Some folks claim this won't be a win. They're right. But you have to start somewhere, and this will begin to teach us how to DTRT for HBAs, etc.
--
Start putting in prototype 2300 support. Add back in LIP and Loop Reset as async events that each platform will handle. Add in another int_bogus instrumentation point.
Do some more substantial target mode cleanups.
MFC after: 8 weeks
|
#
75197 |
|
04-Apr-2001 |
mjacob |
Complete some Ansification. Check to make sure, in tdma_mk, that we won't overflow the request queue. The reason we want to do this is that we now push out completed CTIOs as we complete them- this gets the QLogic working on them quicker. So we need to know whether we can put the entire burrito out before we start.
We now support conjoint status with data for the last CTIO for both Fibre Channel and SCSI. Leave the old code in place in case we need to go back (minor 3 line ifdef).
Ultra-ultra important- *don't* set rq->req_seg_count for non-data target mode requests in isp_pci_dmasetup. D'oh- this is actually the tag value area for a CTIO. What *was* I thinking? Boy howdy does both aic7xxx and sym get awfully unhappy when on reconnect you give them a constant '1' for a tag value.
|
#
74544 |
|
20-Mar-2001 |
mjacob |
For parallel SCSI, let us now do status with the final CTIO. For the 1080, I was hanging after sending a xfer CTIO and a status CTIO for a non-discon INQUIRY- the xfer CTIO was returned as completed OK, but the status CTIO was dropped on the floor. All the fields looked good. I don't know why it got dropped. But allowing status to go back with data xfer seemed to work. I also noticed that with a non-disconnecting command that the firmware handle in the ATIO is zero- this leads me to believe that the f/w really can only handle one CTIO at a time in the discon case, and it had no idea what to do with the second (status) CTIO.
|
#
73531 |
|
04-Mar-2001 |
mjacob |
more 32 to 16 bit handle conversions
|
#
73319 |
|
02-Mar-2001 |
mjacob |
Switch to using 16 bit handles instead of 32 bit handles. This is a pretty invasive change, but there are three good reasons to do this:
1. We'll never have > 16 bits of handle. 2. We can (eventually) enable the RIO (Reduced Interrupt Operation) bits which return multiple completing 16 bit handles in mailbox registers. 3. The !)$*)$*~)@$*~)$* Qlogic target mode for parallel SCSI spec changed such that at_reserved (which was 32 bits) was split into two pieces- and one of which was a 16 bit handle id that functions like the at_rxid for Fibre Channel (a tag for the f/w to correlate CTIOs with a particular command). Since we had to muck with that and this changed the whole handler architecture, we might as well...
Propagate new at_handle on through int ct_fwhandle. Follow implications of changing to 16 bit handles.
These above changes at least get Qlogic 1040 cards working in target mode again. 1080/12160 cards don't work yet.
In isp.c: Prepare for doing all loop management in outer layers.
|
#
73280 |
|
01-Mar-2001 |
markm |
Turn on interrupt-entropy harvesting for all/any mass storage devices I could find. I have no doubt missed a couple.
Interrupt entropy harvesting is still conditional on the kern.random.sys.harvest_interrupt sysctl.
|
#
73247 |
|
01-Mar-2001 |
mjacob |
Eliminate the use of the getenv_int stuff we'd been using (with a bitmap for selecting unit). Instead, use the resource hints mechanism.
One unfortunate situation here is that there is no resource_quad_value function- which is what I needed for WWN boot time replacement. Worse- you can't store the hint as just plain
hint.isp.0.nodewwn="0x50000000aaaa0001"
because this gets interpreted as an int- incorrectly because it can't be converted to an int. I can't even get this as a string. To work around this particular case for nodewwn && portwwn setting, this rather grotesque form will be used:
hint.isp.0.nodewwn="w50000000aaaa0001" hint.isp.0.portwwn="w50000000aaaa0002"
At the same time, if we have no hinted WWN, set the default WWN (which, btw, gets overridden if the card has valid NVRAM, which is usual) to 0x400000007F000009ull (which translates to NAA == IPv4, 127.0.0.9).
Eliminate more printf's and replace them either with device_printf or isp_prt calls.
|
#
72353 |
|
11-Feb-2001 |
mjacob |
Shuffle around how we do isp_disable management- make sure we return 0 so the unit number doesn't get reused.
Make sure that if we've compiled for ISP_TARGET_MODE we set the default role to be ISP_ROLE_INITIATOR|ISP_ROLE_TARGET.
Do some misc other cleanups.
|
#
71077 |
|
15-Jan-2001 |
mjacob |
Set default adapter role.
|
#
70820 |
|
09-Jan-2001 |
mjacob |
add missing length argument
|
#
70488 |
|
29-Dec-2000 |
mjacob |
Set up to do a local interrupt fielding before calling common code- allows us to grab lock as we should.
|
#
69781 |
|
08-Dec-2000 |
dwmalone |
Convert more malloc+bzero to malloc+M_ZERO.
Submitted by: josh@zipperup.org Submitted by: Robert Drehmel <robd@gmx.net>
|
#
69596 |
|
05-Dec-2000 |
mjacob |
Remove more printfs and use either isp_prt or device_printf. Remember to set ISP_LOGINFO if bootverbose is set.
|
#
67549 |
|
25-Oct-2000 |
mjacob |
Whoops! Forgot to commit this when I committed the other (turnin on locks) change. Sorry about that.
|
#
67164 |
|
15-Oct-2000 |
phk |
Remove unneeded #include <machine/clock.h>
|
#
66189 |
|
21-Sep-2000 |
mjacob |
some copyright cleanups
|
#
65588 |
|
07-Sep-2000 |
mjacob |
Per msmith's request, don't attach to Qlogic 12160 id'd cards that have a certain SubVendorID.
|
#
65176 |
|
28-Aug-2000 |
dfr |
* Completely rewrite the alpha busspace to hide the implementation from the drivers. * Remove legacy inx/outx support from chipset and replace with macros which call busspace. * Rework pci config accesses to route through the pcib device instead of calling a MD function directly.
With these changes it is possible to cleanly support machines which have more than one independantly numbered PCI busses. As a bonus, the new busspace implementation should be measurably faster than the old one.
|
#
65141 |
|
27-Aug-2000 |
mjacob |
remove clause 3 licence
|
#
64086 |
|
01-Aug-2000 |
mjacob |
Part of major rewrite for core version 2.0- clarification of mdvec structure, removal of printf/CFGPRINTF in place of isp_prt calls. Parameterization of RQUEST_QUEUE_LEN/RESULT_QUEUE_LEN.
|
#
63380 |
|
18-Jul-2000 |
mjacob |
Keep interrupts blocked for all of isp_pci_attach. Redo DMA routines for target mode for cleanliness and accuracy.
|
#
62493 |
|
03-Jul-2000 |
mjacob |
Change startup locking. Use new isp_handle_index function for indexing off of handles to get dma maps.
|
#
61785 |
|
18-Jun-2000 |
mjacob |
Clean up firmware load issues and remove darn near all config options. Force alphas to prefer mem mapping as the default.
Basically, we have a pointer to a function which we can call which will return us a pointer to firmware for the card we have. We call this function (if it's non-NULL) with the address of our mdvec f/w pointer.
The way this works is that if ispfw (as a module or a static) is loaded, it initializes the pointer in isp_pci, so we can call into to it to fetch a pointer to a f/w set.
If ispfw is MOD_UNLOADed, it's retained a pointer to our mdvec f/w pointers, which then get zeroed out so we don't have any references to data that's now gone from kernel memory. Removing the f/w saves ~360KBytes.
Alas, there is no autounload mechanism that works for is here.
|
#
57583 |
|
29-Feb-2000 |
mjacob |
Clean up defines for correct 12160/1080 exclusion. Final 4.0. approved: JKH
|
#
57214 |
|
14-Feb-2000 |
mjacob |
If the CDB length is greater than 12 for parallel SCSI, ispscsicmd has made the initial queue entry a EXTENDED CMD queue entry, so we have to go straight to continuation segments for any data segments.
approved: jkh
|
#
57152 |
|
11-Feb-2000 |
mjacob |
Add in 12160 (Ultra3) support. Redo things to use the newbus code.
Approved: jkh@freebsd.org
PR: 16141
|
#
56026 |
|
15-Jan-2000 |
mjacob |
Remove compile warning not seen when compiling with target mode enabled.
|
#
56009 |
|
14-Jan-2000 |
mjacob |
Redo FC target mode dma routine to try and generate an extra CTIO in the not so odd case of Moving Data *AND* Sending Status in last CTIO *AND* status is a CHECK CONDITION *AND* we have Sense Data to send.
|
#
55383 |
|
04-Jan-2000 |
mjacob |
Add in an isp_tdebug environment variable. Clean up some debugging printouts for clarity.
|
#
55369 |
|
03-Jan-2000 |
mjacob |
Support target mode operations. This involves having some variant dma mapping callback routines to select from as target mode entries are handled a fair bit differently from normal initiator mode entries.
|
#
54671 |
|
16-Dec-1999 |
mjacob |
Add Dual LVD bus (1280) support
|
#
53484 |
|
21-Nov-1999 |
mjacob |
Fix dmasetup functions to have 16 bit queue indices. Get the chip revision out of the PCI CLASS reg and store it in the softc. Use the getenv_quad function to get a WWN override from the environment. Look for a config value for same. Make slightly less lame the wwn seed construction.
|
#
52903 |
|
05-Nov-1999 |
gallatin |
Remove calls to alpha_register_pci_scsi(). After Mike's recent boot changes, it no longer exists and is preventing alpha kernels from building.
reviewed by: msmith
|
#
52685 |
|
30-Oct-1999 |
mjacob |
Organize things to cope with the (possible) lack of downloadable firmware a bit better.
|
#
52351 |
|
17-Oct-1999 |
mjacob |
Add in inclusion of machine/md_var.h (so alpha_scsi_bus_register or what have you is prototyped). Removed code versions in md struct- not used any more. Allocate transfer dma maps and xflist stuff in mbxdmasetup based upon isp->isp_maxcmds. Allow for multiple calls to mbxdmasetup (for isp_reset cases).
|
#
52138 |
|
11-Oct-1999 |
mjacob |
remove unnecessary includes
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
50275 |
|
23-Aug-1999 |
bde |
Cast pointers to uintptr_t instead of casting them to u_long, and/or vice versa. Cosmetic.
|
#
49905 |
|
16-Aug-1999 |
mjacob |
Set some correct return values. Prefer I/O map all the time unless configured otherwise.
|
#
49860 |
|
15-Aug-1999 |
gibbs |
Properly set the alignment argument to bus_dma_tag_create(). If we don't care about the alignment, set it to 1, meaning single byte alignment.
|
#
48611 |
|
05-Jul-1999 |
mjacob |
add in a boot environment isp_disable flag
|
#
48605 |
|
05-Jul-1999 |
mjacob |
Wow- too much breakage..wait until you compile it, buckwheat...
|
#
48604 |
|
05-Jul-1999 |
mjacob |
Oops- got sense of ifdef wrong
|
#
48600 |
|
05-Jul-1999 |
mjacob |
add ISP_DISABLE_2200_SUPPORT defines; Add reference to 2200 F/W
|
#
48489 |
|
02-Jul-1999 |
mjacob |
Remove pre-CAM code. Add in getenv_int calls for variables isp_mem_map, isp_io_map, isp_no_fwload, isp_fwload, isp_no_nvram, isp_fcduplex which are all bitmaps of isp instances that should or shouldn't map memory space, I/O space, not load f/w, load f/w, ignore nvram, not ignore nvarm, set full duplex mode. Also have an isp_seed value that we can use to generate a pseudo seed for a synthetic WWN. Other minor cosmetic cleanup. Add in support for the Qlogic ISP 2200. Very important change where we actually check now to see whether we were successful in mapping request and response queues (and fibre channel scratch space).
|
#
48197 |
|
24-Jun-1999 |
mjacob |
(corrections for type change in softc)
|
#
46964 |
|
11-May-1999 |
mjacob |
Clean up 2.2.X support (which might have to be cleaned up again after some of the previous commits). Add in support for the 1240 dual channel ISP card. Try the dance of unmapping a PCI interrupt if we don't configure (if that ever works it'll be helpful).
|
#
46813 |
|
09-May-1999 |
peter |
Simplify the COMPAT_PCI_DRIVER/DATA_SET hack. We can add: #define COMPAT_PCI_DRIVER(name,data) DATA_SET(pcidevice_set,data) .. to 2.2.x and 3.x if people think it's worth it. Driver writers can do this if it's not defined. (The reason for this is that I'm trying to progressively eliminate use of linker_sets where it hurts modularity and runtime load capability, and these DATA_SET's keep getting in the way.)
|
#
46024 |
|
24-Apr-1999 |
peter |
Use COMPAT_PCI_DRIVER() for registration if it exists. This shouldn't hurt the driver portability to 3.x too much for where drivers are shared.
|
#
45573 |
|
11-Apr-1999 |
eivind |
Staticize.
|
#
45280 |
|
03-Apr-1999 |
mjacob |
Read the board revision and trim cache line size back from 16 to 1 for early revision 2100 boards. Make sure to turn ROM off for these boards.
|
#
45041 |
|
25-Mar-1999 |
mjacob |
enable 1080 LVD support
|
#
44820 |
|
17-Mar-1999 |
mjacob |
Prep for 1080/1240 support. Those fine h/w engineers at Qlogic gave yet another internal register layout model for what is *still* the same architecture. I hope they saved billyuns of gates 'coz otherwise this is *really* annoying.
|
#
43794 |
|
08-Feb-1999 |
mjacob |
Cleanup. Set all PCI parameters of importance. Set a define that will allow us via config options prefer mem space to I/O space.
|
#
43416 |
|
30-Jan-1999 |
mjacob |
roll internal release tag
|
#
42458 |
|
10-Jan-1999 |
mjacob |
Amazingly stupid forgetfullness had me forgetting to turn on FIFO bursts for the 1XX0 cards. That cost > 50% performance.
|
#
42132 |
|
28-Dec-1998 |
mjacob |
clarify headers;ansify
|
#
41771 |
|
14-Dec-1998 |
dillon |
probe function changed from returning char * to const char *.
|
#
41515 |
|
04-Dec-1998 |
mjacob |
trivial header fix
|
#
41514 |
|
04-Dec-1998 |
archie |
Examine all occurrences of sprintf(), strcat(), and str[n]cpy() for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc.
These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer.
Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
|
#
39683 |
|
26-Sep-1998 |
dfr |
Add hooks so that the alpha can detect which disk has the root partition.
|
#
39445 |
|
17-Sep-1998 |
mjacob |
(requested by gibbs) Remove the SCSI_CAM option (and rework the isp driver that had depended on it for compilation within or without CAM to use __FreeBSD_version instead).
|
#
39435 |
|
17-Sep-1998 |
mjacob |
A major amount of cleaning up: + Change some messages about CCB memory allocation + Turn a failure to DMA map all of a transaction due to lack of ISP queue entries into a requeue operation (instead of the case where it had been treated the same as a DMA too big operation). + put back splsoftvm around bus_dmamap_load calls. + cleanup (and fix a glaring bug) in the and of the dma setup routine. Also, the dma setup routines either return CMD_QUEUED (for success) or CMD_COMPLETE (for failure) or CMD_EAGAIN (for requeuing for resource shortage reasons).
|
#
39365 |
|
16-Sep-1998 |
mjacob |
Alpha port related fixes from Doug Rabson. Submitted by: dfr
|
#
39247 |
|
15-Sep-1998 |
gibbs |
Convert ISP pci front end to CAM/bus space/dma.
Convert ncr driver to CAM.
|
#
38232 |
|
10-Aug-1998 |
bde |
Use [u]intptr_t instead of [unsigned] long to convert and/or represent pointers.
This finishes fixing conversions between pointers and integers of possibly different sizes in GENERIC.
|
#
37618 |
|
13-Jul-1998 |
bde |
Fixed printf format errors (only 1 left in GENERIC now).
|
#
35389 |
|
22-Apr-1998 |
mjacob |
Add support for the Qlogic ISP SCSI && FC/AL Adapters
|