Bug 87856

Summary: Driver load fails with no error on ppc64 host
Product: Mesa Reporter: 65a <freedesktopbugs>
Component: Drivers/Gallium/r600Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: cdenatale3, freedesktopbugs, herminio.hernandezjr, marcus, mathieu.malaterre, oded.gabbay
Version: 10.2   
Hardware: PowerPC   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: Xorg log, dmesg | fgrep radeon, and glxinfo with LIBGL_DEBUG set

Description 65a 2014-12-30 08:59:34 UTC
Created attachment 111507 [details]
Xorg log, dmesg | fgrep radeon, and glxinfo with LIBGL_DEBUG set

I have a PowerPC G5 (ppc64 with 64-bit userland) with working KMS using a (ostensibly x86) Radeon HD4650. KMS is enabled and the kernel and Xorg parts of KMS/DRI2 appear to be attaching correctly.

After X starts, running LIBGL_DEBUG=verbose glxinfo outputs the following:
libGL: OpenDriver: trying /usr/lib64/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/r600_dri.so
libGL: driver does not expose __driDriverGetExtensions_r600(): /usr/lib64/dri/r600_dri.so: undefined symbol: __driDriverGetExtensions_r600
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: failed to load driver: r600
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so
libGL: driver does not expose __driDriverGetExtensions_swrast(): /usr/lib64/dri/swrast_dri.so: undefined symbol: __driDriverGetExtensions_swrast
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: failed to load driver: swrast
Error: couldn't find RGB GLX visual or fbconfig
Error: couldn't find RGB GLX visual or fbconfig

I am under the impression that the undefined symbol should not be causing problems after reading this bug: 
https://bugs.freedesktop.org/show_bug.cgi?id=72198

Nonetheless, glxgears will not run, and in general it appears mesa acceleration is not occurring. Mesa was compiled with support for llvm and the r600 generator.
I am attaching various logs. I would be glad to test patches or hacks :)
Comment 1 Michel Dänzer 2015-01-07 07:20:44 UTC
See bug 71789.
Comment 2 65a 2015-01-10 03:06:45 UTC
It appears that the same issue as mentioned by Michael Danzer is affecting Linux. Setting pixel depth to 16 does resolve the issue, and properly reports Gallium support. I am testing the patches now. Is there any plan to integrate these patches? What work needs to be done?
Comment 3 65a 2015-01-10 03:37:42 UTC
Patches do not work for r600 as they contain r300 specific code
Comment 4 kristof 2015-05-18 09:38:30 UTC
Hello,

I've successfully install Debian Jessie on iMac G5 revC (iSight)
Facing same issue, I've followed these instructions here in order to downgrad mesa packages : http://ppcluddite.blogspot.fr/2012/03/installing-debian-linux-on-ppc-part-iv.html#graphics

uname -a : Linux iMac17c 3.16.0-4-powerpc64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) ppc64 GNU/Linux

0000:04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV380 [Radeon X600] (prog-if 00 [VGA controller])
	Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] RV380 [Radeon X600]
	Flags: bus master, fast devsel, latency 0, IRQ 25
	Memory at 98000000 (32-bit, prefetchable) [size=128M]
	I/O ports at 0400 [size=256]
	Memory at 90000000 (32-bit, non-prefetchable) [size=64K]
	Expansion ROM at 90020000 [size=128K]
	Capabilities: [50] Power Management version 2
	Capabilities: [58] Express Endpoint, MSI 00
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [100] Advanced Error Reporting
	Kernel driver in use: radeon

Workaround :
1) Jessie fresh install graphics results (no firmware non-free installed), able to log in graphic session :

LIBGL_DEBUG=verbose glxinfo | grep render
libGL: screen 0 does not appear to be DRI3 capable
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
direct rendering: Yes
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_query_renderer, GLX_OML_swap_method, GLX_SGIS_multisample, 
OpenGL renderer string: Software Rasterizer
    GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp, 

dmesg | egrep 'drm|radeon' complains about microcode :
[   13.715213] [drm] Loading R300 Microcode
[   13.732935] radeon 0000:04:00.0: firmware: failed to load radeon/R300_cp.bin (-2)
[   13.732962] [drm:r100_cp_init] *ERROR* Failed to load firmware!
[   13.732971] radeon 0000:04:00.0: failed initializing CP (-2).
[   13.732978] radeon 0000:04:00.0: Disabling GPU acceleration


2) then install it with non-free firmware :

dmesg | egrep 'drm|radeon' happy because it find the microcode :-)
[   13.469992] [drm] radeon: irq initialized.
[   13.470031] [drm] Loading R300 Microcode
[   13.560891] radeon 0000:04:00.0: firmware: direct-loading firmware radeon/R300_cp.bin
[   13.561237] [drm] radeon: ring at 0x0000000078010000

but it breaks something :-(

LIBGL_DEBUG=verbose glxinfo | grep render
libGL: screen 0 does not appear to be DRI3 capable
libGL: pci id for fd 4: 1002:5b62, driver r300
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/tls/r300_dri.so
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/r300_dri.so
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: r300
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: couldn't find RGB GLX visual or fbconfig

3) according to the procedure provides in the link above, I've applied patch :

