The collected works of nyef - Page 1

Did some quick digging (google is your friend).

First, I found http://hardware.majix.org/computers/sgi.pi/keyboard.shtml , which gives instructions for wiring an adaptor for the Indigo 1 keyboard to a Personal Iris 4D/25. Not a bad start, but the link for the converter for standard PS/2 keyboards (the wrong way, no less) was dead.

Then, I came across http://www.sgistuff.net/mirrors/4dfaq/ , which has some basic information about the 4D series machines, including keyboard pinouts and basic protocol information. Looks like it's a fairly straightforward 12v UART hookup. An Arduino, some 12v<->5v level converters (MAX232 or similar, maybe), and a bit of hacking, and you could be in business.

Hope this helps.
Have you considered the flipside question: What would it take to get NetBSD running on this hardware?
mia wrote: I seem to recall there's a MicroExplorer emulator?

Not AFAIK. There are two Explorer I emulators/simulators, though. One written in C, and one written in Common Lisp.

The Explorer I was a fairly hefty NuBus-based piece of hardware, with a CPU (codenamed "Raven") built up out of discrete components. The Explorer II used the same chassis, but a faster CPU (codenamed "Hummingbird") that was a single IC. The microExplorer was basically a Hummingbird and some RAM on a mac-style NuBus card, using the Mac for all I/O.
This looks like the sort of project that can see promising results fairly quickly, but then get tied up with various undocumented incompatibilities and whatnot very shortly afterwards. The idea of running an IRIX userland in a Linux chroot is amusing, though. Or even just as the root filesystem. That would be worth some serious hack value, but I'd expect it to be a lot of work.
Two things come to mind.

First, "not it". At least, not at this point. I have lots of other things to do, so I am not particularly willing to play dedicated maintainer. For that matter, I still don't have any "fully working" MIPS64 Linux systems quite yet (by which I mean with a working bootloader, and SMP if it's not a Fuel, and there's that IOC3 IRQ conflict, and if it is a Fuel or Tezro then the graphics card driver, and then there's the L1 controller stuff...).

Second, can we use strace against Xsgi on IRIX itself to any useful purpose?
Kumba wrote:
nyef wrote: I have lots of other things to do, so I am not particularly willing to play dedicated maintainer.
Wasn't nominating you in any way to tackle this :) Just pointing out in general that it would require someone willing to upkeep it for some time because of the way the kernel can change its internals periodically.

Okay, just making sure. And who knows, maybe by the time this actually gets implemented, if it gets implemented, I'll be able to commit to doing that upkeep.

And I'll move the rest of my response elsewhere, so as not to threadjack too badly.
(A bit of background: I have an O350 netbooting, accessing its hard drive, keeping track of the time of day, and so on. Basically mostly working in single-processor mode, though serial is untested, the PS/2 keyboard/mouse ports are unsupported, the only use of the L1 is as a console device, and so on. I have an O300 that is not extremely far behind, but definitely needs some more work, and I'm still buying more hardware to work with.)

Kumba wrote:
nyef wrote: For that matter, I still don't have any "fully working" MIPS64 Linux systems quite yet (by which I mean with a working bootloader, and SMP if it's not a Fuel, and there's that IOC3 IRQ conflict, and if it is a Fuel or Tezro then the graphics card driver, and then there's the L1 controller stuff...).
Not to threadjack, but IOC3 IRQ conflict? IIRC, at least on Octane with the Metadriver, IOC3 should be requesting two IRQs, one for ethernet, and ethernet+2 for I/O by kb/mouse. Serial uses a UART polling hack built into 8250 core to run the serial ports for now (by telling it to use IRQ 0), but the end goal would be to make the Altix DMA-capable IOC3 driver work.

First off, I'm not (yet?) using the IOC3 Metadriver, just the IP27 drivers.

Second, that "just add $n$ to the IRQ number" idea is horrifically broken in a modern Linux kernel (dynamically-allocated IRQ numbers, after all). It probably works on IP30 because of the pcibr driver allocating numbers for all eight IRQ pins at once. Next thing we know, it'll turn out to vary depending on which type of system or expansion card the IOC3 is in.

