📄 advansys.c
字号:
linux advansys=0x330,0,0,0,0xdeb2 If the driver is built as a loadable module this variable can be defined when the driver is loaded. The following insmod command will set the debug level to one. insmod advansys.o asc_dbglvl=1 Debugging Message Levels: 0: Errors Only 1: High-Level Tracing 2-N: Verbose Tracing I don't know the approved way for turning on printk()s to the console. Here's a program I use to do this. Debug output is logged in /var/adm/messages. main() { syscall(103, 7, 0, 0); } I found that increasing LOG_BUF_LEN to 40960 in kernel/printk.c prevents most level 1 debug messages from being lost. 3. ADVANSYS_STATS - Enable statistics (Def: Enabled >= v1.3.0) Enabling this option adds statistics collection and display through /proc to the driver. The information is useful for monitoring driver and device performance. It will add to the size of the driver execution image and add minor overhead to the execution of the driver. Statistics are maintained on a per adapter basis. Driver entry point call counts and transfer size counts are maintained. Statistics are only available for kernels greater than or equal to v1.3.0 with the CONFIG_PROC_FS (/proc) file system configured. AdvanSys SCSI adapter files have the following path name format: /proc/scsi/advansys/[0-(ASC_NUM_BOARD_SUPPORTED-1)] This information can be displayed with cat. For example: cat /proc/scsi/advansys/0 When ADVANSYS_STATS is not defined the AdvanSys /proc files only contain adapter and device configuration information. H. Driver LILO Option If init/main.c is modified as described in the 'Directions for Adding the AdvanSys Driver to Linux' section (B.4.) above, the driver will recognize the 'advansys' LILO command line and /etc/lilo.conf option. This option can be used to either disable I/O port scanning or to limit scanning to 1 - 4 I/O ports. Regardless of the option setting EISA and PCI boards will still be searched for and detected. This option only affects searching for ISA and VL boards. Examples: 1. Eliminate I/O port scanning: boot: linux advansys= or boot: linux advansys=0x0 2. Limit I/O port scanning to one I/O port: boot: linux advansys=0x110 3. Limit I/O port scanning to four I/O ports: boot: linux advansys=0x110,0x210,0x230,0x330 For a loadable module the same effect can be achieved by setting the 'asc_iopflag' variable and 'asc_ioport' array when loading the driver, e.g. insmod advansys.o asc_iopflag=1 asc_ioport=0x110,0x330 If ADVANSYS_DEBUG is defined a 5th (ASC_NUM_IOPORT_PROBE + 1) I/O Port may be added to specify the driver debug level. Refer to the 'Driver Compile Time Options and Debugging' section above for more information. I. Release History BETA-1.0 (12/23/95): First Release BETA-1.1 (12/28/95): 1. Prevent advansys_detect() from being called twice. 2. Add LILO 0xdeb[0-f] option to set 'asc_dbglvl'. 1.2 (1/12/96): 1. Prevent re-entrancy in the interrupt handler which resulted in the driver hanging Linux. 2. Fix problem that prevented ABP-940 cards from being recognized on some PCI motherboards. 3. Add support for the ABP-5140 PnP ISA card. 4. Fix check condition return status. 5. Add conditionally compiled code for Linux v1.3.X. 1.3 (2/23/96): 1. Fix problem in advansys_biosparam() that resulted in the wrong drive geometry being returned for drives > 1GB with extended translation enabled. 2. Add additional tracing during device initialization. 3. Change code that only applies to ISA PnP adapter. 4. Eliminate 'make dep' warning. 5. Try to fix problem with handling resets by increasing their timeout value. 1.4 (5/8/96): 1. Change definitions to eliminate conflicts with other subsystems. 2. Add versioning code for the shared interrupt changes. 3. Eliminate problem in asc_rmqueue() with iterating after removing a request. 4. Remove reset request loop problem from the "Known Problems or Issues" section. This problem was isolated and fixed in the mid-level SCSI driver. 1.5 (8/8/96): 1. Add support for ABP-940U (PCI Ultra) adapter. 2. Add support for IRQ sharing by setting the SA_SHIRQ flag for request_irq and supplying a dev_id pointer to both request_irq() and free_irq(). 3. In AscSearchIOPortAddr11() restore a call to check_region() which should be used before I/O port probing. 4. Fix bug in asc_prt_hex() which resulted in the displaying the wrong data. 5. Incorporate miscellaneous Asc Library bug fixes and new microcode. 6. Change driver versioning to be specific to each Linux sub-level. 7. Change statistics gathering to be per adapter instead of global to the driver. 8. Add more information and statistics to the adapter /proc file: /proc/scsi/advansys[0...]. 9. Remove 'cmd_per_lun' from the "Known Problems or Issues" list. This problem has been addressed with the SCSI mid-level changes made in v1.3.89. The advansys_select_queue_depths() function was added for the v1.3.89 changes. 1.6 (9/10/96): 1. Incorporate miscellaneous Asc Library bug fixes and new microcode. 1.7 (9/25/96): 1. Enable clustering and optimize the setting of the maximum number of scatter gather elements for any particular board. Clustering increases CPU utilization, but results in a relatively larger increase in I/O throughput. 2. Improve the performance of the request queuing functions by adding a last pointer to the queue structure. 3. Correct problems with reset and abort request handling that could have hung or crashed Linux. 4. Add more information to the adapter /proc file: /proc/scsi/advansys[0...]. 5. Remove the request timeout issue form the driver issues list. 6. Miscellaneous documentation additions and changes. 1.8 (10/4/96): 1. Make changes to handle the new v2.1.0 kernel memory mapping in which a kernel virtual address may not be equivalent to its bus or DMA memory address. 2. Change abort and reset request handling to make it yet even more robust. 3. Try to mitigate request starvation by sending ordered requests to heavily loaded, tag queuing enabled devices. 4. Maintain statistics on request response time. 5. Add request response time statistics and other information to the adapter /proc file: /proc/scsi/advansys[0...]. 1.9 (10/21/96): 1. Add conditionally compiled code (ASC_QUEUE_FLOW_CONTROL) to make use of mid-level SCSI driver device queue depth flow control mechanism. This will eliminate aborts caused by a device being unable to keep up with requests and eliminate repeat busy or QUEUE FULL status returned by a device. 2. Incorporate miscellaneous Asc Library bug fixes. 3. To allow the driver to work in kernels with broken module support set 'cmd_per_lun' if the driver is compiled as a module. This change affects kernels v1.3.89 to present. 4. Remove PCI BIOS address from the driver banner. The PCI BIOS is relocated by the motherboard BIOS and its new address can not be determined by the driver. 5. Add mid-level SCSI queue depth information to the adapter /proc file: /proc/scsi/advansys[0...]. 2.0 (11/14/96): 1. Change allocation of global structures used for device initialization to guarantee they are in DMA-able memory. Previously when the driver was loaded as a module these structures might not have been in DMA-able memory, causing device initialization to fail. 2.1 (12/30/96): 1. In advansys_reset(), if the request is a synchronous reset request, even if the request serial number has changed, then complete the request. 2. Add Asc Library bug fixes including new microcode. 3. Clear inquiry buffer before using it. 4. Correct ifdef typo. 2.2 (1/15/97): 1. Add Asc Library bug fixes including new microcode. 2. Add synchronous data transfer rate information to the adapter /proc file: /proc/scsi/advansys[0...]. 3. Change ADVANSYS_DEBUG to be disabled by default. This will reduce the size of the driver image, eliminate execution overhead, and remove unneeded symbols from the kernel symbol space that were previously added by the driver. 4. Add new compile-time option ADVANSYS_ASSERT for assertion code that used to be defined within ADVANSYS_DEBUG. This option is enabled by default. 2.8 (5/26/97): 1. Change version number to 2.8 to synchronize the Linux driver version numbering with other AdvanSys drivers. 2. Reformat source files without tabs to present the same view of the file to everyone regardless of the editor tab setting being used. 3. Add Asc Library bug fixes. 3.1A (1/8/98): 1. Change version number to 3.1 to indicate that support for Ultra-Wide adapters (ABP-940UW) is included in this release. 2. Add Asc Library (Narrow Board) bug fixes. 3. Report an underrun condition with the host status byte set to DID_UNDERRUN. Currently DID_UNDERRUN is defined to 0 which causes the underrun condition to be ignored. When Linux defines its own DID_UNDERRUN the constant defined in this file can be removed. 4. Add patch to AscWaitTixISRDone(). 5. Add support for up to 16 different AdvanSys host adapter SCSI channels in one system. This allows four cards with four channels to be used in one system. 3.1B (1/9/98): 1. Handle that PCI register base addresses are not always page aligned even though ioremap() requires that the address argument be page aligned. 3.1C (1/10/98): 1. Update latest BIOS version checked for from the /proc file. 2. Don't set microcode SDTR variable at initialization. Instead wait until device capabilities have been detected from an Inquiry command. 3.1D (1/21/98): 1. Improve performance when the driver is compiled as module by allowing up to 64 scatter-gather elements instead of 8. 3.1E (5/1/98): 1. Set time delay in AscWaitTixISRDone() to 1000 ms. 2. Include SMP locking changes. 3. For v2.1.93 and newer kernels use CONFIG_PCI and new PCI BIOS access functions. 4. Update board serial number printing. 5. Try allocating an IRQ both with and without the SA_INTERRUPT flag set to allow IRQ sharing with drivers that do not set the SA_INTERRUPT flag. Also display a more descriptive error message if request_irq() fails. 6. Update to latest Asc and Adv Libraries. 3.2A (7/22/99): 1. Update Adv Library to 4.16 which includes support for the ASC38C0800 (Ultra2/LVD) IC. 3.2B (8/23/99): 1. Correct PCI compile time option for v2.1.93 and greater kernels, advansys_info() string, and debug compile time option. 2. Correct DvcSleepMilliSecond() for v2.1.0 and greater kernels. This caused an LVD detection/BIST problem problem among other things. 3. Sort PCI cards by PCI Bus, Slot, Function ascending order to be consistent with the BIOS. 4. Update to Asc Library S121 and Adv Library 5.2. 3.2C (8/24/99): 1. Correct PCI card detection bug introduced in 3.2B that prevented PCI cards from being detected in kernels older than v2.1.93. 3.2D (8/26/99): 1. Correct /proc device synchronous speed information display. Also when re-negotiation is pending for a target device note this condition with an * and footnote. 2. Correct initialization problem with Ultra-Wide cards that have a pre-3.2 BIOS. A microcode variable changed locations in 3.2 and greater BIOSes which caused WDTR to be attempted erroneously with drives that don't support WDTR. 3.2E (8/30/99): 1. Fix compile error caused by v2.3.13 PCI structure change. 2. Remove field from ASCEEP_CONFIG that resulted in an EEPROM checksum error for ISA cards. 3. Remove ASC_QUEUE_FLOW_CONTROL conditional code. The mid-level SCSI changes that it depended on were never included in Linux. 3.2F (9/3/99): 1. Handle new initial function code added in v2.3.16 for all driver versions. 3.2G (9/8/99): 1. Fix PCI board detection in v2.3.13 and greater kernels. 2. Fix comiple errors in v2.3.X with debugging enabled. 3.2H (9/13/99): 1. Add 64-bit address, long support for Alpha and UltraSPARC. The driver has been verified to work on an Alpha system. 2. Add partial byte order handling support for Power PC and other big-endian platforms. This support has not yet been completed or verified. 3. For wide boards replace block zeroing of request and scatter-gather structures with individual field initialization to improve performance. 4. Correct and clarify ROM BIOS version detection. 3.2I (10/8/99): 1. Update to Adv Library 5.4. 2. Add v2.3.19 underrun reporting to asc_isr_callback() and adv_isr_callback(). Remove DID_UNDERRUN constant and other no longer needed code that previously documented the lack of underrun handling. 3.2J (10/14/99): 1. Eliminate compile errors for v2.0 and earlier kernels. 3.2K (11/15/99): 1. Correct debug compile error in asc_prt_adv_scsi_req_q(). 2. Update Adv Library to 5.5. 3. Add ifdef handling for /proc changes added in v2.3.28. 4. Increase Wide board scatter-gather list maximum length to 255 when the driver is compiled into the kernel. 3.2L (11/18/99): 1. Fix bug in adv_get_sglist() that caused an assertion failure at line 7475. The reqp->sgblkp pointer must be initialized to NULL in adv_get_sglist(). 3.2M (11/29/99): 1. Really fix bug in adv_get_sglist(). 2. Incorporate v2.3.29 changes into driver. J. Known Problems/Fix List (XXX)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -