In late November of 2002, OpenBSD creator Theo de Raadt [interview] announced on the project's mailing lists that after over a year of attempting to obtain useful UltraSparc III documentation, they had still not made much headway. In the email he rallied the OpenBSD community to help out, asking them to contact the people within Sun responsible for providing such information. C/Net reported on this in their story titled, Open-source clan in spat with Sun. The UltraSparc III is Sun's third generation 64-bit RISC architecture based processor.
Sun boasts their UltraSparc III as an "open" architecture, yet seem to recognize that there is insufficient information freely available for the open source community to support it with operating systems. I have been told that the required documentation does exist, however, with a Sun part number of 805-0408-05-P. An early version of this manual was allegedly made available to Linux developers once a Confidential Disclosure Agreement was signed (Sun's version of a Non-Disclosure Agreement), however no such offer has been made to the OpenBSD team, an offer that if made is likely counter to the project's goals.
I attempted to discuss this issue with Danese Cooper who works in Sun's Open Source Programs Office, with as of yet limited results. My goal is to gain a clear understanding of Sun's official position on this situation, something that to date they seem unwilling to discuss with me. My continued attempts to get direct answers are described within...
Many have been quick to point out that as Linux supports the UltraSparc III architecture, it should be a simple matter for the OpenBSD project to learn what they need looking at this existing code. When I suggested this to Theo, he explained, "There are certain things that are easy to distill from other source code. Some device drivers are easy", while in contrast, "Caches and mmu's are not like that. The code to handle them ends up all over the place." Find his full explanation below.
My next step was to contact David Miller, who coded UltraSparc III support for Linux, asking for his opinion and wishing to learn more about the non-discloser agreement he is rumored to have signed. He quickly replied, "no comment", also expressing some annoyance that this issue hasn't been dropped.
Reviewing the earlier thread on OpenBSD's "misc" mailing list, I began my attempt to gain an official answer from Sun, approaching Danese Cooper on December 10'th. To her I sent a list of five direct questions, describing what I had read and asking for clarification. A week later I sent a followup email, as I had received no reply.
Finally, on January 6'th, I did receive a reply from Danese, explaining her delay to illness and vacation, noting, "I think I'm about ready to talk to you about this". I replied the same day, excited to finally, apparently be making progress toward obtaining answers to my questions. As it turned out, I did not hear from Danese again for three weeks, however unfortunately still leaving all of my questions unanswered.
So begins my education into large corporations, and the speed with which they move. When first reading Theo's email back in November, I assumed the lack of documentation was nothing more than a misunderstanding, as this is Sun, a company who has frequently offered significant contributions to the open source community, and who has ironically accused Microsoft of similar "non-open transgressions". On their Linux page they go so far as to say, "Linux is consistent with Sun's computing vision of employing open standards and nonproprietary interfaces to develop products and services that address the needs of a variety of environments." One begins to wonder if the UltraSparc III does not fall within this vision.
Thus far, the replies I've received to my questions lack any attempt to provide answers. What I assumed would be a straight forward process continues to drag on. If anyone reading this article works for Sun and is in a position to offer more substantial information, please drop me an email. I will post a followup to this article once I've learned more.
In a more recent conversation with Theo, he explained to me that activism works. OpenBSD's track record in dealing with situations like this one is quite impressive, and he's confident that with time and community pressure, change will happen.
Theo's sometimes bluntly direct personality and efforts leave many with a negative impression, but it's difficult to deny that it has paid off for him. The OpenBSD project has continued to grow and evolve over the past eight years, living up to its slogan, "Free, Functional and Secure", and in all probability will one day support even the UltraSparc III.
From: Theo de Raadt To: Jeremy Andrews Date: Sat, 25 Jan 2003 12:36:21 -0700 There are certain things that are easy to distill from other source code. Some device drivers are easy. You're whacking registers to send a block, you whack registers to receive a block, you have some setup code. Device drivers work pretty much the same in all systems. Jason can distill the information from a linux hppa audio driver (he's never worked on hppa before) into an openbsd hppa audio driver in a couple of days. He's an expert. Caches and mmu's are not like that. The code to handle them ends up all over the place. The models of these things are widely varied: standard, inverted, writeback, virtual, partially tagged, cache aliases, write buffer pipelines, prefetch buffers and caches, delays, etc. And to add to that, some systems now come with 3 levels of caches that have DIFFERENT semantics. The vm system and the page handling, as well as how dma interfaces with all of it -- that ends up scattered throughout the kernel. On an i386 (or vax or m68k) with a physical cache and a mmu that has basically one tlb flush instruction, and dma is so easy, after you get past the pte handling code, the remaining cache/tlb/ugly glue code is perhaps 50 lines. On a sparc64 or alpha or sparc, that nasty code is fully 50% of the non-device driver part of the kernel. Let me explain by showing you the sparc code. It's the best example. 81 442 3006 sys_machdep.c 90 529 3580 iommureg.h 91 605 3759 clockreg.h 101 340 2472 db_trace.c 103 564 3648 locore2.c 147 646 4417 process_machdep.c 167 749 4954 amd7930intr.s 173 721 4925 auxreg.c 225 1168 7266 in_cksum.c 241 764 5868 db_interface.c 242 865 6020 mem.c 258 951 6528 openprom.c 263 1391 9684 cache.h 265 1082 7497 memreg.c 288 1384 9654 cpuvar.h 314 1244 8200 bsd_fdintr.s 329 1331 9042 kgdb_machdep.c 334 1379 9692 iommu.c 381 1583 10759 intr.c 445 1546 10553 emul.c 470 1986 13059 conf.c 542 1950 14012 vm_machdep.c 611 1899 15195 svr4_machdep.c 685 2603 18170 disksubr.c 840 3150 21292 cache.c 1014 4677 36707 db_disasm.c 1162 4054 27721 machdep.c 1185 4883 31326 trap.c 1365 4674 31157 clock.c 1371 4388 33466 cpu.c 2216 7285 51181 autoconf.c 6477 30195 171638 locore.s 6771 23951 168266 pmap.c Look at the size of that pmap module! It deals with 3 mmu types, and part of the code for the 4th mmu type (sun4/400) is in there, but not yet functional. The mmu types are: sun4, sun4c, and sun4m. There are variations in the sun4m land: TI vs Ross. David Miller never got sun4c working on UltraLinux because he punted on the virtual cache alias problem. I think he could not believe someone would design hardware so bizzare, but this is back in the days when mmu TLB's were just VERY EXPENSIVE 12ns SRAM chips on the board. And it was quite apparent from Torek and my code how the sun4c virtual cache aliasing should be handled. Yet he did not copy our code. It was too difficult. I know he spent countless hours trying to figure it out from our code. Yet he did not get it working, and punted, and got his US3 manual under NDA and moved on and worked on those machines instead... The same applies in sparc64 land. Now, there's no way we can look at what he did _with_ documentation, and figure out how it could apply to us. There's always people who suggest it is possible, but the pain is so high, it's just not worth it. Especially when the Linux kernel's interface with hardware is detailed about as well as the Linux manual pages. Especially when Linux is famous for stuff like: writereg(0x4, 0xff01);
"Activism works."Just like I don't buy Nike shoes, and I buy gas from someone other than Shell when it is easier, activism is not some temporary thing. Activism does change the world, perhaps not as much as we want, but at least it moves it a bit in that direction. I don't care what the jaded people say; they are just making up cynical excuses.
"And anyways, activism can be a hell of a lot of fun.
"You can win what you ask for, but if you do not win -- you have still lost nothing.
Time? What's that? Time is only worth what you do with it."
From: Theo de Raadt To: Jeremy Andrews Date: Sat, 25 Jan 2003 12:49:05 -0700 Qlogic scsi support exists in Linux and *BSD because I forced them to release their firmware to the community. I had a discussion in the 2 weeks leading up to one of our releases, and we fully intended to ship with the qlogic support REMOVED. FreeBSD and NetBSD people were mostly agreeable towards doing the same. Then it got fixed. Adaptec had a similar problem. 3com 3c990. etc etc etc etc There's perhaps 20 of these hardware documentation or firmware licensing stories that I directly handled.
From: Jeremy Andrews <jeremy@kerneltrap.org> To: danese.cooper@sun.com Subject: Sun UltraSparc III Documentation Date: Tue, 10 Dec 2002 20:18:01 -0500 Hello Danese, I maintain an active web site that discusses open source kernels, and have been following a lengthy thread on one of the OpenBSD mailing lists. The OpenBSD founder, Theo de Raadt, explains that they are unable to obtain sufficient documentation on the UltraSparc III, and thus they are unable to support this "open" architecture with their operating system. I'm in the process of writing an article about this situation, and I'm hoping you could help clarify a few points points for me. Are you the correct contact for this situation? If not, please let me know who is and I'll happily redirect the following questions. I do wish to quote you (or whomever may be the correct contact), is this okay? 1) Does Sun consider the UltraSparc III an open architecture? If so, can you define what you mean by "open"? What limitations does this still impose upon thorough documentation? 2) The OpenBSD team claims that the currently available documentation is not sufficient to write a kernel. As I understand it, Ahmad Zandi at Sun has agreed that this is a true statement. Why then has the OpenBSD team been denied access to the necessary documentation required to support the UltraSparc III architecture? 3) Theo has told me that he believes the reason these documents have not been made available is to hide some "nasty bugs". Can you confirm or deny this? 4) Theo claims that certain Linux developers have been provided more UltraSparc III documentation than is publicly available. Can you confirm or deny this? 5) Does Sun take this issue seriously? If so, what steps are being taken to rectify the situation? Thank you very much for taking the time to read my email. I would be quite grateful if you could provide me complete answers to the above questions, as I am interested in representing all parties objectively. Thanks again, -Jeremy -- Jeremy Andrews <mailto:jeremy@kerneltrap.org> PGP Key ID: 8F8B617A http://www.kerneltrap.org/
From: Jeremy Andrews <jeremy@kerneltrap.org> To: danese.cooper@sun.com Subject: Sun UltraSparc III Documentation [2nd communication attempt] Date: Tue, 17 Dec 2002 19:03:53 -0500 Hello Danese, I wrote you a week ago with a few questions regarding the UltraSparc III architecture in an attempt to understand issues reported by the OpenBSD team on their various development mailing lists. I will be posting a story on my kernel related news site (KernelTrap.org) regarding this issue, but I would very much like to get Sun's official views on the situation first. As stated in my original email, please let me know if you are the wrong contact for these types of questions. In that case, it would be greatly appreciated if you could then point me toward the correct contact. I received your email address from Mr. Theo de Raadt of the OpenBSD project who informed me that you were the contact that he has been speaking with. A response would be most appreciated. If I do not hear from you within the next two days, I will work my way up the list until I get a response from someone. My earlier email is included below for your convenience. Regards, -Jeremy Andrews -- Jeremy Andrews <mailto:jeremy@kerneltrap.org> PGP Key ID: 8F8B617A http://www.kerneltrap.org/
Let's keep our fingers crossed...
...and hope that we'll (the community) get the documentation we have been requesting :))
SPARC: Open Architecture
theo is missing one point in his argumentation. SPARC is Open Architecture as in "you can license it and make your own SPARC processors" and "you can get the architecture manuals", they are Open. the other point is that there is always something left to the actual implementation. that is, SPARCv9 is Open, Sun's UltraSPARC-III{+} is an implementation based on this Open Architecture. nothing prevents you from designing your own SPARCv9 processors and not making the implementation details public.
it's up to Sun to decide how to deal with the documentation to their intellectual property. if they decided that they will release it under NDA to people they choose, it's their right. i'm not surprised they heistate to negotiate with arrogant people suffering from messiah syndrome.
did he read the FAQ before writing this FUD? hell, he can't even spell it properly!
At least, they should be honest.
If they don't want to share the needed information (which I have no problem with - it's their CPU after all), they should at least say so openly.
The "maybe today, maybe not, maybe tomorrow - or not"-situation as of today is not very nice, and doesn't put Sun in a good light.
The point is, it's NOT Sun'
The point is, it's NOT Sun's CPU. From www.sparc.org: "Any version of the SPARC Instruction Set can be licensed from SPARC International, and then used to design processors implementing that open standard." Sun doesn't own the architecture, SPARC Intl. does. Harping on Sun makes no sense.
it`s not SUNs ?
SPARC: Open Architecture
It is true that it is Sun's choice to do what they like with their documentation. But to me, it's a curious decision. If you believe the trade rags, Sun is suffering the most at the hands of Intel/Linux (and to a lesser extent, other open source OSes). The SPARC architecture is getting increased pressure from generally cheaper and comparably-performing Intel and AMD CPUs; broader OS support can't hurt. And if they lose Solaris sales, those sales will likely be lost in far greater numbers to Linux than to any of the BSDs; in other words, the cat is already out of the bag there if the Linuxers get the kernel ported.
My guess is that upper management decreed that the Sun hardware folks would help out the Linux developers. Sun probably curses Linux privately, but doesn't want to miss an opportunity there (or get left in the dust by HP and IBM). No such decree has been issued for any other open source OS, so the hardware people (or at least their group management) fall back on their closed, proprietary inclinations, developed over years at Sun.
Or maybe Theo's bug theory has some meat...
VxWorks for realtime?
Interesting, given that Wind River (the makers of VxWorks) dropped Sparc as a supported architecture in what? 1998?
I was working there at the time. -josh rodman
vxWorks for realtime? Sparc
Sparc V8 (and even some V9 support I think) was updated by Chris Hann
just a few months ago. So although vxWorks 5.5 didn't have Sparc on the roadmap, there was clearly enough interest for it. It was an fairly easy bit of maintenence so I suspect the decision makers made an educated mis-guess about the man-power cost of mainenance.
-David
I call BS
Sun is a hardware company. They don't care too much if you run a different OS. The effort to split of the OS sales has been a failure.
They really didn't support Linux very well until a few years ago.
Not trying to start a flame war, but how exactly was Linux "less mature" two years ago? In what way is BSD a competitor that Linux isn't?
I just don't follow the logic of your conspiracy.
It just seems like Sun's being crappy and doesn't give a crap about other people's operating systems, with the limited exception of Linux.
Undocumented hardware == Unprogrammable hardware
How does Sun expect people to program the UltraSPARC-III without giving them technical specifications? And giving documentation to chosen people under NDA is exactly equivalent to choosing who should be able to program it. And I don't understand how programming documentation is Sun's intellectual property (or trade secrets). Nobody is asking for the internal design/implementation details of the UltraSPARC-III. Those things would surely be Sun's intellectual property. But programming specifications under NDA!!! That's so typical of stupid companies whose legal departments don't quite distinguish implementation details from the interface specifications. There's really nothing specific to open source in this issue. It is more about undocumented (and hence, unprogrammable) hardware.
Jeremy is a reporter!
I must say, i'm impressed with Jeremy's efforts. This guy runs this website in his spare time, and yet he's trying to follow through on this like a 'real' reporter. Of course, 'real' reporting just takes asking questions, making sure you're story's right before posting it. I've gotten so frustrated with slashdot and it's horrible reporting lately... You know, they post stuff that's not true, links are broken, dupes... it's pretty pathetic. But then i read how Jeremy is acutually trying to figure out the situation, asking questions, following through. It's a breath of fresh air.
Thanks for the good effort, Jeremy
yes, i wanted to post too, to
yes, i wanted to post too, to say i'm impressed.
jeremy, by doing this you are really an active part of the community (if you doubted about it).
That's exactly why kerneltra
That's exactly why kerneltrap is one of my favorite blogs.
KT's focus on "new features being added to open source operating systems" means that I can always count on Jeremy to run either good news or no news at all. It's really a comforting alternative to /.'s selection of topics.
David Millers comments on this
The article states that Mr. Miller said "No comment", but I've heard otherwise:
Subject: Re: A quick questions about ultrasparc 3 documentation
Date: Tue, 26 Nov 2002 14:26:23 -0800 (PST)
From: "David S. Miller"
To: andres@msu.edu
You are the second person in one day from the OpenBSD project
to ask me this question, and I am going to give you the same
answer. Please spead the knowledge so I don't have to sit here
all day typing in responses.
I have docs under NDA with Sun that allows me to write GPL'd
code based upon the documentation. I therefore cannot give the
docs to anyone else.
And no, I no longer have any contacts at Sun that could help you
guys out.
Re: David Millers comments on this
The article said he replied "No comment" to any email from the author, not "No comment" to every email he got about this subject.
David Millers comments on this
Although there are some more tokens than "no comments", the content is quite similar to "no comment".
Quite different than 'no comment'
In my world, there's a pretty big difference between "No comment" and "Yes, I have the documentation but I can't release it to anybody else".
The later actually imparts information.
Hmm.....
I wonder if Mr. Millar no-longer has any contacts at Sun, because the person(s) that got him the documentation were disiplined/fired.
It isn't really much of a surprise to find out that "Open" to Sun means the same as "Closed" to the rest of the world (it just sounds better in the promotional literature these days). Big businesses like Sun are always ripe with hypocracy. It's the way of the world. What surprises me is that the Linux developers chose to accept the documentation with such (very unfree) strings attached. Linux is now the poster-child of the Free-Software/Open-Source movement, and needs to lead by example on these matters! Mr. Millar should never have accepted these terms (and IMHO the Linux developers should threaten to pull support if Sun continues to refuse to play straight on this matter). It's easy for Sun to ignore OpenBSD -- not so easy for them to ignore Linux.
No buddy your argument is crap.
Taken to the logical conclusion, you would argue that someone who lives in a country where programming books are illegal should contribute anything to the kernel as it is the "poster-child of blah blah"???
I mean the freedoms / constraints of some part of the author's life doesn't have a bearing on the legally released free software.
Re: No buddy your arguement is crap.
I'm afraid that when the constraints on the programmer are such that he can't provide adequate comments/documentation for his code so that a reasonably talented team of programmers can fully comprehend it, it very much violates the spirit of free software. Sorry, but I believe Linux coders should stand up for the principles of free software!
Um ok
Bullshit they can't comprehend it. If they can't then they aren't a very talented team. But comprehending that particular code doesn't mean anything when you need to do a completely different thing for your system's implementation. You still need specs.
Free software has nothing whatsoever to do with free programmers.
Open vs. Closed?
You can "wonder" all you want, but you obviously don't have the first
clue what you're talking about. Typical for the web, I suppose.
FWIW, here's what I found with roughly 15 seconds worth of effort:
http://www.sun.com/processors/manuals/usIII_um.pdf
It looks as though the bit fields of some of the ASI registers are
missing, so this manual alone is probably insufficient to implement
an OS on US-III. However, given how much technical information is
in this manual, I think your snotty comment on open vs. closed is
completely off the mark.
Re: Open vs. Closed?
Gee, and that has escaped the OpenBSD developers all this time! The whole issue is just a misunderstanding. What kind of journalism is Jeremy practicing that he didn't see this pdf either. Man, you're a hero!
That's the not enough docs
Did you miss this part of the articler?
2) The OpenBSD team claims that the currently available documentation is
not sufficient to write a kernel. As I understand it, Ahmad Zandi at Sun
has agreed that this is a true statement. Why then has the OpenBSD team
been denied access to the necessary documentation required to support the
UltraSparc III architecture?
contacts
I think Mr. "Millar" (Miller) was an intern at Sun at one point (and SGI for a while too?). He has been a long time fan of Sun hardware and was the guy who first got SMP Linux working... on Sun hardware. Only recently (2.5.?) have the last remnants of his first attempts to program Intel assembly been removed from the Linux kernel (when he ported the SMP support to other arches).
I assume his "contacts" were Sun engineers he worked with. Back in the day, I know he flung quite a few insults at the Solaris developers about slow code (context switching and the TCP checksum calculations come to mind), and quite a few insults at the MMU designers for the huge gaping problems which he was able to work around (but Solaris wasn't) in later Sparc chips.
I doubt that Sun just suddenly got pissed and said to shove off.
As with most companies, they probably just take the path of least resistance. If you can make enough noise and show enough demand for *BSD on UltraSparc IIIs then they are likely to extend the same offer to you as to David.
heh sorry guys
I read theo's email back when he sent it, and I should have imediately realised that the Danese Cooper that was at the Open Source Weekend was the Danese Cooper that I should have raised this question with, in person... all I can say is sorry, If I had realized her being here I would have submitted a question to the question asking people for the panel discussion that took place on sunday 26... grr...
I was at the OSW as well. I w
I was at the OSW as well. I wanted to ask her too.
One thing I did notice at the OSW was the constant bickering between the Sun, IBM, and HP people. It was brutal. They all wanted to look like they are great amazing companies that have contributed the most to Linux. I just had to chuckle at it, because if it hadn't been for the thousands (millions?) of programmers contributing code, these companies would have had to spend millions (billions?) of dollars on building their own operating systems for the future.
They were all trying to look like they were cool because they contributed . Not once did any of them thank anyone for the Free code they were given.
And from my side of the fence, it looks as though Sun has done more for Open Source than either IBM or HP. Sure, IBM and HP have made some contributions to Linux, or a project here and there. Sun has provided a $75 million dollar office suite along with 60 (?) full time programmers working on it. Add to that their contributions to Apache, Jakarta, JBoss, etc... and I think we might want to give Sun a pat on the back. Sometimes a pat on the back, rather than a punch, is what people need to open up to a community.
Thanks Sun, we do appreciate what you have given us. And we will continue to appreciate it when you open up the specs for the U3.
GPL/BSD licence?
Maybe its a licence-issue.
If Sun contributes to Linux, most likely no competitor will be able to earn big bugs by this. But Sun still can sell Hardware to Sparc-Linux-Users and makes a Buck.
If Sun contributes to BSD, anyone around could grab BSD, enhance it (Realtime, Serverside, a complete Solaris-Clone etcpp) and sell it for their own fortune... this is even more dangerous as Sparc-Hardware IS Open... not Open as in OpenBSD/Freebeer, but Open as in "IBM-PC Hardware" which means anyone can build a system around it or licence the Sparc-Architecture. The market could get out of Suns Hand very quickly if they became truely open...
Be honest, below-mainframe hardware from Sun isn´t very competitive today, I won´t compare an UltraSparcIII with a Duron here, but you still get the point?
horses for courses
it's funny the way no one seems to use a computer to compute anymore... the differance between x86 and sparc is never going to be seen in a web or ftp server, and certanly not with a benchmarking suite designed for 32bit cisc cpus.
think also of a car analogy, what's better - a 5.7litre GM V8 that delivers 305kw, or a lighter 3.8litre BMW 6 that makes 285kw and uses half the fuel?
i do get tired of hearing that risc is dead, and sun is irrelivent (usually from the same people that believe a beowulf can replace a cray)...
it is sad though, that sun (and cray) continue on a road to death, put there by home-hacker pc-users and glorified script-kiddies who measure performance in fps, then become mnagers that listen too much to marketing and media hype.
after that rant... much as i love OpenBSD, (believe me, it is my OS of choice - at least for my uni-processor 4c's 4m's and x86's), and i'd love to see it on an ultraIII (it would make a potent combination), but if you've got an ultra3, in a production environmnt, you probably want to stick with solaris!
Your approach
Your approach to Sun was argumentative and not likely to strike a responsive chord. Look at the way your 5 questions were phrased.
You catch more flys with honey ......
As one who makes a living prying such secrets out of proprietary manufacturers, let me suggest that next time you ask respectfully and not the way you did it this time. After all, it is their stuff and their right to determine who gets it.
re: your approach
you catch even more with shit.
I definitely agree. Some q
I definitely agree.
Some questions were too broadly formulated and some of them were worded in a way that would make somewhat difficult showing them to contact's boss (which would inevitably have to happen if any kind of serious considering takes place at all).
FWIW, I'd phrase it like "We're the xyz community (our goals). You are the Sun. You have the architecture. We have the great OS. Is it possible to make docs available to our community? etc. etc."
url
http://www.sun.com/processors/manuals/USIIIv2.pdf
is for US-III+, also known as US-III cu.
The data tlbs were changed, with respect to US-III.
Seems like sufficient info in that doc to program the tlbs for
all US-III cu.
Beyond that manual, you need to ask for a errata list. I think
that could be the rub.