LIBGL_DEBUG=verbose glxinfo | grep render
libGL: screen 0 does not appear to be DRI3 capable
libGL: pci id for fd 4: 1002:5b62, driver r300
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/tls/r300_dri.so
libGL: OpenDriver: trying /usr/lib/powerpc-linux-gnu/dri/r300_dri.so
libGL: driver does not expose __driDriverGetExtensions_r300(): /usr/lib/powerpc-linux-gnu/dri/r300_dri.so: undefined symbol: __driDriverGetExtensions_r300
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
libGL: Can't open configuration file /home/kristof/.drirc: No such file or directory.
direct rendering: Yes
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
OpenGL renderer string: Gallium 0.4 on ATI RV370
    GL_NV_blend_square, GL_NV_conditional_render, GL_NV_fog_distance, 
    GL_OES_depth_texture, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,

dmesg | egrep 'drm|radeon'
[   13.085940] [drm] Initialized drm 1.1.0 20060810
[   13.518475] [drm] radeon kernel modesetting enabled.
[   13.518613] fb: switching to radeondrmfb from OFfb ATY,Aphrod
[   13.542630] fb: switching to radeondrmfb from OFfb ATY,Aphrod
[   13.543441] radeon 0000:04:00.0: enabling device (0006 -> 0007)
[   13.544541] [drm] initializing kernel modesetting (RV380 0x1002:0x5B62 0x1002:0x5B62).
[   13.544639] radeon 0000:04:00.0: Using 64-bit DMA iommu bypass
[   13.544658] [drm] register mmio base: 0x90000000
[   13.544663] [drm] register mmio size: 65536
[   13.544841] radeon 0000:04:00.0: Invalid ROM contents
[   13.544868] radeon 0000:04:00.0: Invalid ROM contents
[   13.544881] [drm:radeon_get_bios] *ERROR* Unable to locate a BIOS ROM
[   13.544972] [drm] Using device-tree clock info
[   13.545019] [drm] Generation 2 PCI interface, using max accessible memory
[   13.545031] radeon 0000:04:00.0: VRAM: 128M 0x0000000098000000 - 0x000000009FFFFFFF (128M used)
[   13.545040] radeon 0000:04:00.0: GTT: 512M 0x0000000078000000 - 0x0000000097FFFFFF
[   13.549473] [drm] Detected VRAM RAM=128M, BAR=128M
[   13.549489] [drm] RAM width 128bits DDR
[   13.549842] [drm] radeon: 128M of VRAM memory ready
[   13.549850] [drm] radeon: 512M of GTT memory ready.
[   13.549915] [drm] GART: num cpu pages 8192, num gpu pages 131072
[   13.550164] [drm] radeon: 1 quad pipes, 1 Z pipes initialized.
[   13.579036] [drm] PCIE GART of 512M enabled (table at 0x0000000098040000).
[   13.582052] radeon 0000:04:00.0: WB enabled
[   13.582150] radeon 0000:04:00.0: fence driver on ring 0 use gpu addr 0x0000000078000000 and cpu addr 0xc00000004d1f0000
[   13.583048] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[   13.583066] [drm] Driver supports precise vblank timestamp query.
[   13.583081] radeon 0000:04:00.0: radeon: MSI limited to 32-bit
[   13.583135] [drm] radeon: irq initialized.
[   13.583180] [drm] Loading R300 Microcode
[   13.655061] radeon 0000:04:00.0: firmware: direct-loading firmware radeon/R300_cp.bin
[   13.655383] [drm] radeon: ring at 0x0000000078010000
[   13.655421] [drm] ring test succeeded in 0 usecs
[   13.655637] [drm] ib test succeeded in 0 usecs
[   13.689091] [drm] Connector Table: 8 (imac g5 isight)
[   13.689133] [drm] No TMDS info found in BIOS
[   13.689285] [drm] No TV DAC info found in BIOS
[   13.689444] [drm] Radeon Display Connectors
[   13.689450] [drm] Connector 0:
[   13.689454] [drm]   DVI-D-1
[   13.689459] [drm]   HPD1
[   13.689465] [drm]   DDC: 0x68 0x68 0x68 0x68 0x68 0x68 0x68 0x68
[   13.689470] [drm]   Encoders:
[   13.689475] [drm]     DFP1: INTERNAL_TMDS1
[   13.689479] [drm] Connector 1:
[   13.689483] [drm]   VGA-1
[   13.689489] [drm]   DDC: 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64
[   13.689494] [drm]   Encoders:
[   13.689498] [drm]     CRT2: INTERNAL_DAC2
[   13.689503] [drm] Connector 2:
[   13.689507] [drm]   SVIDEO-1
[   13.689511] [drm]   Encoders:
[   13.689515] [drm]     TV1: INTERNAL_DAC2
[   13.888366] [drm] fb mappable at 0x980C0000
[   13.888385] [drm] vram apper at 0x98000000
[   13.888390] [drm] size 5242880
[   13.888395] [drm] fb depth is 24
[   13.888399] [drm]    pitch is 5760
[   13.955320] radeon 0000:04:00.0: fb0: radeondrmfb frame buffer device
[   13.955425] radeon 0000:04:00.0: registered panic notifier
[   13.984018] [drm] Initialized radeon 2.39.0 20080528 for 0000:04:00.0 on minor 0

