1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun================================================= 4*4882a593SmuzhiyunThe Linux NCR53C8XX/SYM53C8XX drivers README file 5*4882a593Smuzhiyun================================================= 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunWritten by Gerard Roudier <groudier@free.fr> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun21 Rue Carnot 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun95170 DEUIL LA BARRE - FRANCE 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun29 May 1999 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun.. Contents: 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun 1. Introduction 18*4882a593Smuzhiyun 2. Supported chips and SCSI features 19*4882a593Smuzhiyun 3. Advantages of the enhanced 896 driver 20*4882a593Smuzhiyun 3.1 Optimized SCSI SCRIPTS 21*4882a593Smuzhiyun 3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller) 22*4882a593Smuzhiyun 4. Memory mapped I/O versus normal I/O 23*4882a593Smuzhiyun 5. Tagged command queueing 24*4882a593Smuzhiyun 6. Parity checking 25*4882a593Smuzhiyun 7. Profiling information 26*4882a593Smuzhiyun 8. Control commands 27*4882a593Smuzhiyun 8.1 Set minimum synchronous period 28*4882a593Smuzhiyun 8.2 Set wide size 29*4882a593Smuzhiyun 8.3 Set maximum number of concurrent tagged commands 30*4882a593Smuzhiyun 8.4 Set order type for tagged command 31*4882a593Smuzhiyun 8.5 Set debug mode 32*4882a593Smuzhiyun 8.6 Clear profile counters 33*4882a593Smuzhiyun 8.7 Set flag (no_disc) 34*4882a593Smuzhiyun 8.8 Set verbose level 35*4882a593Smuzhiyun 8.9 Reset all logical units of a target 36*4882a593Smuzhiyun 8.10 Abort all tasks of all logical units of a target 37*4882a593Smuzhiyun 9. Configuration parameters 38*4882a593Smuzhiyun 10. Boot setup commands 39*4882a593Smuzhiyun 10.1 Syntax 40*4882a593Smuzhiyun 10.2 Available arguments 41*4882a593Smuzhiyun 10.2.1 Master parity checking 42*4882a593Smuzhiyun 10.2.2 Scsi parity checking 43*4882a593Smuzhiyun 10.2.3 Scsi disconnections 44*4882a593Smuzhiyun 10.2.4 Special features 45*4882a593Smuzhiyun 10.2.5 Ultra SCSI support 46*4882a593Smuzhiyun 10.2.6 Default number of tagged commands 47*4882a593Smuzhiyun 10.2.7 Default synchronous period factor 48*4882a593Smuzhiyun 10.2.8 Negotiate synchronous with all devices 49*4882a593Smuzhiyun 10.2.9 Verbosity level 50*4882a593Smuzhiyun 10.2.10 Debug mode 51*4882a593Smuzhiyun 10.2.11 Burst max 52*4882a593Smuzhiyun 10.2.12 LED support 53*4882a593Smuzhiyun 10.2.13 Max wide 54*4882a593Smuzhiyun 10.2.14 Differential mode 55*4882a593Smuzhiyun 10.2.15 IRQ mode 56*4882a593Smuzhiyun 10.2.16 Reverse probe 57*4882a593Smuzhiyun 10.2.17 Fix up PCI configuration space 58*4882a593Smuzhiyun 10.2.18 Serial NVRAM 59*4882a593Smuzhiyun 10.2.19 Check SCSI BUS 60*4882a593Smuzhiyun 10.2.20 Exclude a host from being attached 61*4882a593Smuzhiyun 10.2.21 Suggest a default SCSI id for hosts 62*4882a593Smuzhiyun 10.2.22 Enable use of IMMEDIATE ARBITRATION 63*4882a593Smuzhiyun 10.3 Advised boot setup commands 64*4882a593Smuzhiyun 10.4 PCI configuration fix-up boot option 65*4882a593Smuzhiyun 10.5 Serial NVRAM support boot option 66*4882a593Smuzhiyun 10.6 SCSI BUS checking boot option 67*4882a593Smuzhiyun 10.7 IMMEDIATE ARBITRATION boot option 68*4882a593Smuzhiyun 11. Some constants and flags of the ncr53c8xx.h header file 69*4882a593Smuzhiyun 12. Installation 70*4882a593Smuzhiyun 13. Architecture dependent features 71*4882a593Smuzhiyun 14. Known problems 72*4882a593Smuzhiyun 14.1 Tagged commands with Iomega Jaz device 73*4882a593Smuzhiyun 14.2 Device names change when another controller is added 74*4882a593Smuzhiyun 14.3 Using only 8 bit devices with a WIDE SCSI controller. 75*4882a593Smuzhiyun 14.4 Possible data corruption during a Memory Write and Invalidate 76*4882a593Smuzhiyun 14.5 IRQ sharing problems 77*4882a593Smuzhiyun 15. SCSI problem troubleshooting 78*4882a593Smuzhiyun 15.1 Problem tracking 79*4882a593Smuzhiyun 15.2 Understanding hardware error reports 80*4882a593Smuzhiyun 16. Synchronous transfer negotiation tables 81*4882a593Smuzhiyun 16.1 Synchronous timings for 53C875 and 53C860 Ultra-SCSI controllers 82*4882a593Smuzhiyun 16.2 Synchronous timings for fast SCSI-2 53C8XX controllers 83*4882a593Smuzhiyun 17. Serial NVRAM support (by Richard Waltham) 84*4882a593Smuzhiyun 17.1 Features 85*4882a593Smuzhiyun 17.2 Symbios NVRAM layout 86*4882a593Smuzhiyun 17.3 Tekram NVRAM layout 87*4882a593Smuzhiyun 18. Support for Big Endian 88*4882a593Smuzhiyun 18.1 Big Endian CPU 89*4882a593Smuzhiyun 18.2 NCR chip in Big Endian mode of operations 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun1. Introduction 92*4882a593Smuzhiyun=============== 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunThe initial Linux ncr53c8xx driver has been a port of the ncr driver from 95*4882a593SmuzhiyunFreeBSD that has been achieved in November 1995 by: 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun - Gerard Roudier <groudier@free.fr> 98*4882a593Smuzhiyun 99*4882a593SmuzhiyunThe original driver has been written for 386bsd and FreeBSD by: 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun - Wolfgang Stanglmeier <wolf@cologne.de> 102*4882a593Smuzhiyun - Stefan Esser <se@mi.Uni-Koeln.de> 103*4882a593Smuzhiyun 104*4882a593SmuzhiyunIt is now available as a bundle of 2 drivers: 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun- ncr53c8xx generic driver that supports all the SYM53C8XX family including 107*4882a593Smuzhiyun the earliest 810 rev. 1, the latest 896 (2 channel LVD SCSI controller) and 108*4882a593Smuzhiyun the new 895A (1 channel LVD SCSI controller). 109*4882a593Smuzhiyun- sym53c8xx enhanced driver (a.k.a. 896 drivers) that drops support of oldest 110*4882a593Smuzhiyun chips in order to gain advantage of new features, as LOAD/STORE instructions 111*4882a593Smuzhiyun available since the 810A and hardware phase mismatch available with the 112*4882a593Smuzhiyun 896 and the 895A. 113*4882a593Smuzhiyun 114*4882a593SmuzhiyunYou can find technical information about the NCR 8xx family in the 115*4882a593SmuzhiyunPCI-HOWTO written by Michael Will and in the SCSI-HOWTO written by 116*4882a593SmuzhiyunDrew Eckhardt. 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunInformation about new chips is available at LSILOGIC web server: 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun - http://www.lsilogic.com/ 121*4882a593Smuzhiyun 122*4882a593SmuzhiyunSCSI standard documentations are available at SYMBIOS ftp server: 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun - ftp://ftp.symbios.com/ 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunUseful SCSI tools written by Eric Youngdale are available at tsx-11: 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun - ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsiinfo-X.Y.tar.gz 129*4882a593Smuzhiyun - ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/scsidev-X.Y.tar.gz 130*4882a593Smuzhiyun 131*4882a593SmuzhiyunThese tools are not ALPHA but quite clean and work quite well. 132*4882a593SmuzhiyunIt is essential you have the 'scsiinfo' package. 133*4882a593Smuzhiyun 134*4882a593SmuzhiyunThis short documentation describes the features of the generic and enhanced 135*4882a593Smuzhiyundrivers, configuration parameters and control commands available through 136*4882a593Smuzhiyunthe proc SCSI file system read / write operations. 137*4882a593Smuzhiyun 138*4882a593SmuzhiyunThis driver has been tested OK with linux/i386, Linux/Alpha and Linux/PPC. 139*4882a593Smuzhiyun 140*4882a593SmuzhiyunLatest driver version and patches are available at: 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun - ftp://ftp.tux.org/pub/people/gerard-roudier 143*4882a593Smuzhiyun 144*4882a593Smuzhiyunor 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun - ftp://ftp.symbios.com/mirror/ftp.tux.org/pub/tux/roudier/drivers 147*4882a593Smuzhiyun 148*4882a593SmuzhiyunI am not a native speaker of English and there are probably lots of 149*4882a593Smuzhiyunmistakes in this README file. Any help will be welcome. 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun2. Supported chips and SCSI features 153*4882a593Smuzhiyun==================================== 154*4882a593Smuzhiyun 155*4882a593SmuzhiyunThe following features are supported for all chips: 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun - Synchronous negotiation 158*4882a593Smuzhiyun - Disconnection 159*4882a593Smuzhiyun - Tagged command queuing 160*4882a593Smuzhiyun - SCSI parity checking 161*4882a593Smuzhiyun - Master parity checking 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun"Wide negotiation" is supported for chips that allow it. The 164*4882a593Smuzhiyunfollowing table shows some characteristics of NCR 8xx family chips 165*4882a593Smuzhiyunand what drivers support them. 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 168*4882a593Smuzhiyun| | | | | |Supported by|Supported by| 169*4882a593Smuzhiyun| |On board | | | |the generic |the enhanced| 170*4882a593Smuzhiyun|Chip |SDMS BIOS |Wide |SCSI std. | Max. sync |driver |driver | 171*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 172*4882a593Smuzhiyun|810 | N | N | FAST10 | 10 MB/s | Y | N | 173*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 174*4882a593Smuzhiyun|810A | N | N | FAST10 | 10 MB/s | Y | Y | 175*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 176*4882a593Smuzhiyun|815 | Y | N | FAST10 | 10 MB/s | Y | N | 177*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 178*4882a593Smuzhiyun|825 | Y | Y | FAST10 | 20 MB/s | Y | N | 179*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 180*4882a593Smuzhiyun|825A | Y | Y | FAST10 | 20 MB/s | Y | Y | 181*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 182*4882a593Smuzhiyun|860 | N | N | FAST20 | 20 MB/s | Y | Y | 183*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 184*4882a593Smuzhiyun|875 | Y | Y | FAST20 | 40 MB/s | Y | Y | 185*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 186*4882a593Smuzhiyun|876 | Y | Y | FAST20 | 40 MB/s | Y | Y | 187*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 188*4882a593Smuzhiyun|895 | Y | Y | FAST40 | 80 MB/s | Y | Y | 189*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 190*4882a593Smuzhiyun|895A | Y | Y | FAST40 | 80 MB/s | Y | Y | 191*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 192*4882a593Smuzhiyun|896 | Y | Y | FAST40 | 80 MB/s | Y | Y | 193*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 194*4882a593Smuzhiyun|897 | Y | Y | FAST40 | 80 MB/s | Y | Y | 195*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 196*4882a593Smuzhiyun|1510D | Y | Y | FAST40 | 80 MB/s | Y | Y | 197*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 198*4882a593Smuzhiyun|1010 | Y | Y | FAST80 |160 MB/s | N | Y | 199*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 200*4882a593Smuzhiyun|1010_66 | Y | Y | FAST80 |160 MB/s | N | Y | 201*4882a593Smuzhiyun|[1]_ | | | | | | | 202*4882a593Smuzhiyun+--------+-----------+-----+-----------+------------+------------+------------+ 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun.. [1] Chip supports 33MHz and 66MHz PCI buses. 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun 207*4882a593SmuzhiyunSummary of other supported features: 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun:Module: allow to load the driver 210*4882a593Smuzhiyun:Memory mapped I/O: increases performance 211*4882a593Smuzhiyun:Profiling information: read operations from the proc SCSI file system 212*4882a593Smuzhiyun:Control commands: write operations to the proc SCSI file system 213*4882a593Smuzhiyun:Debugging information: written to syslog (expert only) 214*4882a593Smuzhiyun:Serial NVRAM: Symbios and Tekram formats 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun- Scatter / gather 217*4882a593Smuzhiyun- Shared interrupt 218*4882a593Smuzhiyun- Boot setup commands 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun3. Advantages of the enhanced 896 driver 222*4882a593Smuzhiyun======================================== 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun3.1 Optimized SCSI SCRIPTS 225*4882a593Smuzhiyun-------------------------- 226*4882a593Smuzhiyun 227*4882a593SmuzhiyunThe 810A, 825A, 875, 895, 896 and 895A support new SCSI SCRIPTS instructions 228*4882a593Smuzhiyunnamed LOAD and STORE that allow to move up to 1 DWORD from/to an IO register 229*4882a593Smuzhiyunto/from memory much faster that the MOVE MEMORY instruction that is supported 230*4882a593Smuzhiyunby the 53c7xx and 53c8xx family. 231*4882a593SmuzhiyunThe LOAD/STORE instructions support absolute and DSA relative addressing 232*4882a593Smuzhiyunmodes. The SCSI SCRIPTS had been entirely rewritten using LOAD/STORE instead 233*4882a593Smuzhiyunof MOVE MEMORY instructions. 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun3.2 New features of the SYM53C896 (64 bit PCI dual LVD SCSI controller) 236*4882a593Smuzhiyun----------------------------------------------------------------------- 237*4882a593Smuzhiyun 238*4882a593SmuzhiyunThe 896 and the 895A allows handling of the phase mismatch context from 239*4882a593SmuzhiyunSCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor 240*4882a593Smuzhiyununtil the C code has saved the context of the transfer). 241*4882a593SmuzhiyunImplementing this without using LOAD/STORE instructions would be painful 242*4882a593Smuzhiyunand I didn't even want to try it. 243*4882a593Smuzhiyun 244*4882a593SmuzhiyunThe 896 chip supports 64 bit PCI transactions and addressing, while the 245*4882a593Smuzhiyun895A supports 32 bit PCI transactions and 64 bit addressing. 246*4882a593SmuzhiyunThe SCRIPTS processor of these chips is not true 64 bit, but uses segment 247*4882a593Smuzhiyunregisters for bit 32-63. Another interesting feature is that LOAD/STORE 248*4882a593Smuzhiyuninstructions that address the on-chip RAM (8k) remain internal to the chip. 249*4882a593Smuzhiyun 250*4882a593SmuzhiyunDue to the use of LOAD/STORE SCRIPTS instructions, this driver does not 251*4882a593Smuzhiyunsupport the following chips: 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun- SYM53C810 revision < 0x10 (16) 254*4882a593Smuzhiyun- SYM53C815 all revisions 255*4882a593Smuzhiyun- SYM53C825 revision < 0x10 (16) 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun4. Memory mapped I/O versus normal I/O 258*4882a593Smuzhiyun====================================== 259*4882a593Smuzhiyun 260*4882a593SmuzhiyunMemory mapped I/O has less latency than normal I/O. Since 261*4882a593Smuzhiyunlinux-1.3.x, memory mapped I/O is used rather than normal I/O. Memory 262*4882a593Smuzhiyunmapped I/O seems to work fine on most hardware configurations, but 263*4882a593Smuzhiyunsome poorly designed motherboards may break this feature. 264*4882a593Smuzhiyun 265*4882a593SmuzhiyunThe configuration option CONFIG_SCSI_NCR53C8XX_IOMAPPED forces the 266*4882a593Smuzhiyundriver to use normal I/O in all cases. 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun5. Tagged command queueing 270*4882a593Smuzhiyun========================== 271*4882a593Smuzhiyun 272*4882a593SmuzhiyunQueuing more than 1 command at a time to a device allows it to perform 273*4882a593Smuzhiyunoptimizations based on actual head positions and its mechanical 274*4882a593Smuzhiyuncharacteristics. This feature may also reduce average command latency. 275*4882a593SmuzhiyunIn order to really gain advantage of this feature, devices must have 276*4882a593Smuzhiyuna reasonable cache size (No miracle is to be expected for a low-end 277*4882a593Smuzhiyunhard disk with 128 KB or less). 278*4882a593SmuzhiyunSome known SCSI devices do not properly support tagged command queuing. 279*4882a593SmuzhiyunGenerally, firmware revisions that fix this kind of problems are available 280*4882a593Smuzhiyunat respective vendor web/ftp sites. 281*4882a593SmuzhiyunAll I can say is that the hard disks I use on my machines behave well with 282*4882a593Smuzhiyunthis driver with tagged command queuing enabled: 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun- IBM S12 0662 285*4882a593Smuzhiyun- Conner 1080S 286*4882a593Smuzhiyun- Quantum Atlas I 287*4882a593Smuzhiyun- Quantum Atlas II 288*4882a593Smuzhiyun 289*4882a593SmuzhiyunIf your controller has NVRAM, you can configure this feature per target 290*4882a593Smuzhiyunfrom the user setup tool. The Tekram Setup program allows to tune the 291*4882a593Smuzhiyunmaximum number of queued commands up to 32. The Symbios Setup only allows 292*4882a593Smuzhiyunto enable or disable this feature. 293*4882a593Smuzhiyun 294*4882a593SmuzhiyunThe maximum number of simultaneous tagged commands queued to a device 295*4882a593Smuzhiyunis currently set to 8 by default. This value is suitable for most SCSI 296*4882a593Smuzhiyundisks. With large SCSI disks (>= 2GB, cache >= 512KB, average seek time 297*4882a593Smuzhiyun<= 10 ms), using a larger value may give better performances. 298*4882a593Smuzhiyun 299*4882a593SmuzhiyunThe sym53c8xx driver supports up to 255 commands per device, and the 300*4882a593Smuzhiyungeneric ncr53c8xx driver supports up to 64, but using more than 32 is 301*4882a593Smuzhiyungenerally not worth-while, unless you are using a very large disk or disk 302*4882a593Smuzhiyunarray. It is noticeable that most of recent hard disks seem not to accept 303*4882a593Smuzhiyunmore than 64 simultaneous commands. So, using more than 64 queued commands 304*4882a593Smuzhiyunis probably just resource wasting. 305*4882a593Smuzhiyun 306*4882a593SmuzhiyunIf your controller does not have NVRAM or if it is managed by the SDMS 307*4882a593SmuzhiyunBIOS/SETUP, you can configure tagged queueing feature and device queue 308*4882a593Smuzhiyundepths from the boot command-line. For example:: 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun ncr53c8xx=tags:4/t2t3q15-t4q7/t1u0q32 311*4882a593Smuzhiyun 312*4882a593Smuzhiyunwill set tagged commands queue depths as follow: 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun- target 2 all luns on controller 0 --> 15 315*4882a593Smuzhiyun- target 3 all luns on controller 0 --> 15 316*4882a593Smuzhiyun- target 4 all luns on controller 0 --> 7 317*4882a593Smuzhiyun- target 1 lun 0 on controller 1 --> 32 318*4882a593Smuzhiyun- all other target/lun --> 4 319*4882a593Smuzhiyun 320*4882a593SmuzhiyunIn some special conditions, some SCSI disk firmwares may return a 321*4882a593SmuzhiyunQUEUE FULL status for a SCSI command. This behaviour is managed by the 322*4882a593Smuzhiyundriver using the following heuristic: 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun- Each time a QUEUE FULL status is returned, tagged queue depth is reduced 325*4882a593Smuzhiyun to the actual number of disconnected commands. 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun- Every 1000 successfully completed SCSI commands, if allowed by the 328*4882a593Smuzhiyun current limit, the maximum number of queueable commands is incremented. 329*4882a593Smuzhiyun 330*4882a593SmuzhiyunSince QUEUE FULL status reception and handling is resource wasting, the 331*4882a593Smuzhiyundriver notifies by default this problem to user by indicating the actual 332*4882a593Smuzhiyunnumber of commands used and their status, as well as its decision on the 333*4882a593Smuzhiyundevice queue depth change. 334*4882a593SmuzhiyunThe heuristic used by the driver in handling QUEUE FULL ensures that the 335*4882a593Smuzhiyunimpact on performances is not too bad. You can get rid of the messages by 336*4882a593Smuzhiyunsetting verbose level to zero, as follow: 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun1st method: 339*4882a593Smuzhiyun boot your system using 'ncr53c8xx=verb:0' option. 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun2nd method: 342*4882a593Smuzhiyun apply "setverbose 0" control command to the proc fs entry 343*4882a593Smuzhiyun corresponding to your controller after boot-up. 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun6. Parity checking 346*4882a593Smuzhiyun================== 347*4882a593Smuzhiyun 348*4882a593SmuzhiyunThe driver supports SCSI parity checking and PCI bus master parity 349*4882a593Smuzhiyunchecking. These features must be enabled in order to ensure safe data 350*4882a593Smuzhiyuntransfers. However, some flawed devices or mother boards will have 351*4882a593Smuzhiyunproblems with parity. You can disable either PCI parity or SCSI parity 352*4882a593Smuzhiyunchecking by entering appropriate options from the boot command line. 353*4882a593Smuzhiyun(See 10: Boot setup commands). 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun7. Profiling information 356*4882a593Smuzhiyun======================== 357*4882a593Smuzhiyun 358*4882a593SmuzhiyunProfiling information is available through the proc SCSI file system. 359*4882a593SmuzhiyunSince gathering profiling information may impact performances, this 360*4882a593Smuzhiyunfeature is disabled by default and requires a compilation configuration 361*4882a593Smuzhiyunoption to be set to Y. 362*4882a593Smuzhiyun 363*4882a593SmuzhiyunThe device associated with a host has the following pathname:: 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun /proc/scsi/ncr53c8xx/N (N=0,1,2 ....) 366*4882a593Smuzhiyun 367*4882a593SmuzhiyunGenerally, only 1 board is used on hardware configuration, and that device is:: 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun /proc/scsi/ncr53c8xx/0 370*4882a593Smuzhiyun 371*4882a593SmuzhiyunHowever, if the driver has been made as module, the number of the 372*4882a593Smuzhiyunhosts is incremented each time the driver is loaded. 373*4882a593Smuzhiyun 374*4882a593SmuzhiyunIn order to display profiling information, just enter:: 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun cat /proc/scsi/ncr53c8xx/0 377*4882a593Smuzhiyun 378*4882a593Smuzhiyunand you will get something like the following text:: 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun General information: 381*4882a593Smuzhiyun Chip NCR53C810, device id 0x1, revision id 0x2 382*4882a593Smuzhiyun IO port address 0x6000, IRQ number 10 383*4882a593Smuzhiyun Using memory mapped IO at virtual address 0x282c000 384*4882a593Smuzhiyun Synchronous transfer period 25, max commands per lun 4 385*4882a593Smuzhiyun Profiling information: 386*4882a593Smuzhiyun num_trans = 18014 387*4882a593Smuzhiyun num_kbytes = 671314 388*4882a593Smuzhiyun num_disc = 25763 389*4882a593Smuzhiyun num_break = 1673 390*4882a593Smuzhiyun num_int = 1685 391*4882a593Smuzhiyun num_fly = 18038 392*4882a593Smuzhiyun ms_setup = 4940 393*4882a593Smuzhiyun ms_data = 369940 394*4882a593Smuzhiyun ms_disc = 183090 395*4882a593Smuzhiyun ms_post = 1320 396*4882a593Smuzhiyun 397*4882a593SmuzhiyunGeneral information is easy to understand. The device ID and the 398*4882a593Smuzhiyunrevision ID identify the SCSI chip as follows: 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun======= ============= =========== 401*4882a593SmuzhiyunChip Device id Revision Id 402*4882a593Smuzhiyun======= ============= =========== 403*4882a593Smuzhiyun810 0x1 < 0x10 404*4882a593Smuzhiyun810A 0x1 >= 0x10 405*4882a593Smuzhiyun815 0x4 406*4882a593Smuzhiyun825 0x3 < 0x10 407*4882a593Smuzhiyun860 0x6 408*4882a593Smuzhiyun825A 0x3 >= 0x10 409*4882a593Smuzhiyun875 0xf 410*4882a593Smuzhiyun895 0xc 411*4882a593Smuzhiyun======= ============= =========== 412*4882a593Smuzhiyun 413*4882a593SmuzhiyunThe profiling information is updated upon completion of SCSI commands. 414*4882a593SmuzhiyunA data structure is allocated and zeroed when the host adapter is 415*4882a593Smuzhiyunattached. So, if the driver is a module, the profile counters are 416*4882a593Smuzhiyuncleared each time the driver is loaded. The "clearprof" command 417*4882a593Smuzhiyunallows you to clear these counters at any time. 418*4882a593Smuzhiyun 419*4882a593SmuzhiyunThe following counters are available: 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun("num" prefix means "number of", 422*4882a593Smuzhiyun"ms" means milli-seconds) 423*4882a593Smuzhiyun 424*4882a593Smuzhiyunnum_trans 425*4882a593Smuzhiyun Number of completed commands 426*4882a593Smuzhiyun Example above: 18014 completed commands 427*4882a593Smuzhiyun 428*4882a593Smuzhiyunnum_kbytes 429*4882a593Smuzhiyun Number of kbytes transferred 430*4882a593Smuzhiyun Example above: 671 MB transferred 431*4882a593Smuzhiyun 432*4882a593Smuzhiyunnum_disc 433*4882a593Smuzhiyun Number of SCSI disconnections 434*4882a593Smuzhiyun Example above: 25763 SCSI disconnections 435*4882a593Smuzhiyun 436*4882a593Smuzhiyunnum_break 437*4882a593Smuzhiyun number of script interruptions (phase mismatch) 438*4882a593Smuzhiyun Example above: 1673 script interruptions 439*4882a593Smuzhiyun 440*4882a593Smuzhiyunnum_int 441*4882a593Smuzhiyun Number of interrupts other than "on the fly" 442*4882a593Smuzhiyun Example above: 1685 interruptions not "on the fly" 443*4882a593Smuzhiyun 444*4882a593Smuzhiyunnum_fly 445*4882a593Smuzhiyun Number of interrupts "on the fly" 446*4882a593Smuzhiyun Example above: 18038 interruptions "on the fly" 447*4882a593Smuzhiyun 448*4882a593Smuzhiyunms_setup 449*4882a593Smuzhiyun Elapsed time for SCSI commands setups 450*4882a593Smuzhiyun Example above: 4.94 seconds 451*4882a593Smuzhiyun 452*4882a593Smuzhiyunms_data 453*4882a593Smuzhiyun Elapsed time for data transfers 454*4882a593Smuzhiyun Example above: 369.94 seconds spent for data transfer 455*4882a593Smuzhiyun 456*4882a593Smuzhiyunms_disc 457*4882a593Smuzhiyun Elapsed time for SCSI disconnections 458*4882a593Smuzhiyun Example above: 183.09 seconds spent disconnected 459*4882a593Smuzhiyun 460*4882a593Smuzhiyunms_post 461*4882a593Smuzhiyun Elapsed time for command post processing 462*4882a593Smuzhiyun (time from SCSI status get to command completion call) 463*4882a593Smuzhiyun Example above: 1.32 seconds spent for post processing 464*4882a593Smuzhiyun 465*4882a593SmuzhiyunDue to the 1/100 second tick of the system clock, "ms_post" time may 466*4882a593Smuzhiyunbe wrong. 467*4882a593Smuzhiyun 468*4882a593SmuzhiyunIn the example above, we got 18038 interrupts "on the fly" and only 469*4882a593Smuzhiyun1673 script breaks generally due to disconnections inside a segment 470*4882a593Smuzhiyunof the scatter list. 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun8. Control commands 474*4882a593Smuzhiyun=================== 475*4882a593Smuzhiyun 476*4882a593SmuzhiyunControl commands can be sent to the driver with write operations to 477*4882a593Smuzhiyunthe proc SCSI file system. The generic command syntax is the 478*4882a593Smuzhiyunfollowing:: 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun echo "<verb> <parameters>" >/proc/scsi/ncr53c8xx/0 481*4882a593Smuzhiyun (assumes controller number is 0) 482*4882a593Smuzhiyun 483*4882a593SmuzhiyunUsing "all" for "<target>" parameter with the commands below will 484*4882a593Smuzhiyunapply to all targets of the SCSI chain (except the controller). 485*4882a593Smuzhiyun 486*4882a593SmuzhiyunAvailable commands: 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun8.1 Set minimum synchronous period factor 489*4882a593Smuzhiyun----------------------------------------- 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun setsync <target> <period factor> 492*4882a593Smuzhiyun 493*4882a593Smuzhiyun :target: target number 494*4882a593Smuzhiyun :period: minimum synchronous period. 495*4882a593Smuzhiyun Maximum speed = 1000/(4*period factor) except for special 496*4882a593Smuzhiyun cases below. 497*4882a593Smuzhiyun 498*4882a593Smuzhiyun Specify a period of 255, to force asynchronous transfer mode. 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun - 10 means 25 nano-seconds synchronous period 501*4882a593Smuzhiyun - 11 means 30 nano-seconds synchronous period 502*4882a593Smuzhiyun - 12 means 50 nano-seconds synchronous period 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun8.2 Set wide size 505*4882a593Smuzhiyun----------------- 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun setwide <target> <size> 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun :target: target number 510*4882a593Smuzhiyun :size: 0=8 bits, 1=16bits 511*4882a593Smuzhiyun 512*4882a593Smuzhiyun8.3 Set maximum number of concurrent tagged commands 513*4882a593Smuzhiyun---------------------------------------------------- 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun settags <target> <tags> 516*4882a593Smuzhiyun 517*4882a593Smuzhiyun :target: target number 518*4882a593Smuzhiyun :tags: number of concurrent tagged commands 519*4882a593Smuzhiyun must not be greater than SCSI_NCR_MAX_TAGS (default: 8) 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun8.4 Set order type for tagged command 522*4882a593Smuzhiyun------------------------------------- 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun setorder <order> 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun :order: 3 possible values: 527*4882a593Smuzhiyun 528*4882a593Smuzhiyun simple: 529*4882a593Smuzhiyun use SIMPLE TAG for all operations (read and write) 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun ordered: 532*4882a593Smuzhiyun use ORDERED TAG for all operations 533*4882a593Smuzhiyun 534*4882a593Smuzhiyun default: 535*4882a593Smuzhiyun use default tag type, 536*4882a593Smuzhiyun SIMPLE TAG for read operations 537*4882a593Smuzhiyun ORDERED TAG for write operations 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun8.5 Set debug mode 541*4882a593Smuzhiyun------------------ 542*4882a593Smuzhiyun 543*4882a593Smuzhiyun setdebug <list of debug flags> 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun Available debug flags: 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun ======== ======================================================== 548*4882a593Smuzhiyun alloc print info about memory allocations (ccb, lcb) 549*4882a593Smuzhiyun queue print info about insertions into the command start queue 550*4882a593Smuzhiyun result print sense data on CHECK CONDITION status 551*4882a593Smuzhiyun scatter print info about the scatter process 552*4882a593Smuzhiyun scripts print info about the script binding process 553*4882a593Smuzhiyun tiny print minimal debugging information 554*4882a593Smuzhiyun timing print timing information of the NCR chip 555*4882a593Smuzhiyun nego print information about SCSI negotiations 556*4882a593Smuzhiyun phase print information on script interruptions 557*4882a593Smuzhiyun ======== ======================================================== 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun Use "setdebug" with no argument to reset debug flags. 560*4882a593Smuzhiyun 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun8.6 Clear profile counters 563*4882a593Smuzhiyun-------------------------- 564*4882a593Smuzhiyun 565*4882a593Smuzhiyun clearprof 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun The profile counters are automatically cleared when the amount of 568*4882a593Smuzhiyun data transferred reaches 1000 GB in order to avoid overflow. 569*4882a593Smuzhiyun The "clearprof" command allows you to clear these counters at any time. 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun8.7 Set flag (no_disc) 573*4882a593Smuzhiyun---------------------- 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun setflag <target> <flag> 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun target: target number 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun For the moment, only one flag is available: 580*4882a593Smuzhiyun 581*4882a593Smuzhiyun no_disc: not allow target to disconnect. 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun Do not specify any flag in order to reset the flag. For example: 584*4882a593Smuzhiyun 585*4882a593Smuzhiyun setflag 4 586*4882a593Smuzhiyun will reset no_disc flag for target 4, so will allow it disconnections. 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun setflag all 589*4882a593Smuzhiyun will allow disconnection for all devices on the SCSI bus. 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun8.8 Set verbose level 593*4882a593Smuzhiyun--------------------- 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun setverbose #level 596*4882a593Smuzhiyun 597*4882a593Smuzhiyun The driver default verbose level is 1. This command allows to change 598*4882a593Smuzhiyun th driver verbose level after boot-up. 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun8.9 Reset all logical units of a target 601*4882a593Smuzhiyun--------------------------------------- 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun resetdev <target> 604*4882a593Smuzhiyun 605*4882a593Smuzhiyun :target: target number 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun The driver will try to send a BUS DEVICE RESET message to the target. 608*4882a593Smuzhiyun (Only supported by the SYM53C8XX driver and provided for test purpose) 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun8.10 Abort all tasks of all logical units of a target 611*4882a593Smuzhiyun----------------------------------------------------- 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun cleardev <target> 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun :target: target number 616*4882a593Smuzhiyun 617*4882a593Smuzhiyun The driver will try to send a ABORT message to all the logical units 618*4882a593Smuzhiyun of the target. 619*4882a593Smuzhiyun 620*4882a593Smuzhiyun (Only supported by the SYM53C8XX driver and provided for test purpose) 621*4882a593Smuzhiyun 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun9. Configuration parameters 624*4882a593Smuzhiyun=========================== 625*4882a593Smuzhiyun 626*4882a593SmuzhiyunIf the firmware of all your devices is perfect enough, all the 627*4882a593Smuzhiyunfeatures supported by the driver can be enabled at start-up. However, 628*4882a593Smuzhiyunif only one has a flaw for some SCSI feature, you can disable the 629*4882a593Smuzhiyunsupport by the driver of this feature at linux start-up and enable 630*4882a593Smuzhiyunthis feature after boot-up only for devices that support it safely. 631*4882a593Smuzhiyun 632*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_IOMAPPED (default answer: n) 633*4882a593Smuzhiyun Answer "y" if you suspect your mother board to not allow memory mapped I/O. 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun May slow down performance a little. This option is required by 636*4882a593Smuzhiyun Linux/PPC and is used no matter what you select here. Linux/PPC 637*4882a593Smuzhiyun suffers no performance loss with this option since all IO is memory 638*4882a593Smuzhiyun mapped anyway. 639*4882a593Smuzhiyun 640*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS (default answer: 8) 641*4882a593Smuzhiyun Default tagged command queue depth. 642*4882a593Smuzhiyun 643*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_MAX_TAGS (default answer: 8) 644*4882a593Smuzhiyun This option allows you to specify the maximum number of tagged commands 645*4882a593Smuzhiyun that can be queued to a device. The maximum supported value is 32. 646*4882a593Smuzhiyun 647*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_SYNC (default answer: 5) 648*4882a593Smuzhiyun This option allows you to specify the frequency in MHz the driver 649*4882a593Smuzhiyun will use at boot time for synchronous data transfer negotiations. 650*4882a593Smuzhiyun This frequency can be changed later with the "setsync" control command. 651*4882a593Smuzhiyun 0 means "asynchronous data transfers". 652*4882a593Smuzhiyun 653*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO (default answer: n) 654*4882a593Smuzhiyun Force synchronous negotiation for all SCSI-2 devices. 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun Some SCSI-2 devices do not report this feature in byte 7 of inquiry 657*4882a593Smuzhiyun response but do support it properly (TAMARACK scanners for example). 658*4882a593Smuzhiyun 659*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_NO_DISCONNECT (default and only reasonable answer: n) 660*4882a593Smuzhiyun If you suspect a device of yours does not properly support disconnections, 661*4882a593Smuzhiyun you can answer "y". Then, all SCSI devices will never disconnect the bus 662*4882a593Smuzhiyun even while performing long SCSI operations. 663*4882a593Smuzhiyun 664*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT 665*4882a593Smuzhiyun Genuine SYMBIOS boards use GPIO0 in output for controller LED and GPIO3 666*4882a593Smuzhiyun bit as a flag indicating singled-ended/differential interface. 667*4882a593Smuzhiyun If all the boards of your system are genuine SYMBIOS boards or use 668*4882a593Smuzhiyun BIOS and drivers from SYMBIOS, you would want to enable this option. 669*4882a593Smuzhiyun 670*4882a593Smuzhiyun This option must NOT be enabled if your system has at least one 53C8XX 671*4882a593Smuzhiyun based scsi board with a vendor-specific BIOS. 672*4882a593Smuzhiyun For example, Tekram DC-390/U, DC-390/W and DC-390/F scsi controllers 673*4882a593Smuzhiyun use a vendor-specific BIOS and are known to not use SYMBIOS compatible 674*4882a593Smuzhiyun GPIO wiring. So, this option must not be enabled if your system has 675*4882a593Smuzhiyun such a board installed. 676*4882a593Smuzhiyun 677*4882a593SmuzhiyunCONFIG_SCSI_NCR53C8XX_NVRAM_DETECT 678*4882a593Smuzhiyun Enable support for reading the serial NVRAM data on Symbios and 679*4882a593Smuzhiyun some Symbios compatible cards, and Tekram DC390W/U/F cards. Useful for 680*4882a593Smuzhiyun systems with more than one Symbios compatible controller where at least 681*4882a593Smuzhiyun one has a serial NVRAM, or for a system with a mixture of Symbios and 682*4882a593Smuzhiyun Tekram cards. Enables setting the boot order of host adaptors 683*4882a593Smuzhiyun to something other than the default order or "reverse probe" order. 684*4882a593Smuzhiyun Also enables Symbios and Tekram cards to be distinguished so 685*4882a593Smuzhiyun CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT may be set in a system with a 686*4882a593Smuzhiyun mixture of Symbios and Tekram cards so the Symbios cards can make use of 687*4882a593Smuzhiyun the full range of Symbios features, differential, led pin, without 688*4882a593Smuzhiyun causing problems for the Tekram card(s). 689*4882a593Smuzhiyun 690*4882a593Smuzhiyun10. Boot setup commands 691*4882a593Smuzhiyun======================= 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun10.1 Syntax 694*4882a593Smuzhiyun----------- 695*4882a593Smuzhiyun 696*4882a593SmuzhiyunSetup commands can be passed to the driver either at boot time or as a 697*4882a593Smuzhiyunstring variable using 'insmod'. 698*4882a593Smuzhiyun 699*4882a593SmuzhiyunA boot setup command for the ncr53c8xx (sym53c8xx) driver begins with the 700*4882a593Smuzhiyundriver name "ncr53c8xx="(sym53c8xx). The kernel syntax parser then expects 701*4882a593Smuzhiyunan optional list of integers separated with comma followed by an optional 702*4882a593Smuzhiyunlist of comma-separated strings. Example of boot setup command under lilo 703*4882a593Smuzhiyunprompt:: 704*4882a593Smuzhiyun 705*4882a593Smuzhiyun lilo: linux root=/dev/hda2 ncr53c8xx=tags:4,sync:10,debug:0x200 706*4882a593Smuzhiyun 707*4882a593Smuzhiyun- enable tagged commands, up to 4 tagged commands queued. 708*4882a593Smuzhiyun- set synchronous negotiation speed to 10 Mega-transfers / second. 709*4882a593Smuzhiyun- set DEBUG_NEGO flag. 710*4882a593Smuzhiyun 711*4882a593SmuzhiyunSince comma seems not to be allowed when defining a string variable using 712*4882a593Smuzhiyun'insmod', the driver also accepts <space> as option separator. 713*4882a593SmuzhiyunThe following command will install driver module with the same options as 714*4882a593Smuzhiyunabove:: 715*4882a593Smuzhiyun 716*4882a593Smuzhiyun insmod ncr53c8xx.o ncr53c8xx="tags:4 sync:10 debug:0x200" 717*4882a593Smuzhiyun 718*4882a593SmuzhiyunFor the moment, the integer list of arguments is discarded by the driver. 719*4882a593SmuzhiyunIt will be used in the future in order to allow a per controller setup. 720*4882a593Smuzhiyun 721*4882a593SmuzhiyunEach string argument must be specified as "keyword:value". Only lower-case 722*4882a593Smuzhiyuncharacters and digits are allowed. 723*4882a593Smuzhiyun 724*4882a593SmuzhiyunIn a system that contains multiple 53C8xx adapters insmod will install the 725*4882a593Smuzhiyunspecified driver on each adapter. To exclude a chip use the 'excl' keyword. 726*4882a593Smuzhiyun 727*4882a593SmuzhiyunThe sequence of commands:: 728*4882a593Smuzhiyun 729*4882a593Smuzhiyun insmod sym53c8xx sym53c8xx=excl:0x1400 730*4882a593Smuzhiyun insmod ncr53c8xx 731*4882a593Smuzhiyun 732*4882a593Smuzhiyuninstalls the sym53c8xx driver on all adapters except the one at IO port 733*4882a593Smuzhiyunaddress 0x1400 and then installs the ncr53c8xx driver to the adapter at IO 734*4882a593Smuzhiyunport address 0x1400. 735*4882a593Smuzhiyun 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun10.2 Available arguments 738*4882a593Smuzhiyun------------------------ 739*4882a593Smuzhiyun 740*4882a593Smuzhiyun10.2.1 Master parity checking 741*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 742*4882a593Smuzhiyun 743*4882a593Smuzhiyun ====== ======== 744*4882a593Smuzhiyun mpar:y enabled 745*4882a593Smuzhiyun mpar:n disabled 746*4882a593Smuzhiyun ====== ======== 747*4882a593Smuzhiyun 748*4882a593Smuzhiyun10.2.2 Scsi parity checking 749*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 750*4882a593Smuzhiyun 751*4882a593Smuzhiyun ====== ======== 752*4882a593Smuzhiyun spar:y enabled 753*4882a593Smuzhiyun spar:n disabled 754*4882a593Smuzhiyun ====== ======== 755*4882a593Smuzhiyun 756*4882a593Smuzhiyun10.2.3 Scsi disconnections 757*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^ 758*4882a593Smuzhiyun 759*4882a593Smuzhiyun ====== ======== 760*4882a593Smuzhiyun disc:y enabled 761*4882a593Smuzhiyun disc:n disabled 762*4882a593Smuzhiyun ====== ======== 763*4882a593Smuzhiyun 764*4882a593Smuzhiyun10.2.4 Special features 765*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^ 766*4882a593Smuzhiyun 767*4882a593Smuzhiyun Only apply to 810A, 825A, 860, 875 and 895 controllers. 768*4882a593Smuzhiyun Have no effect with other ones. 769*4882a593Smuzhiyun 770*4882a593Smuzhiyun ======= ================================================= 771*4882a593Smuzhiyun specf:y (or 1) enabled 772*4882a593Smuzhiyun specf:n (or 0) disabled 773*4882a593Smuzhiyun specf:3 enabled except Memory Write And Invalidate 774*4882a593Smuzhiyun ======= ================================================= 775*4882a593Smuzhiyun 776*4882a593Smuzhiyun The default driver setup is 'specf:3'. As a consequence, option 'specf:y' 777*4882a593Smuzhiyun must be specified in the boot setup command to enable Memory Write And 778*4882a593Smuzhiyun Invalidate. 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun10.2.5 Ultra SCSI support 781*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^ 782*4882a593Smuzhiyun 783*4882a593Smuzhiyun Only apply to 860, 875, 895, 895a, 896, 1010 and 1010_66 controllers. 784*4882a593Smuzhiyun Have no effect with other ones. 785*4882a593Smuzhiyun 786*4882a593Smuzhiyun ======= ======================== 787*4882a593Smuzhiyun ultra:n All ultra speeds enabled 788*4882a593Smuzhiyun ultra:2 Ultra2 enabled 789*4882a593Smuzhiyun ultra:1 Ultra enabled 790*4882a593Smuzhiyun ultra:0 Ultra speeds disabled 791*4882a593Smuzhiyun ======= ======================== 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun10.2.6 Default number of tagged commands 794*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 795*4882a593Smuzhiyun 796*4882a593Smuzhiyun ======================= =============================== 797*4882a593Smuzhiyun tags:0 (or tags:1 ) tagged command queuing disabled 798*4882a593Smuzhiyun tags:#tags (#tags > 1) tagged command queuing enabled 799*4882a593Smuzhiyun ======================= =============================== 800*4882a593Smuzhiyun 801*4882a593Smuzhiyun #tags will be truncated to the max queued commands configuration parameter. 802*4882a593Smuzhiyun This option also allows to specify a command queue depth for each device 803*4882a593Smuzhiyun that support tagged command queueing. 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun Example:: 806*4882a593Smuzhiyun 807*4882a593Smuzhiyun ncr53c8xx=tags:10/t2t3q16-t5q24/t1u2q32 808*4882a593Smuzhiyun 809*4882a593Smuzhiyun will set devices queue depth as follow: 810*4882a593Smuzhiyun 811*4882a593Smuzhiyun - controller #0 target #2 and target #3 -> 16 commands, 812*4882a593Smuzhiyun - controller #0 target #5 -> 24 commands, 813*4882a593Smuzhiyun - controller #1 target #1 logical unit #2 -> 32 commands, 814*4882a593Smuzhiyun - all other logical units (all targets, all controllers) -> 10 commands. 815*4882a593Smuzhiyun 816*4882a593Smuzhiyun10.2.7 Default synchronous period factor 817*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 818*4882a593Smuzhiyun 819*4882a593Smuzhiyun============ ======================================================== 820*4882a593Smuzhiyunsync:255 disabled (asynchronous transfer mode) 821*4882a593Smuzhiyunsync:#factor 822*4882a593Smuzhiyun ============ ======================================= 823*4882a593Smuzhiyun #factor = 10 Ultra-2 SCSI 40 Mega-transfers / second 824*4882a593Smuzhiyun #factor = 11 Ultra-2 SCSI 33 Mega-transfers / second 825*4882a593Smuzhiyun #factor < 25 Ultra SCSI 20 Mega-transfers / second 826*4882a593Smuzhiyun #factor < 50 Fast SCSI-2 827*4882a593Smuzhiyun ============ ======================================= 828*4882a593Smuzhiyun============ ======================================================== 829*4882a593Smuzhiyun 830*4882a593Smuzhiyun In all cases, the driver will use the minimum transfer period supported by 831*4882a593Smuzhiyun controllers according to NCR53C8XX chip type. 832*4882a593Smuzhiyun 833*4882a593Smuzhiyun10.2.8 Negotiate synchronous with all devices 834*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 835*4882a593Smuzhiyun (force sync nego) 836*4882a593Smuzhiyun 837*4882a593Smuzhiyun ===== ========= 838*4882a593Smuzhiyun fsn:y enabled 839*4882a593Smuzhiyun fsn:n disabled 840*4882a593Smuzhiyun ===== ========= 841*4882a593Smuzhiyun 842*4882a593Smuzhiyun10.2.9 Verbosity level 843*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^ 844*4882a593Smuzhiyun 845*4882a593Smuzhiyun ====== ========= 846*4882a593Smuzhiyun verb:0 minimal 847*4882a593Smuzhiyun verb:1 normal 848*4882a593Smuzhiyun verb:2 too much 849*4882a593Smuzhiyun ====== ========= 850*4882a593Smuzhiyun 851*4882a593Smuzhiyun10.2.10 Debug mode 852*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^ 853*4882a593Smuzhiyun 854*4882a593Smuzhiyun======== ================================================================== 855*4882a593Smuzhiyundebug:0 clear debug flags 856*4882a593Smuzhiyundebug:#x set debug flags 857*4882a593Smuzhiyun 858*4882a593Smuzhiyun #x is an integer value combining the following power-of-2 values: 859*4882a593Smuzhiyun 860*4882a593Smuzhiyun ============= ====== 861*4882a593Smuzhiyun DEBUG_ALLOC 0x1 862*4882a593Smuzhiyun DEBUG_PHASE 0x2 863*4882a593Smuzhiyun DEBUG_POLL 0x4 864*4882a593Smuzhiyun DEBUG_QUEUE 0x8 865*4882a593Smuzhiyun DEBUG_RESULT 0x10 866*4882a593Smuzhiyun DEBUG_SCATTER 0x20 867*4882a593Smuzhiyun DEBUG_SCRIPT 0x40 868*4882a593Smuzhiyun DEBUG_TINY 0x80 869*4882a593Smuzhiyun DEBUG_TIMING 0x100 870*4882a593Smuzhiyun DEBUG_NEGO 0x200 871*4882a593Smuzhiyun DEBUG_TAGS 0x400 872*4882a593Smuzhiyun DEBUG_FREEZE 0x800 873*4882a593Smuzhiyun DEBUG_RESTART 0x1000 874*4882a593Smuzhiyun ============= ====== 875*4882a593Smuzhiyun======== ================================================================== 876*4882a593Smuzhiyun 877*4882a593Smuzhiyun You can play safely with DEBUG_NEGO. However, some of these flags may 878*4882a593Smuzhiyun generate bunches of syslog messages. 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun10.2.11 Burst max 881*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^ 882*4882a593Smuzhiyun 883*4882a593Smuzhiyun========= ================================================================== 884*4882a593Smuzhiyunburst:0 burst disabled 885*4882a593Smuzhiyunburst:255 get burst length from initial IO register settings. 886*4882a593Smuzhiyunburst:#x burst enabled (1<<#x burst transfers max) 887*4882a593Smuzhiyun 888*4882a593Smuzhiyun #x is an integer value which is log base 2 of the burst transfers 889*4882a593Smuzhiyun max. 890*4882a593Smuzhiyun 891*4882a593Smuzhiyun The NCR53C875 and NCR53C825A support up to 128 burst transfers 892*4882a593Smuzhiyun (#x = 7). 893*4882a593Smuzhiyun 894*4882a593Smuzhiyun Other chips only support up to 16 (#x = 4). 895*4882a593Smuzhiyun 896*4882a593Smuzhiyun This is a maximum value. The driver set the burst length according 897*4882a593Smuzhiyun to chip and revision ids. By default the driver uses the maximum 898*4882a593Smuzhiyun value supported by the chip. 899*4882a593Smuzhiyun========= ================================================================== 900*4882a593Smuzhiyun 901*4882a593Smuzhiyun10.2.12 LED support 902*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^ 903*4882a593Smuzhiyun 904*4882a593Smuzhiyun ===== =================== 905*4882a593Smuzhiyun led:1 enable LED support 906*4882a593Smuzhiyun led:0 disable LED support 907*4882a593Smuzhiyun ===== =================== 908*4882a593Smuzhiyun 909*4882a593Smuzhiyun Donnot enable LED support if your scsi board does not use SDMS BIOS. 910*4882a593Smuzhiyun (See 'Configuration parameters') 911*4882a593Smuzhiyun 912*4882a593Smuzhiyun10.2.13 Max wide 913*4882a593Smuzhiyun^^^^^^^^^^^^^^^^ 914*4882a593Smuzhiyun 915*4882a593Smuzhiyun ====== =================== 916*4882a593Smuzhiyun wide:1 wide scsi enabled 917*4882a593Smuzhiyun wide:0 wide scsi disabled 918*4882a593Smuzhiyun ====== =================== 919*4882a593Smuzhiyun 920*4882a593Smuzhiyun Some scsi boards use a 875 (ultra wide) and only supply narrow connectors. 921*4882a593Smuzhiyun If you have connected a wide device with a 50 pins to 68 pins cable 922*4882a593Smuzhiyun converter, any accepted wide negotiation will break further data transfers. 923*4882a593Smuzhiyun In such a case, using "wide:0" in the bootup command will be helpful. 924*4882a593Smuzhiyun 925*4882a593Smuzhiyun10.2.14 Differential mode 926*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^ 927*4882a593Smuzhiyun 928*4882a593Smuzhiyun ====== ================================= 929*4882a593Smuzhiyun diff:0 never set up diff mode 930*4882a593Smuzhiyun diff:1 set up diff mode if BIOS set it 931*4882a593Smuzhiyun diff:2 always set up diff mode 932*4882a593Smuzhiyun diff:3 set diff mode if GPIO3 is not set 933*4882a593Smuzhiyun ====== ================================= 934*4882a593Smuzhiyun 935*4882a593Smuzhiyun10.2.15 IRQ mode 936*4882a593Smuzhiyun^^^^^^^^^^^^^^^^ 937*4882a593Smuzhiyun 938*4882a593Smuzhiyun ========= ======================================================== 939*4882a593Smuzhiyun irqm:0 always open drain 940*4882a593Smuzhiyun irqm:1 same as initial settings (assumed BIOS settings) 941*4882a593Smuzhiyun irqm:2 always totem pole 942*4882a593Smuzhiyun irqm:0x10 driver will not use IRQF_SHARED flag when requesting irq 943*4882a593Smuzhiyun ========= ======================================================== 944*4882a593Smuzhiyun 945*4882a593Smuzhiyun (Bits 0x10 and 0x20 can be combined with hardware irq mode option) 946*4882a593Smuzhiyun 947*4882a593Smuzhiyun10.2.16 Reverse probe 948*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^ 949*4882a593Smuzhiyun 950*4882a593Smuzhiyun ========= ======================================================== 951*4882a593Smuzhiyun revprob:n probe chip ids from the PCI configuration in this order: 952*4882a593Smuzhiyun 810, 815, 820, 860, 875, 885, 895, 896 953*4882a593Smuzhiyun revprob:y probe chip ids in the reverse order. 954*4882a593Smuzhiyun ========= ======================================================== 955*4882a593Smuzhiyun 956*4882a593Smuzhiyun10.2.17 Fix up PCI configuration space 957*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 958*4882a593Smuzhiyun pcifix:<option bits> 959*4882a593Smuzhiyun 960*4882a593Smuzhiyun Available option bits: 961*4882a593Smuzhiyun 962*4882a593Smuzhiyun === =============================================================== 963*4882a593Smuzhiyun 0x0 No attempt to fix PCI configuration space registers values. 964*4882a593Smuzhiyun 0x1 Set PCI cache-line size register if not set. 965*4882a593Smuzhiyun 0x2 Set write and invalidate bit in PCI command register. 966*4882a593Smuzhiyun 0x4 Increase if necessary PCI latency timer according to burst max. 967*4882a593Smuzhiyun === =============================================================== 968*4882a593Smuzhiyun 969*4882a593Smuzhiyun Use 'pcifix:7' in order to allow the driver to fix up all PCI features. 970*4882a593Smuzhiyun 971*4882a593Smuzhiyun10.2.18 Serial NVRAM 972*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^ 973*4882a593Smuzhiyun 974*4882a593Smuzhiyun ======= ========================================= 975*4882a593Smuzhiyun nvram:n do not look for serial NVRAM 976*4882a593Smuzhiyun nvram:y test controllers for onboard serial NVRAM 977*4882a593Smuzhiyun ======= ========================================= 978*4882a593Smuzhiyun 979*4882a593Smuzhiyun (alternate binary form) 980*4882a593Smuzhiyun mvram=<bits options> 981*4882a593Smuzhiyun 982*4882a593Smuzhiyun ==== ================================================================= 983*4882a593Smuzhiyun 0x01 look for NVRAM (equivalent to nvram=y) 984*4882a593Smuzhiyun 0x02 ignore NVRAM "Synchronous negotiation" parameters for all devices 985*4882a593Smuzhiyun 0x04 ignore NVRAM "Wide negotiation" parameter for all devices 986*4882a593Smuzhiyun 0x08 ignore NVRAM "Scan at boot time" parameter for all devices 987*4882a593Smuzhiyun 0x80 also attach controllers set to OFF in the NVRAM (sym53c8xx only) 988*4882a593Smuzhiyun ==== ================================================================= 989*4882a593Smuzhiyun 990*4882a593Smuzhiyun10.2.19 Check SCSI BUS 991*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^ 992*4882a593Smuzhiyun 993*4882a593Smuzhiyun buschk:<option bits> 994*4882a593Smuzhiyun 995*4882a593Smuzhiyun Available option bits: 996*4882a593Smuzhiyun 997*4882a593Smuzhiyun ==== ================================================ 998*4882a593Smuzhiyun 0x0: No check. 999*4882a593Smuzhiyun 0x1: Check and do not attach the controller on error. 1000*4882a593Smuzhiyun 0x2: Check and just warn on error. 1001*4882a593Smuzhiyun 0x4: Disable SCSI bus integrity checking. 1002*4882a593Smuzhiyun ==== ================================================ 1003*4882a593Smuzhiyun 1004*4882a593Smuzhiyun10.2.20 Exclude a host from being attached 1005*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1006*4882a593Smuzhiyun 1007*4882a593Smuzhiyun excl=<io_address> 1008*4882a593Smuzhiyun 1009*4882a593Smuzhiyun Prevent host at a given io address from being attached. 1010*4882a593Smuzhiyun For example 'ncr53c8xx=excl:0xb400,excl:0xc000' indicate to the 1011*4882a593Smuzhiyun ncr53c8xx driver not to attach hosts at address 0xb400 and 0xc000. 1012*4882a593Smuzhiyun 1013*4882a593Smuzhiyun10.2.21 Suggest a default SCSI id for hosts 1014*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1015*4882a593Smuzhiyun 1016*4882a593Smuzhiyun ========== ========================================== 1017*4882a593Smuzhiyun hostid:255 no id suggested. 1018*4882a593Smuzhiyun hostid:#x (0 < x < 7) x suggested for hosts SCSI id. 1019*4882a593Smuzhiyun ========== ========================================== 1020*4882a593Smuzhiyun 1021*4882a593Smuzhiyun If a host SCSI id is available from the NVRAM, the driver will ignore 1022*4882a593Smuzhiyun any value suggested as boot option. Otherwise, if a suggested value 1023*4882a593Smuzhiyun different from 255 has been supplied, it will use it. Otherwise, it will 1024*4882a593Smuzhiyun try to deduce the value previously set in the hardware and use value 1025*4882a593Smuzhiyun 7 if the hardware value is zero. 1026*4882a593Smuzhiyun 1027*4882a593Smuzhiyun10.2.22 Enable use of IMMEDIATE ARBITRATION 1028*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1029*4882a593Smuzhiyun 1030*4882a593Smuzhiyun (only supported by the sym53c8xx driver. See 10.7 for more details) 1031*4882a593Smuzhiyun 1032*4882a593Smuzhiyun======= ================================================================= 1033*4882a593Smuzhiyuniarb:0 do not use this feature. 1034*4882a593Smuzhiyuniarb:#x use this feature according to bit fields as follow: 1035*4882a593Smuzhiyun 1036*4882a593Smuzhiyun ========= ======================================================= 1037*4882a593Smuzhiyun bit 0 (1) enable IARB each time the initiator has been reselected 1038*4882a593Smuzhiyun when it arbitrated for the SCSI BUS. 1039*4882a593Smuzhiyun (#x >> 4) maximum number of successive settings of IARB if the 1040*4882a593Smuzhiyun initiator win arbitration and it has other commands 1041*4882a593Smuzhiyun to send to a device. 1042*4882a593Smuzhiyun ========= ======================================================= 1043*4882a593Smuzhiyun======= ================================================================= 1044*4882a593Smuzhiyun 1045*4882a593SmuzhiyunBoot fail safe 1046*4882a593Smuzhiyun safe:y load the following assumed fail safe initial setup 1047*4882a593Smuzhiyun 1048*4882a593Smuzhiyun ======================== ====================== ========== 1049*4882a593Smuzhiyun master parity disabled mpar:n 1050*4882a593Smuzhiyun scsi parity enabled spar:y 1051*4882a593Smuzhiyun disconnections not allowed disc:n 1052*4882a593Smuzhiyun special features disabled specf:n 1053*4882a593Smuzhiyun ultra scsi disabled ultra:n 1054*4882a593Smuzhiyun force sync negotiation disabled fsn:n 1055*4882a593Smuzhiyun reverse probe disabled revprob:n 1056*4882a593Smuzhiyun PCI fix up disabled pcifix:0 1057*4882a593Smuzhiyun serial NVRAM enabled nvram:y 1058*4882a593Smuzhiyun verbosity level 2 verb:2 1059*4882a593Smuzhiyun tagged command queuing disabled tags:0 1060*4882a593Smuzhiyun synchronous negotiation disabled sync:255 1061*4882a593Smuzhiyun debug flags none debug:0 1062*4882a593Smuzhiyun burst length from BIOS settings burst:255 1063*4882a593Smuzhiyun LED support disabled led:0 1064*4882a593Smuzhiyun wide support disabled wide:0 1065*4882a593Smuzhiyun settle time 10 seconds settle:10 1066*4882a593Smuzhiyun differential support from BIOS settings diff:1 1067*4882a593Smuzhiyun irq mode from BIOS settings irqm:1 1068*4882a593Smuzhiyun SCSI BUS check do not attach on error buschk:1 1069*4882a593Smuzhiyun immediate arbitration disabled iarb:0 1070*4882a593Smuzhiyun ======================== ====================== ========== 1071*4882a593Smuzhiyun 1072*4882a593Smuzhiyun10.3 Advised boot setup commands 1073*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1074*4882a593Smuzhiyun 1075*4882a593SmuzhiyunIf the driver has been configured with default options, the equivalent 1076*4882a593Smuzhiyunboot setup is:: 1077*4882a593Smuzhiyun 1078*4882a593Smuzhiyun ncr53c8xx=mpar:y,spar:y,disc:y,specf:3,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\ 1079*4882a593Smuzhiyun tags:0,sync:50,debug:0,burst:7,led:0,wide:1,settle:2,diff:0,irqm:0 1080*4882a593Smuzhiyun 1081*4882a593SmuzhiyunFor an installation diskette or a safe but not fast system, 1082*4882a593Smuzhiyunboot setup can be:: 1083*4882a593Smuzhiyun 1084*4882a593Smuzhiyun ncr53c8xx=safe:y,mpar:y,disc:y 1085*4882a593Smuzhiyun ncr53c8xx=safe:y,disc:y 1086*4882a593Smuzhiyun ncr53c8xx=safe:y,mpar:y 1087*4882a593Smuzhiyun ncr53c8xx=safe:y 1088*4882a593Smuzhiyun 1089*4882a593SmuzhiyunMy personal system works flawlessly with the following equivalent setup:: 1090*4882a593Smuzhiyun 1091*4882a593Smuzhiyun ncr53c8xx=mpar:y,spar:y,disc:y,specf:1,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\ 1092*4882a593Smuzhiyun tags:32,sync:12,debug:0,burst:7,led:1,wide:1,settle:2,diff:0,irqm:0 1093*4882a593Smuzhiyun 1094*4882a593SmuzhiyunThe driver prints its actual setup when verbosity level is 2. You can try 1095*4882a593Smuzhiyun"ncr53c8xx=verb:2" to get the "static" setup of the driver, or add "verb:2" 1096*4882a593Smuzhiyunto your boot setup command in order to check the actual setup the driver is 1097*4882a593Smuzhiyunusing. 1098*4882a593Smuzhiyun 1099*4882a593Smuzhiyun10.4 PCI configuration fix-up boot option 1100*4882a593Smuzhiyun----------------------------------------- 1101*4882a593Smuzhiyun 1102*4882a593Smuzhiyunpcifix:<option bits> 1103*4882a593Smuzhiyun 1104*4882a593SmuzhiyunAvailable option bits: 1105*4882a593Smuzhiyun 1106*4882a593Smuzhiyun === ===================================================== 1107*4882a593Smuzhiyun 0x1 Set PCI cache-line size register if not set. 1108*4882a593Smuzhiyun 0x2 Set write and invalidate bit in PCI command register. 1109*4882a593Smuzhiyun === ===================================================== 1110*4882a593Smuzhiyun 1111*4882a593SmuzhiyunUse 'pcifix:3' in order to allow the driver to fix both PCI features. 1112*4882a593Smuzhiyun 1113*4882a593SmuzhiyunThese options only apply to new SYMBIOS chips 810A, 825A, 860, 875 1114*4882a593Smuzhiyunand 895 and are only supported for Pentium and 486 class processors. 1115*4882a593SmuzhiyunRecent SYMBIOS 53C8XX scsi processors are able to use PCI read multiple 1116*4882a593Smuzhiyunand PCI write and invalidate commands. These features require the 1117*4882a593Smuzhiyuncache line size register to be properly set in the PCI configuration 1118*4882a593Smuzhiyunspace of the chips. On the other hand, chips will use PCI write and 1119*4882a593Smuzhiyuninvalidate commands only if the corresponding bit is set to 1 in the 1120*4882a593SmuzhiyunPCI command register. 1121*4882a593Smuzhiyun 1122*4882a593SmuzhiyunNot all PCI bioses set the PCI cache line register and the PCI write and 1123*4882a593Smuzhiyuninvalidate bit in the PCI configuration space of 53C8XX chips. 1124*4882a593SmuzhiyunOptimized PCI accesses may be broken for some PCI/memory controllers or 1125*4882a593Smuzhiyunmake problems with some PCI boards. 1126*4882a593Smuzhiyun 1127*4882a593SmuzhiyunThis fix-up worked flawlessly on my previous system. 1128*4882a593Smuzhiyun(MB Triton HX / 53C875 / 53C810A) 1129*4882a593SmuzhiyunI use these options at my own risks as you will do if you decide to 1130*4882a593Smuzhiyunuse them too. 1131*4882a593Smuzhiyun 1132*4882a593Smuzhiyun 1133*4882a593Smuzhiyun10.5 Serial NVRAM support boot option 1134*4882a593Smuzhiyun------------------------------------- 1135*4882a593Smuzhiyun 1136*4882a593Smuzhiyun======= ========================================= 1137*4882a593Smuzhiyunnvram:n do not look for serial NVRAM 1138*4882a593Smuzhiyunnvram:y test controllers for onboard serial NVRAM 1139*4882a593Smuzhiyun======= ========================================= 1140*4882a593Smuzhiyun 1141*4882a593SmuzhiyunThis option can also been entered as an hexadecimal value that allows 1142*4882a593Smuzhiyunto control what information the driver will get from the NVRAM and what 1143*4882a593Smuzhiyuninformation it will ignore. 1144*4882a593SmuzhiyunFor details see '17. Serial NVRAM support'. 1145*4882a593Smuzhiyun 1146*4882a593SmuzhiyunWhen this option is enabled, the driver tries to detect all boards using 1147*4882a593Smuzhiyuna Serial NVRAM. This memory is used to hold user set up parameters. 1148*4882a593Smuzhiyun 1149*4882a593SmuzhiyunThe parameters the driver is able to get from the NVRAM depend on the 1150*4882a593Smuzhiyundata format used, as follow: 1151*4882a593Smuzhiyun 1152*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1153*4882a593Smuzhiyun| |Tekram format |Symbios format| 1154*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1155*4882a593Smuzhiyun|General and host parameters | | | 1156*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1157*4882a593Smuzhiyun| * Boot order | N | Y | 1158*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1159*4882a593Smuzhiyun| * Host SCSI ID | Y | Y | 1160*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1161*4882a593Smuzhiyun| * SCSI parity checking | Y | Y | 1162*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1163*4882a593Smuzhiyun| * Verbose boot messages | N | Y | 1164*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1165*4882a593Smuzhiyun|SCSI devices parameters | 1166*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1167*4882a593Smuzhiyun| * Synchronous transfer speed | Y | Y | 1168*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1169*4882a593Smuzhiyun| * Wide 16 / Narrow | Y | Y | 1170*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1171*4882a593Smuzhiyun| * Tagged Command Queuing | Y | Y | 1172*4882a593Smuzhiyun| enabled | | | 1173*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1174*4882a593Smuzhiyun| * Disconnections enabled | Y | Y | 1175*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1176*4882a593Smuzhiyun| * Scan at boot time | N | Y | 1177*4882a593Smuzhiyun+-------------------------------+------------------+--------------+ 1178*4882a593Smuzhiyun 1179*4882a593SmuzhiyunIn order to speed up the system boot, for each device configured without 1180*4882a593Smuzhiyunthe "scan at boot time" option, the driver forces an error on the 1181*4882a593Smuzhiyunfirst TEST UNIT READY command received for this device. 1182*4882a593Smuzhiyun 1183*4882a593SmuzhiyunSome SDMS BIOS revisions seem to be unable to boot cleanly with very fast 1184*4882a593Smuzhiyunhard disks. In such a situation you cannot configure the NVRAM with 1185*4882a593Smuzhiyunoptimized parameters value. 1186*4882a593Smuzhiyun 1187*4882a593SmuzhiyunThe 'nvram' boot option can be entered in hexadecimal form in order 1188*4882a593Smuzhiyunto ignore some options configured in the NVRAM, as follow: 1189*4882a593Smuzhiyun 1190*4882a593Smuzhiyunmvram=<bits options> 1191*4882a593Smuzhiyun 1192*4882a593Smuzhiyun ==== ================================================================= 1193*4882a593Smuzhiyun 0x01 look for NVRAM (equivalent to nvram=y) 1194*4882a593Smuzhiyun 0x02 ignore NVRAM "Synchronous negotiation" parameters for all devices 1195*4882a593Smuzhiyun 0x04 ignore NVRAM "Wide negotiation" parameter for all devices 1196*4882a593Smuzhiyun 0x08 ignore NVRAM "Scan at boot time" parameter for all devices 1197*4882a593Smuzhiyun 0x80 also attach controllers set to OFF in the NVRAM (sym53c8xx only) 1198*4882a593Smuzhiyun ==== ================================================================= 1199*4882a593Smuzhiyun 1200*4882a593SmuzhiyunOption 0x80 is only supported by the sym53c8xx driver and is disabled by 1201*4882a593Smuzhiyundefault. Result is that, by default (option not set), the sym53c8xx driver 1202*4882a593Smuzhiyunwill not attach controllers set to OFF in the NVRAM. 1203*4882a593Smuzhiyun 1204*4882a593SmuzhiyunThe ncr53c8xx always tries to attach all the controllers. Option 0x80 has 1205*4882a593Smuzhiyunnot been added to the ncr53c8xx driver, since it has been reported to 1206*4882a593Smuzhiyunconfuse users who use this driver since a long time. If you desire a 1207*4882a593Smuzhiyuncontroller not to be attached by the ncr53c8xx driver at Linux boot, you 1208*4882a593Smuzhiyunmust use the 'excl' driver boot option. 1209*4882a593Smuzhiyun 1210*4882a593Smuzhiyun10.6 SCSI BUS checking boot option. 1211*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1212*4882a593Smuzhiyun 1213*4882a593SmuzhiyunWhen this option is set to a non-zero value, the driver checks SCSI lines 1214*4882a593Smuzhiyunlogic state, 100 micro-seconds after having asserted the SCSI RESET line. 1215*4882a593SmuzhiyunThe driver just reads SCSI lines and checks all lines read FALSE except RESET. 1216*4882a593SmuzhiyunSince SCSI devices shall release the BUS at most 800 nano-seconds after SCSI 1217*4882a593SmuzhiyunRESET has been asserted, any signal to TRUE may indicate a SCSI BUS problem. 1218*4882a593SmuzhiyunUnfortunately, the following common SCSI BUS problems are not detected: 1219*4882a593Smuzhiyun 1220*4882a593Smuzhiyun- Only 1 terminator installed. 1221*4882a593Smuzhiyun- Misplaced terminators. 1222*4882a593Smuzhiyun- Bad quality terminators. 1223*4882a593Smuzhiyun 1224*4882a593SmuzhiyunOn the other hand, either bad cabling, broken devices, not conformant 1225*4882a593Smuzhiyundevices, ... may cause a SCSI signal to be wrong when te driver reads it. 1226*4882a593Smuzhiyun 1227*4882a593Smuzhiyun10.7 IMMEDIATE ARBITRATION boot option 1228*4882a593Smuzhiyun^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1229*4882a593Smuzhiyun 1230*4882a593SmuzhiyunThis option is only supported by the SYM53C8XX driver (not by the NCR53C8XX). 1231*4882a593Smuzhiyun 1232*4882a593SmuzhiyunSYMBIOS 53C8XX chips are able to arbitrate for the SCSI BUS as soon as they 1233*4882a593Smuzhiyunhave detected an expected disconnection (BUS FREE PHASE). For this process 1234*4882a593Smuzhiyunto be started, bit 1 of SCNTL1 IO register must be set when the chip is 1235*4882a593Smuzhiyunconnected to the SCSI BUS. 1236*4882a593Smuzhiyun 1237*4882a593SmuzhiyunWhen this feature has been enabled for the current connection, the chip has 1238*4882a593Smuzhiyunevery chance to win arbitration if only devices with lower priority are 1239*4882a593Smuzhiyuncompeting for the SCSI BUS. By the way, when the chip is using SCSI id 7, 1240*4882a593Smuzhiyunthen it will for sure win the next SCSI BUS arbitration. 1241*4882a593Smuzhiyun 1242*4882a593SmuzhiyunSince, there is no way to know what devices are trying to arbitrate for the 1243*4882a593SmuzhiyunBUS, using this feature can be extremely unfair. So, you are not advised 1244*4882a593Smuzhiyunto enable it, or at most enable this feature for the case the chip lost 1245*4882a593Smuzhiyunthe previous arbitration (boot option 'iarb:1'). 1246*4882a593Smuzhiyun 1247*4882a593SmuzhiyunThis feature has the following advantages: 1248*4882a593Smuzhiyun 1249*4882a593Smuzhiyuna) Allow the initiator with ID 7 to win arbitration when it wants so. 1250*4882a593Smuzhiyunb) Overlap at least 4 micro-seconds of arbitration time with the execution 1251*4882a593Smuzhiyun of SCRIPTS that deal with the end of the current connection and that 1252*4882a593Smuzhiyun starts the next job. 1253*4882a593Smuzhiyun 1254*4882a593SmuzhiyunHmmm... But (a) may just prevent other devices from reselecting the initiator, 1255*4882a593Smuzhiyunand delay data transfers or status/completions, and (b) may just waste 1256*4882a593SmuzhiyunSCSI BUS bandwidth if the SCRIPTS execution lasts more than 4 micro-seconds. 1257*4882a593Smuzhiyun 1258*4882a593SmuzhiyunThe use of IARB needs the SCSI_NCR_IARB_SUPPORT option to have been defined 1259*4882a593Smuzhiyunat compile time and the 'iarb' boot option to have been set to a non zero 1260*4882a593Smuzhiyunvalue at boot time. It is not that useful for real work, but can be used 1261*4882a593Smuzhiyunto stress SCSI devices or for some applications that can gain advantage of 1262*4882a593Smuzhiyunit. By the way, if you experience badnesses like 'unexpected disconnections', 1263*4882a593Smuzhiyun'bad reselections', etc... when using IARB on heavy IO load, you should not 1264*4882a593Smuzhiyunbe surprised, because force-feeding anything and blocking its arse at the 1265*4882a593Smuzhiyunsame time cannot work for a long time. :-)) 1266*4882a593Smuzhiyun 1267*4882a593Smuzhiyun 1268*4882a593Smuzhiyun11. Some constants and flags of the ncr53c8xx.h header file 1269*4882a593Smuzhiyun=========================================================== 1270*4882a593Smuzhiyun 1271*4882a593SmuzhiyunSome of these are defined from the configuration parameters. To 1272*4882a593Smuzhiyunchange other "defines", you must edit the header file. Do that only 1273*4882a593Smuzhiyunif you know what you are doing. 1274*4882a593Smuzhiyun 1275*4882a593SmuzhiyunSCSI_NCR_SETUP_SPECIAL_FEATURES (default: defined) 1276*4882a593Smuzhiyun If defined, the driver will enable some special features according 1277*4882a593Smuzhiyun to chip and revision id. 1278*4882a593Smuzhiyun 1279*4882a593Smuzhiyun For 810A, 860, 825A, 875 and 895 scsi chips, this option enables 1280*4882a593Smuzhiyun support of features that reduce load of PCI bus and memory accesses 1281*4882a593Smuzhiyun during scsi transfer processing: burst op-code fetch, read multiple, 1282*4882a593Smuzhiyun read line, prefetch, cache line, write and invalidate, 1283*4882a593Smuzhiyun burst 128 (875 only), large dma fifo (875 only), offset 16 (875 only). 1284*4882a593Smuzhiyun Can be changed by the following boot setup command:: 1285*4882a593Smuzhiyun 1286*4882a593Smuzhiyun ncr53c8xx=specf:n 1287*4882a593Smuzhiyun 1288*4882a593SmuzhiyunSCSI_NCR_IOMAPPED (default: not defined) 1289*4882a593Smuzhiyun If defined, normal I/O is forced. 1290*4882a593Smuzhiyun 1291*4882a593SmuzhiyunSCSI_NCR_SHARE_IRQ (default: defined) 1292*4882a593Smuzhiyun If defined, request shared IRQ. 1293*4882a593Smuzhiyun 1294*4882a593SmuzhiyunSCSI_NCR_MAX_TAGS (default: 8) 1295*4882a593Smuzhiyun Maximum number of simultaneous tagged commands to a device. 1296*4882a593Smuzhiyun 1297*4882a593Smuzhiyun Can be changed by "settags <target> <maxtags>" 1298*4882a593Smuzhiyun 1299*4882a593SmuzhiyunSCSI_NCR_SETUP_DEFAULT_SYNC (default: 50) 1300*4882a593Smuzhiyun Transfer period factor the driver will use at boot time for synchronous 1301*4882a593Smuzhiyun negotiation. 0 means asynchronous. 1302*4882a593Smuzhiyun 1303*4882a593Smuzhiyun Can be changed by "setsync <target> <period factor>" 1304*4882a593Smuzhiyun 1305*4882a593SmuzhiyunSCSI_NCR_SETUP_DEFAULT_TAGS (default: 8) 1306*4882a593Smuzhiyun Default number of simultaneous tagged commands to a device. 1307*4882a593Smuzhiyun 1308*4882a593Smuzhiyun < 1 means tagged command queuing disabled at start-up. 1309*4882a593Smuzhiyun 1310*4882a593SmuzhiyunSCSI_NCR_ALWAYS_SIMPLE_TAG (default: defined) 1311*4882a593Smuzhiyun Use SIMPLE TAG for read and write commands. 1312*4882a593Smuzhiyun 1313*4882a593Smuzhiyun Can be changed by "setorder <ordered|simple|default>" 1314*4882a593Smuzhiyun 1315*4882a593SmuzhiyunSCSI_NCR_SETUP_DISCONNECTION (default: defined) 1316*4882a593Smuzhiyun If defined, targets are allowed to disconnect. 1317*4882a593Smuzhiyun 1318*4882a593SmuzhiyunSCSI_NCR_SETUP_FORCE_SYNC_NEGO (default: not defined) 1319*4882a593Smuzhiyun If defined, synchronous negotiation is tried for all SCSI-2 devices. 1320*4882a593Smuzhiyun 1321*4882a593Smuzhiyun Can be changed by "setsync <target> <period>" 1322*4882a593Smuzhiyun 1323*4882a593SmuzhiyunSCSI_NCR_SETUP_MASTER_PARITY (default: defined) 1324*4882a593Smuzhiyun If defined, master parity checking is enabled. 1325*4882a593Smuzhiyun 1326*4882a593SmuzhiyunSCSI_NCR_SETUP_SCSI_PARITY (default: defined) 1327*4882a593Smuzhiyun If defined, SCSI parity checking is enabled. 1328*4882a593Smuzhiyun 1329*4882a593SmuzhiyunSCSI_NCR_PROFILE_SUPPORT (default: not defined) 1330*4882a593Smuzhiyun If defined, profiling information is gathered. 1331*4882a593Smuzhiyun 1332*4882a593SmuzhiyunSCSI_NCR_MAX_SCATTER (default: 128) 1333*4882a593Smuzhiyun Scatter list size of the driver ccb. 1334*4882a593Smuzhiyun 1335*4882a593SmuzhiyunSCSI_NCR_MAX_TARGET (default: 16) 1336*4882a593Smuzhiyun Max number of targets per host. 1337*4882a593Smuzhiyun 1338*4882a593SmuzhiyunSCSI_NCR_MAX_HOST (default: 2) 1339*4882a593Smuzhiyun Max number of host controllers. 1340*4882a593Smuzhiyun 1341*4882a593SmuzhiyunSCSI_NCR_SETTLE_TIME (default: 2) 1342*4882a593Smuzhiyun Number of seconds the driver will wait after reset. 1343*4882a593Smuzhiyun 1344*4882a593SmuzhiyunSCSI_NCR_TIMEOUT_ALERT (default: 3) 1345*4882a593Smuzhiyun If a pending command will time out after this amount of seconds, 1346*4882a593Smuzhiyun an ordered tag is used for the next command. 1347*4882a593Smuzhiyun 1348*4882a593Smuzhiyun Avoids timeouts for unordered tagged commands. 1349*4882a593Smuzhiyun 1350*4882a593SmuzhiyunSCSI_NCR_CAN_QUEUE (default: 7*SCSI_NCR_MAX_TAGS) 1351*4882a593Smuzhiyun Max number of commands that can be queued to a host. 1352*4882a593Smuzhiyun 1353*4882a593SmuzhiyunSCSI_NCR_CMD_PER_LUN (default: SCSI_NCR_MAX_TAGS) 1354*4882a593Smuzhiyun Max number of commands queued to a host for a device. 1355*4882a593Smuzhiyun 1356*4882a593SmuzhiyunSCSI_NCR_SG_TABLESIZE (default: SCSI_NCR_MAX_SCATTER-1) 1357*4882a593Smuzhiyun Max size of the Linux scatter/gather list. 1358*4882a593Smuzhiyun 1359*4882a593SmuzhiyunSCSI_NCR_MAX_LUN (default: 8) 1360*4882a593Smuzhiyun Max number of LUNs per target. 1361*4882a593Smuzhiyun 1362*4882a593Smuzhiyun 1363*4882a593Smuzhiyun12. Installation 1364*4882a593Smuzhiyun================ 1365*4882a593Smuzhiyun 1366*4882a593SmuzhiyunThis driver is part of the linux kernel distribution. 1367*4882a593SmuzhiyunDriver files are located in the sub-directory "drivers/scsi" of the 1368*4882a593Smuzhiyunkernel source tree. 1369*4882a593Smuzhiyun 1370*4882a593SmuzhiyunDriver files:: 1371*4882a593Smuzhiyun 1372*4882a593Smuzhiyun README.ncr53c8xx : this file 1373*4882a593Smuzhiyun ChangeLog.ncr53c8xx : change log 1374*4882a593Smuzhiyun ncr53c8xx.h : definitions 1375*4882a593Smuzhiyun ncr53c8xx.c : the driver code 1376*4882a593Smuzhiyun 1377*4882a593SmuzhiyunNew driver versions are made available separately in order to allow testing 1378*4882a593Smuzhiyunchanges and new features prior to including them into the linux kernel 1379*4882a593Smuzhiyundistribution. The following URL provides information on latest available 1380*4882a593Smuzhiyunpatches: 1381*4882a593Smuzhiyun 1382*4882a593Smuzhiyun ftp://ftp.tux.org/pub/people/gerard-roudier/README 1383*4882a593Smuzhiyun 1384*4882a593Smuzhiyun 1385*4882a593Smuzhiyun13. Architecture dependent features 1386*4882a593Smuzhiyun=================================== 1387*4882a593Smuzhiyun 1388*4882a593Smuzhiyun<Not yet written> 1389*4882a593Smuzhiyun 1390*4882a593Smuzhiyun 1391*4882a593Smuzhiyun14. Known problems 1392*4882a593Smuzhiyun================== 1393*4882a593Smuzhiyun 1394*4882a593Smuzhiyun14.1 Tagged commands with Iomega Jaz device 1395*4882a593Smuzhiyun------------------------------------------- 1396*4882a593Smuzhiyun 1397*4882a593SmuzhiyunI have not tried this device, however it has been reported to me the 1398*4882a593Smuzhiyunfollowing: This device is capable of Tagged command queuing. However 1399*4882a593Smuzhiyunwhile spinning up, it rejects Tagged commands. This behaviour is 1400*4882a593Smuzhiyunconforms to 6.8.2 of SCSI-2 specifications. The current behaviour of 1401*4882a593Smuzhiyunthe driver in that situation is not satisfying. So do not enable 1402*4882a593SmuzhiyunTagged command queuing for devices that are able to spin down. The 1403*4882a593Smuzhiyunother problem that may appear is timeouts. The only way to avoid 1404*4882a593Smuzhiyuntimeouts seems to edit linux/drivers/scsi/sd.c and to increase the 1405*4882a593Smuzhiyuncurrent timeout values. 1406*4882a593Smuzhiyun 1407*4882a593Smuzhiyun14.2 Device names change when another controller is added 1408*4882a593Smuzhiyun--------------------------------------------------------- 1409*4882a593Smuzhiyun 1410*4882a593SmuzhiyunWhen you add a new NCR53C8XX chip based controller to a system that already 1411*4882a593Smuzhiyunhas one or more controllers of this family, it may happen that the order 1412*4882a593Smuzhiyunthe driver registers them to the kernel causes problems due to device 1413*4882a593Smuzhiyunname changes. 1414*4882a593SmuzhiyunWhen at least one controller uses NvRAM, SDMS BIOS version 4 allows you to 1415*4882a593Smuzhiyundefine the order the BIOS will scan the scsi boards. The driver attaches 1416*4882a593Smuzhiyuncontrollers according to BIOS information if NvRAM detect option is set. 1417*4882a593Smuzhiyun 1418*4882a593SmuzhiyunIf your controllers do not have NvRAM, you can: 1419*4882a593Smuzhiyun 1420*4882a593Smuzhiyun- Ask the driver to probe chip ids in reverse order from the boot command 1421*4882a593Smuzhiyun line: ncr53c8xx=revprob:y 1422*4882a593Smuzhiyun- Make appropriate changes in the fstab. 1423*4882a593Smuzhiyun- Use the 'scsidev' tool from Eric Youngdale. 1424*4882a593Smuzhiyun 1425*4882a593Smuzhiyun14.3 Using only 8 bit devices with a WIDE SCSI controller 1426*4882a593Smuzhiyun--------------------------------------------------------- 1427*4882a593Smuzhiyun 1428*4882a593SmuzhiyunWhen only 8 bit NARROW devices are connected to a 16 bit WIDE SCSI controller, 1429*4882a593Smuzhiyunyou must ensure that lines of the wide part of the SCSI BUS are pulled-up. 1430*4882a593SmuzhiyunThis can be achieved by ENABLING the WIDE TERMINATOR portion of the SCSI 1431*4882a593Smuzhiyuncontroller card. 1432*4882a593Smuzhiyun 1433*4882a593SmuzhiyunThe TYAN 1365 documentation revision 1.2 is not correct about such settings. 1434*4882a593Smuzhiyun(page 10, figure 3.3). 1435*4882a593Smuzhiyun 1436*4882a593Smuzhiyun14.4 Possible data corruption during a Memory Write and Invalidate 1437*4882a593Smuzhiyun------------------------------------------------------------------ 1438*4882a593Smuzhiyun 1439*4882a593SmuzhiyunThis problem is described in SYMBIOS DEL 397, Part Number 69-039241, ITEM 4. 1440*4882a593Smuzhiyun 1441*4882a593SmuzhiyunIn some complex situations, 53C875 chips revision <= 3 may start a PCI 1442*4882a593SmuzhiyunWrite and Invalidate Command at a not cache-line-aligned 4 DWORDS boundary. 1443*4882a593SmuzhiyunThis is only possible when Cache Line Size is 8 DWORDS or greater. 1444*4882a593SmuzhiyunPentium systems use a 8 DWORDS cache line size and so are concerned by 1445*4882a593Smuzhiyunthis chip bug, unlike i486 systems that use a 4 DWORDS cache line size. 1446*4882a593Smuzhiyun 1447*4882a593SmuzhiyunWhen this situation occurs, the chip may complete the Write and Invalidate 1448*4882a593Smuzhiyuncommand after having only filled part of the last cache line involved in 1449*4882a593Smuzhiyunthe transfer, leaving to data corruption the remainder of this cache line. 1450*4882a593Smuzhiyun 1451*4882a593SmuzhiyunNot using Write And Invalidate obviously gets rid of this chip bug, and so 1452*4882a593Smuzhiyunit is now the default setting of the driver. 1453*4882a593SmuzhiyunHowever, for people like me who want to enable this feature, I have added 1454*4882a593Smuzhiyunpart of a work-around suggested by SYMBIOS. This work-around resets the 1455*4882a593Smuzhiyunaddressing logic when the DATA IN phase is entered and so prevents the bug 1456*4882a593Smuzhiyunfrom being triggered for the first SCSI MOVE of the phase. This work-around 1457*4882a593Smuzhiyunshould be enough according to the following: 1458*4882a593Smuzhiyun 1459*4882a593SmuzhiyunThe only driver internal data structure that is greater than 8 DWORDS and 1460*4882a593Smuzhiyunthat is moved by the SCRIPTS processor is the 'CCB header' that contains 1461*4882a593Smuzhiyunthe context of the SCSI transfer. This data structure is aligned on 8 DWORDS 1462*4882a593Smuzhiyunboundary (Pentium Cache Line Size), and so is immune to this chip bug, at 1463*4882a593Smuzhiyunleast on Pentium systems. 1464*4882a593Smuzhiyun 1465*4882a593SmuzhiyunBut the conditions of this bug can be met when a SCSI read command is 1466*4882a593Smuzhiyunperformed using a buffer that is 4 DWORDS but not cache-line aligned. 1467*4882a593SmuzhiyunThis cannot happen under Linux when scatter/gather lists are used since 1468*4882a593Smuzhiyunthey only refer to system buffers that are well aligned. So, a work around 1469*4882a593Smuzhiyunmay only be needed under Linux when a scatter/gather list is not used and 1470*4882a593Smuzhiyunwhen the SCSI DATA IN phase is reentered after a phase mismatch. 1471*4882a593Smuzhiyun 1472*4882a593Smuzhiyun15. SCSI problem troubleshooting 1473*4882a593Smuzhiyun================================ 1474*4882a593Smuzhiyun 1475*4882a593Smuzhiyun15.1 Problem tracking 1476*4882a593Smuzhiyun--------------------- 1477*4882a593Smuzhiyun 1478*4882a593SmuzhiyunMost SCSI problems are due to a non conformant SCSI bus or to buggy 1479*4882a593Smuzhiyundevices. If unfortunately you have SCSI problems, you can check the 1480*4882a593Smuzhiyunfollowing things: 1481*4882a593Smuzhiyun 1482*4882a593Smuzhiyun- SCSI bus cables 1483*4882a593Smuzhiyun- terminations at both end of the SCSI chain 1484*4882a593Smuzhiyun- linux syslog messages (some of them may help you) 1485*4882a593Smuzhiyun 1486*4882a593SmuzhiyunIf you do not find the source of problems, you can configure the 1487*4882a593Smuzhiyundriver with no features enabled. 1488*4882a593Smuzhiyun 1489*4882a593Smuzhiyun- only asynchronous data transfers 1490*4882a593Smuzhiyun- tagged commands disabled 1491*4882a593Smuzhiyun- disconnections not allowed 1492*4882a593Smuzhiyun 1493*4882a593SmuzhiyunNow, if your SCSI bus is ok, your system have every chance to work 1494*4882a593Smuzhiyunwith this safe configuration but performances will not be optimal. 1495*4882a593Smuzhiyun 1496*4882a593SmuzhiyunIf it still fails, then you can send your problem description to 1497*4882a593Smuzhiyunappropriate mailing lists or news-groups. Send me a copy in order to 1498*4882a593Smuzhiyunbe sure I will receive it. Obviously, a bug in the driver code is 1499*4882a593Smuzhiyunpossible. 1500*4882a593Smuzhiyun 1501*4882a593Smuzhiyun My email address: Gerard Roudier <groudier@free.fr> 1502*4882a593Smuzhiyun 1503*4882a593SmuzhiyunAllowing disconnections is important if you use several devices on 1504*4882a593Smuzhiyunyour SCSI bus but often causes problems with buggy devices. 1505*4882a593SmuzhiyunSynchronous data transfers increases throughput of fast devices like 1506*4882a593Smuzhiyunhard disks. Good SCSI hard disks with a large cache gain advantage of 1507*4882a593Smuzhiyuntagged commands queuing. 1508*4882a593Smuzhiyun 1509*4882a593SmuzhiyunTry to enable one feature at a time with control commands. For example: 1510*4882a593Smuzhiyun 1511*4882a593Smuzhiyun:: 1512*4882a593Smuzhiyun 1513*4882a593Smuzhiyun echo "setsync all 25" >/proc/scsi/ncr53c8xx/0 1514*4882a593Smuzhiyun 1515*4882a593SmuzhiyunWill enable fast synchronous data transfer negotiation for all targets. 1516*4882a593Smuzhiyun 1517*4882a593Smuzhiyun:: 1518*4882a593Smuzhiyun 1519*4882a593Smuzhiyun echo "setflag 3" >/proc/scsi/ncr53c8xx/0 1520*4882a593Smuzhiyun 1521*4882a593SmuzhiyunWill reset flags (no_disc) for target 3, and so will allow it to disconnect 1522*4882a593Smuzhiyunthe SCSI Bus. 1523*4882a593Smuzhiyun 1524*4882a593Smuzhiyun:: 1525*4882a593Smuzhiyun 1526*4882a593Smuzhiyun echo "settags 3 8" >/proc/scsi/ncr53c8xx/0 1527*4882a593Smuzhiyun 1528*4882a593SmuzhiyunWill enable tagged command queuing for target 3 if that device supports it. 1529*4882a593Smuzhiyun 1530*4882a593SmuzhiyunOnce you have found the device and the feature that cause problems, just 1531*4882a593Smuzhiyundisable that feature for that device. 1532*4882a593Smuzhiyun 1533*4882a593Smuzhiyun15.2 Understanding hardware error reports 1534*4882a593Smuzhiyun----------------------------------------- 1535*4882a593Smuzhiyun 1536*4882a593SmuzhiyunWhen the driver detects an unexpected error condition, it may display a 1537*4882a593Smuzhiyunmessage of the following pattern:: 1538*4882a593Smuzhiyun 1539*4882a593Smuzhiyun sym53c876-0:1: ERROR (0:48) (1-21-65) (f/95) @ (script 7c0:19000000). 1540*4882a593Smuzhiyun sym53c876-0: script cmd = 19000000 1541*4882a593Smuzhiyun sym53c876-0: regdump: da 10 80 95 47 0f 01 07 75 01 81 21 80 01 09 00. 1542*4882a593Smuzhiyun 1543*4882a593SmuzhiyunSome fields in such a message may help you understand the cause of the 1544*4882a593Smuzhiyunproblem, as follows:: 1545*4882a593Smuzhiyun 1546*4882a593Smuzhiyun sym53c876-0:1: ERROR (0:48) (1-21-65) (f/95) @ (script 7c0:19000000). 1547*4882a593Smuzhiyun ............A.........B.C....D.E..F....G.H.......I.....J...K....... 1548*4882a593Smuzhiyun 1549*4882a593SmuzhiyunField A : target number. 1550*4882a593Smuzhiyun SCSI ID of the device the controller was talking with at the moment the 1551*4882a593Smuzhiyun error occurs. 1552*4882a593Smuzhiyun 1553*4882a593SmuzhiyunField B : DSTAT io register (DMA STATUS) 1554*4882a593Smuzhiyun ======== ============================================================= 1555*4882a593Smuzhiyun Bit 0x40 MDPE Master Data Parity Error 1556*4882a593Smuzhiyun Data parity error detected on the PCI BUS. 1557*4882a593Smuzhiyun Bit 0x20 BF Bus Fault 1558*4882a593Smuzhiyun PCI bus fault condition detected 1559*4882a593Smuzhiyun Bit 0x01 IID Illegal Instruction Detected 1560*4882a593Smuzhiyun Set by the chip when it detects an Illegal Instruction format 1561*4882a593Smuzhiyun on some condition that makes an instruction illegal. 1562*4882a593Smuzhiyun Bit 0x80 DFE Dma Fifo Empty 1563*4882a593Smuzhiyun Pure status bit that does not indicate an error. 1564*4882a593Smuzhiyun ======== ============================================================= 1565*4882a593Smuzhiyun 1566*4882a593Smuzhiyun If the reported DSTAT value contains a combination of MDPE (0x40), 1567*4882a593Smuzhiyun BF (0x20), then the cause may be likely due to a PCI BUS problem. 1568*4882a593Smuzhiyun 1569*4882a593SmuzhiyunField C : SIST io register (SCSI Interrupt Status) 1570*4882a593Smuzhiyun ======== ================================================================== 1571*4882a593Smuzhiyun Bit 0x08 SGE SCSI GROSS ERROR 1572*4882a593Smuzhiyun Indicates that the chip detected a severe error condition 1573*4882a593Smuzhiyun on the SCSI BUS that prevents the SCSI protocol from functioning 1574*4882a593Smuzhiyun properly. 1575*4882a593Smuzhiyun Bit 0x04 UDC Unexpected Disconnection 1576*4882a593Smuzhiyun Indicates that the device released the SCSI BUS when the chip 1577*4882a593Smuzhiyun was not expecting this to happen. A device may behave so to 1578*4882a593Smuzhiyun indicate the SCSI initiator that an error condition not reportable 1579*4882a593Smuzhiyun using the SCSI protocol has occurred. 1580*4882a593Smuzhiyun Bit 0x02 RST SCSI BUS Reset 1581*4882a593Smuzhiyun Generally SCSI targets do not reset the SCSI BUS, although any 1582*4882a593Smuzhiyun device on the BUS can reset it at any time. 1583*4882a593Smuzhiyun Bit 0x01 PAR Parity 1584*4882a593Smuzhiyun SCSI parity error detected. 1585*4882a593Smuzhiyun ======== ================================================================== 1586*4882a593Smuzhiyun 1587*4882a593Smuzhiyun On a faulty SCSI BUS, any error condition among SGE (0x08), UDC (0x04) and 1588*4882a593Smuzhiyun PAR (0x01) may be detected by the chip. If your SCSI system sometimes 1589*4882a593Smuzhiyun encounters such error conditions, especially SCSI GROSS ERROR, then a SCSI 1590*4882a593Smuzhiyun BUS problem is likely the cause of these errors. 1591*4882a593Smuzhiyun 1592*4882a593SmuzhiyunFor fields D,E,F,G and H, you may look into the sym53c8xx_defs.h file 1593*4882a593Smuzhiyunthat contains some minimal comments on IO register bits. 1594*4882a593Smuzhiyun 1595*4882a593SmuzhiyunField D : SOCL Scsi Output Control Latch 1596*4882a593Smuzhiyun This register reflects the state of the SCSI control lines the 1597*4882a593Smuzhiyun chip want to drive or compare against. 1598*4882a593Smuzhiyun 1599*4882a593SmuzhiyunField E : SBCL Scsi Bus Control Lines 1600*4882a593Smuzhiyun Actual value of control lines on the SCSI BUS. 1601*4882a593Smuzhiyun 1602*4882a593SmuzhiyunField F : SBDL Scsi Bus Data Lines 1603*4882a593Smuzhiyun Actual value of data lines on the SCSI BUS. 1604*4882a593Smuzhiyun 1605*4882a593SmuzhiyunField G : SXFER SCSI Transfer 1606*4882a593Smuzhiyun Contains the setting of the Synchronous Period for output and 1607*4882a593Smuzhiyun the current Synchronous offset (offset 0 means asynchronous). 1608*4882a593Smuzhiyun 1609*4882a593SmuzhiyunField H : SCNTL3 Scsi Control Register 3 1610*4882a593Smuzhiyun Contains the setting of timing values for both asynchronous and 1611*4882a593Smuzhiyun synchronous data transfers. 1612*4882a593Smuzhiyun 1613*4882a593SmuzhiyunUnderstanding Fields I, J, K and dumps requires to have good knowledge of 1614*4882a593SmuzhiyunSCSI standards, chip cores functionnals and internal driver data structures. 1615*4882a593SmuzhiyunYou are not required to decode and understand them, unless you want to help 1616*4882a593Smuzhiyunmaintain the driver code. 1617*4882a593Smuzhiyun 1618*4882a593Smuzhiyun16. Synchronous transfer negotiation tables 1619*4882a593Smuzhiyun=========================================== 1620*4882a593Smuzhiyun 1621*4882a593SmuzhiyunTables below have been created by calling the routine the driver uses 1622*4882a593Smuzhiyunfor synchronisation negotiation timing calculation and chip setting. 1623*4882a593SmuzhiyunThe first table corresponds to Ultra chips 53875 and 53C860 with 80 MHz 1624*4882a593Smuzhiyunclock and 5 clock divisors. 1625*4882a593SmuzhiyunThe second one has been calculated by setting the scsi clock to 40 Mhz 1626*4882a593Smuzhiyunand using 4 clock divisors and so applies to all NCR53C8XX chips in fast 1627*4882a593SmuzhiyunSCSI-2 mode. 1628*4882a593Smuzhiyun 1629*4882a593SmuzhiyunPeriods are in nano-seconds and speeds are in Mega-transfers per second. 1630*4882a593Smuzhiyun1 Mega-transfers/second means 1 MB/s with 8 bits SCSI and 2 MB/s with 1631*4882a593SmuzhiyunWide16 SCSI. 1632*4882a593Smuzhiyun 1633*4882a593Smuzhiyun16.1 Synchronous timings for 53C895, 53C875 and 53C860 SCSI controllers 1634*4882a593Smuzhiyun 1635*4882a593Smuzhiyun+-----------------------------+--------+-------+--------------+ 1636*4882a593Smuzhiyun|Negotiated |NCR settings | | 1637*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ | 1638*4882a593Smuzhiyun|Factor |Period |Speed |Period |Speed | | 1639*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1640*4882a593Smuzhiyun|10 | 25 |40.000 | 25 |40.000 | (53C895 only)| 1641*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1642*4882a593Smuzhiyun|11 | 30.2 |33.112 | 31.25 |32.000 | (53C895 only)| 1643*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1644*4882a593Smuzhiyun|12 | 50 |20.000 | 50 |20.000 | | 1645*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1646*4882a593Smuzhiyun|13 | 52 |19.230 | 62 |16.000 | | 1647*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1648*4882a593Smuzhiyun|14 | 56 |17.857 | 62 |16.000 | | 1649*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1650*4882a593Smuzhiyun|15 | 60 |16.666 | 62 |16.000 | | 1651*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1652*4882a593Smuzhiyun|16 | 64 |15.625 | 75 |13.333 | | 1653*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1654*4882a593Smuzhiyun|17 | 68 |14.705 | 75 |13.333 | | 1655*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1656*4882a593Smuzhiyun|18 | 72 |13.888 | 75 |13.333 | | 1657*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1658*4882a593Smuzhiyun|19 | 76 |13.157 | 87 |11.428 | | 1659*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1660*4882a593Smuzhiyun|20 | 80 |12.500 | 87 |11.428 | | 1661*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1662*4882a593Smuzhiyun|21 | 84 |11.904 | 87 |11.428 | | 1663*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1664*4882a593Smuzhiyun|22 | 88 |11.363 | 93 |10.666 | | 1665*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1666*4882a593Smuzhiyun|23 | 92 |10.869 | 93 |10.666 | | 1667*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1668*4882a593Smuzhiyun|24 | 96 |10.416 |100 |10.000 | | 1669*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1670*4882a593Smuzhiyun|25 |100 |10.000 |100 |10.000 | | 1671*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1672*4882a593Smuzhiyun|26 |104 | 9.615 |112 | 8.888 | | 1673*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1674*4882a593Smuzhiyun|27 |108 | 9.259 |112 | 8.888 | | 1675*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1676*4882a593Smuzhiyun|28 |112 | 8.928 |112 | 8.888 | | 1677*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1678*4882a593Smuzhiyun|29 |116 | 8.620 |125 | 8.000 | | 1679*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1680*4882a593Smuzhiyun|30 |120 | 8.333 |125 | 8.000 | | 1681*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1682*4882a593Smuzhiyun|31 |124 | 8.064 |125 | 8.000 | | 1683*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1684*4882a593Smuzhiyun|32 |128 | 7.812 |131 | 7.619 | | 1685*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1686*4882a593Smuzhiyun|33 |132 | 7.575 |150 | 6.666 | | 1687*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1688*4882a593Smuzhiyun|34 |136 | 7.352 |150 | 6.666 | | 1689*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1690*4882a593Smuzhiyun|35 |140 | 7.142 |150 | 6.666 | | 1691*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1692*4882a593Smuzhiyun|36 |144 | 6.944 |150 | 6.666 | | 1693*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1694*4882a593Smuzhiyun|37 |148 | 6.756 |150 | 6.666 | | 1695*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1696*4882a593Smuzhiyun|38 |152 | 6.578 |175 | 5.714 | | 1697*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1698*4882a593Smuzhiyun|39 |156 | 6.410 |175 | 5.714 | | 1699*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1700*4882a593Smuzhiyun|40 |160 | 6.250 |175 | 5.714 | | 1701*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1702*4882a593Smuzhiyun|41 |164 | 6.097 |175 | 5.714 | | 1703*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1704*4882a593Smuzhiyun|42 |168 | 5.952 |175 | 5.714 | | 1705*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1706*4882a593Smuzhiyun|43 |172 | 5.813 |175 | 5.714 | | 1707*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1708*4882a593Smuzhiyun|44 |176 | 5.681 |187 | 5.333 | | 1709*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1710*4882a593Smuzhiyun|45 |180 | 5.555 |187 | 5.333 | | 1711*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1712*4882a593Smuzhiyun|46 |184 | 5.434 |187 | 5.333 | | 1713*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1714*4882a593Smuzhiyun|47 |188 | 5.319 |200 | 5.000 | | 1715*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1716*4882a593Smuzhiyun|48 |192 | 5.208 |200 | 5.000 | | 1717*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1718*4882a593Smuzhiyun|49 |196 | 5.102 |200 | 5.000 | | 1719*4882a593Smuzhiyun+-------+--------+------------+--------+-------+--------------+ 1720*4882a593Smuzhiyun 1721*4882a593Smuzhiyun16.2 Synchronous timings for fast SCSI-2 53C8XX controllers 1722*4882a593Smuzhiyun 1723*4882a593Smuzhiyun+-----------------------------+----------------+ 1724*4882a593Smuzhiyun|Negotiated |NCR settings | 1725*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1726*4882a593Smuzhiyun|Factor |Period |Speed |Period |Speed | 1727*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1728*4882a593Smuzhiyun|25 |100 |10.000 |100 |10.000 | 1729*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1730*4882a593Smuzhiyun|26 |104 |9.615 |125 | 8.000 | 1731*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1732*4882a593Smuzhiyun|27 |108 |9.259 |125 | 8.000 | 1733*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1734*4882a593Smuzhiyun|28 |112 |8.928 |125 | 8.000 | 1735*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1736*4882a593Smuzhiyun|29 |116 |8.620 |125 | 8.000 | 1737*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1738*4882a593Smuzhiyun|30 |120 |8.333 |125 | 8.000 | 1739*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1740*4882a593Smuzhiyun|31 |124 |8.064 |125 | 8.000 | 1741*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1742*4882a593Smuzhiyun|32 |128 |7.812 |131 | 7.619 | 1743*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1744*4882a593Smuzhiyun|33 |132 |7.575 |150 | 6.666 | 1745*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1746*4882a593Smuzhiyun|34 |136 |7.352 |150 | 6.666 | 1747*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1748*4882a593Smuzhiyun|35 |140 |7.142 |150 | 6.666 | 1749*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1750*4882a593Smuzhiyun|36 |144 |6.944 |150 | 6.666 | 1751*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1752*4882a593Smuzhiyun|37 |148 |6.756 |150 | 6.666 | 1753*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1754*4882a593Smuzhiyun|38 |152 |6.578 |175 | 5.714 | 1755*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1756*4882a593Smuzhiyun|39 |156 |6.410 |175 | 5.714 | 1757*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1758*4882a593Smuzhiyun|40 |160 |6.250 |175 | 5.714 | 1759*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1760*4882a593Smuzhiyun|41 |164 |6.097 |175 | 5.714 | 1761*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1762*4882a593Smuzhiyun|42 |168 |5.952 |175 | 5.714 | 1763*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1764*4882a593Smuzhiyun|43 |172 |5.813 |175 | 5.714 | 1765*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1766*4882a593Smuzhiyun|44 |176 |5.681 |187 | 5.333 | 1767*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1768*4882a593Smuzhiyun|45 |180 |5.555 |187 | 5.333 | 1769*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1770*4882a593Smuzhiyun|46 |184 |5.434 |187 | 5.333 | 1771*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1772*4882a593Smuzhiyun|47 |188 |5.319 |200 | 5.000 | 1773*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1774*4882a593Smuzhiyun|48 |192 |5.208 |200 | 5.000 | 1775*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1776*4882a593Smuzhiyun|49 |196 |5.102 |200 | 5.000 | 1777*4882a593Smuzhiyun+-------+--------+------------+--------+-------+ 1778*4882a593Smuzhiyun 1779*4882a593Smuzhiyun 1780*4882a593Smuzhiyun17. Serial NVRAM 1781*4882a593Smuzhiyun================ 1782*4882a593Smuzhiyun 1783*4882a593Smuzhiyun(added by Richard Waltham: dormouse@farsrobt.demon.co.uk) 1784*4882a593Smuzhiyun 1785*4882a593Smuzhiyun17.1 Features 1786*4882a593Smuzhiyun------------- 1787*4882a593Smuzhiyun 1788*4882a593SmuzhiyunEnabling serial NVRAM support enables detection of the serial NVRAM included 1789*4882a593Smuzhiyunon Symbios and some Symbios compatible host adaptors, and Tekram boards. The 1790*4882a593Smuzhiyunserial NVRAM is used by Symbios and Tekram to hold set up parameters for the 1791*4882a593Smuzhiyunhost adaptor and its attached drives. 1792*4882a593Smuzhiyun 1793*4882a593SmuzhiyunThe Symbios NVRAM also holds data on the boot order of host adaptors in a 1794*4882a593Smuzhiyunsystem with more than one host adaptor. This enables the order of scanning 1795*4882a593Smuzhiyunthe cards for drives to be changed from the default used during host adaptor 1796*4882a593Smuzhiyundetection. 1797*4882a593Smuzhiyun 1798*4882a593SmuzhiyunThis can be done to a limited extent at the moment using "reverse probe" but 1799*4882a593Smuzhiyunthis only changes the order of detection of different types of cards. The 1800*4882a593SmuzhiyunNVRAM boot order settings can do this as well as change the order the same 1801*4882a593Smuzhiyuntypes of cards are scanned in, something "reverse probe" cannot do. 1802*4882a593Smuzhiyun 1803*4882a593SmuzhiyunTekram boards using Symbios chips, DC390W/F/U, which have NVRAM are detected 1804*4882a593Smuzhiyunand this is used to distinguish between Symbios compatible and Tekram host 1805*4882a593Smuzhiyunadaptors. This is used to disable the Symbios compatible "diff" setting 1806*4882a593Smuzhiyunincorrectly set on Tekram boards if the CONFIG_SCSI_53C8XX_SYMBIOS_COMPAT 1807*4882a593Smuzhiyunconfiguration parameter is set enabling both Symbios and Tekram boards to be 1808*4882a593Smuzhiyunused together with the Symbios cards using all their features, including 1809*4882a593Smuzhiyun"diff" support. ("led pin" support for Symbios compatible cards can remain 1810*4882a593Smuzhiyunenabled when using Tekram cards. It does nothing useful for Tekram host 1811*4882a593Smuzhiyunadaptors but does not cause problems either.) 1812*4882a593Smuzhiyun 1813*4882a593Smuzhiyun 1814*4882a593Smuzhiyun17.2 Symbios NVRAM layout 1815*4882a593Smuzhiyun------------------------- 1816*4882a593Smuzhiyun 1817*4882a593Smuzhiyuntypical data at NVRAM address 0x100 (53c810a NVRAM):: 1818*4882a593Smuzhiyun 1819*4882a593Smuzhiyun 00 00 1820*4882a593Smuzhiyun 64 01 1821*4882a593Smuzhiyun 8e 0b 1822*4882a593Smuzhiyun 1823*4882a593Smuzhiyun 00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00 1824*4882a593Smuzhiyun 1825*4882a593Smuzhiyun 04 00 0f 00 00 10 00 50 00 00 01 00 00 62 1826*4882a593Smuzhiyun 04 00 03 00 00 10 00 58 00 00 01 00 00 63 1827*4882a593Smuzhiyun 04 00 01 00 00 10 00 48 00 00 01 00 00 61 1828*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1829*4882a593Smuzhiyun 1830*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1831*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1832*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1833*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1834*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1835*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1836*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1837*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1838*4882a593Smuzhiyun 1839*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1840*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1841*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1842*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1843*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1844*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1845*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1846*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1847*4882a593Smuzhiyun 1848*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1849*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1850*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1851*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1852*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1853*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1854*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1855*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1856*4882a593Smuzhiyun 1857*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1858*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1859*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1860*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1861*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1862*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1863*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1864*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1865*4882a593Smuzhiyun 1866*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1867*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1868*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 1869*4882a593Smuzhiyun 1870*4882a593Smuzhiyun fe fe 1871*4882a593Smuzhiyun 00 00 1872*4882a593Smuzhiyun 00 00 1873*4882a593Smuzhiyun 1874*4882a593SmuzhiyunNVRAM layout details 1875*4882a593Smuzhiyun 1876*4882a593Smuzhiyun============= ================ 1877*4882a593SmuzhiyunNVRAM Address 1878*4882a593Smuzhiyun============= ================ 1879*4882a593Smuzhiyun0x000-0x0ff not used 1880*4882a593Smuzhiyun0x100-0x26f initialised data 1881*4882a593Smuzhiyun0x270-0x7ff not used 1882*4882a593Smuzhiyun============= ================ 1883*4882a593Smuzhiyun 1884*4882a593Smuzhiyungeneral layout:: 1885*4882a593Smuzhiyun 1886*4882a593Smuzhiyun header - 6 bytes, 1887*4882a593Smuzhiyun data - 356 bytes (checksum is byte sum of this data) 1888*4882a593Smuzhiyun trailer - 6 bytes 1889*4882a593Smuzhiyun --- 1890*4882a593Smuzhiyun total 368 bytes 1891*4882a593Smuzhiyun 1892*4882a593Smuzhiyundata area layout:: 1893*4882a593Smuzhiyun 1894*4882a593Smuzhiyun controller set up - 20 bytes 1895*4882a593Smuzhiyun boot configuration - 56 bytes (4x14 bytes) 1896*4882a593Smuzhiyun device set up - 128 bytes (16x8 bytes) 1897*4882a593Smuzhiyun unused (spare?) - 152 bytes (19x8 bytes) 1898*4882a593Smuzhiyun --- 1899*4882a593Smuzhiyun total 356 bytes 1900*4882a593Smuzhiyun 1901*4882a593Smuzhiyunheader:: 1902*4882a593Smuzhiyun 1903*4882a593Smuzhiyun 00 00 - ?? start marker 1904*4882a593Smuzhiyun 64 01 - byte count (lsb/msb excludes header/trailer) 1905*4882a593Smuzhiyun 8e 0b - checksum (lsb/msb excludes header/trailer) 1906*4882a593Smuzhiyun 1907*4882a593Smuzhiyuncontroller set up:: 1908*4882a593Smuzhiyun 1909*4882a593Smuzhiyun 00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00 1910*4882a593Smuzhiyun | | | | 1911*4882a593Smuzhiyun | | | -- host ID 1912*4882a593Smuzhiyun | | | 1913*4882a593Smuzhiyun | | --Removable Media Support 1914*4882a593Smuzhiyun | | 0x00 = none 1915*4882a593Smuzhiyun | | 0x01 = Bootable Device 1916*4882a593Smuzhiyun | | 0x02 = All with Media 1917*4882a593Smuzhiyun | | 1918*4882a593Smuzhiyun | --flag bits 2 1919*4882a593Smuzhiyun | 0x00000001= scan order hi->low 1920*4882a593Smuzhiyun | (default 0x00 - scan low->hi) 1921*4882a593Smuzhiyun --flag bits 1 1922*4882a593Smuzhiyun 0x00000001 scam enable 1923*4882a593Smuzhiyun 0x00000010 parity enable 1924*4882a593Smuzhiyun 0x00000100 verbose boot msgs 1925*4882a593Smuzhiyun 1926*4882a593Smuzhiyunremaining bytes unknown - they do not appear to change in my 1927*4882a593Smuzhiyuncurrent set up for any of the controllers. 1928*4882a593Smuzhiyun 1929*4882a593Smuzhiyundefault set up is identical for 53c810a and 53c875 NVRAM 1930*4882a593Smuzhiyun(Removable Media added Symbios BIOS version 4.09) 1931*4882a593Smuzhiyun 1932*4882a593Smuzhiyunboot configuration 1933*4882a593Smuzhiyun 1934*4882a593Smuzhiyunboot order set by order of the devices in this table:: 1935*4882a593Smuzhiyun 1936*4882a593Smuzhiyun 04 00 0f 00 00 10 00 50 00 00 01 00 00 62 -- 1st controller 1937*4882a593Smuzhiyun 04 00 03 00 00 10 00 58 00 00 01 00 00 63 2nd controller 1938*4882a593Smuzhiyun 04 00 01 00 00 10 00 48 00 00 01 00 00 61 3rd controller 1939*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4th controller 1940*4882a593Smuzhiyun | | | | | | | | 1941*4882a593Smuzhiyun | | | | | | ---- PCI io port adr 1942*4882a593Smuzhiyun | | | | | --0x01 init/scan at boot time 1943*4882a593Smuzhiyun | | | | --PCI device/function number (0xdddddfff) 1944*4882a593Smuzhiyun | | ----- ?? PCI vendor ID (lsb/msb) 1945*4882a593Smuzhiyun ----PCI device ID (lsb/msb) 1946*4882a593Smuzhiyun 1947*4882a593Smuzhiyun ?? use of this data is a guess but seems reasonable 1948*4882a593Smuzhiyun 1949*4882a593Smuzhiyunremaining bytes unknown - they do not appear to change in my 1950*4882a593Smuzhiyuncurrent set up 1951*4882a593Smuzhiyun 1952*4882a593Smuzhiyundefault set up is identical for 53c810a and 53c875 NVRAM 1953*4882a593Smuzhiyun-------------------------------------------------------- 1954*4882a593Smuzhiyun 1955*4882a593Smuzhiyundevice set up (up to 16 devices - includes controller):: 1956*4882a593Smuzhiyun 1957*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 - id 0 1958*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1959*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1960*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1961*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1962*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1963*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1964*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1965*4882a593Smuzhiyun 1966*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1967*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1968*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1969*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1970*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1971*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1972*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 1973*4882a593Smuzhiyun 0f 00 08 08 64 00 0a 00 - id 15 1974*4882a593Smuzhiyun | | | | | | 1975*4882a593Smuzhiyun | | | | ----timeout (lsb/msb) 1976*4882a593Smuzhiyun | | | --synch period (0x?? 40 Mtrans/sec- fast 40) (probably 0x28) 1977*4882a593Smuzhiyun | | | (0x30 20 Mtrans/sec- fast 20) 1978*4882a593Smuzhiyun | | | (0x64 10 Mtrans/sec- fast ) 1979*4882a593Smuzhiyun | | | (0xc8 5 Mtrans/sec) 1980*4882a593Smuzhiyun | | | (0x00 asynchronous) 1981*4882a593Smuzhiyun | | -- ?? max sync offset (0x08 in NVRAM on 53c810a) 1982*4882a593Smuzhiyun | | (0x10 in NVRAM on 53c875) 1983*4882a593Smuzhiyun | --device bus width (0x08 narrow) 1984*4882a593Smuzhiyun | (0x10 16 bit wide) 1985*4882a593Smuzhiyun --flag bits 1986*4882a593Smuzhiyun 0x00000001 - disconnect enabled 1987*4882a593Smuzhiyun 0x00000010 - scan at boot time 1988*4882a593Smuzhiyun 0x00000100 - scan luns 1989*4882a593Smuzhiyun 0x00001000 - queue tags enabled 1990*4882a593Smuzhiyun 1991*4882a593Smuzhiyunremaining bytes unknown - they do not appear to change in my 1992*4882a593Smuzhiyuncurrent set up 1993*4882a593Smuzhiyun 1994*4882a593Smuzhiyun?? use of this data is a guess but seems reasonable 1995*4882a593Smuzhiyun(but it could be max bus width) 1996*4882a593Smuzhiyun 1997*4882a593Smuzhiyundefault set up for 53c810a NVRAM 1998*4882a593Smuzhiyundefault set up for 53c875 NVRAM 1999*4882a593Smuzhiyun 2000*4882a593Smuzhiyun - bus width - 0x10 2001*4882a593Smuzhiyun - sync offset ? - 0x10 2002*4882a593Smuzhiyun - sync period - 0x30 2003*4882a593Smuzhiyun 2004*4882a593Smuzhiyun?? spare device space (32 bit bus ??) 2005*4882a593Smuzhiyun 2006*4882a593Smuzhiyun:: 2007*4882a593Smuzhiyun 2008*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 (19x8bytes) 2009*4882a593Smuzhiyun . 2010*4882a593Smuzhiyun . 2011*4882a593Smuzhiyun 00 00 00 00 00 00 00 00 2012*4882a593Smuzhiyun 2013*4882a593Smuzhiyundefault set up is identical for 53c810a and 53c875 NVRAM 2014*4882a593Smuzhiyun-------------------------------------------------------- 2015*4882a593Smuzhiyun 2016*4882a593Smuzhiyuntrailer:: 2017*4882a593Smuzhiyun 2018*4882a593Smuzhiyun fe fe - ? end marker ? 2019*4882a593Smuzhiyun 00 00 2020*4882a593Smuzhiyun 00 00 2021*4882a593Smuzhiyun 2022*4882a593Smuzhiyundefault set up is identical for 53c810a and 53c875 NVRAM 2023*4882a593Smuzhiyun----------------------------------------------------------- 2024*4882a593Smuzhiyun 2025*4882a593Smuzhiyun 2026*4882a593Smuzhiyun 2027*4882a593Smuzhiyun17.3 Tekram NVRAM layout 2028*4882a593Smuzhiyun------------------------ 2029*4882a593Smuzhiyun 2030*4882a593Smuzhiyunnvram 64x16 (1024 bit) 2031*4882a593Smuzhiyun 2032*4882a593SmuzhiyunDrive settings:: 2033*4882a593Smuzhiyun 2034*4882a593Smuzhiyun Drive ID 0-15 (addr 0x0yyyy0 = device setup, yyyy = ID) 2035*4882a593Smuzhiyun (addr 0x0yyyy1 = 0x0000) 2036*4882a593Smuzhiyun 2037*4882a593Smuzhiyun x x x x x x x x x x x x x x x x 2038*4882a593Smuzhiyun | | | | | | | | | 2039*4882a593Smuzhiyun | | | | | | | | ----- parity check 0 - off 2040*4882a593Smuzhiyun | | | | | | | | 1 - on 2041*4882a593Smuzhiyun | | | | | | | | 2042*4882a593Smuzhiyun | | | | | | | ------- sync neg 0 - off 2043*4882a593Smuzhiyun | | | | | | | 1 - on 2044*4882a593Smuzhiyun | | | | | | | 2045*4882a593Smuzhiyun | | | | | | --------- disconnect 0 - off 2046*4882a593Smuzhiyun | | | | | | 1 - on 2047*4882a593Smuzhiyun | | | | | | 2048*4882a593Smuzhiyun | | | | | ----------- start cmd 0 - off 2049*4882a593Smuzhiyun | | | | | 1 - on 2050*4882a593Smuzhiyun | | | | | 2051*4882a593Smuzhiyun | | | | -------------- tagged cmds 0 - off 2052*4882a593Smuzhiyun | | | | 1 - on 2053*4882a593Smuzhiyun | | | | 2054*4882a593Smuzhiyun | | | ---------------- wide neg 0 - off 2055*4882a593Smuzhiyun | | | 1 - on 2056*4882a593Smuzhiyun | | | 2057*4882a593Smuzhiyun --------------------------- sync rate 0 - 10.0 Mtrans/sec 2058*4882a593Smuzhiyun 1 - 8.0 2059*4882a593Smuzhiyun 2 - 6.6 2060*4882a593Smuzhiyun 3 - 5.7 2061*4882a593Smuzhiyun 4 - 5.0 2062*4882a593Smuzhiyun 5 - 4.0 2063*4882a593Smuzhiyun 6 - 3.0 2064*4882a593Smuzhiyun 7 - 2.0 2065*4882a593Smuzhiyun 7 - 2.0 2066*4882a593Smuzhiyun 8 - 20.0 2067*4882a593Smuzhiyun 9 - 16.7 2068*4882a593Smuzhiyun a - 13.9 2069*4882a593Smuzhiyun b - 11.9 2070*4882a593Smuzhiyun 2071*4882a593SmuzhiyunGlobal settings 2072*4882a593Smuzhiyun 2073*4882a593SmuzhiyunHost flags 0 (addr 0x100000, 32):: 2074*4882a593Smuzhiyun 2075*4882a593Smuzhiyun x x x x x x x x x x x x x x x x 2076*4882a593Smuzhiyun | | | | | | | | | | | | 2077*4882a593Smuzhiyun | | | | | | | | ----------- host ID 0x00 - 0x0f 2078*4882a593Smuzhiyun | | | | | | | | 2079*4882a593Smuzhiyun | | | | | | | ----------------------- support for 0 - off 2080*4882a593Smuzhiyun | | | | | | | > 2 drives 1 - on 2081*4882a593Smuzhiyun | | | | | | | 2082*4882a593Smuzhiyun | | | | | | ------------------------- support drives 0 - off 2083*4882a593Smuzhiyun | | | | | | > 1Gbytes 1 - on 2084*4882a593Smuzhiyun | | | | | | 2085*4882a593Smuzhiyun | | | | | --------------------------- bus reset on 0 - off 2086*4882a593Smuzhiyun | | | | | power on 1 - on 2087*4882a593Smuzhiyun | | | | | 2088*4882a593Smuzhiyun | | | | ----------------------------- active neg 0 - off 2089*4882a593Smuzhiyun | | | | 1 - on 2090*4882a593Smuzhiyun | | | | 2091*4882a593Smuzhiyun | | | -------------------------------- imm seek 0 - off 2092*4882a593Smuzhiyun | | | 1 - on 2093*4882a593Smuzhiyun | | | 2094*4882a593Smuzhiyun | | ---------------------------------- scan luns 0 - off 2095*4882a593Smuzhiyun | | 1 - on 2096*4882a593Smuzhiyun | | 2097*4882a593Smuzhiyun -------------------------------------- removable 0 - disable 2098*4882a593Smuzhiyun as BIOS dev 1 - boot device 2099*4882a593Smuzhiyun 2 - all 2100*4882a593Smuzhiyun 2101*4882a593SmuzhiyunHost flags 1 (addr 0x100001, 33):: 2102*4882a593Smuzhiyun 2103*4882a593Smuzhiyun x x x x x x x x x x x x x x x x 2104*4882a593Smuzhiyun | | | | | | 2105*4882a593Smuzhiyun | | | --------- boot delay 0 - 3 sec 2106*4882a593Smuzhiyun | | | 1 - 5 2107*4882a593Smuzhiyun | | | 2 - 10 2108*4882a593Smuzhiyun | | | 3 - 20 2109*4882a593Smuzhiyun | | | 4 - 30 2110*4882a593Smuzhiyun | | | 5 - 60 2111*4882a593Smuzhiyun | | | 6 - 120 2112*4882a593Smuzhiyun | | | 2113*4882a593Smuzhiyun --------------------------- max tag cmds 0 - 2 2114*4882a593Smuzhiyun 1 - 4 2115*4882a593Smuzhiyun 2 - 8 2116*4882a593Smuzhiyun 3 - 16 2117*4882a593Smuzhiyun 4 - 32 2118*4882a593Smuzhiyun 2119*4882a593SmuzhiyunHost flags 2 (addr 0x100010, 34):: 2120*4882a593Smuzhiyun 2121*4882a593Smuzhiyun x x x x x x x x x x x x x x x x 2122*4882a593Smuzhiyun | 2123*4882a593Smuzhiyun ----- F2/F6 enable 0 - off ??? 2124*4882a593Smuzhiyun 1 - on ??? 2125*4882a593Smuzhiyun 2126*4882a593Smuzhiyunchecksum (addr 0x111111) 2127*4882a593Smuzhiyun 2128*4882a593Smuzhiyunchecksum = 0x1234 - (sum addr 0-63) 2129*4882a593Smuzhiyun 2130*4882a593Smuzhiyun---------------------------------------------------------------------------- 2131*4882a593Smuzhiyun 2132*4882a593Smuzhiyundefault nvram data:: 2133*4882a593Smuzhiyun 2134*4882a593Smuzhiyun 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 2135*4882a593Smuzhiyun 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 2136*4882a593Smuzhiyun 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 2137*4882a593Smuzhiyun 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 2138*4882a593Smuzhiyun 2139*4882a593Smuzhiyun 0x0f07 0x0400 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000 2140*4882a593Smuzhiyun 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 2141*4882a593Smuzhiyun 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 2142*4882a593Smuzhiyun 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0xfbbc 2143*4882a593Smuzhiyun 2144*4882a593Smuzhiyun 2145*4882a593Smuzhiyun18. Support for Big Endian 2146*4882a593Smuzhiyun========================== 2147*4882a593Smuzhiyun 2148*4882a593SmuzhiyunThe PCI local bus has been primarily designed for x86 architecture. 2149*4882a593SmuzhiyunAs a consequence, PCI devices generally expect DWORDS using little endian 2150*4882a593Smuzhiyunbyte ordering. 2151*4882a593Smuzhiyun 2152*4882a593Smuzhiyun18.1 Big Endian CPU 2153*4882a593Smuzhiyun------------------- 2154*4882a593Smuzhiyun 2155*4882a593SmuzhiyunIn order to support NCR chips on a Big Endian architecture the driver has to 2156*4882a593Smuzhiyunperform byte reordering each time it is needed. This feature has been 2157*4882a593Smuzhiyunadded to the driver by Cort <cort@cs.nmt.edu> and is available in driver 2158*4882a593Smuzhiyunversion 2.5 and later ones. For the moment Big Endian support has only 2159*4882a593Smuzhiyunbeen tested on Linux/PPC (PowerPC). 2160*4882a593Smuzhiyun 2161*4882a593Smuzhiyun18.2 NCR chip in Big Endian mode of operations 2162*4882a593Smuzhiyun---------------------------------------------- 2163*4882a593Smuzhiyun 2164*4882a593SmuzhiyunIt can be read in SYMBIOS documentation that some chips support a special 2165*4882a593SmuzhiyunBig Endian mode, on paper: 53C815, 53C825A, 53C875, 53C875N, 53C895. 2166*4882a593SmuzhiyunThis mode of operations is not software-selectable, but needs pin named 2167*4882a593SmuzhiyunBigLit to be pulled-up. Using this mode, most of byte reorderings should 2168*4882a593Smuzhiyunbe avoided when the driver is running on a Big Endian CPU. 2169*4882a593SmuzhiyunDriver version 2.5 is also, in theory, ready for this feature. 2170