Third, I misremembered. My notes say that it's a conflict between the SCSI controller and the USB host controller leading to lost interrupts, not the IOC3. Which isn't to say that there's not an IOC3 IRQ issue still, but that it's not at the level of "known IRQ conflict"... yet, if ever.

Fourth, none of the MIPS Bridge/XBridge/PIC drivers, even for IP30, support all of the song and dance involved with shared IRQs, or the mapping of interrupt lines other than INTA.

Fifth, while I have a plan of attack for sorting out my IRQ issues, currently it only affects my O300, so it's not a huge critical thing for me right now.

Sixth, Ralf was suggesting switching to IRQ domains...

Kumba wrote:
nyef wrote: Second, can we use strace against Xsgi on IRIX itself to any useful purpose?
Apparently so. I was digging into my chat logs from 2004, and Stan used a patched strace to monitor Xsgi calls to MGras, which helped him figure out some of the DMA bits needed to write the Impact driver. I don't think he ever released that patch, though. Would probably be useful for a lot of things outside of Linux porting.

Hrm... I wonder if we could do that to get better support with the VPro driver? Although first I'd need to get a working VPro machine...
Kumba wrote:
nyef wrote: First off, I'm not (yet?) using the IOC3 Metadriver, just the IP27 drivers.
Yup, Metadriver isn't in the tree just yet. I hope to start sending it in after 4.2, but we'll see. Technically, it's already in the tree, just under drivers/sn, and it's Altix only, so my actual patches move it to drivers/misc (where ioc4.c is at) and fixes it up to work on MIPS. Only problem is, I don't know if those changes break ia64/Altix, since I don't have one of those systems...

Looking at the in-kernel driver, it looks like only the BaseIO IOC3s are supported for dual interrupts, everything else is a single-interrupt setup... And the MENET 1/2/3 and MENET 4 card classes aren't even detected, or they're lumped in with the "serial" class!

Kumba wrote:
nyef wrote: Second, that "just add $n$ to the IRQ number" idea is horrifically broken in a modern Linux kernel (dynamically-allocated IRQ numbers, after all). It probably works on IP30 because of the pcibr driver allocating numbers for all eight IRQ pins at once. Next thing we know, it'll turn out to vary depending on which type of system or expansion card the IOC3 is in.
Won't argue with you there, but it does call request_irq() to get the IRQ numbers, and this works fine on IP30 and IP27 so far. It'll be interesting to see if it JustWorks(TM) with IP35 as well, once I can combine your code with some of my out-of-tree patches. I think the IRQ thing would only be an issue for the IOC3 PCI card, also known as a CADDuo (which I have stashed in a storage bin somewhere...).

I have a CAD Duo myself, though I haven't tried installing it anywhere yet. But, as mentioned above, it looks like the IRQ thing is only an issue for BaseIO "cards".

Kumba wrote:
nyef wrote: Fourth, none of the MIPS Bridge/XBridge/PIC drivers, even for IP30, support all of the song and dance involved with shared IRQs, or the mapping of interrupt lines other than INTA.
There's a lot not currently supported, such as hard-wiring the RRB allocations, Octane's screwed-up DMA mapping (which I highly suspect is giving me grief with >2GB RAM), using the one-wire drivers to query the NIC chips to build a hardware inventory, etc...

"Proper" PCI enumeration / resource allocation. Yet another case where I'm fairly sure I know how to get the hardware to work, but have no idea about how to get the kernel side to work / not mess things up.

Kumba wrote:
nyef wrote: Sixth, Ralf was suggesting switching to IRQ domains...
That or this new irqchip thing. Or are both used? It seems right as I finally figure something out in Linux, some wise guy goes off and implements an entirely new subsystem to replace it. I'll loathe the day fbdev/CONFIG_VT become dependent on systemd...if those devs ever get their way, that is :/

That might be the day to sit down and figure out how to replicate whatever the kernel needs from... it ... and start our own linux distro. Or just switch to FreeBSD. We'd have to somewhat start over with porting the kernel, but we could crib far more directly from OpenBSD...

Kumba wrote:
nyef wrote: Hrm... I wonder if we could do that to get better support with the VPro driver? Although first I'd need to get a working VPro machine...
Entirely possible, but way beyond my skill level. Stan was the graphics god. Even though I understand things better now than I did 10 years ago, it's still boggling how easy hardware hacking came to him.

