Jason Wright and Mark Kettenis have spent much of their time at the c2k6 hackathon finishing up support for UltraSparc III processors on the OpenBSD/sparc64 architecture. A number of months ago Henric Jungheim put in several weeks of effort reverse engineering support for the UltraSparc III, then OpenBSD creator Theo de Raadt [interview] put more time into cleaning up the diff and comitting much of it to the source tree. Halfway through the hackathon, Jason and Mark have taken what was not-quite functional code and have it successfully booting into multi-user mode. A couple of years ago there was an unsuccessful attempt to obtain documentation for this processor from Sun [story], so this current effort has had to use the FreeBSD and Linux UltraSparc III implementations as references. Theo explained, "Sun released CPU docs, but that's useless. It is kind of like trying to fix a car engine with the owner's manual. The rest of the hardware is not documented."
Jason points out that not only does OpenBSD run on the UltraSparc III processor, but it is also "self hosting". In other words, it is possible to build an UltraSparc III kernel on an UltraSparc III, and then reboot to that new kernel. This is important, Jason explains, because GCC is very memory and CPU intensive, "it really hits a server hard". He goes on to add that for this reason all the different OpenBSD architectures are built on their own architecture, and that this policy often catches bugs that could otherwise be missed.
UltraSparc III Cache
Jason and Mark note that while the UltraSparc III is booting and working, it's running without its data cache. "It has all the performance of an original 140 MHz Ultra 1," Jason says, "and these are 900 MHz machines." When asked why the data cache isn't being used, Mark replied, "Sun screwed up in the design of the cache." The instruction cache is physically indexed, and thus works fine.
Dale Rahn helped explain the problems inherent in cache aliasing. In a virtually indexed cache, the number of bits used to locate a given cache line is larger than the page size, with one or more bits being aliased depending on the architecture. In the UltraSparc III one bit is aliased, meaning that the same physical page can be referenced in two different locations in the cache, depending on if the aliased bit is a 0 or a 1. Thus, it is possible for the two different cache lines to contain different versions of the same physical memory. This problem surfaces when two different process share the same physical page, such as when they map the same file, and can result in one process accidentally accessing a stale cache entry.
There's no efficient solution to this problem, however Dale explains that what you can do is be careful when mapping the same physical memory to make sure that all processes end up with the same aliased bit so they always access the same cache line.
Current Status
Most of the main devices are working, such as the internal disk drive, networking, audio, and the real time clock. There's no floppy support, but this is true for the entire sparc64 architecture. "It's going to stay that way as far as I'm concerned," Jason says, "I don't need it." The UltraSparc III also has an I2C Inter-Integrated Circuit serial bus providing access to temperature and fan sensors. At this time it's unused, but Mark is looking into accessing and utilizing the information from these sensors.
As a test, Jason connected a Serial Attached SCSI card to his UltraSparc III and used David Gwynne's new mpi driver [story] - also written at this hackathon - to boot the device. Jason noted that it took just one small patch, then "it just worked."
Jason is now working on cleaning up the device attachment logic. At start up the system provides a boot string that looks something like /pci@8.600000/LSILogic.sas@1.0/disk@9.0. He's cleaning up the logic that converts this string into something meaningful to OpenBSD so that it can figure out which device is the root device. He notes that this effort is further complicated by the fact that Sun likes to change the string with each firmware revision.
Mark is focused on cleaning up the diff so that it can be committed. Before the 2006 hackathon ends this year, it is likely that the -current branch of the OpenBSD/sparc64 architecture will finally support the UltraSparc III.
Reverse engineering? Pah
Linux supports it. FreeBSD even supports it. Let's be serious here, at best, this is a case of "porting" OpenBSD to another platform, UltraSparc III. Since when was reading documentation and source code provided by other operating systems considered "reverse engineering"?
That said, hopefully OpenBSD will document any new findings they make so they can be fed back into the free kernel ecosystem. Was not impressed by the anti-Linux prejudice during the whole blob-free saga; Linux developers, as hard as it is to believe, dislike binary blobs every bit as much as the OpenBSD hackers.
With vendors now polarising towards closed specs more than ever, developers who don't want to pay license fees and NDAs should drop the politics and work together to ensure free support for as much hardware as possible.
If Linux developers didn't li
If Linux developers didn't like binary blobs they wouldn't be in Linux, so obviously you're wrong and Linux developers like the convenience of binary blob drivers like the garbage Intel, nVidia and ATi produce.
No garbage in Linux
Intel, nVidia and ATi produce blobs that target the Linux kernel. However, it'll be a cold day in hell before any of those drivers are accepted to be part of Linux.
Hell is freezing... http:/
Hell is freezing...
http://www.kernel.org/hg/linux-2.6/?cs=09f245af0593
Im sorry I must have missed s
Im sorry I must have missed something, did that link show anywhere that binary blobs had been included in the mainline kernel? I dont think so
What is the difference if Lin
What is the difference if Linux simply becomes Open Source glue around a bunch of binary blobs?
That is the compromise that is being made in their community and, in practical terms, it differs very little from simply including the blobs.
There's a huge difference if
There's a huge difference if the blob consists of executable code or if it's downloaded to a peripheral device.
device firmware blob - kernel mode binary = world of difference
Absolutley, the point here is that although binary drivers for nvidia and ati devices exist, these drivers are not and will not become part of mainline. Users can go elsewhere and get them if the desire. So hell is not freezing. :)
So these drivers dont ship with the linux kernel, but there open source equivalents do, albeit with reduced functionality in most cases.
There's a huge difference if
There's a huge difference if the blob consists of executable code or if it's downloaded to a peripheral device.
I know what you're getting at here. Re: code which is running within a device and thus code confined within and to the operation of that device. But some modern devices, like modern video cards (hello ATI and nVidia?!), have their own DMA engines which can be programmed to read and write main system memory and there is not a damn thing ANY kernel can do about it.
So, still think peripheral device blobs are safe? Remember that many devices nowdays are largely undocumented and the manufacturers insist on providing firmware images containing code for that device to run, instead of documenting the bloody hardware itself. If the device is undocumented or has undocumented features, what's to say that one of those features is a DMA engine? Nasty nasty stuff. Peripheral vendors are taking the security out of x86 at least and we are to shut up and thank them for it?
Even if you blindly trust that the big corp vendors won't screw you over with these covert potential backdoors, do you trust the hackers who are right now trying to find them and exploit backdoors which cannot be protected with ANY OS? Backdoors some of which might not be fixable without replacing the faulty hardware in question?
Imagine a backdoor which gives you full read and write access to all addressable memory. Being able to read unencrypted data, passwords, raw data which would have been protected, changing passwords, etc.
The Linux camp has the most power, by far of any of the OSS sectors, yet they don't appear to be exercising that power at all, let alone enough to make any change for the better. Blobs are absolutely unacceptable. So don't accept them! The OpenBSD team are having this David and Goliath fight and this great big penguin in on the sidelines standing mute. WTF!
What happened to the moral fibre which propped Linux up in the first place?
Remember that many devices no
Remember that many devices nowdays are largely undocumented and the manufacturers insist on providing firmware images containing code for that device to run, instead of documenting the bloody hardware itself.
In that case of firmware images, documenting the bloody hardware as you put it is next to useless for device driver writers. Since in most cases the firmaware image are the hardware, or the interesting part of it anyway. Due to the nature of those devices it's very unlikely the hardware which the image drives has any arcitectual resemblance with the processor of the host computer(it's 99,9% certainty it's not a x86 based). They are just as likely not to contain a processor at all.
Not only will it create a support and logistics nightmare to build, requiring crosscompilers for several architectures. And it's likely it would require tools/compilers not avaliable as free or even gratis software. It would be rather non surprising if some such binary images is created with optimizing HDL compilers in the $10.000-$100.000+ range
Reverse?
Well, actually, lessee source code is NOT documentation, and the documentation available to us is next to useless. FreeBSD doesn't support USIII in their CVS repository (or at least that's my impression).
Now, my current problem is that Schizo (host bridge) on US3 appears to be busted when reading/writing pci config space rapidly. You see, at this point I'd consult the chip documentation and see why it's generating the faults it's throwing. Oh wait, I don't have chip docs. Oh wait, FreeBSD, Linux, and "open"solaris all do things very differently from each other, much less differently from OpenBSD. Chip docs, if I had them, would make this process easier.
--Jason L. Wright
FreeBSD Doesn't Support US III
it doesn't
See FreeBSD booted multiuser
See FreeBSD booted multiuser on USIII
and?
Booting multiuser and having support in your tree are not the same thing. OpenBSD is booting multiuser, but we don't consider it "supported", nor really "in the tree" until you can build a release on it and for it. We're not there yet.
*sigh*
Shall I sharpen your knife so you can split these hairs finer? (Not aimed at Jason at all, but rather just this thread in total.)
OpenBSD adds support based on FreeBSD's support for US III. "Has support for" and "is a supported target" don't mean nearly the same thing. If all you care about is "has support for," then "is a supported target" is secondary. It mostly serves to qualify how solid various aspects of the support in "has support for" is. (e.g. "The MMU support's top notch, but handling peripheral 'foo' is dodgy.")
Meanwhile at Sun
Meanwhile, at Sun, J. Schwartz keep claiming about they corporate attitude of "transparency", "portability" (he even dare to talk about *BSDs), full availability of chipsets designs (eg. "open source hardware") ...
http://blogs.sun.com/roller/page/jonathan
I hope someone from his ivory tower will tell him how the reality is.
He is talking about the ultra
He is talking about the ultrasparc t1 (sun4v) which is supposed to be completely open. See http://opensparc.sunsource.net/nonav/osports.html
It is a shame Sun is not willing to make documentation of other architectures (ultrasparc III and higher) completely open.
Its a shame people waste time
Its a shame people waste time supporting their undocumented, shitty, obsolete hardware.
Its a shame people waste time
It's a shame people still have to use undocumented, shitty, obsolete hardware, so let's not add to their woes by forcing them to use undocumented, shitty, obsolete software as well.
Of all the things
Of all the things that could be said about Solaris, it is not undocumented, shitty or obsolete. I challenge any high-end UNIX systems vendor to claim that their *NIX is more scalable than Solaris
That one's easy: IRIX has sca
That one's easy: IRIX has scaled further than solaris, and was doing it earlier. (SGI has shipped single system images with 2048 processors running IRIX. I think they've topped out at 1024 for linux, with 512 being a more normal high end.)
open
I have a suspicion, having looking closely at the free OS support for US3 and it's associated peripherals, that the reason documentation isn't released is because Sun is embarrassed at the bugginess of it. The errata list for schizo must be longer than the docs.