Installing the Proprietary AMD Catalyst 14.12 (fglrx) Driver on Fedora 21 with Kernel 3.19

Update:  See the next post in this series for kernel version 4.04.

Below, find the updated installation instructions for the AMD Catalyst 14.12 (fglrx) driver on Fedora 21 with kernel version 3.19.1-201.fc21.x86_64.  If you’re interested in the technical details of these problems and their resolution (beyond applying the patch I provide, that is), then continue reading in the section entitled “Details:  Overcoming the New Issues.”

Prerequisite Discussion

Universal Package Prerequisites

As stated by the “installer.html” document provided by the driver, the prerequisites are as follows:

  • GCC version 3.3.3 or higher.
  • Kernel headers or kernel sources matching version of the kernel you’re running.
    Please consult to documentation for your distribution how to get and install this.
  • XFree86 version 4.1.X, 4.2.X, 4.3.X, or XOrg version 6.8.X (Fedora 20 does not use XFree86) or higher.

Heed the warning:

  • If you have multiple version of X Window System installed on your computer the installer will try to detect the default X, and install the driver for the detected version. However, you could experience problems trying to run other versions of X after this. Also, if your X Window System is installed into a nonstandard location, installation of the driver could be either problematic or incomplete.

With a fully up-to-date Fedora 21 installation, perform the following command to acquire the requisite packages:

yum install gcc kernel-headers kernel-devel

Fedora 21 Products and the Proprietary AMD Catalyst Graphics Driver

So, as you are likely aware, the Catalyst driver does not work with GNOME.  As you may also be aware, Fedora 21 Workstation, the product designed for the purposes you’re most likely to have in mind if you’re using your system like a normal person, integrates GNOME into the OS more than previous Fedora iterations.  In fact, if you’re using Fedora 21 Workstation, you won’t even see the GNOME Desktop Environment group in yum – it’s hidden by default.  Removing the GNOME Desktop Environment from the Workstation implementation is difficult and attempts to install alternate Desktop Environments currently meet with package conflict issues.

Using GNOME with the AMD Catalyst Driver on Fedora 21

Thanks to reader Fox for directing me to Red Hat intern Levente Kurusa’s guide which allows users to install the Catalyst driver on a system running GNOME.  The problem is, as you might expect, it’s quite the burdensome process.  In my estimation, it’s easier to simply use KDE, but if you’re really attached to GNOME, you might give his method a try.

Using KDE With Fedora 21

The best course of action for someone interested in running KDE in Fedora 21 is to either install the KDE Spin or upgrade from a version of Fedora 20 already using KDE with the nonproduct product option.

Now, if you’re like me and you accidentally upgraded to Fedora 21 Workstation (and therefore now have GNOME on your system), you’ll find that certain issues occur (see the link above) and changing Fedora 21 products is not easy.  I haven’t yet really dug into the product architecture so I don’t have the best answer regarding the move from Workstation to Nonproduct, but you can still install KDE (see the “changing Fedora 21 products is not easy” link above) and keep GNOME on your system for times during kernel upgrades (and therefore the required uninstallation and reinstallation of the Catalyst driver) when you need a GNOME fix or something.  Just make sure you use KDM as your Desktop Manager (I haven’t tested the procedure on Fedora 21, but I suspect it’s identical to the procedure I laid out in the original post on this subject way back in March of 2014 – let me know if it doesn’t work for you), ’cause the GNOME Desktop Manager (GDM) breaks with the Catalyst driver, as well.

Once you’ve set yourself up with KDE and KDM on Fedora 21, you’re in good shape to simply install the driver using a slightly modified version of the Fedora 20 procedure which has been presented on this site for some time:

Installation Instructions

Note:  If you’ve already followed the instructions on this blog for installing version 14.12 of the AMD Catalyst driver on Fedora 21 and you still have the driver files to which you applied the 3.17_kernel.patch file, you can skip directly to step 5 below to apply the new 3.19_kernel.patch file and install the driver.

1)  Download the AMD Catalyst 14.12 (fglrx) driver from AMD’s site.

2)  Change your working directory to your ~/Downloads directory and extract the amd-catalyst-14-4-linux-x86-x86-64.zip file (it will extract into a directory named fglrx-14.501.1003 in the current working directory):

cd ~/Downloads
unzip amd-catalyst-omega-14.12-linux-run-installers.zip

3)  Change your working directory to the fglrx-14.501.1003 directory and extract the driver file:

cd fglrx-14.501.1003/
sh amd-driver-installer-14.501.1003-x86.x86_64.run --extract

Here, you’ll see a message which reads something like:  “Created directory fglrx-install.wIhzk3″ and then “Verifying archive integrity… All good.” followed by a “Uncompressing AMD Catalyst(TM) Proprietary Driver-14.501.1003″ followed by a lot of dots.

4)  Now, you should see a newly created folder called fglrx-install.whateveryourcomputernamedit (mine, for example, was fglrx-install.wIhzk3).  Change your working directory appropriately and apply the 3.17_kernel.patch:

cd fglrx-install.wIhzk3
mv ~/Downloads/3.17_kernel.patch ./          #this is not necessary, but I do it for sanity's sake
patch -p0 < 3.17_kernel.patch

If you are successful, you will see the following output:

patching file common/lib/modules/fglrx/build_mod/kcl_acpi.c

5) Now, apply the 3.19_kernel.patch file from the same location:

cd fglrx-install.wIhzk3
mv ~/Downloads/3-19_kernel-patch3.doc ./3.19_kernel.patch          #Again, this is not necessary (you could just apply the patch from its location in Downloads), but I do it for sanity's sake (and keep the patch with the rest of the driver files)
                                                                   #Also, WordPress continues to mess up the name of the file when I upload it, hence the inappropriate "3"
patch -p0 < 3.19_kernel.patch

If you are successful, you will see the following output:

patching file common/lib/modules/fglrx/build_mod/firegl_public.c

6)  Now that you’ve patched the installation package, run the installation:

sudo ./ati-installer.sh 14.501 --install

7)  Choose the “Install Driver 14.501 on X.Org 6.9 or later 64-bit” option from the Setup Wizard, and then simply follow the prompts.

Ensure that you do not select “Generate Distribution Specific Driver Package (Recommended)”.  This will only work if you use one of the officially supported Linux distributions listed on AMD’s site (Fedora is not included).

8)  Reboot your machine and enjoy!

Details:  Overcoming the New Issues

As everyone who attempted to reinstall the AMD Catalyst 14.12 driver after updating Fedora 21 to use kernel 3.19 found out, the installation fails with the standard error cry of the Catalyst driver:

DKMS part of installation failed. Please refer to /usr/share/ati/fglrx-install.log for details

Johnny Chang graciously offered up the contents of his installation log for analysis.  The primary area of interest seemed to me to be:

doing Makefile based build for kernel 2.6.x and higher
 rm -rf *.c *.h *.o *.ko *.a .??* *.symvers
 make -C /lib/modules/3.19.1-201.fc21.x86_64/build SUBDIRS=/usr/lib/modules/fglrx/build_mod/2.6.x modules
 make[1]: Entering directory ‘/usr/src/kernels/3.19.1-201.fc21.x86_64′
 CC [M] /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
 /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function ‘kasSetExecutionLevel’:
 /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:4819:5: error: implicit declaration of function ‘__get_cpu_var’ [-Werror=implicit-function-declaration]
 orig_level = __get_cpu_var(kasExecutionLevel);
 ^
 /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:4820:38: error: lvalue required as left operand of assignment
 __get_cpu_var(kasExecutionLevel) = level;
 ^
 /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: At top level:
 /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:6396:12: warning: ‘KCL_fpu_save_init’ defined but not used [-Wunused-function]
 static int KCL_fpu_save_init(struct task_struct *tsk)
 ^
 cc1: some warnings being treated as errors
 scripts/Makefile.build:257: recipe for target ‘/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o’ failed

So one could summarize that log in pointing out that we have three issues to deal with:

  1. firegl_public.c:4819:5: error: implicit declaration of function ‘__get_cpu_var’ [-Werror=implicit-function-declaration] orig_level = __get_cpu_var(kasExecutionLevel)
  2. firegl_public.c:4820:38: error: lvalue required as left operand of assignment __get_cpu_var(kasExecutionLevel) = level;
  3. firegl_public.c:6396:12: warning: ‘KCL_fpu_save_init’ defined but not used [-Wunused-function] static int KCL_fpu_save_init(struct task_struct *tsk)

(1) and (2) are related issues, with the problem seeming to be that the __get_cpu_var function isn’t declared.  I hypothesized that this might mean the new kernel 3.19 headers don’t contain a declaration the installation software is expecting  because the kernel has been updated so that these functions have been renamed or replaced.