PS : can someone tells me if it this an "abnornal" things in the last dmesg | egrep 'drm|radeon' please ?

Thanks and have a nice day

Kristof
Comment 5 Alex Deucher 2015-05-18 14:19:53 UTC
(In reply to kristof from comment #4)
> PS : can someone tells me if it this an "abnornal" things in the last dmesg
> | egrep 'drm|radeon' please ?
> 
> Thanks and have a nice day

The kernel side looks fine.  It appears to be a problem with the usermode stack.  You might be able to work around it by disabling acceleration.  Try adding:
Option "NoAccel" "True"
to the device section of your xorg config.

I'm not really sure how well the usermode stuff works on BE systems.
Comment 6 kristof 2015-05-18 19:22:04 UTC
(In reply to Alex Deucher from comment #5)
> (In reply to kristof from comment #4)
> > PS : can someone tells me if it this an "abnornal" things in the last dmesg
> > | egrep 'drm|radeon' please ?
> > 
> > Thanks and have a nice day
> 
> The kernel side looks fine.  It appears to be a problem with the usermode
> stack.  You might be able to work around it by disabling acceleration.  Try
> adding:
> Option "NoAccel" "True"
> to the device section of your xorg config.
> 
> I'm not really sure how well the usermode stuff works on BE systems.
Hi Alex and thanks for response,

Forgot to mention that I don't use :
* xorg.conf
* no options in my yaboot.conf
* all the OS installation stand by default, just patch Mesa-lib

In this case, should I generate a xorg.conf then use it ?

Regards,

Kristof
Comment 7 Alex Deucher 2015-05-18 21:30:51 UTC
All it needs to contain is the following.

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "NoAccel" "true"
EndSection
Comment 8 kristof 2015-05-19 09:00:11 UTC
(In reply to Alex Deucher from comment #7)
> All it needs to contain is the following.
> 
> Section "Device"
>     Identifier "Radeon"
>     Driver "radeon"
>     Option "NoAccel" "true"
> EndSection

Hi ALex,

Following your advise, I've putted it in a xorg.conf
Consequence : system disabled Gallium then returns on Software Rasterizer methode.
It results that it improves perf, glxgears (without vblank=0 option set) run now 102 fps (60 before)

Regards,

Kristof
Comment 9 kristof 2015-05-21 06:55:22 UTC
Hi Alex,

Workaround progress : delete xorg.conf; Why ?
According radeon man page : http://manpages.debian.org/cgi-bin/man.cgi?sektion=4&query=radeon&apropos=0&manpath=sid&locale=en
Option "AccelMethod" "string"
              Chooses  between  available  acceleration  architectures.  Valid
              values are EXA (for pre-TAHITI GPUs) and  glamor  (for  R300  or
              higher). The default is glamor as of TAHITI, otherwise EXA.

By checking my Xorg.0.log, I realized that "EXA" submodule is loaded instead "glamor" ... (noticed in my workaround firmware non-free installed + mesalib not patched)
Since my gpu is a R300 (RV380-X600) family submodule should be "glamor", right or mistake from me due to misunderstanding something ?

Regards and have a nice day,

Kristof
Comment 10 Alex Deucher 2015-05-21 13:13:24 UTC
(In reply to kristof from comment #9)
> By checking my Xorg.0.log, I realized that "EXA" submodule is loaded instead
> "glamor" ... (noticed in my workaround firmware non-free installed + mesalib
> not patched)
> Since my gpu is a R300 (RV380-X600) family submodule should be "glamor",
> right or mistake from me due to misunderstanding something ?

All pre-SI cards use EXA by default.  I'm not even sure the r300 cards are capable of using glamor anymore.
Comment 11 herminio.hernandezjr 2015-08-23 19:14:58 UTC
I have installed the test suite piglit on my iBook G4 and have started running test my Radeon GPU (r300). I am willing to share the tests results if anyone thinks it will help with this bug.
Comment 12 Alex Perez 2015-08-26 20:15:51 UTC
I can confirm that the driver fails with no error here as well, on an e5500-based ppc64 system. Everything works (with acceleration) when depth is set to 16 bits. I know a handful of other people who have had the same problem on 32-bit ppc hardware (modern, non-macppc), so we can be reasonably confident that this is a broad ppc-specific issue (possibly be/byte-swapping related?)
Comment 13 Mathieu Malaterre 2016-04-28 09:42:10 UTC
I believe that all r600 issues have now been solved (thx Oded!). The remaining of the comments relates to r300 (and thus is a dup of #71789). I believe this bug can be closed.
Comment 14 Michel Dänzer 2016-04-30 06:14:38 UTC
Resolving per comment 13, thanks for the reminder.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.