Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: docs: convert ncr53c8xx.txt to ReST

Link: https://lore.kernel.org/r/cover.1583136624.git.mchehab+huawei@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Mauro Carvalho Chehab and committed by
Martin K. Petersen
8dca37d2 a756185d

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