About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / scsi / sym53c8xx_2.txt




Custom Search

Based on kernel version 3.15.4. Page generated on 2014-07-07 09:04 EST.

1	The Linux SYM-2 driver documentation file
2	
3	Written by Gerard Roudier <groudier@free.fr>
4	21 Rue Carnot
5	95170 DEUIL LA BARRE - FRANCE
6	
7	Updated by Matthew Wilcox <matthew@wil.cx>
8	
9	2004-10-09
10	===============================================================================
11	
12	1.  Introduction
13	2.  Supported chips and SCSI features
14	3.  Advantages of this driver for newer chips.
15	      3.1 Optimized SCSI SCRIPTS
16	      3.2 New features appeared with the SYM53C896
17	4.  Memory mapped I/O versus normal I/O
18	5.  Tagged command queueing
19	6.  Parity checking
20	7.  Profiling information
21	8.  Control commands
22	      8.1  Set minimum synchronous period
23	      8.2  Set wide size
24	      8.3  Set maximum number of concurrent tagged commands
25	      8.4  Set debug mode
26	      8.5  Set flag (no_disc)
27	      8.6  Set verbose level
28	      8.7  Reset all logical units of a target
29	      8.8  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  Default number of tagged commands
35	             10.2.2  Burst max
36	             10.2.3  LED support
37	             10.2.4  Differential mode
38	             10.2.5  IRQ mode
39	             10.2.6  Check SCSI BUS 
40	             10.2.7  Suggest a default SCSI id for hosts
41	             10.2.8  Verbosity level
42	             10.2.9  Debug mode
43	             10.2.10 Settle delay
44	             10.2.11 Serial NVRAM
45	             10.2.12 Exclude a host from being attached
46	      10.3 Converting from old options
47	      10.4 SCSI BUS checking boot option
48	11. SCSI problem troubleshooting
49	      15.1 Problem tracking
50	      15.2 Understanding hardware error reports
51	12. Serial NVRAM support (by Richard Waltham)
52	      17.1 Features
53	      17.2 Symbios NVRAM layout
54	      17.3 Tekram  NVRAM layout
55	
56	===============================================================================
57	
58	1. Introduction
59	
60	This driver supports the whole SYM53C8XX family of PCI-SCSI controllers.
61	It also support the subset of LSI53C10XX PCI-SCSI controllers that are based 
62	on the SYM53C8XX SCRIPTS language.
63	
64	It replaces the sym53c8xx+ncr53c8xx driver bundle and shares its core code 
65	with the FreeBSD SYM-2 driver. The `glue' that allows this driver to work 
66	under Linux is contained in 2 files named sym_glue.h and sym_glue.c.
67	Other drivers files are intended not to depend on the Operating System 
68	on which the driver is used.
69	
70	The history of this driver can be summarized as follows:
71	
72	1993: ncr driver written for 386bsd and FreeBSD by:
73	          Wolfgang Stanglmeier        <wolf@cologne.de>
74	          Stefan Esser                <se@mi.Uni-Koeln.de>
75	
76	1996: port of the ncr driver to Linux-1.2.13 and rename it ncr53c8xx.
77	          Gerard Roudier
78	
79	1998: new sym53c8xx driver for Linux based on LOAD/STORE instruction and that 
80	      adds full support for the 896 but drops support for early NCR devices.
81	          Gerard Roudier
82	
83	1999: port of the sym53c8xx driver to FreeBSD and support for the LSI53C1010 
84	      33 MHz and 66MHz Ultra-3 controllers. The new driver is named `sym'.
85	          Gerard Roudier
86	
87	2000: Add support for early NCR devices to FreeBSD `sym' driver.
88	      Break the driver into several sources and separate the OS glue 
89	      code from the core code that can be shared among different O/Ses.
90	      Write a glue code for Linux.
91	          Gerard Roudier
92	
93	2004: Remove FreeBSD compatibility code.  Remove support for versions of
94	      Linux before 2.6.  Start using Linux facilities.
95	
96	This README file addresses the Linux version of the driver. Under FreeBSD, 
97	the driver documentation is the sym.8 man page.
98	
99	Information about new chips is available at LSILOGIC web server:
100	
101	          http://www.lsilogic.com/
102	
103	SCSI standard documentations are available at T10 site:
104	
105	          http://www.t10.org/
106	
107	Useful SCSI tools written by Eric Youngdale are part of most Linux 
108	distributions:
109	   scsiinfo:    command line tool
110	   scsi-config: TCL/Tk tool using scsiinfo
111	
112	2. Supported chips and SCSI features
113	
114	The following features are supported for all chips:
115	
116		Synchronous negotiation
117		Disconnection
118		Tagged command queuing
119		SCSI parity checking
120		PCI Master parity checking
121	
122	Other features depends on chip capabilities.
123	The driver notably uses optimized SCRIPTS for devices that support 
124	LOAD/STORE and handles PHASE MISMATCH from SCRIPTS for devices that 
125	support the corresponding feature.
126	
127	The following table shows some characteristics of the chip family.
128	
129	       On board                                   LOAD/STORE   HARDWARE
130	Chip   SDMS BIOS   Wide   SCSI std.   Max. sync   SCRIPTS      PHASE MISMATCH
131	----   ---------   ----   ---------   ----------  ----------   --------------
132	810        N         N      FAST10    10 MB/s        N             N
133	810A       N         N      FAST10    10 MB/s        Y             N
134	815        Y         N      FAST10    10 MB/s        N             N
135	825        Y         Y      FAST10    20 MB/s        N             N
136	825A       Y         Y      FAST10    20 MB/s        Y             N
137	860        N         N      FAST20    20 MB/s        Y             N
138	875        Y         Y      FAST20    40 MB/s        Y             N
139	875A       Y         Y      FAST20    40 MB/s        Y             Y
140	876        Y         Y      FAST20    40 MB/s        Y             N
141	895        Y         Y      FAST40    80 MB/s        Y             N
142	895A       Y         Y      FAST40    80 MB/s        Y             Y
143	896        Y         Y      FAST40    80 MB/s        Y             Y
144	897        Y         Y      FAST40    80 MB/s        Y             Y
145	1510D      Y         Y      FAST40    80 MB/s        Y             Y
146	1010       Y         Y      FAST80   160 MB/s        Y             Y
147	1010_66*   Y         Y      FAST80   160 MB/s        Y             Y
148	
149	* Chip supports 33MHz and 66MHz PCI bus clock.
150	
151	
152	Summary of other supported features:
153	
154	Module:                allow to load the driver
155	Memory mapped I/O:     increases performance
156	Control commands:      write operations to the proc SCSI file system
157	Debugging information: written to syslog (expert only)
158	Scatter / gather
159	Shared interrupt
160	Boot setup commands
161	Serial NVRAM:          Symbios and Tekram formats
162	
163	
164	3. Advantages of this driver for newer chips.
165	
166	3.1 Optimized SCSI SCRIPTS.
167	
168	All chips except the 810, 815 and 825, support new SCSI SCRIPTS instructions 
169	named LOAD and STORE that allow to move up to 1 DWORD from/to an IO register 
170	to/from memory much faster that the MOVE MEMORY instruction that is supported 
171	by the 53c7xx and 53c8xx family.
172	
173	The LOAD/STORE instructions support absolute and DSA relative addressing 
174	modes. The SCSI SCRIPTS had been entirely rewritten using LOAD/STORE instead 
175	of MOVE MEMORY instructions.
176	
177	Due to the lack of LOAD/STORE SCRIPTS instructions by earlier chips, this 
178	driver also incorporates a different SCRIPTS set based on MEMORY MOVE, in 
179	order to provide support for the entire SYM53C8XX chips family.
180	
181	3.2 New features appeared with the SYM53C896
182	
183	Newer chips (see above) allows handling of the phase mismatch context from 
184	SCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor 
185	until the C code has saved the context of the transfer).
186	
187	The 896 and 1010 chips support 64 bit PCI transactions and addressing, 
188	while the 895A supports 32 bit PCI transactions and 64 bit addressing.
189	The SCRIPTS processor of these chips is not true 64 bit, but uses segment 
190	registers for bit 32-63. Another interesting feature is that LOAD/STORE 
191	instructions that address the on-chip RAM (8k) remain internal to the chip.
192	
193	4. Memory mapped I/O versus normal I/O
194	
195	Memory mapped I/O has less latency than normal I/O and is the recommended 
196	way for doing IO with PCI devices. Memory mapped I/O seems to work fine on 
197	most hardware configurations, but some poorly designed chipsets may break 
198	this feature. A configuration option is provided for normal I/O to be 
199	used but the driver defaults to MMIO.
200	
201	5. Tagged command queueing
202	
203	Queuing more than 1 command at a time to a device allows it to perform 
204	optimizations based on actual head positions and its mechanical 
205	characteristics. This feature may also reduce average command latency.
206	In order to really gain advantage of this feature, devices must have 
207	a reasonable cache size (No miracle is to be expected for a low-end 
208	hard disk with 128 KB or less).
209	Some known old SCSI devices do not properly support tagged command queuing.
210	Generally, firmware revisions that fix this kind of problems are available 
211	at respective vendor web/ftp sites.
212	All I can say is that I never have had problem with tagged queuing using 
213	this driver and its predecessors. Hard disks that behaved correctly for 
214	me using tagged commands are the following:
215	
216	- IBM S12 0662
217	- Conner 1080S
218	- Quantum Atlas I
219	- Quantum Atlas II
220	- Seagate Cheetah I
221	- Quantum Viking II
222	- IBM DRVS
223	- Quantum Atlas IV
224	- Seagate Cheetah II
225	
226	If your controller has NVRAM, you can configure this feature per target 
227	from the user setup tool. The Tekram Setup program allows to tune the 
228	maximum number of queued commands up to 32. The Symbios Setup only allows 
229	to enable or disable this feature.
230	
231	The maximum number of simultaneous tagged commands queued to a device
232	is currently set to 16 by default.  This value is suitable for most SCSI
233	disks.  With large SCSI disks (>= 2GB, cache >= 512KB, average seek time
234	<= 10 ms), using a larger value may give better performances.
235	
236	This driver supports up to 255 commands per device, and but using more than 
237	64 is generally not worth-while, unless you are using a very large disk or 
238	disk arrays. It is noticeable that most of recent hard disks seem not to 
239	accept more than 64 simultaneous commands. So, using more than 64 queued 
240	commands is probably just resource wasting.
241	
242	If your controller does not have NVRAM or if it is managed by the SDMS 
243	BIOS/SETUP, you can configure tagged queueing feature and device queue 
244	depths from the boot command-line. For example:
245	
246	  sym53c8xx=tags:4/t2t3q15-t4q7/t1u0q32
247	
248	will set tagged commands queue depths as follow:
249	
250	- target 2  all luns  on controller 0 --> 15
251	- target 3  all luns  on controller 0 --> 15
252	- target 4  all luns  on controller 0 -->  7
253	- target 1  lun 0     on controller 1 --> 32
254	- all other target/lun                -->  4
255	
256	In some special conditions, some SCSI disk firmwares may return a
257	QUEUE FULL status for a SCSI command. This behaviour is managed by the
258	driver using the following heuristic:
259	
260	- Each time a QUEUE FULL status is returned, tagged queue depth is reduced 
261	  to the actual number of disconnected commands. 
262	
263	- Every 200 successfully completed SCSI commands, if allowed by the
264	  current limit, the maximum number of queueable commands is incremented.
265	
266	Since QUEUE FULL status reception and handling is resource wasting, the 
267	driver notifies by default this problem to user by indicating the actual 
268	number of commands used and their status, as well as its decision on the 
269	device queue depth change.
270	The heuristic used by the driver in handling QUEUE FULL ensures that the 
271	impact on performances is not too bad. You can get rid of the messages by 
272	setting verbose level to zero, as follow:
273	
274	1st method: boot your system using 'sym53c8xx=verb:0' option.
275	2nd method: apply "setverbose 0" control command to the proc fs entry 
276	            corresponding to your controller after boot-up.
277	
278	6. Parity checking
279	
280	The driver supports SCSI parity checking and PCI bus master parity
281	checking.  These features must be enabled in order to ensure safe
282	data transfers.  Some flawed devices or mother boards may have problems
283	with parity.  The options to defeat parity checking have been removed
284	from the driver.
285	
286	7. Profiling information
287	
288	This driver does not provide profiling information as did its predecessors.
289	This feature was not this useful and added complexity to the code. 
290	As the driver code got more complex, I have decided to remove everything 
291	that didn't seem actually useful.
292	
293	8. Control commands
294	
295	Control commands can be sent to the driver with write operations to
296	the proc SCSI file system. The generic command syntax is the
297	following:
298	
299	      echo "<verb> <parameters>" >/proc/scsi/sym53c8xx/0
300	      (assumes controller number is 0)
301	
302	Using "all" for "<target>" parameter with the commands below will
303	apply to all targets of the SCSI chain (except the controller).
304	
305	Available commands:
306	
307	8.1 Set minimum synchronous period factor
308	
309	    setsync <target> <period factor>
310	
311	    target:    target number
312	    period:    minimum synchronous period.
313	               Maximum speed = 1000/(4*period factor) except for special
314	               cases below.
315	
316	    Specify a period of 0, to force asynchronous transfer mode.
317	
318	       9 means 12.5 nano-seconds synchronous period
319	      10 means 25 nano-seconds synchronous period
320	      11 means 30 nano-seconds synchronous period
321	      12 means 50 nano-seconds synchronous period
322	
323	8.2 Set wide size
324	
325	    setwide <target> <size>
326	
327	    target:    target number
328	    size:      0=8 bits, 1=16bits
329	
330	8.3 Set maximum number of concurrent tagged commands
331	 
332	    settags <target> <tags>
333	
334	    target:    target number
335	    tags:      number of concurrent tagged commands
336	               must not be greater than configured (default: 16)
337	
338	8.4 Set debug mode
339	
340	    setdebug <list of debug flags>
341	
342	    Available debug flags:
343	        alloc:   print info about memory allocations (ccb, lcb)
344	        queue:   print info about insertions into the command start queue
345	        result:  print sense data on CHECK CONDITION status
346	        scatter: print info about the scatter process
347	        scripts: print info about the script binding process
348		tiny:    print minimal debugging information
349		timing:  print timing information of the NCR chip
350		nego:    print information about SCSI negotiations
351		phase:   print information on script interruptions
352	
353	    Use "setdebug" with no argument to reset debug flags.
354	
355	
356	8.5 Set flag (no_disc)
357	 
358	    setflag <target> <flag>
359	
360	    target:    target number
361	
362	    For the moment, only one flag is available:
363	
364	        no_disc:   not allow target to disconnect.
365	
366	    Do not specify any flag in order to reset the flag. For example:
367	    - setflag 4
368	      will reset no_disc flag for target 4, so will allow it disconnections.
369	    - setflag all
370	      will allow disconnection for all devices on the SCSI bus.
371	
372	
373	8.6 Set verbose level
374	
375	    setverbose #level
376	
377	    The driver default verbose level is 1. This command allows to change 
378	    th driver verbose level after boot-up.
379	
380	8.7 Reset all logical units of a target
381	
382	    resetdev <target>
383	
384	    target:    target number
385	    The driver will try to send a BUS DEVICE RESET message to the target.
386	
387	8.8 Abort all tasks of all logical units of a target
388	
389	    cleardev <target>
390	
391	    target:    target number
392	    The driver will try to send a ABORT message to all the logical units 
393	    of the target.
394	
395	
396	9. Configuration parameters
397	
398	Under kernel configuration tools (make menuconfig, for example), it is 
399	possible to change some default driver configuration parameters.
400	If the firmware of all your devices is perfect enough, all the
401	features supported by the driver can be enabled at start-up. However,
402	if only one has a flaw for some SCSI feature, you can disable the
403	support by the driver of this feature at linux start-up and enable
404	this feature after boot-up only for devices that support it safely.
405	
406	Configuration parameters:
407	
408	Use normal IO                         (default answer: n)
409	    Answer "y" if you suspect your mother board to not allow memory mapped I/O.
410	    May slow down performance a little.
411	
412	Default tagged command queue depth    (default answer: 16)
413	    Entering 0 defaults to tagged commands not being used.
414	    This parameter can be specified from the boot command line.
415	
416	Maximum number of queued commands     (default answer: 32)
417	    This option allows you to specify the maximum number of tagged commands 
418	    that can be queued to a device. The maximum supported value is 255.
419	
420	Synchronous transfers frequency       (default answer: 80)
421	    This option allows you to specify the frequency in MHz the driver 
422	    will use at boot time for synchronous data transfer negotiations.
423	    0 means "asynchronous data transfers".
424	
425	10. Boot setup commands
426	
427	10.1 Syntax
428	
429	Setup commands can be passed to the driver either at boot time or as
430	parameters to modprobe, as described in Documentation/kernel-parameters.txt
431	
432	Example of boot setup command under lilo prompt:
433	
434	lilo: linux root=/dev/sda2 sym53c8xx.cmd_per_lun=4 sym53c8xx.sync=10 sym53c8xx.debug=0x200
435	
436	- enable tagged commands, up to 4 tagged commands queued.
437	- set synchronous negotiation speed to 10 Mega-transfers / second.
438	- set DEBUG_NEGO flag.
439	
440	The following command will install the driver module with the same
441	options as above.
442	
443	    modprobe sym53c8xx cmd_per_lun=4 sync=10 debug=0x200
444	
445	10.2 Available arguments
446	
447	10.2.1  Default number of tagged commands
448	        cmd_per_lun=0 (or cmd_per_lun=1) tagged command queuing disabled
449	        cmd_per_lun=#tags (#tags > 1) tagged command queuing enabled
450	  #tags will be truncated to the max queued commands configuration parameter.
451	
452	10.2.2 Burst max
453	        burst=0    burst disabled
454	        burst=255  get burst length from initial IO register settings.
455	        burst=#x   burst enabled (1<<#x burst transfers max)
456	  #x is an integer value which is log base 2 of the burst transfers max.
457	  By default the driver uses the maximum value supported by the chip.
458	
459	10.2.3 LED support
460	        led=1      enable  LED support
461	        led=0      disable LED support
462	  Do not enable LED support if your scsi board does not use SDMS BIOS.
463	  (See 'Configuration parameters')
464	
465	10.2.4 Differential mode
466	        diff=0	never set up diff mode
467	        diff=1	set up diff mode if BIOS set it
468	        diff=2	always set up diff mode
469	        diff=3	set diff mode if GPIO3 is not set
470	
471	10.2.5 IRQ mode
472	        irqm=0     always open drain
473	        irqm=1     same as initial settings (assumed BIOS settings)
474	        irqm=2     always totem pole
475	
476	10.2.6 Check SCSI BUS 
477	        buschk=<option bits>
478	
479	    Available option bits:
480	        0x0:   No check.
481	        0x1:   Check and do not attach the controller on error.  
482	        0x2:   Check and just warn on error.
483	
484	10.2.7 Suggest a default SCSI id for hosts
485	        hostid=255	no id suggested.
486	        hostid=#x   (0 < x < 7) x suggested for hosts SCSI id.
487	
488	    If a host SCSI id is available from the NVRAM, the driver will ignore 
489	    any value suggested as boot option. Otherwise, if a suggested value 
490	    different from 255 has been supplied, it will use it. Otherwise, it will 
491	    try to deduce the value previously set in the hardware and use value 
492	    7 if the hardware value is zero.
493	
494	10.2.8  Verbosity level
495	        verb=0     minimal
496	        verb=1     normal
497	        verb=2     too much
498	
499	10.2.9 Debug mode
500	        debug=0	 clear debug flags
501	        debug=#x   set debug flags
502	  #x is an integer value combining the following power-of-2 values:
503	  DEBUG_ALLOC       0x1
504	  DEBUG_PHASE       0x2
505	  DEBUG_POLL        0x4
506	  DEBUG_QUEUE       0x8
507	  DEBUG_RESULT     0x10
508	  DEBUG_SCATTER    0x20
509	  DEBUG_SCRIPT     0x40
510	  DEBUG_TINY       0x80
511	  DEBUG_TIMING    0x100
512	  DEBUG_NEGO      0x200
513	  DEBUG_TAGS      0x400
514	  DEBUG_FREEZE    0x800
515	  DEBUG_RESTART  0x1000
516	
517	  You can play safely with DEBUG_NEGO. However, some of these flags may 
518	  generate bunches of syslog messages. 
519	
520	10.2.10 Settle delay
521	        settle=n	delay for n seconds
522	
523	  After a bus reset, the driver will delay for n seconds before talking
524	  to any device on the bus.  The default is 3 seconds and safe mode will
525	  default it to 10.
526	
527	10.2.11 Serial NVRAM
528		NB: option not currently implemented.
529	        nvram=n     do not look for serial NVRAM
530	        nvram=y     test controllers for onboard serial NVRAM
531	        (alternate binary form)
532	        nvram=<bits options>
533	        0x01   look for NVRAM  (equivalent to nvram=y)
534	        0x02   ignore NVRAM "Synchronous negotiation" parameters for all devices
535	        0x04   ignore NVRAM "Wide negotiation"  parameter for all devices
536	        0x08   ignore NVRAM "Scan at boot time" parameter for all devices
537	        0x80   also attach controllers set to OFF in the NVRAM (sym53c8xx only)
538	
539	10.2.12 Exclude a host from being attached
540	        excl=<io_address>,...
541	
542	    Prevent host at a given io address from being attached.
543	    For example 'excl=0xb400,0xc000' indicate to the 
544	    driver not to attach hosts at address 0xb400 and 0xc000.
545	
546	10.3 Converting from old style options
547	
548	Previously, the sym2 driver accepted arguments of the form
549		sym53c8xx=tags:4,sync:10,debug:0x200
550	
551	As a result of the new module parameters, this is no longer available.
552	Most of the options have remained the same, but tags has become
553	cmd_per_lun to reflect its different purposes.  The sample above would
554	be specified as:
555		modprobe sym53c8xx cmd_per_lun=4 sync=10 debug=0x200
556	
557	or on the kernel boot line as:
558		sym53c8xx.cmd_per_lun=4 sym53c8xx.sync=10 sym53c8xx.debug=0x200
559	
560	10.4 SCSI BUS checking boot option.
561	
562	When this option is set to a non-zero value, the driver checks SCSI lines 
563	logic state, 100 micro-seconds after having asserted the SCSI RESET line.
564	The driver just reads SCSI lines and checks all lines read FALSE except RESET.
565	Since SCSI devices shall release the BUS at most 800 nano-seconds after SCSI 
566	RESET has been asserted, any signal to TRUE may indicate a SCSI BUS problem.
567	Unfortunately, the following common SCSI BUS problems are not detected:
568	- Only 1 terminator installed.
569	- Misplaced terminators.
570	- Bad quality terminators.
571	On the other hand, either bad cabling, broken devices, not conformant 
572	devices, ... may cause a SCSI signal to be wrong when te driver reads it.
573	
574	15. SCSI problem troubleshooting
575	
576	15.1 Problem tracking
577	
578	Most SCSI problems are due to a non conformant SCSI bus or too buggy
579	devices.  If unfortunately you have SCSI problems, you can check the
580	following things:
581	
582	- SCSI bus cables
583	- terminations at both end of the SCSI chain
584	- linux syslog messages (some of them may help you)
585	
586	If you do not find the source of problems, you can configure the
587	driver or devices in the NVRAM with minimal features.
588	
589	- only asynchronous data transfers
590	- tagged commands disabled
591	- disconnections not allowed
592	
593	Now, if your SCSI bus is ok, your system has every chance to work
594	with this safe configuration but performances will not be optimal.
595	
596	If it still fails, then you can send your problem description to
597	appropriate mailing lists or news-groups.  Send me a copy in order to
598	be sure I will receive it.  Obviously, a bug in the driver code is
599	possible.
600	
601	  My current email address: Gerard Roudier <groudier@free.fr>
602	
603	Allowing disconnections is important if you use several devices on
604	your SCSI bus but often causes problems with buggy devices.
605	Synchronous data transfers increases throughput of fast devices like
606	hard disks.  Good SCSI hard disks with a large cache gain advantage of
607	tagged commands queuing.
608	
609	15.2 Understanding hardware error reports
610	
611	When the driver detects an unexpected error condition, it may display a 
612	message of the following pattern.
613	
614	sym0:1: ERROR (0:48) (1-21-65) (f/95/0) @ (script 7c0:19000000).
615	sym0: script cmd = 19000000
616	sym0: regdump: da 10 80 95 47 0f 01 07 75 01 81 21 80 01 09 00.
617	
618	Some fields in such a message may help you understand the cause of the 
619	problem, as follows:
620	
621	sym0:1: ERROR (0:48) (1-21-65) (f/95/0) @ (script 7c0:19000000).
622	.....A.........B.C....D.E..F....G.H..I.......J.....K...L.......
623	
624	Field A : target number.
625	  SCSI ID of the device the controller was talking with at the moment the 
626	  error occurs.
627	
628	Field B : DSTAT io register (DMA STATUS)
629	  Bit 0x40 : MDPE Master Data Parity Error
630	             Data parity error detected on the PCI BUS.
631	  Bit 0x20 : BF   Bus Fault
632	             PCI bus fault condition detected
633	  Bit 0x01 : IID  Illegal Instruction Detected
634	             Set by the chip when it detects an Illegal Instruction format 
635	             on some condition that makes an instruction illegal.
636	  Bit 0x80 : DFE Dma Fifo Empty
637	             Pure status bit that does not indicate an error.
638	  If the reported DSTAT value contains a combination of MDPE (0x40), 
639	  BF (0x20), then the cause may be likely due to a PCI BUS problem.
640	
641	Field C : SIST io register (SCSI Interrupt Status)
642	  Bit 0x08 : SGE  SCSI GROSS ERROR
643	             Indicates that the chip detected a severe error condition 
644	             on the SCSI BUS that prevents the SCSI protocol from functioning
645	             properly.
646	  Bit 0x04 : UDC  Unexpected Disconnection
647	             Indicates that the device released the SCSI BUS when the chip 
648	             was not expecting this to happen. A device may behave so to 
649	             indicate the SCSI initiator that an error condition not reportable              using the SCSI protocol has occurred.
650	  Bit 0x02 : RST  SCSI BUS Reset
651	             Generally SCSI targets do not reset the SCSI BUS, although any 
652	             device on the BUS can reset it at any time.
653	  Bit 0x01 : PAR  Parity
654	             SCSI parity error detected.
655	  On a faulty SCSI BUS, any error condition among SGE (0x08), UDC (0x04) and 
656	  PAR (0x01) may be detected by the chip. If your SCSI system sometimes 
657	  encounters such error conditions, especially SCSI GROSS ERROR, then a SCSI 
658	  BUS problem is likely the cause of these errors.
659	
660	For fields D,E,F,G and H, you may look into the sym53c8xx_defs.h file 
661	that contains some minimal comments on IO register bits.
662	Field D : SOCL  Scsi Output Control Latch
663	          This register reflects the state of the SCSI control lines the 
664	          chip want to drive or compare against.
665	Field E : SBCL  Scsi Bus Control Lines
666	          Actual value of control lines on the SCSI BUS.
667	Field F : SBDL  Scsi Bus Data Lines
668	          Actual value of data lines on the SCSI BUS.
669	Field G : SXFER  SCSI Transfer
670	          Contains the setting of the Synchronous Period for output and 
671	          the current Synchronous offset (offset 0 means asynchronous).
672	Field H : SCNTL3 Scsi Control Register 3
673	          Contains the setting of timing values for both asynchronous and 
674	          synchronous data transfers. 
675	Field I : SCNTL4 Scsi Control Register 4
676	          Only meaningful for 53C1010 Ultra3 controllers.
677	
678	Understanding Fields J, K, L and dumps requires to have good knowledge of 
679	SCSI standards, chip cores functionnals and internal driver data structures.
680	You are not required to decode and understand them, unless you want to help 
681	maintain the driver code.
682	
683	17. Serial NVRAM (added by Richard Waltham: dormouse@farsrobt.demon.co.uk)
684	
685	17.1 Features
686	
687	Enabling serial NVRAM support enables detection of the serial NVRAM included
688	on Symbios and some Symbios compatible host adaptors, and Tekram boards. The 
689	serial NVRAM is used by Symbios and Tekram to hold set up parameters for the 
690	host adaptor and its attached drives.
691	
692	The Symbios NVRAM also holds data on the boot order of host adaptors in a
693	system with more than one host adaptor.  This information is no longer used
694	as it's fundamentally incompatible with the hotplug PCI model.
695	
696	Tekram boards using Symbios chips, DC390W/F/U, which have NVRAM are detected
697	and this is used to distinguish between Symbios compatible and Tekram host 
698	adaptors. This is used to disable the Symbios compatible "diff" setting
699	incorrectly set on Tekram boards if the CONFIG_SCSI_53C8XX_SYMBIOS_COMPAT 
700	configuration parameter is set enabling both Symbios and Tekram boards to be 
701	used together with the Symbios cards using all their features, including
702	"diff" support. ("led pin" support for Symbios compatible cards can remain
703	enabled when using Tekram cards. It does nothing useful for Tekram host
704	adaptors but does not cause problems either.)
705	
706	The parameters the driver is able to get from the NVRAM depend on the 
707	data format used, as follow:
708	
709	                                 Tekram format      Symbios format
710	General and host parameters
711	    Boot order                         N                   Y
712	    Host SCSI ID                       Y                   Y
713	    SCSI parity checking               Y                   Y
714	    Verbose boot messages              N                   Y
715	SCSI devices parameters
716	    Synchronous transfer speed         Y                   Y
717	    Wide 16 / Narrow                   Y                   Y
718	    Tagged Command Queuing enabled     Y                   Y
719	    Disconnections enabled             Y                   Y
720	    Scan at boot time                  N                   Y
721	
722	In order to speed up the system boot, for each device configured without 
723	the "scan at boot time" option, the driver forces an error on the 
724	first TEST UNIT READY command received for this device.
725	
726	
727	17.2 Symbios NVRAM layout
728	
729	typical data at NVRAM address 0x100 (53c810a NVRAM)
730	-----------------------------------------------------------
731	00 00
732	64 01
733	8e 0b
734	
735	00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00 
736	
737	04 00 0f 00 00 10 00 50 00 00 01 00 00 62 
738	04 00 03 00 00 10 00 58 00 00 01 00 00 63 
739	04 00 01 00 00 10 00 48 00 00 01 00 00 61 
740	00 00 00 00 00 00 00 00 00 00 00 00 00 00 
741	
742	0f 00 08 08 64 00 0a 00
743	0f 00 08 08 64 00 0a 00 
744	0f 00 08 08 64 00 0a 00 
745	0f 00 08 08 64 00 0a 00 
746	0f 00 08 08 64 00 0a 00 
747	0f 00 08 08 64 00 0a 00 
748	0f 00 08 08 64 00 0a 00 
749	0f 00 08 08 64 00 0a 00 
750	
751	0f 00 08 08 64 00 0a 00 
752	0f 00 08 08 64 00 0a 00 
753	0f 00 08 08 64 00 0a 00 
754	0f 00 08 08 64 00 0a 00 
755	0f 00 08 08 64 00 0a 00 
756	0f 00 08 08 64 00 0a 00 
757	0f 00 08 08 64 00 0a 00 
758	0f 00 08 08 64 00 0a 00 
759	
760	00 00 00 00 00 00 00 00 
761	00 00 00 00 00 00 00 00 
762	00 00 00 00 00 00 00 00 
763	00 00 00 00 00 00 00 00 
764	00 00 00 00 00 00 00 00 
765	00 00 00 00 00 00 00 00 
766	00 00 00 00 00 00 00 00 
767	00 00 00 00 00 00 00 00 
768	
769	00 00 00 00 00 00 00 00 
770	00 00 00 00 00 00 00 00 
771	00 00 00 00 00 00 00 00 
772	00 00 00 00 00 00 00 00 
773	00 00 00 00 00 00 00 00 
774	00 00 00 00 00 00 00 00 
775	00 00 00 00 00 00 00 00 
776	00 00 00 00 00 00 00 00 
777	
778	00 00 00 00 00 00 00 00 
779	00 00 00 00 00 00 00 00 
780	00 00 00 00 00 00 00 00 
781	
782	fe fe
783	00 00
784	00 00
785	-----------------------------------------------------------
786	NVRAM layout details
787	
788	NVRAM Address 0x000-0x0ff not used
789	              0x100-0x26f initialised data
790	              0x270-0x7ff not used
791	
792	general layout
793	
794	        header  -   6 bytes,
795	        data    - 356 bytes (checksum is byte sum of this data)
796	        trailer -   6 bytes
797	                  ---
798	        total     368 bytes
799	
800	data area layout
801	
802	        controller set up  -  20 bytes
803	        boot configuration -  56 bytes (4x14 bytes)
804	        device set up      - 128 bytes (16x8 bytes)
805	        unused (spare?)    - 152 bytes (19x8 bytes)
806	                             ---
807	        total                356 bytes
808	
809	-----------------------------------------------------------
810	header
811	
812	00 00   - ?? start marker
813	64 01   - byte count (lsb/msb excludes header/trailer)
814	8e 0b   - checksum (lsb/msb excludes header/trailer)
815	-----------------------------------------------------------
816	controller set up
817	
818	00 30 00 00 00 00 07 00 00 00 00 00 00 00 07 04 10 04 00 00
819	                   |     |           |     |
820	                   |     |           |      -- host ID
821	                   |     |           |
822	                   |     |            --Removable Media Support
823	                   |     |               0x00 = none
824	                   |     |               0x01 = Bootable Device
825	                   |     |               0x02 = All with Media
826	                   |     |
827	                   |      --flag bits 2
828	                   |        0x00000001= scan order hi->low
829	                   |            (default 0x00 - scan low->hi)
830	                    --flag bits 1
831	                       0x00000001 scam enable
832	                       0x00000010 parity enable
833	                       0x00000100 verbose boot msgs
834	
835	remaining bytes unknown - they do not appear to change in my
836	current set up for any of the controllers.
837	
838	default set up is identical for 53c810a and 53c875 NVRAM
839	(Removable Media added Symbios BIOS version 4.09)
840	-----------------------------------------------------------
841	boot configuration
842	
843	boot order set by order of the devices in this table
844	
845	04 00 0f 00 00 10 00 50 00 00 01 00 00 62 -- 1st controller
846	04 00 03 00 00 10 00 58 00 00 01 00 00 63    2nd controller
847	04 00 01 00 00 10 00 48 00 00 01 00 00 61    3rd controller
848	00 00 00 00 00 00 00 00 00 00 00 00 00 00    4th controller
849	       |  |  |  |     |        |     |  |
850	       |  |  |  |     |        |      ---- PCI io port adr
851	       |  |  |  |     |         --0x01 init/scan at boot time
852	       |  |  |  |      --PCI device/function number (0xdddddfff)
853	       |  |   ----- ?? PCI vendor ID (lsb/msb)
854	        ----PCI device ID (lsb/msb)
855	
856	?? use of this data is a guess but seems reasonable
857	
858	remaining bytes unknown - they do not appear to change in my
859	current set up
860	
861	default set up is identical for 53c810a and 53c875 NVRAM
862	-----------------------------------------------------------
863	device set up (up to 16 devices - includes controller)
864	
865	0f 00 08 08 64 00 0a 00 - id 0
866	0f 00 08 08 64 00 0a 00 
867	0f 00 08 08 64 00 0a 00 
868	0f 00 08 08 64 00 0a 00 
869	0f 00 08 08 64 00 0a 00 
870	0f 00 08 08 64 00 0a 00 
871	0f 00 08 08 64 00 0a 00 
872	0f 00 08 08 64 00 0a 00 
873	
874	0f 00 08 08 64 00 0a 00 
875	0f 00 08 08 64 00 0a 00 
876	0f 00 08 08 64 00 0a 00 
877	0f 00 08 08 64 00 0a 00 
878	0f 00 08 08 64 00 0a 00 
879	0f 00 08 08 64 00 0a 00 
880	0f 00 08 08 64 00 0a 00 
881	0f 00 08 08 64 00 0a 00 - id 15
882	 |     |  |  |     |  |
883	 |     |  |  |      ----timeout (lsb/msb)
884	 |     |  |   --synch period (0x?? 40 Mtrans/sec- fast 40) (probably 0x28)
885	 |     |  |                  (0x30 20 Mtrans/sec- fast 20)
886	 |     |  |                  (0x64 10 Mtrans/sec- fast )
887	 |     |  |                  (0xc8  5 Mtrans/sec)
888	 |     |  |                  (0x00  asynchronous)
889	 |     |   -- ?? max sync offset (0x08 in NVRAM on 53c810a) 
890	 |     |                         (0x10 in NVRAM on 53c875)
891	 |      --device bus width (0x08 narrow)
892	 |                         (0x10 16 bit wide)
893	  --flag bits
894	    0x00000001 - disconnect enabled
895	    0x00000010 - scan at boot time
896	    0x00000100 - scan luns
897	    0x00001000 - queue tags enabled
898	
899	remaining bytes unknown - they do not appear to change in my
900	current set up
901	
902	?? use of this data is a guess but seems reasonable 
903	(but it could be max bus width)
904	
905	default set up for 53c810a NVRAM
906	default set up for 53c875 NVRAM - bus width     - 0x10
907	                                - sync offset ? - 0x10
908	                                - sync period   - 0x30
909	-----------------------------------------------------------
910	?? spare device space (32 bit bus ??)
911	
912	00 00 00 00 00 00 00 00  (19x8bytes)
913	.
914	.
915	00 00 00 00 00 00 00 00
916	
917	default set up is identical for 53c810a and 53c875 NVRAM
918	-----------------------------------------------------------
919	trailer
920	
921	fe fe   - ? end marker ?
922	00 00
923	00 00
924	
925	default set up is identical for 53c810a and 53c875 NVRAM
926	-----------------------------------------------------------
927	
928	
929	
930	17.3 Tekram NVRAM layout
931	
932	nvram 64x16 (1024 bit)
933	
934	Drive settings
935	
936	Drive ID 0-15 (addr 0x0yyyy0 = device setup, yyyy = ID)
937	              (addr 0x0yyyy1 = 0x0000)
938	
939	    x x x x  x x x x  x x x x  x x x x
940	               | | |      | |  | | | |
941	               | | |      | |  | | |  ----- parity check   0 - off
942	               | | |      | |  | | |                       1 - on
943	               | | |      | |  | | |
944	               | | |      | |  | |  ------- sync neg       0 - off
945	               | | |      | |  | |                         1 - on
946	               | | |      | |  | |
947	               | | |      | |  |  --------- disconnect     0 - off
948	               | | |      | |  |                           1 - on
949	               | | |      | |  |
950	               | | |      | |   ----------- start cmd      0 - off
951	               | | |      | |                              1 - on
952	               | | |      | |
953	               | | |      |  -------------- tagged cmds    0 - off
954	               | | |      |                                1 - on
955	               | | |      | 
956	               | | |       ---------------- wide neg       0 - off
957	               | | |                                       1 - on
958	               | | |
959	                --------------------------- sync rate      0 - 10.0 Mtrans/sec
960	                                                           1 -  8.0
961	                                                           2 -  6.6
962	                                                           3 -  5.7
963	                                                           4 -  5.0
964	                                                           5 -  4.0
965	                                                           6 -  3.0
966	                                                           7 -  2.0
967	                                                           7 -  2.0
968	                                                           8 - 20.0
969	                                                           9 - 16.7
970	                                                           a - 13.9
971	                                                           b - 11.9
972	
973	Global settings
974	
975	Host flags 0 (addr 0x100000, 32) 
976	
977	    x x x x  x x x x  x x x x  x x x x
978	    | | | |  | | | |           | | | |
979	    | | | |  | | | |            ----------- host ID    0x00 - 0x0f
980	    | | | |  | | | |
981	    | | | |  | | |  ----------------------- support for    0 - off
982	    | | | |  | | |                          > 2 drives     1 - on
983	    | | | |  | | | 
984	    | | | |  | |  ------------------------- support drives 0 - off
985	    | | | |  | |                            > 1Gbytes      1 - on
986	    | | | |  | |
987	    | | | |  |  --------------------------- bus reset on   0 - off
988	    | | | |  |                                power on     1 - on
989	    | | | |  |
990	    | | | |   ----------------------------- active neg     0 - off
991	    | | | |                                                1 - on
992	    | | | |
993	    | | |  -------------------------------- imm seek       0 - off
994	    | | |                                                  1 - on
995	    | | |
996	    | |  ---------------------------------- scan luns      0 - off
997	    | |                                                    1 - on
998	    | |
999	     -------------------------------------- removable      0 - disable
1000	                                            as BIOS dev    1 - boot device
1001	                                                           2 - all
1002	
1003	Host flags 1 (addr 0x100001, 33)
1004	
1005	    x x x x  x x x x  x x x x  x x x x
1006	               | | |             | | | 
1007	               | | |              --------- boot delay     0 -   3 sec
1008	               | | |                                       1 -   5
1009	               | | |                                       2 -  10
1010	               | | |                                       3 -  20
1011	               | | |                                       4 -  30
1012	               | | |                                       5 -  60
1013	               | | |                                       6 - 120
1014	               | | |
1015	                --------------------------- max tag cmds   0 -  2
1016	                                                           1 -  4
1017	                                                           2 -  8
1018	                                                           3 - 16
1019	                                                           4 - 32
1020	
1021	Host flags 2 (addr 0x100010, 34)
1022	
1023	    x x x x  x x x x  x x x x  x x x x
1024	                                     |
1025	                                      ----- F2/F6 enable   0 - off ???
1026	                                                           1 - on  ???
1027	
1028	checksum (addr 0x111111)
1029	
1030	checksum = 0x1234 - (sum addr 0-63)
1031	
1032	----------------------------------------------------------------------------
1033	
1034	default nvram data:
1035	
1036	0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1037	0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1038	0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000
1039	0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 0x0037 0x0000 
1040	
1041	0x0f07 0x0400 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000
1042	0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
1043	0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
1044	0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0xfbbc
1045	
1046	
1047	===============================================================================
1048	End of Linux SYM-2 driver documentation file
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.