Risk n00b
Joined: 05 Mar 2004 Posts: 38 Location: Zoo York City
|
Posted: Sat Sep 18, 2004 12:16 am Post subject: Sun FC25/S soc.o driver w/ 2.6.7-r14 Problem |
|
|
This is my first post in the gentoo forums, please bear with me.
Recently, I had an opportunity to demonstrate the value of Gentoo in my organization. Unfortunately, I chose a system (Sun Ultra 2/2400 [PROM 3.25]) with a Sun FC25/S fiber optic controller (ucode 1.52) connected to a 2TB SPARCstorage Array.
The installation of Gentoo 2.6.7-r14 on that system was a breeze. My congratulations to the maintainers on a fine job well done. However, at the key moment, soc reports the following error:
Quote: | soc0 port A: Too many continuations entries 16 |
after a notorious delay in the boot sequence.
My subsequent troubleshooting covered all aspects of hardware, cabling and the array itself. Especially troubling was the fact that the controllers, systems and arrays tested with Solaris9 were all successfully connecting to the drives in the array.
Upon further research, I discovered that:
Quote: | soc0 portB Too many continuations entries 0 |
refers to a situation where the controller ucode is 1.33 or older (we are running the latest 1.52 ucode on all our FC25/S controllers).
www.splack.org/fibrechan.html
At least one other victim reported the exact same error symptom we experienced (on an E5000). But no resolution is listed and I have received no replies from anyone contacted (including the driver author) over the period of a week.
One interesting comment I discovered is:
Quote: | FROM: Per Kristian Gjermshus
DATE: 12/10/1999 11:00:17
SUBJECT: RE: Ultra-sprc and soc
* David Patterson
| This isnt in the FAQ anywhere, so here goes:
| Sun Ultrasparc 4000.
| Redhat 6.0
| lots of ram.
| when i load the soc module, this is the error: "Too many continuations
| entries"
The same question was posted both to the vger list and the redhat
list, I am replying to both posts in this message.
You need to compile a new firmware from Sun into the linux driver. The
required firmware is not included with linux. What you need to do is
to find the Solaris drivers and extract the firmware from the
executable. You can then compile a new kernel (or module) with the
firmware included.
The following code does the job for me. The constant 276 will have to
be changed to the position of the soc_ucode symbol. This can be found
with a dump or objdump of the symbol table.
dump -s -n .data /kernel/drv/soc | perl -e `$/ = undef; $_ = <>; @a =
/(S+)/g; splice(@a, 0, 2); splice(@a, 0, 276); $#a = 32767;
print("static __u8 soc_ucode[] __initdata = {
"); while (@a) { map {
print("0x$_,") } splice(@a, 0, 16); print("
"); } print("};
")`
> soc_asm.h
The resulting file is put into /usr/src/linux/drivers/fc4, and
HAVE_SOC_UCODE is uncommented from soc.c.
Thanks to Jakub Jelinek for writing the soc driver, and telling me the
secrets of how to get it to work.
Per Kristian |
Intruigingly enough, Mr. Kristian is rather ambiguous as to how he came up with the "276" offset value (nor even whether it is decimal/hex/whatever). In trying to decipher the meaning of "position of the soc_ucode symbol", I used the objdump command in the following manner (Solaris 9):
Code: | objdump -t /kernel/drv/soc |
and discovered the following regex matching lines:
Code: | 000001c4 g O .data 00008000 soc_ucode
000081c4 g O .data 00000004 soc_ucode_end |
This would seem to suggest "1c4" (or decimal 452) as the appropriate offset. However, I'm fearful of equating Mr. Kristian's use of the term "position" for (symbol) offset as I'm apprehensive the wrong binary code being d/l'd to the controller will have lasting negative effects . The soc_ucode_end seems to indicate that the ucode is four megabits long which seems right for the FC25/S (the controllers I checked all had a single TC551632J-20). A major question here is whether the "position" refers to a hexidecimal or decimal (or some other) value. Delving into the perl splice() function doesn't shed much light on the OFFSET value there either. In following with Murphy's Law, there is no trace of an email address or anything else useful in any contact nature in that post...
So, has anyone out there ever had any success with the soc driver?
Thanks much in advance,
Lee
lee dot chen at zone dot net
p.s. now for the good part, I would like to recommend to my organization that it donate a recently decommissioned Sun SPARCserver 1000E with six (or eight?) SuperSPARC II processors to the Gentoo Project. Seeing as how the SPARC32 port is somewhat lagging behind, I'm hoping that this may have a positive effect on future Gentoo development on SPARC32. Who is the appropriate contact(s) for such a donation? |
|