|
Bugzilla – Full Text Bug Listing |
| Summary: | Radeon/Nouveau gallium drivers: X crashes at startup due to use of SSE2 on non-SSE2 capable machines | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 12.1 | Reporter: | Nikita Kravets <nikita.kravets> |
| Component: | X.Org | Assignee: | Jiri Slaby <jslaby> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <xorg-maintainer-bugs> |
| Severity: | Critical | ||
| Priority: | P3 - Medium | CC: | Andrei.Nevar, forgotten_eXmWxlJYem, forgotten_loSYVQXuwD, ismail, jslaby, meissner, michael.kasimir, Stromeko, zergusvcv |
| Version: | RC 2 | ||
| Target Milestone: | --- | ||
| Hardware: | i686 | ||
| OS: | openSUSE 12.1 | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Bug Depends on: | |||
| Bug Blocks: | 731545 | ||
| Deadline: | 2012-03-12 | ||
| Attachments: |
X.org logfile
dmesg | egrep "drm|radeon" glxinfo when booted in failsafe mode Xorg.0.log full with crash info Xorg.0.log upon using /Option "NoAccel" "true"/ |
||
|
Description
Nikita Kravets
2011-11-07 19:23:12 UTC
Created attachment 460762 [details]
X.org logfile
Backtrace: [ 95.653] 0: X (xorg_backtrace+0x37) [0x80a86b7] [ 95.653] 1: X (0x8048000+0x64a0a) [0x80aca0a] [ 95.653] 2: (vdso) (__kernel_rt_sigreturn+0x0) [0xffffe410] [ 95.654] 3: /usr/lib/dri/r300_dri.so (0xb646b000+0x3b8720) [0xb6823720] [ 95.654] 4: /usr/lib/dri/r300_dri.so (0xb646b000+0xa1bf7d) [0xb6e86f7d] [ 95.654] 5: /usr/lib/dri/r300_dri.so (0xb646b000+0x134629) [0xb659f629] [ 95.655] Illegal instruction at address 0xb6823720 [ 95.655] Fatal server error: [ 95.655] Caught signal 4 (Illegal instruction). Server aborting I have downloaded sources of MesaLib package from here https://build.opensuse.org/package/files?package=MesaGLw&project=X11%3AXOrg and made a complete build. Then I've replaced /usr/lib/dri/r300_dri.so with r300_dri.so from my build (lib/r300_dri.so) Now X works well (also TV-Out has been detected successfully). So it's either the downgrade from 7.11 to 7.10.2, which fixes the issue or you built Mesa in a different way than we do. I've just downloaded the latest version (7.11) of Mesa sources from mesa3d.org and compiled it. Some things were not successfully compiled due to the lack of llvm headers but lib/r300_dri.so was successfully compiled. I've placed it to the /usr/lib/dri and it works well. Before building this project I've just run configure script without any options. So could be related to llvm ... I'm getting the same error from nouveau after upgrade to 12.1. cloned to: Bug #731545 Created attachment 463533 [details]
dmesg | egrep "drm|radeon"
Created attachment 463534 [details]
glxinfo when booted in failsafe mode
Created attachment 463535 [details]
Xorg.0.log full with crash info
Similar error as previous reporters. ATI Radeon 9550 / 256mb (RV350) lspci: 03:00.0 VGA compatible controller [0300]: ATI Technologies Inc RV350 AS [Radeon 9550] tried different combination according to advises all over the internet, nothing helped (radeon.modeset=1 / nomodeset, experimented with different kernel boot flags from safemode, creating xorg.conf, editing xorg.conf.d/50-device.conf) What is working: - failsafe mode - forcing of vesa (tried in 50-device.conf) In both cases system is very choppy due to software rasterizer. Xorg.0.log part: [ 20.365] 0: /usr/bin/Xorg (xorg_backtrace+0x37) [0x80a86b7] [ 20.365] 1: /usr/bin/Xorg (0x8048000+0x64a0a) [0x80aca0a] [ 20.365] 2: (vdso) (__kernel_rt_sigreturn+0x0) [0xffffe410] [ 20.366] 3: /usr/lib/dri/r300_dri.so (0xb630f000+0x3b8720) [0xb66c7720] [ 20.366] 4: /usr/lib/dri/r300_dri.so (0xb630f000+0xa1bf7d) [0xb6d2af7d] [ 20.366] 5: /usr/lib/dri/r300_dri.so (0xb630f000+0x134629) [0xb6443629] [ 20.366] Illegal instruction at address 0xb66c7720 [ 20.366] Fatal server error: [ 20.366] Caught signal 4 (Illegal instruction). Server aborting Sorry for possible inconsistencies - I'm only a user. Probably partial fix. Ironically enough, but upon filing report and continuing research found this message: http://ubuntuforums.org/showpost.php?s=01364bb2c029ddd5cdc456a29a936a7c&p=9863657&postcount=8 I've edited /etc/X11/xorg.conf.d/50-device.conf : Section "Device" Identifier "Default Device" Driver "radeon" Option "NoAccel" "true" EndSection Note Option "NoAccel" "true" Successfully booted at normal mode and now 2d acceleration is working much smoother. Although glxinfo OpenGL string didn't change - still: OpenGL vendor string: Mesa Project OpenGL renderer string: Software Rasterizer OpenGL version string: 2.1 Mesa 7.11 but dmesg | egrep "drm|radeon" now outputs: [ 2.723432] [drm] Initialized drm 1.1.0 20060810 [ 2.779925] [drm] VGACON disable radeon kernel modesetting. [ 2.812497] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 2.812501] [drm] No driver support for vblank timestamp query. [ 2.812505] [drm] Initialized radeon 1.33.0 20080528 for 0000:03:00.0 on minor 0 without any mentions of `registered panic notifier` and radeon framebuffer Hopefully that helps a bit. Thanks. Created attachment 463543 [details]
Xorg.0.log upon using /Option "NoAccel" "true"/
Any progress on this? I've got very similar error on RV350: [ 16.757] 0: /usr/bin/Xorg (xorg_backtrace+0x37) [0x80a86b7] [ 16.757] 1: /usr/bin/Xorg (0x8048000+0x64a0a) [0x80aca0a] [ 16.757] 2: (vdso) (__kernel_rt_sigreturn+0x0) [0xffffe410] [ 16.757] 3: /usr/lib/dri/r300_dri.so (0xb6207000+0x3b8720) [0xb65bf720] [ 16.757] 4: /usr/lib/dri/r300_dri.so (0xb6207000+0xa1bf7d) [0xb6c22f7d] [ 16.757] 5: /usr/lib/dri/r300_dri.so (0xb6207000+0x134629) [0xb633b629] [ 16.758] Illegal instruction at address 0xb65bf720 [ 16.758] Fatal server error: [ 16.758] Caught signal 4 (Illegal instruction). Server aborting Same error with AGP x1950 Pro: [ 29.031] 0: /usr/bin/Xorg (xorg_backtrace+0x37) [0x80a86b7] [ 29.031] 1: /usr/bin/Xorg (0x8048000+0x64a0a) [0x80aca0a] [ 29.031] 2: (vdso) (__kernel_rt_sigreturn+0x0) [0xffffe410] [ 29.031] 3: /usr/lib/dri/r300_dri.so (0xb62f2000+0x3b8720) [0xb66aa720] [ 29.031] 4: /usr/lib/dri/r300_dri.so (0xb62f2000+0xa1bf7d) [0xb6d0df7d] [ 29.031] 5: /usr/lib/dri/r300_dri.so (0xb62f2000+0x134629) [0xb6426629] [ 29.031] Illegal instruction at address 0xb66aa720 [ 29.031]. Fatal server error: [ 29.031] Caught signal 4 (Illegal instruction). Server aborting Works only with: Option "NoAccel" "true" or Disable "DRI" Disable "DRI2" Please do not touch the priority. Thanks. I believe this is an LLVM _configuration_ error:
Program received signal SIGILL, Illegal instruction.
0xb73c0d5b in llvm::SmallVectorImpl<llvm::cl::parser<llvm::PassDebugLevel>::OptionInfo>::push_back(llvm::cl::parser<llvm::PassDebugLevel>::OptionInfo const&)
() from /usr/lib/dri/r300_dri.so
The instruction:
=> 0xb73c0d5b <+43>: movsd (%eax),%xmm0
This is an SSE2 instruction. But my processor does not have that capability:
grep ^flags /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up
As one can see, only SSE (version one) is there...
(In reply to comment #19) > I believe this is an LLVM _configuration_ error: Or even Mesa build configuration might be invalid. (Inherited from build host.) Ok. Then this git commit looks promising: commit 74d303521e6ba41d1cbeb75edb2f834ebbe8c550 Author: Marek Olšák <maraeo@gmail.com> Date: Fri Feb 24 19:29:48 2012 +0100 gallium/rtasm: properly detect SSE and SSE2 This should fix crashes on ancient processors. http://cgit.freedesktop.org/mesa/mesa/commit/?id=74d303521e6ba41d1cbeb75edb2f834ebbe8c550 (In reply to comment #21) > Ok. Then this git commit looks promising: ... > gallium/rtasm: properly detect SSE and SSE2 It doesn't help at this phase (maybe later). llvm-devel is full of libraries with SSE2 instructions: objdump -d libLLVM*|grep movsd.*eax.*xmm0|wc -l 5279 Ouch! Adding Ismail. Thinking about it again. Maybe in llvm we have a better CPU detection. ;-) (In reply to comment #24) > Thinking about it again. Maybe in llvm we have a better CPU detection. ;-) Ok, I tried obs build of X11:XOrg llvm on the affected machine, but llvm doesn't build there. During the stage2, bin/llvm-tblgen says "Illegal instruction" and the build indeed terminates. The binary dies at (guess where): movsd (%eax),%xmm0 of llvm::SmallVectorImpl<llvm::cl::parser<ActionType>::OptionInfo>::push_back(llvm::cl::parser<ActionType>::OptionInfo const&) It very looks like LLVM incorrectly determines CPU capabilities. (In reply to comment #25) > Ok, I tried obs build of X11:XOrg llvm "osc build" of course. With CPU detection I meant during runtime. That llvm generates SSE2 code, although being built on a non-SSE2 capable machine is even worse. So we need fixes in Mesa *and* llvm. *** Bug 731545 has been marked as a duplicate of this bug. *** On the llvm side the correct fix is targeting i586, this won't effect the JITtable code which can do runtime detection. I committed a fix to devel:tools:compiler/llvm package, please test. Thanks! I still cannot build llvm on that machine: [ 8%] Building Intrinsics.gen... /bin/sh: line 1: 24966 Illegal instruction ../../bin/llvm-tblgen -gen-intrinsic -I /home/abuild/rpmbuild/BUILD/llvm-3.0/include/llvm -I /home/abuild/rpmbuild/BUILD/llvm-3.0/lib/Target -I /home/abuild/rpmbuild/BUILD/llvm-3.0/include /home/abuild/rpmbuild/BUILD/llvm-3.0/include/llvm/Intrinsics.td -o /home/abuild/rpmbuild/BUILD/llvm-3.0/stage2/include/llvm/Intrinsics.gen.tmp make[2]: *** [include/llvm/Intrinsics.gen.tmp] Error 132 make[1]: *** [include/llvm/CMakeFiles/intrinsics_gen.dir/all] Error 2 make: *** [all] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.7mtdUJ (%build) Is it expected to work? The topmost change: ------------------------------------------------------------------- Tue Mar 20 12:40:27 UTC 2012 - idonmez@suse.com - Target i586-linux for 32bit builds (In reply to comment #30) > I still cannot build llvm on that machine: > [ 8%] Building Intrinsics.gen... > /bin/sh: line 1: 24966 Illegal instruction ../../bin/llvm-tblgen > -gen-intrinsic -I /home/abuild/rpmbuild/BUILD/llvm-3.0/include/llvm -I > /home/abuild/rpmbuild/BUILD/llvm-3.0/lib/Target -I > /home/abuild/rpmbuild/BUILD/llvm-3.0/include > /home/abuild/rpmbuild/BUILD/llvm-3.0/include/llvm/Intrinsics.td -o > /home/abuild/rpmbuild/BUILD/llvm-3.0/stage2/include/llvm/Intrinsics.gen.tmp > make[2]: *** [include/llvm/Intrinsics.gen.tmp] Error 132 > make[1]: *** [include/llvm/CMakeFiles/intrinsics_gen.dir/all] Error 2 > make: *** [all] Error 2 > error: Bad exit status from /var/tmp/rpm-tmp.7mtdUJ (%build) > > Is it expected to work? > > The topmost change: > ------------------------------------------------------------------- > Tue Mar 20 12:40:27 UTC 2012 - idonmez@suse.com > > - Target i586-linux for 32bit builds Can you check if libLLVM* still contains SSE2 instructions? I tried the grep line you gave in comment #22 and it returned empty as expected. (In reply to comment #31) > Can you check if libLLVM* still contains SSE2 instructions? I tried the grep > line you gave in comment #22 and it returned empty as expected. I cannot build LLVM proper. It builds tblgen which the processors cannot execute and dies at build stage2. So there are no libraries yet. (In reply to comment #32) > (In reply to comment #31) > > Can you check if libLLVM* still contains SSE2 instructions? I tried the grep > > line you gave in comment #22 and it returned empty as expected. > > I cannot build LLVM proper. It builds tblgen which the processors cannot > execute and dies at build stage2. > > So there are no libraries yet. Well then objdump tblgen to see if it contains SSE2 instructions. I am assuming you are doing a 32bit build right? Which openSUSE version? (In reply to comment #33) > Well then objdump tblgen to see if it contains SSE2 instructions. Yes, it does. > I am assuming you are doing a 32bit build right? Which openSUSE version? Yes, 12.1. But, you know what? I don't care that I cannot build LLVM on that machine :). I guess it is because you set target and not host for stage2. But if target is set properly, llvm should run there perfectly even though it doesn't build there. Now, let's concentrate if Mesa with patch from Marek works with fixed LLVM. (In reply to comment #31) > Can you check if libLLVM* still contains SSE2 instructions? I tried the grep > line you gave in comment #22 and it returned empty as expected. Really? I just checked with llvm-devel from devel:tools:compiler and it's the same. And Mesa got rebuilt, but there is no change in code since Mar 8th: Retried build at Tue Mar 20 19:50:41 2012 returned same result, skipped clang ignores my --host/--target specification, looking at it. In my case I checked stage1 libs which were obviously fine because they were built by gcc. (In reply to comment #21) > Ok. Then this git commit looks promising: > > commit 74d303521e6ba41d1cbeb75edb2f834ebbe8c550 > Author: Marek Olšák <maraeo@gmail.com> > Date: Fri Feb 24 19:29:48 2012 +0100 > > gallium/rtasm: properly detect SSE and SSE2 > > This should fix crashes on ancient processors. > > http://cgit.freedesktop.org/mesa/mesa/commit/?id=74d303521e6ba41d1cbeb75edb2f834ebbe8c550 Just added this patch to obs://X11:XOrg/Mesa, but it will take some time until it gets rebuilt. So please check for RPM changelog entry: Wed Mar 21 14:55:19 UTC 2012 - sndirsch@suse.com - U_gallium-rtasm-properly-detect-SSE-and-SSE2.patch * gallium/rtasm: properly detect SSE and SSE2; this should fix crashes on ancient processors. (bnc#728737) I committed a proper fix to llvm so that it'll assume i586 on 32bit by default. Still building though. This is an autogenerated message for OBS integration: This bug (728737) was mentioned in https://build.opensuse.org/request/show/110569 Factory / Mesa (In reply to comment #38) > I committed a proper fix to llvm so that it'll assume i586 on 32bit by default. > Still building though. In the last 10 minutes I have been playing warmux in full HD on that machine if that suffices as an answer ;). (In reply to comment #40) > (In reply to comment #38) > > I committed a proper fix to llvm so that it'll assume i586 on 32bit by default. > > Still building though. > > In the last 10 minutes I have been playing warmux in full HD on that machine if > that suffices as an answer ;). Great! Thanks for the SSE2 grep tip. So the issue can be considered now in llvm and Mesa? (In reply to comment #42) > So the issue can be considered now in llvm and Mesa? I submitted llvm fix to Factory, should be good to go. This is an autogenerated message for OBS integration: This bug (728737) was mentioned in https://build.opensuse.org/request/show/110700 Factory / llvm Same applies to Mesa, so let's close it as fixed for openSUSE 12.2. (In reply to comment #45) > Same applies to Mesa, so let's close it as fixed for openSUSE 12.2. Err, but this was reported against 12.1. Mesa fix is easy to be backported, isn't it? And what about llvm, is that possible? I am preparing an llvm update for 12.1. (In reply to comment #46) > (In reply to comment #45) > > Same applies to Mesa, so let's close it as fixed for openSUSE 12.2. > > Err, but this was reported against 12.1. > > Mesa fix is easy to be backported, isn't it? I would assume so. Luckily you've just volunteered to do the Mesa update for 12.1 by reopening this bugreport. Reassigning. This is an autogenerated message for OBS integration: This bug (728737) was mentioned in https://build.opensuse.org/request/show/110727 Factory / Mesa Requesting go from maintainance team for llvm package targeting openSUSE 12.1 only. does Mesa need to be rebuilt too, or is this a dynamic reference? otherwise you can go ahead, branch and submit a maintenancerequest for this llvm only provides static libraries so I'll assume Mesa will need to be built but per comment #48 we'll need a Mesa update too. do both llvm and Mesa package updates in the same maintenance project then ;) ok for update. if you need assistance with the new maintenance requests, speak up ;) Does https://build.opensuse.org/request/show/110800 look OK? Do I have to send all updates at once? Ok doesn't seem to work :/ Both packages are in https://build.opensuse.org/project/show?project=home%3Anamtrac%3Abranches%3AopenSUSE%3A12.1%3AUpdate How do I send a MR for both? Thanks. just list them all on the cmdline this should work: osc mr home:namtrac:branches:openSUSE:12.1:Update llvm.openSUSE_12.1 Mesa.openSUSE_12.1 openSUSE:Maintenance > osc mr home:namtrac:branches:openSUSE:12.1:Update llvm.openSUSE_12.1 Mesa.openSUSE_12.1 openSUSE:Maintenance Using target project 'openSUSE:Maintenance' Server returned an error: HTTP Error 404: Not Found home:namtrac:branches:openSUSE:12.1:Update/llvm.openSUSE_12.1 > osc mr home:namtrac:branches:openSUSE:12.1:Update llvm.openSUSE_12.1_Update Mesa.openSUSE_12.1_Update openSUSE:Maintenance Using target project 'openSUSE:Maintenance' Server returned an error: HTTP Error 400: Bad Request Maintenance incident request contains release target project openSUSE:Maintenance with invalid type maintenance for package llvm.openSUSE_12.1_Update Doesn't seem to work? :/ *** Bug 738926 has been marked as a duplicate of this bug. *** Your last submission with sr#110817 worked and the update is already started. Thanks for the fix. (In reply to comment #59) > Thanks for the fix. I think we can close now. Thanks to all. BTW this was not fair: > Luckily you've just volunteered to do the Mesa update for > 12.1 by reopening this bugreport. Reassigning. (In reply to comment #60) > (In reply to comment #59) > > Thanks for the fix. > > I think we can close now. Thanks to all. Well, I didn't see an updated Mesa package yet. > BTW this was not fair: > > Luckily you've just volunteered to do the Mesa update for > > 12.1 by reopening this bugreport. Reassigning. Life is not fair neither I ever claimed to be fair. ;-) (In reply to comment #61) > (In reply to comment #60) > > (In reply to comment #59) > > > Thanks for the fix. > > > > I think we can close now. Thanks to all. > > Well, I didn't see an updated Mesa package yet. sr#110817 contains both llvm & Mesa fixes. # osc rq show 110817 invalid argument: 'src_package' you need osc 0.134.1 or later, olders will display this error. we released this osc for openSUSE 11.4 and 12.1 via online update, alternatively it is in openSUSE:Tools Thanks. I was still running osc 0.132. openSUSE-RU-2012:0461-1: An update that has one recommended fix can now be installed. Category: recommended (low) Bug References: 728737 CVE References: Sources used: openSUSE 12.1 (src): Mesa-7.11-11.4.2, llvm-3.0-1.8.1 |