Fedora kernel updates with the Catalyst driver and a AMD FirePro W9000

Gear

Problem Statement

  • One or more monitors do not wake up from sleep in 1/1000 instances.
  • Kernel updates render this setup unstable:
    • Unmanaged “yum update” may make the display unuseable.
    • The kernel and drivers must be updated together, as a matched set.

Remediation

  • For the sleep-never-wake …
    • Unplug & replug the DisplayPort cable.
    • This will destroy your running X11 configuration back to the default
      (but the monitor was dark and unuseable anyway, right?)
    • A login/logout cycle is indicated.
    • A session with amdcccle is indicated to reconfigure the ordering & rotation.
  • For the kernel update problem
    • Ensure both the kernel and xorg drivers are updated together.

Best Practices

Basic paranoia about an ill-understood software stack…

  • If you have a working configuration, do not change it, do not log out.
  • Do not take kernel updates without management & monitoring.
    • See Resources, below, about preventing kernel updates.
  • Do not take Catalyst updates (e.g. from rpmfusion) without management & monitoring
  • Save old kernels, lots of them
    • See Resources, below, about saving old kernel (more than three)
  • Have a fallback position in case a new update doesn’t work out.

Configuration

Drivers & Kernels

  • You need both the catalyst X11 driver and the kmod catalyst driver
  • yum install xorg-x11-drv-catalyst kmod-catalyst

Packages

kmod-catalyst.x86_64
Metapackage which tracks in catalyst kernel module for newest kernel
xorg-x11-drv-catalyst.x86_64
AMD’s proprietary driver for ATI graphic cards

Failure Mode

  • Absent the kmod driver, the gear will still work, but in degraded mode
  • You will experience the GNOME “weak fallback mode”
    • A GNOME-2 type of experience (no compositing, no round edges)
    • Sliding windows will have video artifacts
    • Importantly, display rotation is unavailable
  • Therefore, make sure you have the catalyst X11 drivers and the kernel kmod catalyst drivers.
  • If you are experiencing GNOME-2 type screens, then acquire the appropriate drivers.
$ uname -a
Linux cathedral 3.9.11-200.fc18.x86_64 #1 SMP Mon Jul 22 21:04:50 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Here is shown a configuration where there are two workable kernels:

  • Kernel 3.9.2 and 3.9.11
  • Catalyst 13.4
$ rpm -q -a | grep catalyst
kmod-catalyst-3.9.2-200.fc18.x86_64-13.4-2.fc18.x86_64
kmod-catalyst-3.9.11-200.fc18.x86_64-13.4-2.fc18.8.x86_64
kmod-catalyst-13.4-2.fc18.8.x86_64
xorg-x11-drv-catalyst-13.4-1.fc18.x86_64
xorg-x11-drv-catalyst-libs-13.4-1.fc18.x86_64

Xorg Configuration

/etc/X11/xorg.conf as set up by amdcccle

Section "ServerLayout"
        Identifier     "amdcccle Layout"
        Screen      0  "amdcccle-Screen[2]-0" 0 0
EndSection

Section "Monitor"
        Identifier   "0-DFP1"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "2560x1600"
        Option      "TargetRefresh" "60"
        Option      "Position" "4800 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection

Section "Monitor"
        Identifier   "0-DFP5"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "2560x1600"
        Option      "TargetRefresh" "60"
        Option      "Position" "3200 12"
        Option      "Rotate" "right"
        Option      "Disable" "false"
EndSection

Section "Monitor"
        Identifier   "0-DFP9"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "2560x1600"
        Option      "TargetRefresh" "60"
        Option      "Position" "1600 12"
        Option      "Rotate" "right"
        Option      "Disable" "false"
EndSection

Section "Monitor"
        Identifier   "0-DFP13"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "2560x1600"
        Option      "TargetRefresh" "60"
        Option      "Position" "0 12"
        Option      "Rotate" "right"
        Option      "Disable" "false"
EndSection

Section "Device"
        Identifier  "amdcccle-Device[2]-0"
        Driver      "fglrx"
        Option      "Monitor-DFP1" "0-DFP1"
        Option      "Monitor-DFP5" "0-DFP5"
        Option      "Monitor-DFP9" "0-DFP9"
        Option      "Monitor-DFP13" "0-DFP13"
        BusID       "PCI:2:0:0"
EndSection

Section "Screen"
        Identifier "amdcccle-Screen[2]-0"
        Device     "amdcccle-Device[2]-0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Virtual   7360 2572
                Depth     24
        EndSubSection
EndSection

Yum Configuration

In /etc/yum.conf, declare:

installonlypkgs=kernel,kernel-PAE,kernel-smp,kernel-bigmem,kernel-devel,kernel-firmware,kernel-headers

In /etc/yum.conf, declare a higher limit on older kernels:

installonly_limit=6

To turn off the cleanup of old kernels altogether, in /etc/yum.conf, declare:

installonly_limit=0

See Configuration for Package Protection afforded by yum-plugin-protect-packages. This package blocks the uninstall of yum and its dependencies. To protect other packages, one creates files in /etc/yum/protected.d/*.conf and adds package name, one per line, to the *.conf files.

Use yum-utils to provide package-cleanup

## Install yum utils ##
yum install yum-utils
## Package-cleanup set count as how many old kernels you want left ##
package-cleanup --oldkernels --count=2

Resources

Products


 

Comments are closed.