Philm from the Manjaro team (bless that man) has saved us again.  Going on the hunch I described above, Google led me to see that Philm has released a patch for Manjaro which we can reappropriate to Fedora.  His solution seems to support my hypothesis, for he simply replaces __get_cpu_var with __this_cpu_read in (1) and he replaces __get_cpu_var with __this_cpu_write in (2).  He’s integrated this patch into a broader Manjaro solution for this driver, it appears, so I offer a simpler patch for our purposes in the installation instructions above.

Advertisements
This entry was posted in Information Technology and tagged , , , , . Bookmark the permalink.

49 Responses to Installing the Proprietary AMD Catalyst 14.12 (fglrx) Driver on Fedora 21 with Kernel 3.19

  1. Kristjan says:

    Thanks a bunch, worked like a charm. (Fedora 21, Mobility Radeon HD 5430)

  2. Vanilla Island says:

    Thanks man!

  3. I’m still having issues with the 3.19 kernel error. Fedora 21 Linux 3.19 AMD HD 6450

    • Are you referring to the DKMS error message I cite? If so, did you check your installation log for potentially helpful information?

      • Building module:
        cleaning build area…
        cd /var/lib/dkms/fglrx/14.501.1003/build; sh make.sh –nohints –uname_r=3.19.1-201.fc21.x86_64 –norootcheck…..(bad exit status: 1)
        [Error] Kernel Module : Failed to build fglrx-14.501.1003 with DKMS
        [Error] Kernel Module : Removing fglrx-14.501.1003 from DKMS

  4. jkrmnj says:

    Thanks so much for this. It worked fine for me but the download in step 4 didn’t match the name in the command. All I had to do was rename the file but it was a little confusing at first.

  5. vodolaz095 says:

    I have issues with patching driver from you doc files – probably they were stored in wrong encoding, so i made a gists from this files – https://gist.github.com/vodolaz095/cf6b99ebf792c086887b

    Thanks for article, it helps me!

  6. Francesco says:

    Thanks a lot !

  7. Gil says:

    Hi everybody
    Already did with you the installation with the 3.17 kernel.

    Today I’m trying to deal with tje 3.19 one.
    I have downloaded the 3.19 patch in the good directory, corrected the patch’s name aso and when I execute the patch command, I get this error:

    /download/ati14-12/fglrx-14.501.1003 # patch -p0 < 3.19_kernel.patch
    can't find file to patch at input line 3
    Perhaps you used the wrong -p or –strip option?
    The text leading up to this was:
    ————————–
    |— common/lib/modules/fglrx/build_mod/firegl_public.c 2015-03-22 14:13:36.628837777 -0400
    |+++ common/lib/modules/fglrx/build_mod/firegl_public.c 2015-03-22 14:14:43.678029922 -0400
    ————————–
    File to patch: common/lib/modules/fglrx/build_mod/firegl_public.c
    common/lib/modules/fglrx/build_mod/firegl_public.c: No such file or directory
    Skip this patch? [y] n
    File to patch: firegl_public.c
    firegl_public.c: No such file or directory
    Skip this patch? [y] y
    Skipping patch.
    2 out of 2 hunks ignored

    So i'm trying to do the changes by hand but, but I take risks 😉

    So if you have an idea where I am wrong thanks to you to tell me where !

    • Gil says:

      Oopq sorry I was not in the good directory when issuing the patch command.
      I did all the process again from the beginning and it works fine.

      My apologize 🙂

  8. difs says:

    First, thanks for the post!

    Unfortunately, at least for me, does not work with the kernel 3.19.3. I have also tried by following those steps: http://theg4sh.ru/?p=585 It did not work for my A10-7850K.

    In both cases, the installation process passes without any problem. After reboot however, the computer kinda crash. I can not connect even for ssh and I have a black screen during boot. Even the tty do not work.

    No problem for the kernel 3.18, tough.

    • Gil says:

      If you have a crash, you should have some message in /var/log/message
      However you should apply 2 patches: 3.17 AND 3.19
      It is what I did.

      • difs says:

        Hi Gil, thank you for the answer, I will check /var/log/messages. I am not with the machine right now. Could you tell me the version of your kernel 3.19.(1, 2 or 3)?

      • difs says:

        Hi everyone,

        I got it!!! The problem was because I was using the APU A10-7850K and the GPU R9 290X, but the X server was loaded in the APU for some reason while the monitor was connected to the GPU.

        I have managed this time to connect over the SSH and run the following commands:
        # aticonfig –list-adapters
        * 0. 00:01.0 AMD Radeon(TM) R7 Graphics
        1. 01:00.0 Supported device 67B0

        * – Default adapter

        # rm xorg.conf
        # aticonfig –initial –adapter=1
        Uninitialised file found, configuring.
        Using /etc/X11/xorg.conf
        Saving back-up to /etc/X11/xorg.conf.original-13

        I hope this may help someone.

        Cheers,

  9. solo2101 says:

    any word in the error:

    fglrx installation requires that the system have kernel headers for 3.7 release. /lib/modules/3.19.3-200.fc21.x86_64/build/include/generated/uapi/linux/version.h cannot be found on this system.

  10. Hello, I have a single question: can this patch be useful for installing AMD drivers on Ubuntu? because still there is no info for kernel 3.19 or 4.0 about how to patch it, as far as I googled. Thanks, regards.

    • I haven’t tried it, but I imagine this would be a solution for Ubuntu given that the primary issue is with compatibility with the Linux kernel, and that’s shared across distros. If you try it, let us know how it goes!

  11. Jose says:

    shows:

    your graphics adapter is not supported by this driver installation will not proceed !!!

    help guys

    radeon R7 m265 4GB

  12. Kenguru says:

    Hello again 🙂

    So i’m update my “stable” fedora (21) to 4.0.x kernel
    the two patch file what i’m used is partly “developed” in fedora 22 beta but these patch files is really useful in 21 😀

    https://drive.google.com/folderview?id=0B3cjutpjjXMrfmwzRDFWNkdBb0h0MXhsV1hXTmpjZGtES2c2R3ZQTjN2N3hMRXB1OV9BSm8&usp=sharing

    • Gil says:

      Hi there is what I get applying patch_a:
      patching file common/lib/modules/fglrx/build_mod/firegl_public.c
      patch: **** malformed patch at line 45: local_irq_restore(flags);

      patch_b seems to work fine.

      • Kenguru says:

        hmm that’s a good question,

        in my computer, these patches works fine, if you understand how works the patchfile, the easiest way is if you patching manually the firegl_public.c

        what version of the CCC installer ?
        i think in your version not contain this “local_irq_restore(flags);” line

  13. Gil says:

    Hi and thanks for replying,

    The AMD installer is the last one, 14-12 (14.501.1003).

    Maybe I forgot to tell that I am with the 32bits distro.

    • Orion says:

      I got the same error.

      “[root@WS-6157 fglrx-install.GhWxRm]# patch -p0 < 4.0_kernel_a.patch
      patching file common/lib/modules/fglrx/build_mod/firegl_public.c
      patch: **** malformed patch at line 45: local_irq_restore(flags);"

      Some additional Information:
      [root@WS-6157 fglrx-install.GhWxRm]# uname -a
      Linux WS-6157 4.0.4-201.fc21.x86_64 #1 SMP Thu May 21 15:58:47 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

      [root@WS-6157 fglrx-install.GhWxRm]# gcc –version
      gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
      Copyright (C) 2014 Free Software Foundation, Inc.
      This is free software; see the source for copying conditions. There is NO
      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

      My CCC Ver. is 14-12 (14.501.1003).

      Can you help?
      Orion.

  14. I have the same issue with patch a, I’m on Fedora 22, GCC 5.1.1, Amd 14.501.1003, Kernel 4.0.4.
    I initially had this issue while on fedora 21 and kernel 4.0.4. And I just figured it was because I was running GCC 4.9, So I upgraded last night to fedora 22 and attempted to apply the patch and it resulted with the same malformed line error on local_irq_restore(flags);

    • Also I’m using 64-bit

      • Kenguru says:

        I’m not upgrade to fedora 22 just update the packages

        my gcc version is
        gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
        i have installed kernel, kernel-core, kernel-devel, kernel-header, kernel-modules, kernel-modules-extra packages

        steps what i’m used

        1) update the kernel to 4.0.4 and the whole system
        2) restart
        3) (xorg failed) go to tty2 and uninstall the old ati driver
        3/b) (optional) restart (if you need, or if you like GUI 😀 )
        4) cp -v /usr/include/linux/version.h /lib/modules/$VERSION/build/include/linux
        5) simple patching with 4 patchfiles (3.17, 3.19, 4_a, 4_b)
        6) run the installer
        7) restart
        8) and smile

        Okay, it’s look very simple, but i made a mistake , the first version of the patch file is not equal with the new version (shared) patch files… Sorry guys
        so you can find the original 4.0_kernel_a.patch file (4.0_kernel_a.old_patch)

        https://drive.google.com/open?id=0B3cjutpjjXMrfmwzRDFWNkdBb0h0MXhsV1hXTmpjZGtES2c2R3ZQTjN2N3hMRXB1OV9BSm8&authuser=0

        try it and share the results with me (with us), i think, if this patch file is good, the installer drop an error (line 4522)

        ohhmygod, when i’m write this i think i’m find the possibly best solution 😀
        so wait a minute, and i’m share the new patch file 🙂

  15. Also if you check your ati install log and get version.h error you can run

    uname -r
    cp -v /usr/include/linux/version.h /lib/modules/$VERSION/build/include/linux
    $VERSION needs to be replaced with the results of uname -r

    • Zaggyr says:

      cd /lib/modules/4.1.5-200.fc22.x86_64/build/include/linux
      bash: cd: /lib/modules/4.1.5-200.fc22.x86_64/build/include/linux: No such file or directory
      There is no /build/include/linux directory after /lib/modules/4.1.5-200.fc22.x86_64.

      • Well, I’m on kernel 4.1.6-200 and the /lib/modules/4.1.6-200.fc22.x86_64/build/include/linux exists on my system.. Try posting the output of ll /lib/modules/4.1.6-200.fc22.x86_64/build/include/.

  16. Kenguru says:

    i’m upload the fixed kernel_a patch to the shared gdrive

    • Orion says:

      It works XD, finally! And Jacob is right, about $VERSION dont work. yuo need to do “cp -v /usr/include/linux/version.h /lib/modules/$(uname -r)/build/include/linux”

      Thank you, Kenguru!
      Orion

  17. SPython says:

    It fails for me with Fedora 21 trying to install fglrx-14.501.1003 with kernel 4.0.4. Tried it a few times with fresh installs using Kenguru’s latest fixed kernel_a patch

  18. SPython says:

    Perhaps I missed something. Is it required to still run patch b after the fixed patch a?

  19. SPython says:

    OK – It worked! First the fixed patch-a and then patch-b. Thank you Kenguru!

  20. Gil says:

    Ok got it:
    We need to apply all the four patches, 3.17, 3.19 4._a and 4.0_b. Will try.
    And just another question: on my F21 distro, I have several kernels remaining 3.19 and 4.0.
    If I finally can compile the kmod for the 4.0, will the compilation work for the older kernels?
    Thx

  21. Gil says:

    Hi !

    This time it made it ! Thanks again to everybody guys ! See U soon 😉

    • Yeah, I’m working on Fedora 22; I just installed the Fedora 22 KDE Plasma Desktop Spin from scratch on my AMD system and so far, unfortunately, the driver installs properly but throws a segmentation fault at startup, preventing the display of any GUI whatsoever. I’m looking into it and will post more soon, but in the meanwhile, I don’t advise moving to Fedora 22 if you depend on the Proprietary Catalyst driver. Hopefully that advisement will be short-lived.

  22. Gil says:

    For information: after having installed the driver on F21 and 4.0.4 kernel, I tried to do the same but on an older 3.19 kernel.
    And it works fine.

    Maybe I’ll try on a 3.17 one still present on may F20.

  23. Gil says:

    I confirm if needed :

    It works also on kernels since 3.15 !

  24. Rodrigo Zani says:

    Hey folks, I’ve an ATI Radeon R7 m265…
    Can I follow this tutorial in Fedora 22?
    I tried install fglrx 15.5 (http://support.amd.com/en-us/download/desktop?os=RHEL%20×86%2064) before, but I need fallback…

    • Yeah, I think this tutorial should work for you, Rodrigo. If you need to uninstall the fglrx driver from a previous attempt, use the command aticonfig --uninstall, and then follow the directions. Be sure to let us know how it goes!

  25. Rafael says:

    dear,
    i have a problem and i really dont know what to do please help.
    i installed the amd driver using this method on fedora 21 kernel kernel-4.0.4-201.fc21.x86_64
    i recently update my system (yum update) and kernel-4.0.4-202.fc21.x86_64 is now latest. the amd driver does not work here (no config changes made)
    what do i need to change to make it work? (i understand that obviously i need to change something, but i will admit i have been using fedora for only 3 months and i am still learning)

    if i provided too few info upon request i will provide the info.

    thanks in advance

    • You need to hit the “the next post in this series” link above for kernel version 4.0.4. See how that works for you – it includes additional modifications for your kernel version.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s