A good part of that is practice and having a system for going about it. I've figured things out from as little as a ROM dump, some basic idea of the system architecture, and a list of entry points before. Not even any actual hardware!
I'm sitting here having a late dinner, doing a bit of reading, trying to come up with a suitable name for a directory in one of my projects, and then it hit me:

It should be possible to implement IRIX binary compatibility for Linux purely from user mode.

Yes, it would be slow in execution. But you would have the improved cycle time of not needing to deal with a full kernel build (or even "just" the dance for a loadable module), you can bring a normal debugger to bear, and so on. And once it's all running reasonably well, then you can consider building it as a kernel module. And until then, well, now you don't have to worry nearly as much about keeping it in sync with the Linux kernel because the ABI doesn't change incompatibly all that often.

So, how would one implement "user-mode IRIX"? Using all the same ptrace() tricks that user-mode Linux does.

The follow-up question is "can this be tied into binfmt-misc?", and that I have no idea about.
Crazy question, but... Can you mount the disk in another machine and hack the password file that way?
rwengerter wrote:
nyef wrote: It should be possible to implement IRIX binary compatibility for Linux purely from user mode.

The SimOS project achieved emulating IRIX. The SimOS project is open-source now and available on the internet.

That's cute, but very, very different from what I had in mind. I was thinking syscall-level simulation of IRIX by means of using ptrace() against a Linux process to intercept syscalls, signals, and the like, and present an overall IRIX-like process environment. Not a full-system simulation that requires a custom patched IRIX kernel!
Rotten timing. About two weeks ago I might have made you an offer. But at this point I don't need two Tezros. I wouldn't mind the DM3, though, if you're willing to sell that separately? I don't know what a DM3 is worth, though.

May you recover from this setback quickly, and go on to an even better situation than before. Starting over can suck, but it can also be an opportunity. After all, "freedom's just another word for nothing left to lose".
zagnut wrote: I have no way to connect a monitor to run hinv, so I immediately took it apart. It appears to be a single 300mhz r12000, with 1.5gb RAM, and Es video. Sadly, no drives.

I dont know much about SGI/Irix. I'm thinking about installing a MIPS Linux distro for one of two uses...either for use as a dedicated photo editing box, or simply as a NAS RAID array for my photography needs.

No monitor on an Octane? Don't attach a keyboard or mouse, connect to serial port 1 at 9600 8N1, power up. You should get access to the PROM that way. When buying an adaptor, keep in mind that SUN and SGI 13W3 connector pinouts are not the same. If you want EDID and the like, you'll need the SGI version. Look on eBay. Also, the PROM runs at a fixed resolution, and may require sync-on-green. YMMV.

As far as Linux goes, you'll need a patched kernel in order to run on Octane. It may (or may not?) be a bit of a project to get everything running.
zagnut wrote: I've always wanted a rack server. A 350 would be cool. Does this look like a good deal? http://www.ebay.com/itm/121679911986

Yes. I'd go for that myself if I were in the market for more IP35 nodes at the moment. Note that "item 1" does not have an IO9, thus is not very useful without being attached to another unit via a numalink cable (around $40-60, possibly plus shipping). These will run Linux in single-CPU mode if you'd rather run that than IRIX, although the drives may well already have IRIX installed.

Someone about 20 mins from me is selling a nice looking Origin 2000 rack. http://www.ebay.com/itm/271907648495 Too bad I don't have the $$$ and a pick up truck. :( Looks a little pricey for a 2000 though.

That looks like it's an Onyx 2000, doesn't it? The top chassis doesn't have any XIO slots (and some of the boards are rather suspiciously tagged "RM"), and the bottom chassis has an IO6-G rather than an IO-6. If you're careful, and you work with a friend, you should be able to take it apart to the point where you can lift the peices separately.

If I had space and power for it, and a suitable vehicle, I'd jump on that. Two days there, parts it until I can lift the bits into the car, two days back...
commodorejohn wrote:
ClassicHasClass wrote: I'll be the token classic Mac OS defender: under the hood, it's crap. But when it works, the user experience is excellent, which is why we're still saying FTFF in OS X 13 years after Steve-o eulogized OS 9 at WWDC.

