Linux-2.6.12-rc2
[linux-2.6.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  ********************************************************************/