]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - Documentation/scsi/qla2xxx.revision.notes
Linux-2.6.12-rc2
[mirror_ubuntu-artful-kernel.git] / Documentation / scsi / qla2xxx.revision.notes
1 /*
2 * QLogic ISP2200 and ISP2300 Linux Driver Revision List File.
3 *
4 ********************************************************************
5 *
6 * Revision History
7 *
8 * Rev 8.00.00b8 December 5, 2003 AV
9 * - Instruct mid-layer to perform initial scan.
10 *
11 * Rev 8.00.00b7 December 5, 2003 AV
12 * - Resync with Linux Kernel 2.6.0-test11.
13 * - Add basic NVRAM parser (extras/qla_nvr).
14 *
15 * Rev 8.00.00b7-pre11 December 3, 2003 AV
16 * - Sanitize the scsi_qla_host structure:
17 * - Purge unused elements.
18 * - Reorganize high-priority members (cache coherency).
19 * - Add support for NVRAM access via a sysfs binary attribute:
20 * - Consolidate semaphore locking access.
21 * - Fix more PCI posting issues.
22 * - Add extras directory for dump/NVRAM tools.
23 * - Remove unused qla_vendor.c file.
24 *
25 * Rev 8.00.00b7-pre11 November 26, 2003 DG/AV
26 * - Merge several patches from Christoph Hellwig [hch@lst.de]:
27 * - in Linux 2.6 both pci and the scsi layer use the generic
28 * dma direction bits, use them directly instead of the scsi
29 * and pci variants and the (noop) conversion routines.
30 * - Fix _IOXX_BAD() usage for external IOCTL interface.
31 * - Use atomic construct for HA loop_state member.
32 * - Add generic model description text for HBA types.
33 *
34 * Rev 8.00.00b7-pre5 November 17, 2003 AV
35 * - Merge several patches from Christoph Hellwig [hch@lst.de]:
36 * - patch to split the driver into a common qla2xxx.ko and a
37 * qla2?00.ko for each HBA type - the latter modules are
38 * only very small wrappers, mostly for the firmware
39 * images, all the meat is in the common qla2xxx.ko.
40 * - make the failover code optional.
41 * - kill useless lock_kernel in dpc thread startup.
42 * - no need for modversions hacks in 2.6 (or 2.4).
43 * - kill qla2x00_register_with_Linux.
44 * - simplify EH code, cmd or it's hostdata can't be NULL, no
45 * need to search whether the host it's ours, the midlayer
46 * makes sure it won't call into a driver for some else
47 * host.
48 * - Merge several patches from Jes Sorensen
49 * [jes@wildopensource.com]:
50 * - Call qla2x00_config_dma_addressing() before performing
51 * any consistent allocations. This is required since the
52 * dma mask settings will affect the memory
53 * pci_alloc_consistent() will return.
54 * - Call pci_set_consistent_dma_mask() to allow for 64 bit
55 * consistent allocations, required on some platforms such
56 * as the SN2.
57 * - Wait 20 usecs (not sure how long is really necessary,
58 * but this seems safe) after setting CSR_ISP_SOFT_RESET in
59 * the ctrl_status register as the card doesn't respond to
60 * PCI reads while in reset state. This causes a machine
61 * check on some architectures.
62 * - Flush PCI writes before calling udelay() to ensure the
63 * write is not sitting idle in-flight for a while before
64 * hitting the hardware.
65 * - Include linux/vmalloc.h in qla_os.c since it uses
66 * vmalloc().
67 * - Use auto-negotiate link speed when using default
68 * parameters rather than NVRAM settings. Disable NVRAM
69 * reading on SN2 since it's not possible to execute the
70 * HBA's BIOS on an SN2. I suggest doing something similar
71 * for all architectures that do not provide x86 BIOS
72 * emulation.
73 * - Clean-up slab-cache allocations:
74 * - locking.
75 * - mempool allocations in case of low-memory situations.
76 * - Fallback to GA_NXT scan if GID_PT call returns more than
77 * MAX_FIBRE_DEVICES.
78 * - Preserve iterating port ID across GA_NXT calls in
79 * qla2x00_find_all_fabric_devs().
80 * - Pre-calculate ASCII firmware dump length as to not incur the
81 * cost-to-calculate at each invocation of a read().
82 *
83 * Rev 8.00.00b6 November 4, 2003 AV
84 * - Add new 2300 TPX firmware (3.02.18).
85 *
86 * Rev 8.00.00b6-pre25 October 20, 2003 RA/AV
87 * - Resync with Linux Kernel 2.6.0-test9.
88 * - Rework firmware dump process:
89 * - Use binary attribute within sysfs tree.
90 * - Add user-space tool (gdump.sh) to retrieve formatted
91 * buffer.
92 * - Add ISP2100 support.
93 * - Use a slab cache for SRB allocations to reduce memory
94 * pressure.
95 * - Initial conversion of driver logging methods to a new
96 * qla_printk() function which uses dev_printk (Daniel
97 * Stekloff, IBM).
98 * - Further reduce stack usage in qla2x00_configure_local_loop()
99 * and qla2x00_find_all_fabric_devs().
100 * - Separate port state used for routing of I/O's from port
101 * mgmt-login retry etc.
102 *
103 * Rev 8.00.00b6-pre19 October 13, 2003 AV
104 * - Resync with Linux Kernel 2.6.0-test7-bk5.
105 * - Add intelligent RSCN event handling:
106 * - reduce scan time during 'port' RSCN events by only
107 * querying specified port ids.
108 * - Available on ISP23xx cards only.
109 * - Increase maximum number of recognizable targets from 256
110 * to 512.
111 * - Backend changes were previously added to support TPX
112 * (2K logins) firmware. Mid-layer can now scan for targets
113 * (H, B, T, L) where 512 < T >= 0.
114 * - Remove IP support from driver.
115 * - Switch firmware types from IP->TP for ISP22xx and
116 * IPX->TPX for ISP23xx cards.
117 * - Remove files qla_ip.[ch].
118 * - Remove type designations from firmware filenames.
119 *
120 * Rev 8.00.00b6-pre11 September 15, 2003 DG/AV
121 * - Resync with 6.06.00.
122 * - Resync with Linux Kernel 2.6.0-test5-bk3.
123 * - Add new 2300 IPX firmware (3.02.15).
124 *
125 * Rev 8.00.00b5 July 31, 2003 AV
126 * - Always create an fc_lun_t entry for lun 0 - as the mid-
127 * layer requires access to this lun for discovery to occur.
128 * - General sanitizing:
129 * - Add generic firmware option definitions.
130 * - Generalize retrieval/update of firmware options.
131 * - Fix compile errors which occur with extended debug.
132 * - Handle failure cases for scsi_add_host() and
133 * down_interruptible().
134 * - Host template updates:
135 * - Use standard bios_param callback function.
136 * - Disable clustering.
137 * - Remove unchecked_is_dma entry.
138 *
139 * Rev 8.00.00b5-pre5 July 29, 2003 DG/AV
140 * - Resync with 6.06.00b13.
141 * - Resync with Linux Kernel 2.6.0-test2.
142 * - Pass the complete loop_id, not the masked (0xff) value
143 * while issuing mailbox commands (qla_mbx.c/qla_fo.c/
144 * qla_iocb.c/qla_init.c).
145 * - Properly handle zero-length return status for an RLC CDB.
146 * - Create an fclun_t structure for 'disconnected' luns,
147 * peripheral-qualifier of 001b.
148 * - Remove unused LIP-sequence register access during AE 8010.
149 * - Generalize qla2x00_mark_device_lost() to handle forced
150 * login request -- modify all direct/indirect invocations
151 * with proper flag.
152 * - Save RSCN notification (AE 8015h) data in a proper and
153 * consistent format (domain, area, al_pa).
154 * - General sanitizing:
155 * - scsi_qla_host structure member reordering for cache-line
156 * coherency.
157 * - Remove unused SCSI opcodes, endian-swap definitions.
158 * - Remove CMD_* pre-processor defines.
159 * - Remove unused SCSIFCHOTSWAP/GAMAP/MULTIHOST codes.
160 * - Backout patch which added a per-scsi_qla_host scsi host
161 * spinlock, since mid-layer already defines one.
162 * - Add new 2300 IPX firmware (3.02.15).
163 *
164 * Rev 8.00.00b4 July 14, 2003 RA/DG/AV
165 * - Resync with 6.06.00b12.
166 * - Resync with Linux Kernel 2.6.0-test1.
167 * - Remove IOCB throttling code -- originally #if'd.
168 * - Remove apidev_*() routines since proc_mknod() has been
169 * removed -- need alternate IOCTL interface.
170 * - Merge several performance/fix patches from Arjan van de
171 * Ven:
172 * - Undefined operation >> 32.
173 * - No need to acquire mid-layer lock during command
174 * callback.
175 * - Use a per-HBA mid-layer lock.
176 * - Use a non-locked cycle for setting the count of the
177 * newly allocated sp (qla2x00_get_new_sp()).
178 * - Modify semantic behavior of qla2x00_queuecommand():
179 * - Reduce cacheline bouncing by having I/Os submitted
180 * by the IRQ handler.
181 * - Remove extraneous calls to qla2x00_next() during I/O
182 * queuing.
183 * - Use list_splice_init() during qla2x00_done() handling
184 * of commands to reduce list_lock contention.
185 * - RIO mode support for ISP2200:
186 * - Implementation differs slightly from original patch.
187 * - Do not use bottom-half handler (tasklet/work queue)
188 * for qla2x00_done() processing.
189 *
190 * Rev 8.00.00b4-pre22 July 12, 2003 AV
191 * - Check for 'Process Response Queue' requests early during
192 * the Host Status check.
193 * - General sanitizing:
194 * - srb_t structure rewrite, removal of unused members.
195 * - Remove unused fcdev array, fabricid, and PORT_*
196 * definitions.
197 * - Remove unused config_reg_t PCI definitions.
198 * - Add new 2200 IP firmware (2.02.06).
199 * - Add new 2300 IPX firmware (3.02.14).
200 *
201 * Rev 8.00.00b4-pre19 June 30, 2003 AV
202 * - Resync with Linux Kernel 2.5.73-bk8.
203 * - Rework IOCB command queuing methods:
204 * - Upper-layer driver *MUST* properly set the direction
205 * bit of SCSI commands.
206 * - Generalize 32bit/64bit queuing path functions.
207 * - Remove costly page-boundary cross check when using
208 * 64bit address capable IOCBs.
209 *
210 * Rev 8.00.00b4-pre15 June 19, 2003 AV
211 * - Resync with 6.06.00b11.
212 * - Continue fcport list consolidation work:
213 * - Updated IOCTL implementations to use new fcports
214 * list.
215 * - Modified product ID check to not verify ISP chip
216 * revision -- ISP2312 v3 (qla2x00_chip_diag()).
217 * - Add new 2300 IPX firmware (3.02.13):
218 *
219 * Rev 8.00.00b4-pre13 June 19, 2003 AV
220 * - Fix build process for qla2100 driver -- no support
221 * for IP.
222 * - SCSI host template modifications:
223 * - Set sg_tablesize based on the derived DMA mask.
224 * - Increase max_sectors since only limit within RISC
225 * is transfer of (((2^32) - 1) >> 9) sectors.
226 *
227 * Rev 8.00.00b4-pre12 June 18, 2003 RA, DG, RL, AV
228 * - Resync with 6.06.00b10.
229 * - Resync with Linux Kernel 2.5.72.
230 * - Initial fcport list consolidation work:
231 * - fcports/fcinitiators/fcdev/fc_ip --> ha->fcports
232 * list.
233 *
234 * Rev 8.00.00b4-pre7 June 05, 2003 AV
235 * - Properly release PCI resouces in init-failure case.
236 * - Reconcile disparite function return code definitions.
237 *
238 * Rev 8.00.00b4-pre4 June 03, 2003 AV
239 * - Resync with Linux Kernel 2.5.70-bk8:
240 * - SHT proc_info() changes.
241 * - Restructure SNS Generic Services routines:
242 * - Add qla_gs.c file to driver distribution.
243 * - Configure PCI latency timer for ISP23xx.
244 *
245 * Rev 8.00.00b4-pre3 June 02, 2003 RA, DG, RL, AV
246 * - Resync with 6.06.00b5.
247 * - Rework (again) PCI I/O space configuration
248 * (Anton Blanchard):
249 * - Use pci_set_mwi() routine;
250 * - Remove uneeded qla2x00_set_cache_line() function.
251 * - Remove extraneous modification of PCI_COMMAND word.
252 *
253 * Rev 8.00.00b3 May 29, 2003 AV
254 * - Resync with Linux Kernel 2.5.70.
255 * - Move RISC paused check from ISR fast-path.
256 *
257 * Rev 8.00.00b3-pre8 May 26, 2003 AV
258 * - Add new 2300 IPX firmware (3.02.12):
259 * - Rework PCI I/O space configuration.
260 *
261 * Rev 8.00.00b3-pre6 May 22, 2003 RA, DG, RL, AV
262 * - Resync with 6.06.00b3.
263 *
264 * Rev 8.00.00b3-pre4 May 21 2003 AV
265 * - Add new 2300 IPX firmware (3.02.11):
266 * - Remove 2300 TPX firmware from distribution.
267 *
268 * Rev 8.00.00b3-pre3 May 21 2003 AV
269 * - Properly setup PCI configuation space during
270 * initialization:
271 * - Properly configure Memory-Mapped I/O during early
272 * configuration stage.
273 * - Rework IP functionality to support 2k logins.
274 * - Add new 2300 IPX firmware (3.02.11):
275 * - Remove 2300 TPX firmware from distribution.
276 *
277 * Rev 8.00.00b3-pre2 May ??, 2003 RA, DG, RL, AV
278 * - Resync with 6.06.00b1.
279 *
280 * Rev 8.00.00b3-pre1 May ??, 2003 RA, DG, RL, AV
281 * - Resync with 6.05.00.
282 *
283 * Rev 8.00.00b2 May 19, 2003 AV
284 * - Simplify dma_addr_t handling during command queuing given
285 * new block-layer defined restrictions:
286 * - Physical addresses not spanning 4GB boundaries.
287 * - Firmware versions: 2100 TP (1.19.24), 2200 IP (2.02.05),
288 * 2300 TPX (3.02.10).
289 *
290 * Rev 8.00.00b2-pre1 May 13, 2003 AV
291 * - Add support for new 'Hotplug initialization' model.
292 * - Simplify host template by removing unused callbacks.
293 * - Use scsicam facilities to determine geometry.
294 * - Fix compilation issues for non-ISP23xx builds:
295 * - Correct register references in qla_dbg.c.
296 * - Correct Makefile build process.
297 *
298 * Rev 8.00.00b1 May 05, 2003 AV
299 * - Resync with Linux Kernel 2.5.69.
300 * - Firmware versions: 2100 TP (1.19.24), 2200 TP (2.02.05),
301 * 2300 TPX (3.02.10).
302 *
303 * Rev 8.00.00b1-pre45 April ??, 2003 AV
304 * - Resync with Linux Kernel 2.5.68-bk11:
305 * - Fix improper return-code assignment during fabric
306 * discovery.
307 * - Remove additional extraneous #defines from
308 * qla_settings.h.
309 * - USE_PORTNAME -- FO will always use portname.
310 * - Default queue depth size set to 64.
311 *
312 * Rev 8.00.00b1-pre42 April ??, 2003 AV
313 * - Convert bottom-half tasklet to a work_queue.
314 * - Initial basic coding of dynamic queue depth handling
315 * during QUEUE FULL statuses.
316 * - Fix mailbox interface problem with
317 * qla2x00_get_retry_cnt().
318 *
319 * Rev 8.00.00b1-pre41 April ??, 2003 AV
320 * - Convert build defines qla2[1|2|3]00 macros to
321 * qla2[1|2|3]xx due to module name stringification clashes.
322 * - Add additional ISP2322 checks during board configuration.
323 *
324 * Rev 8.00.00b1-pre40 April ??, 2003 AV
325 * - Resync with Linux Kernel 2.5.68-bk8:
326 * - Updated IRQ handler interface.
327 * - Add ISP dump code (stub) in case of SYSTEM_ERROR on
328 * ISP2100.
329 * - Add new 2200 IP firmware (2.02.05).
330 *
331 * Rev 8.00.00b1-pre39 April ??, 2003 AV
332 * - Resync with Linux Kernel 2.5.68.
333 * - Add simple build.sh script to aid in external compilation.
334 * - Clean-break with Kernel 2.4 compatibility.
335 * - Rework DPC routine -- completion routines for signaling.
336 * - Re-add HBAAPI character device node for IOCTL support.
337 * - Remove residual QLA2X_PERFORMANCE defines.
338 * - Allocate SP pool via __get_free_pages() rather than
339 * individual kmalloc()'s.
340 * - Inform SCSI mid-layer of 16-byte CDB support
341 * (host->max_cmd_len):
342 * - Remove unecessary 'more_cdb' handling code from
343 * qla_iocb.c and qla_xioct.c.
344 * - Reduce duplicate code in fabric scanning logic (MS IOCB
345 * preparation).
346 * - Add ISP dump code in case of SYSTEM_ERROR.
347 * - Remove 2300 VIX firmware from distribution:
348 * - Add initial code for IPX support.
349 * - Add new 2300 TPX firmware (3.02.10).
350 *
351 * Rev 8.00.00b1-pre34 April ??, 2003 AV
352 * - Resync with Linux Kernel 2.5.67.
353 * - Use domain/area/al_pa fields when displaying PortID
354 * values -- addresses endianess issues.
355 * - Rework large case statement to check 'common' CDB commands
356 * early in qla2x00_get_cmd_direction().
357 *
358 * Rev 8.00.00b1-pre31 April ??, 2003 AV
359 * - Update makefile to support PPC64 build.
360 * - Retool NVRAM configuration routine and structures:
361 * - Consoldate ISP21xx/ISP22xx/ISP23xx configuration
362 * (struct nvram_t).
363 * - Remove big/little endian support structures in favor of
364 * simplified bit-operations within byte fields.
365 * - Fix long-standing 'static' buffer sharing problem in
366 * qla2x00_configure_fabric().
367 *
368 * Rev 8.00.00b1-pre30 April ??, 2003 AV
369 * - Complete implementation of GID_PT scan.
370 * - Use consistent MS IOCB invocation method to query SNS:
371 * - Add RNN_ID and RSNN_NN registrations in a fabric.
372 * - Remove unused Mailbox Command 6Eh (Send SNS) support
373 * structures.
374 * - Use 64bit safe IOCBs while issuing INQUIRY and RLC during
375 * topology scan.
376 * - Until reimplementation of fcdev_t/fcport list
377 * consolidation, valid loop_id ranges are still limited from
378 * 0x00 through 0xFF -- enforce this within the code.
379 *
380 * Rev 8.00.00b1-pre27 March ??, 2003 AV
381 * - Resync with 6.05.00b9.
382 * - Retool HBA PCI configuration -- qla2x00_pci_config().
383 * - Remove inconsistent use of delay routines (UDELAY/SYS*).
384 * - Continue to teardown/clean/add comments and debug
385 * routines.
386 * - Properly swap bytes of the device's nodename in
387 * qla2x00_configure_local_loop().
388 *
389 * Rev 8.00.00b1-pre25 March ??, 2003 AV
390 * - Resync with 6.05.00b8.
391 *
392 * Rev 8.00.00b1-pre23 March ??, 2003 AV
393 * - Remove (#define) IOCB usage throttling.
394 * - Abstract interrupt polling with qla2x00_poll().
395 * - Modify lun scanning logic:
396 * - If the device does not support the SCSI Report Luns
397 * command, the driver will now only scan from 0 to the
398 * max#-luns as defined in the NVRAM (BIOS), rather than
399 * blindly scanning from 0 to 255 -- which could result in
400 * an increase in startup time when running against slow
401 * (JBOD) devices.
402 * - Rework reset logic in qla2x00_reset_chip() (spec).
403 *
404 * Rev 8.00.00b1-pre22 March ??, 2003 AV
405 * - Resync with 6.05.00b7.
406 * - Cleanup (rewrite) ISR handler.
407 * - Rename kmem_zalloc --> qla2x00_kmem_zalloc():
408 * - This function will eventually be removed.
409 * - Add new 2300 VIX firmware (3.02.09):
410 * - Support for Tape, Fabric, 2K logins, IP, and VI.
411 *
412 * Rev 8.00.00b1-pre18 March ??, 2003 AV
413 * - Support 232x type ISPs.
414 * - Support single firmware for each ISP type:
415 * - Restructure brd_info/fw_info methods.
416 * - Streamline firmware load process.
417 * - Properly query firmware for version information.
418 * - Remove extraneous scsi_qla_host members:
419 * - device_id ==> pdev->device
420 * - Fix fc4 features (RFF_ID) registration.
421 * - Convert kmem_zalloc --> qla2x00_kmem_zalloc().
422 * - Remove unused/extraneous #defines (USE_PORTNAME).
423 *
424 * Rev 8.00.00b1-pre14 March ??, 2003 AV
425 * - Resync with 6.05.00b6.
426 * - Initial source-code restructuring effort.
427 * - Build procedure.
428 * - Source file layout -- intuitive component layout.
429 * - Remove unused #defines (*PERFORMANCE, WORD_FW_LOAD, etc).
430 * - Add support for 2K logins (TPX -- firmware).
431 * - Add module parameter ql2xsuspendcount.
432 * - Add new 2200 IP/TP firmware (2.02.04).
433 *
434 * Rev 8.00.00b1-pre9 March ??, 2003 RL/DG/RA/AV
435 * - Use kernel struct list_head for fcport and fclun lists.
436 * - Remove extraneous (L|M)S_64BITS() and QL21_64*() defines.
437 *
438 * Rev 8.00.00b1-pre8 February 28, 2003 RL/DG/RA/AV
439 * - Resync with 6.05.00b3.
440 *
441 * Rev 8.00.00b1-pre7 February 23, 2003 RL/DG/RA/AV
442 * - Add alternate fabric scanning logic (GID_PT/GNN_ID/GPN_ID).
443 * - Remove use of deprecated function check_region().
444 * - Add new 2300 IP/TP firmware (3.02.08).
445 *
446 * Rev 8.00.00b1-pre5 January 28, 2003 RL/DG/RA/AV
447 * - Resync with 6.05.00b3.
448 * - Consolidate device_reg structure definitions for ISP types.
449 * - Add support for new queue-depth selection.
450 * - Add new 2300 IP/TP firmware (3.02.07).
451 *
452 * Rev 8.00.00b1-pre1 January 17, 2003 AV
453 * - Initial branch from 6.04.00b8 driver.
454 * - Remove VMWARE specific code.
455 * - Add support for pci_driver interface.
456 *
457 ********************************************************************/