I'll join you in that. I got my start on classic Mac OS, and even though it had its shortcomings I've never used another OS whose user experience was anywhere near as nice.

Ditto. As far as I'm concerned, System 6.0.7 with MultiFinder was a better Mac OS than any OSX.
ajw99uk wrote:
zagnut wrote: I guess my real question is, what should be installed after Win7...OSX or Linux? I've triple booted before, but that was Win2k, XP, and Ubuntu.

I'd be inclined (no more than that, not being a user of OSX at all) to do Linux last, regardless of the other OSes being installed, on the premise that with Linux you'll install a bootloader and that's easier if the things it is going to load are already in place.

Same here. Linux last, because anything else runs a good chance of screwing up the Linux bootloader, and then you're left trying to recover your Linux install. Getting a Linux bootloader to load another OS is typically far easier than getting another OS bootloader to load Linux.
Other interesting hardware documentation would be specifications for HUB, BEDROCK, and PIC.
Dennis Nedry wrote: TLDR; remote controlling OS X is a huge bag of hurt. Apple don't give a shit, and there are no workarounds :( . Welcome to the future of consumer oriented computing...

In general, remote controlling OS X is a huge bag of hurt. You want POSIX APIs that actually work? Reliable SIGTRAP handling? User programs not to be able to crash the kernel? Suspend-to-disk to function correctly? :lol:

I have a Mac Mini that I bought specifically to run an up-to-date OSX environment for work reasons (primary requirements: Skype, GoToMeeting, VNC, a real keyboard, not bloody Windows, and can keep its state if left unplugged for three weeks). But the lack of working suspend-to-disk renders the machine useless in my particular scenario. I can't even reasonably use it as a media machine, because iTunes loses track of where it was when the system restarts. At this point I'm debating installing Linux on it, even though I have no current use for another x86oid Linux box. :roll:
Given zip code 52722, I'd say Bettendorf or Riverdale, IA.
Welcome, welcome.

I see one on eBay right now as a buy-it-now, $160, free shipping, no drives, no drive caddies, damaged hinge of some sort... Apparently spins up, but no guarantee that it actually works . http://www.ebay.com/itm/Silicon-Graphics-CMNB007Y75-Indigo-2-Unix-Workstation-POWER-TESTED-ON-ONLY-Used-/331604819359?pt=LH_DefaultDomain_0&hash=item4d352ffd9f

If you do get this, note that it has the 13W3 connector for video. SGI and SUN 13W3 connectors are not entirely compatible, so be careful when you buy an adaptor.
Trippynet wrote: However, the env monitoring issue it has developed is more annoying as the setting keeps turning itself back on, meaning I've currently got to remove the case, hook up the L1 to my laptop and switch it off to prevent the system powering down after 30 seconds (slower replacement fans).

FWIW, I'm planning on adding a short DB9 M-F extension to run the L1 serial port out to a PCI slot cover (having salvaged a suitable piece of metal from an old SVGA card). A DB9 M connector, a DB9 F connector, a couple of jackscrews, a couple of corresponding nuts, some cable, and hey, no more having to open the case to get at the L1 serial port (at the cost of taking up a PCI slot, but that's not a problem for me at this point).
Black Cardinal wrote: Nobody who really cares about color accuracy trusts the default profiles for devices, they measure and create a custom one for each set of variables.

It's worse than that. Devices change as they age, and possibly with environmental conditions, so the profiles need to be updated periodically (annually? bi-annually? not sure what the actual period is, and it probably depends on how much you care about color accuracy).
hamei wrote: The power supplies don't generally cook themselves. The stupid little interface chip dies and then you can't tell it to turn on.

This is a bit of a crazy question, but... Do we know, or can we find out enough about the "stupid little interface chip" to be able to produce a replacement or some other workaround in order to revive the power supply instead of hacking in an ATX supply as a replacement?
ivelegacy wrote: but I am speaking about Octane +shoebox (triple PCI slot), isn't there a note page for Octane about that Sound card?
I am not sure it will be compliant
e.g. Fuel has a list of working sATA_PCI cards, and these cards are not working on Octane

