No DRI/XVideo with radeon after Upgrading to openSUSE 11.3

After upgrading openSUSE 11.2 to 11.3 my

VGA compatible controller: ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]

couldn’t use DRI anymore and thus XVideo (e.g. with mplayer) wasn’t available anymore.

Error in dmesg:

[drm] radeon: cp idle (0x10000C03)
[drm] Loading R300 Microcode
[drm] radeon: ring at 0x00000000B8000000
[drm:r100_ring_test] *ERROR* radeon: ring test failed (sracth(0x15E4)=0xCAFEDEAD)
[drm:r100_cp_init] *ERROR* radeon: cp isn’t working (-22).
[drm:r100_cp_fini] *ERROR* Wait for CP idle timeout, shutting down CP.
[drm] radeon: cp finalized

Error in Xorg.0.log:

(II) AIGLX: Screen 0 is not DRI2 capable
(II) AIGLX: Screen 0 is not DRI capable

glxinfo:

% glxinfo | grep direct
direct rendering: No

xvinfo:

% xvinfo
X-Video Extension version 2.2
screen #0
no adaptors present

Solution:

  1. Remove any vga= options from /boot/grub/menu.lst (e.g. vga=0x31b)
  2. Disable bootsplash in /etc/sysconfig/bootsplash
  3. mkinitrd
  4. reboot

Thanks to hifi and Ke in #radeon on irc.freenode.net for their help and input on this matter.

Edit:

If this doesn’t help, try adding

nomodeset

to the kernel command line in /boot/grub/menu.lst (or just try the failsafe boot option which has this option added by default).

Thanks to cb400f in #suse on irc.freenode.net for pointing this out.

Anleitung zum Ersetzen des 1&1-Rootserver-Kernels auf openSUSE-11-Installationen

Wie bereits im Heise-Forum von mir zum Heise News-Artikel openSuse-Kernel auf 1&1-Root-Servern möglicherweise veraltet angemerkt, lässt sich der 1&1-eigene Kernel, der offenbar Sicherheitslücken aufweist und sich über die Paketverwaltung nicht aktualisieren lässt, relativ einfach durch den Standard-Kernel von openSUSE ersetzen.

Die folgende Anleitung wurde erfolgreich auf 3 Root-Servern bei 1&1 getestet (1&1 Root-Server S64 mit Athlon64 Single- oder Dual-Core-CPU, 1GB RAM, NVIDIA-Chipsatz (lspci.txt)).

Wie immer bei Anleitungen aus dem Internet gilt auch hier:

Verwendung der Anleitung auf eigene Gefahr. Zu Risiken und Nebenwirkungen fragen Sie Ihren kompetenten Systemadministrator!

Wir aktualisieren die lokale Datenbank des Paketmanagers und schauen uns an, wieviele Updates darauf warten, eingespielt zu werden:

zypper refresh && zypper patch-check

Die letzte Zeile der Ausgabe könnte z.B. so aussehen:

4 patches needed (2 security patches)

Das Release bzw. die Versionsnummer des aktuell laufenden Kernels lassen wir uns mit

uname -r

anzeigen:

2.6.27.31rootserver-20090819a

Durch den Zusatz “rootserver” können wir erkennen, dass hier der von 1&1 selbstgebackene Kernel läuft, den wir gerne ersetzen wollen.

Wir installieren den openSUSE-Standard-Kernel mittels

zypper install kernel-default

Wie ich durch eigene Tests herausgefunden habe, stört sich der SUSE-Kernel an dem Boot-Parameter ro (das Root-FS wird dadurch read-only gemountet, openSUSE mountet dies während der Boot-Phase offenbar selbst nicht read-write).

Ob wir davon betroffen sind, verrät uns

grep kernel /boot/grub/menu.lst

Die Ausgabe könnte z.B. so aussehen:

kernel /boot/vmlinuz-2.6.25.20-0.5-default root=/dev/md1 ro console=tty0 console=ttyS0,57600
kernel /boot/vmlinuz-2.6.25.20-0.5-default root=/dev/md1 showopts ide=nodma apm=off acpi=off noresume edd=off x11failsafe console=tty0 console=ttyS0,57600

Falls bei Euch das ro in der Zeile auftaucht, die mit kernel beginnt, solltest Du mit Deinem Lieblingseditor (z.B. vim oder nano) die Datei /boot/grub/menu.lst bearbeiten und das ro entfernen.

Die Angabe root=/dev/md1 ist darüber hinaus ein Indiz, dass im Server ein Software-RAID eingerichtet ist.

Überprüfen lässt sich das mit

cat /proc/mdstat

Tauchen hier ein oder mehrere md-Devices (md1, …) auf, so ist ein Software-RAID eingerichtet.

Bei den von mir aktualisierten 1&1-Root-Servern war die Datei /etc/mdadm.conf nicht vorhanden.

Diese Datei sollte unbedingt vorhanden sein und die aktuellen RAID-Einstellungen widerspiegeln, wenn man den SUSE-Kernel booten will:

test -e /etc/mdadm.conf && mv /etc/mdadm.conf /etc/mdadm.conf.backup
mdadm –detail –scan > /etc/mdadm.conf

Wichtig: Das initrd-Image muss neu gebaut werden, damit dies die mdadm.conf enthält:

mkinitrd

Die Fehler bzgl. des 1&1 Kernels ignorieren wir.

Anschließend via

reboot

den Server rebooten.

An dieser Stelle empfiehlt es sich, sich zu Diagnose-Zwecken über den seriellen Konsolen-Server von 1&1 mit dem Server zu verbinden – damit ist man in der Lage, dem Kernel beim Booten zuzusehen und eventuelle Unregelmäßigkeiten zu erkennen. Die Zugangsdaten zum Konsolen-Server findest Du im 1&1 Control-Center unter dem Menüpunkt Server-Verwaltung/Serielle Konsole.

Sobald der Server wieder erreichbar und Du per SSH eingeloggt bist, kannst Du mit

uname -r

prüfen, dass nun der SUSE-Kernel geladen wurde. Der aktuelle SUSE-Kernel (Stand 26.11.2009) für openSUSE 11.0 ist:

2.6.25.20-0.5-default

Damit ist das Update des Kernels abgeschlossen.