Bug 33542

Summary: radeon: Don't read BIOS in VRAM on SPARC64
Product: Drivers Reporter: Jason Detring (detringj)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED OBSOLETE    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.39-rc3 Subsystem:
Regression: No Bisected commit-id:
Attachments: DRM and Radeon dmesg block containing kernel panic.

Description Jason Detring 2011-04-18 00:20:40 UTC
Created attachment 54572 [details]
DRM and Radeon dmesg block containing kernel panic.

Hi!

Hurray!  Radeon KMS works again on SPARC64!  Almost.

Test platform is a Sun Ultra 45.  Test board is a Sun XVR-300 (RV380 0x1002:0x5B64) on a PCI-e bus.

There's a kernel panic when calling igp_read_bios_from_vram() from radeon_get_bios().  See attached dmesg capture.

Patching around it with

--- a/drivers/gpu/drm/radeon/radeon_bios.c      2011-04-17 19:31:04.000000000 -0500
+++ b/drivers/gpu/drm/radeon/radeon_bios.c      2010-09-28 20:01:22.000000000 -0500
@@ -432,8 +432,10 @@
        uint16_t tmp;
 
        r = radeon_atrm_get_bios(rdev);
+#if !defined(__sparc__)
        if (r == false)
                r = igp_read_bios_from_vram(rdev);
+#endif /* !__sparc__ */
        if (r == false)
                r = radeon_read_bios(rdev);
        if (r == false) {


gives me a framebuffer console again.  After which, the usual desktop stack works as well (X11, mesa, textured video).

I'm not sure this is the correct way to code the fix, stylistically speaking.  Although I don't know of any sparc64 machines sporting a Radeon IGP, I'm sure it could happen someday.  It also seems other architectures might run into this as well.
Comment 1 Jason Detring 2011-04-18 06:47:24 UTC
Wow, I really messed this report up.  I mistakenly copy-and-pasted the wrong kernel version from another Radeon bug I'm toying with.

This particular dmesg block and patch was from the drm-2.6 tree, on the master branch (2.6.36-rc6, aka drm-2.6-899611e), which is neither current for the main linux-2.6 tree nor the sundry drm-2.6 staging branches.  Oops.

The current drm-2.6-e001978 tree seems to bring up a framebuffer console with no patching necessary.  There's something wrong with the command processor, so all acceleration is disabled, but that's a topic for another ticket.

Closing this ticket, sorry for the noise.