As a data point here, a CAD DUO card doesn't physically fit in a Fuel PCI slot. I suspect that the Fuel PCI is run at 3v3 while the Octane PCI (which does take a CAD DUO) would be run at 5v. There's also something about different versions of the RAD PCI sound card for Fuel?
ivelegacy wrote: a Note to me:
there is also a simple Dual-Port Serial I/O Board PCI , unfortunately It does not provide a second pairs of lan, but it's nice to know this board exists

  • SGI P/N 030-1657-003

My notes on IOC3-based boards have this down as "Fuel two-port serial". I have no idea if it's 5v-compatible or not.

Code: Select all

IOC3

NIC part number "030-1657-".

Has a TL16PIR552 dual-UART on board.  No sign of a NIC, oddly enough.

There is also an "Altix Serial" device, apparently.

Code: Select all

IOC3

NIC part number "030-1664-".

Unknown if this is a built-in or a PCI card... or part of the IO10
(not likely).  Unknown what hardware is present beyond the two serial
ports.

I have no idea if this is even seen "in the wild".

Now, if you're just looking to run stuff off of UARTs, have you considered using something like an EL-16 terminal server? Sits on your network, has sixteen serial ports (that seem to require custom cables, but they're not hard to make), doesn't tie up a PCI or XIO slot... But good luck finding one with a power supply at a decent price.
Krokodil wrote:
dukzcry wrote: Octane??? Oh, man...
Wasn't Indy the only machine for which SGI released a minimum portion of needed documentation? Also the simpler architecture, the more chances to get a good emulator, we're hunting for more cycles anyway. And recent machines are not supported by old IRIX releases. Emulation of a mature graphics subsystem is another question though :(


Octane is just an example.It could be any SGI system that could showcase the best of SGI. Unfortunately, if I'm not mistaken alot of the documentation was either lost or destroyed, like the information on the O2's ICE chipset.

For Octane specifically, we could do with documentation on IOC3, HEART, Impact (MardiGras?), and Odyssey. On the other hand, there are open-source operating systems which run on this hardware already, and may be a usable source of information.
I'm running Gentoo on an Origin 350 as my main MIPS system (currently based on kernel 4.2.0). There's an FPU bug that affects t5 CPUs (preventing proper FPU operation for n32 and n64 systems, but not affecting o32 systems), and what looks like some sort of TLB bug that needs hunting down, and it's only running one CPU, but things are generally stable.

I have a couple of IP30 systems to install Linux on, I just haven't settled in to trying to get them to work.

Code: Select all

*    - Greater than 2GB memory causes problems with DMA.  This is a long-standing
*      problem and patches to fix it by DMA experts would be greatly appreciated!

On my list to hack on once I get a working IP30 setup. IP35 doesn't have a problem with this, and I have some experience with getting DMA working on XBridge and PIC, and BRIDGE is basically XBridge so I don't expect too much trouble on that front.

Code: Select all

*    - Do not use OHCI-based USB cards in Octane.  They're broke on this machine.
*      Patches are welcome to fix the issue.

On my O300, I find that enabling the OHCI driver causes the SCSI driver to stop functioning (!).

Code: Select all

*    - Serial support on the Octane uses a very basic UART driver that drives
*      the 16550A chip on the IOC3 directly.  It does not use interrupts,
*      only a polling routine on a timer, which makes it slow and CPU-
*      intensive.  The baud rate is limited to no more than 38.4kbps on
*      this driver.  Patches for getting the Altix IOC3 serial driver to
*      work (which uses DMA and supports faster baud rates) are welcome.

Working on IP35, using the DMA-based driver. Took a bit to sort out endianness issues and DMA and whatnot, but was fairly straightforward overall.

Code: Select all

*    - UHCI Cards are known to have issues, but should still have some functionality.
*      This issue primarily manifests itself when using pl2303 USB->Serial adapters.

I have a few pl2303 adapters handy, not sure about the UHCI cards, though.

Unfortunately, the IP35 code conflicts a bit with the IP30 code, so merging things is a bit tricky.
Kumba wrote: After a ~2 month hiatus, I've got the Octane running and have been building N32 stages for the last week. mips4_r12k_n32 and mips3_n32 are done, but then I discovered a ~2012 uclibc-based stage4, mips3 big-endian, that another Gentoo dev rolled, and have been trying to bit-bang that into updating so I can use it as a seed stage to finally create new MIPS uClibc-based stages for generating new netboot images. Install stages are only good if you can boot something to install them with. Last uclibc stages were done in ~2006 or 2007.

I have bad news for you: If you check, you'll find that the FPU won't kick over to FR1 mode, which is required for N32 and N64. It's on my shortlist to try and fix, but my project bandwidth has shifted away from MIPS kernel hacking for the past while.

I had tried a musl-based netboot image, but I have been experimenting with PAGE_SIZE=64K on my Octane/Origin kernels lately, which really helps speed up compiling (shaves ~45mins off of a binutils compile). However, musl seems to hardcode the PAGE_SIZE it was built with somewhere, so if you booted a kernel with PAGE_SIZE=4K with this musl netboot....all sorts of problems cropped up. Glibc is just too bloated to make an all-purpose netboot, as IP22-class systems have severe limitations on the size of the kernel image that can be loaded, and IP32 can get fussy as well.

Interesting (probably bad) news: I have a short C test program that causes my O350 to reliably do something weird, and one of the failure modes is a bus error. And it runs perfectly well on my ERLite-3. I think it's a TLB thing, but haven't tracked it down beyond getting a test program, which I did hand off to Ralf so that there'd be more than one set of eyes on the problem. http://paste.lisp.org/display/160204 if you want to take a look.

nyef wrote:

Code: Select all

*    - Greater than 2GB memory causes problems with DMA.  This is a long-standing
*      problem and patches to fix it by DMA experts would be greatly appreciated!

On my list to hack on once I get a working IP30 setup. IP35 doesn't have a problem with this, and I have some experience with getting DMA working on XBridge and PIC, and BRIDGE is basically XBridge so I don't expect too much trouble on that front.

Hopefully I'll be able to get you a working beta-netboot within the next 1-2 weeks for the Octane, if this uclibc experiment pans out. The DMA thing has been driving me up the wall, because once the 2GB barrier is worked around and I can hunt down some more high-density RAM chips, I can maybe use a ramdisk for some of the compiling to further speed things up.

I'm still keeping an eye out for high-density Octane SIMMs myself, even if I haven't managed to fix (or work around) the bent (and now stripped) screw that's keeping me from getting at the mainboard with the 2x600 CPU module.

nyef wrote:

Code: Select all

*    - Serial support on the Octane uses a very basic UART driver that drives
*      the 16550A chip on the IOC3 directly.  It does not use interrupts,
*      only a polling routine on a timer, which makes it slow and CPU-
*      intensive.  The baud rate is limited to no more than 38.4kbps on
*      this driver.  Patches for getting the Altix IOC3 serial driver to
*      work (which uses DMA and supports faster baud rates) are welcome.

Working on IP35, using the DMA-based driver. Took a bit to sort out endianness issues and DMA and whatnot, but was fairly straightforward overall.

Got a stand-alone patch for that? Fixes for that are probably distinct from the core IOC3 mess. Would be interesting to see if Octane's DMA situation is sane enough to run that. After I fix the "ttyIOCx" names back to a proper "ttySx" naming scheme...

As part of http://git.linux-mips.org/cgit/nyef/linux-ip35/log/?h=v4.2-ioc-changes , there is commit http://git.linux-mips.org/cgit/nyef/linux-ip35/commit/?h=v4.2-ioc-changes&id=6142674bcb716f1702ec2e364887a4434f75720d , which is the IOC3 serial magic.

I've got a possible further angle so that we don't have to do this constant "blah, blah, and on SGI MIPS we also have to twiddle this bit in the DMA address" thing. And, now that I'm thinking about it, my patches may not work for you due to the differences between the DMA setup between the IP30 bridge driver and the IP35 bridge driver.

nyef wrote:

Code: Select all

*    - UHCI Cards are known to have issues, but should still have some functionality.
*      This issue primarily manifests itself when using pl2303 USB->Serial adapters.

I have a few pl2303 adapters handy, not sure about the UHCI cards, though.

pl2303 converters are junk anyways. I've switched to using the XS880 from U.S. Converters, which is based off of an FTDI FT232RL chipset and ZyWyn ZT213LEEA serial driver. They're not cheap at about ~$44 a pop, but all of the problems I've had with serial consoles has practically vanished since picking several of these up. Have yet to test them in the Octane, though, but I assume any problems will be in the IP30 code and not tied to these devices or the Linux driver for them.

Yeah, the pl2303 adapters are junk. Realized only after having accumulated three or four of them that they were less than excellent. Promptly started transitioning to using the network interfaces on system controllers where appropriate (an HP iLO, a Sun ALOM), and I'm planning on making a couple more cables for my EL-16 to cover the rest of what I have hooked up via USB-serial adapters. My primary use-case is remote management of a stack of machines over a VPN, so the USB-serial bit was more of a hack to get things working than a real solution.

nyef wrote: Unfortunately, the IP35 code conflicts a bit with the IP30 code, so merging things is a bit tricky.

Yeah, we still gotta work on that :) Getting the IOC3 bits hammered out and upstreamed will simplify things a bit. I just got busy the last two months, and may do so again in the new year (but we'll see).

I'm wondering if it might not make sense for me to create an IP30 branch from my current IP35 tree and basically try to bring it up like a new port, cribbing liberally from your existing patch set.
Kumba wrote:
nyef wrote: I have bad news for you: If you check, you'll find that the FPU won't kick over to FR1 mode, which is required for N32 and N64. It's on my shortlist to try and fix, but my project bandwidth has shifted away from MIPS kernel hacking for the past while.

Is this affecting IP35-only? I haven't had much of an issue on IP30 running N32. IP27 had a minor buggeroo w/ FP support when Maciej added a patch that didn't account for IP27's setting FCSR to random values on a cold restart. That was quickly detected and fixed, though. That all said, I haven't tried running any programs that fully exploit N32 and FP yet, either.

All R1x000 CPUs. The FPU implementation/revision ID register is defined to have the top half wired to zero, but the kernel treats it as a bunch of flags for features present or not present (probably a mips32/mips64 thing, and since mips4 predates them we get bit).

nyef wrote: Interesting (probably bad) news: I have a short C test program that causes my O350 to reliably do something weird, and one of the failure modes is a bus error. And it runs perfectly well on my ERLite-3. I think it's a TLB thing, but haven't tracked it down beyond getting a test program, which I did hand off to Ralf so that there'd be more than one set of eyes on the problem. http://paste.lisp.org/display/160204 if you want to take a look.

Running this won't crash the kernel, will it? Don't want to interrupt the compile run on the uclibc stuff if it will...

I've not noticed it crash the kernel, but you may want to play it safe anyway. It also might only crash on the smaller page size.

nyef wrote: I've got a possible further angle so that we don't have to do this constant "blah, blah, and on SGI MIPS we also have to twiddle this bit in the DMA address" thing. And, now that I'm thinking about it, my patches may not work for you due to the differences between the DMA setup between the IP30 bridge driver and the IP35 bridge driver.

I got a feeling a lot of the [X]BRIDGE setup code between IP27, IP30, and IP35 can be unified a bit more over time. Make the mess a lot easier to read and follow. IP27's big issue is the resource allocation part. I ended up changing that to the XIO window bases, and it works for internal PCI stuff, but that system was not picking up on a USB2.0 card I installed via an XIO shoehorn. Ended up pulling that card before I thought to revert to the original code and test again.

I have near certainty that they can be unified. The main differences are the IRQ mapping, and that 512-meg DMA thing on IP30. And since the DMA thing is for D32 DMA, which neither IP27 nor IP35 are using (and I'll argue that IP30 probably shouldn't use either)...

nyef wrote: I'm wondering if it might not make sense for me to create an IP30 branch from my current IP35 tree and basically try to bring it up like a new port, cribbing liberally from your existing patch set.

That should work. I can cherry pick as needed until things are more unified. I track upstream a lot faster, using rolling new patches from my local git repo when a new kernel is released and Ralf pulls from upstream. 4.4 looks to still be a few weeks off, probably 2-3rd week of January, if I had to guess. I need to re-submit patches I had for 4.4 for 4.5 (or 4.6), as Ralf didn't get to them for the 4.4 merge window.

Okay, so if I start within the next month, rebasing to a 4.4-rc tree is probably in order as a first step.
If it was missing the hard drives then there's a CD in the drive, you can't get to the point in the boot sequence shown in the pictures without an IRIX kernel somewhere.

That vanished quickly, which isn't at all surprising: The unit obviously at least mostly works, and that was a nice price for it.
mopar5150 wrote: How the heck did I miss that one? Right in my own back yard.

How did you miss it? You blinked . It was posted and sold in a couple of hours, possibly less.
See MIPS Run (first edition) says that the R10k has an R4000-style cache, and gives example code. I have no idea at this point if it really is an R4000-style cache or if there's some special trick to it. Presumably the Linux kernel source could be a resource, although if you're looking for code to compare that with for debug purposes then that's just sending you back to your starting point.
ivelegacy wrote: busybox has been compiled as "MIPS-I", can cause problems on a MIPS-IV machine ?

IIRC, MIPS-II is MIPS-I plus a handful of new instructions plus pipeline interlocks to eliminate some of the hazards. MIPS-IV is superscalar with speculative execution and whatnot, so the pipeline hazards are even less of an issue. On the other hand, it might still be an issue for some reason or another.
ivelegacy wrote: the point is: how fast is it (I'd like to see a benchmark) & how good is USB engine?

Actually, I have a question here: Can it run with a USB hub and an external disk, or does it need to be a single USB stick and no peripheral expansion other than via the network ports?
dexter1 wrote: 1) Reading up on emulator design from http://www.codeslinger.co.uk/

Planning on writing an emulator, or just interested in how they work?
dexter1 wrote:
nyef wrote: Planning on writing an emulator, or just interested in how they work?

Mainly interested in the different techniques of emulating CPU's, although my main motivation for reading up is to help make emulating SGI machines a reality. Fortunately, MIPS emulation is relatively straightforward and several emulators already have been written. The hard part is the ASIC's surrounding the core, but that's not different from many other systems.

The problem I've found is a distinct lack of R10k/R12k/R14k/R16k CPU emulators, which means more work required in order to support Octane or Origin (including Fuel and Tezro as Origin variants). I suppose O2 or Indy support might be possible in the context of QEMU, though.

So, what pointless thing am I doing right now? Reading fiction instead of writing some code to load an Octane PROM, map it into some semblance of an address space, and start simulating instructions. Which has been on my to-do list for a week now, sidelined partly by work and partly by reading fiction.

We might want to spin off a new topic for emulation stuff (another emulation topic?) if we want to continue on this line. And if you are aware of any R10k type CPU emulators, please let me know. It might save me a pile of work. (-:
In theory, it shouldn't be too hard, as long as you have a working Common Lisp system. ECL or Clisp might Just Work. SBCL would require some porting effort (and there's a known bug on MIPS that I haven't gotten around to writing a test case for but is easy to fix), but that's one of the easier types of port to do.
dexter1 wrote:
ivelegacy wrote: don't expect to emulate Octane, Fuel, Tezro, etc
the best we can do is within: { Indy/R5K, O2/R5K }

That is not entirely true. GXEmul claims partial O2-R10K emulation, but currently without Crime chipset and AIC7880 SCSI support, since there are no specs.
With Indy+newport emulation also comes R4K Indigo2 emulation with EISA support and XL24 framebuffer. GR3/GU1 cards and Impact subsystem are unsupported, as are R10K CPU's on Indigo2 systems.

Attempts of emulating Octanes, Fuels and other IP35 derivatives is IMO not going to be very fruitful in the foreseeable future since the CPU emulation needs some sort of Binary Translation to attain sufficient processing speed. Dynamic Recompilation will probably not be able to keep up.

This seems like nonsense to me. Your slowest possible Octane configuration is a 195MHz single-CPU system. That's slower than a PlayStation 2. And even if you don't have full-speed emulation, an emulator can still be useful, depending on what you want it for.

GXEmul seems to be dead as of nearly a year and a half ago now, in the middle of a major restructuring?
I don't know that I'm keeping an archive necessarily, but I took images of my SGI install CDs not so long ago. A pretty basic "dd if=/dev/cdrom of={some-file-name}" arrangement, making sure to include the part number from the CD as part of the file name. Didn't really bother with md5sums or anything like that.