Created attachment 134850 [details]
dmesg with oops
dmesg output attached.
I'll admit this is a somewhat bizarre hardware combination (PC GeForce 210 card in a Sun Ultra 45), but it probably shouldn't Oops on a null pointer.
Looks like if we error out somewhere we never have before, and the attempt to clean things up ends up using something that hasn't been initialized yet. Can you try booting with nouveau.debug=trace to see where we end up going wrong, which should hopefully point out the bad piece of code wrt error recovery?
Created attachment 134875 [details]
debug.trace output from modprobe nouveau
Requested info attached -- taken from manually doing modprobe nouveau debug=trace.
OK, so looks like it very successfully creates a GT214_DISP object, and then proceeds to call nv50_display_create. This then does not trigger *any* further traces, and errors out. It errors out before the dmac is initialized, and I think something in the list head thing fails.
Now, as I recall, SPARC has 8k pages. You could try bumping some of those 4096 values up to 8192 and see if that magically makes it work, at least a little (like the nouveau_bo_new).
If you're sufficiently interested, you could add a lot more prints throughout that file to see exactly what fails, and then try to resolve it.
It might be an uphill battle though - a bunch of stuff is tied to 4K pages, I think.
I believe this patch should fix your crash, but won't help you get the board running. If you want to do that, you'll need to figure out which thing is failing.
OK -- I'll try giving that a go some time this week. To be honest I'm no too bothered about actually getting this card working on an Ultra 45...