Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Sun FC25/S soc.o driver w/ 2.6.7-r14 Problem
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Gentoo on Sparc
View previous topic :: View next topic  
Author Message
Risk
n00b
n00b


Joined: 05 Mar 2004
Posts: 38
Location: Zoo York City

PostPosted: Sat Sep 18, 2004 12:16 am    Post subject: Sun FC25/S soc.o driver w/ 2.6.7-r14 Problem Reply with quote

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?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Gentoo on Sparc All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum