Ubuntu – Error while installing Catalyst 13.12 on Ubuntu 13.10 32 bit

13.10atidpkgdriversfglrx

I have downloaded Catalyst drivers from amd site, unpacked it and created a package with

$ sudo ./amd-catalyst-13.12-linux-x86.x86_64.run --buildpkg Ubuntu/saucy
Created directory fglrx-install.FLGUtu
Verifying archive integrity... All good.
Uncompressing AMD Catalyst(TM) Proprietary Driver-13.251......................................................................................................................................................
..............................................................................................................................................................................................................
..............................................................................................................................................................................................................
=====================================================================
 AMD Catalyst(TM) Proprietary Driver Installer/Packager 
=====================================================================
Generating package: Ubuntu/saucy
1Package /home/XXX/Downloads/drivers_13.251/fglrx_13.251-0ubuntu1_i386.deb has been successfully generated
Package /home/XXX/Downloads/drivers_13.251/fglrx-dev_13.251-0ubuntu1_i386.deb has been successfully generated
Package /home/XXX/Downloads/drivers_13.251/fglrx-amdcccle_13.251-0ubuntu1_i386.deb has been successfully generated
Removing temporary directory: fglrx-install.FLGUtu

After that I try to install those packages but I get :

$ sudo dpkg -i fglrx_13.251-0ubuntu1_i386.deb fglrx-amdcccle_13.251-0ubuntu1_i386.deb fglrx-dev_13.251-0ubuntu1_i386.deb 
Selecting previously unselected package fglrx.
(Reading database ... 171591 files and directories currently installed.)
Unpacking fglrx (from fglrx_13.251-0ubuntu1_i386.deb) ...
Selecting previously unselected package fglrx-amdcccle.
Unpacking fglrx-amdcccle (from fglrx-amdcccle_13.251-0ubuntu1_i386.deb) ...
Selecting previously unselected package fglrx-dev.
Unpacking fglrx-dev (from fglrx-dev_13.251-0ubuntu1_i386.deb) ...
Setting up fglrx (2:13.251-0ubuntu1) ...
update-alternatives: using /usr/lib/fglrx/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in auto mode
update-alternatives: warning: skip creation of /usr/lib32/libaticalcl.so because associated file /usr/lib32/fglrx/libaticalcl.so (of link group i386-linux-gnu_gl_conf) doesn't exist
update-alternatives: warning: skip creation of /usr/lib32/libaticalrt.so because associated file /usr/lib32/fglrx/libaticalrt.so (of link group i386-linux-gnu_gl_conf) doesn't exist
update-alternatives: warning: forcing reinstallation of alternative /usr/lib/fglrx/ld.so.conf because link group i386-linux-gnu_gl_conf is broken
update-alternatives: warning: skip creation of /usr/lib32/libaticalcl.so because associated file /usr/lib32/fglrx/libaticalcl.so (of link group i386-linux-gnu_gl_conf) doesn't exist
update-alternatives: warning: skip creation of /usr/lib32/libaticalrt.so because associated file /usr/lib32/fglrx/libaticalrt.so (of link group i386-linux-gnu_gl_conf) doesn't exist
update-alternatives: using /usr/lib/fglrx/alt_ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
update-initramfs: deferring update (trigger activated)
Loading new fglrx-13.251 DKMS files...
First Installation: checking all kernels...
Building only for 3.11.0-17-generic
Building for architecture i686
Building initial module for 3.11.0-17-generic
Error! Bad return status for module build on kernel: 3.11.0-17-generic (i686)
Consult /var/lib/dkms/fglrx/13.251/build/make.log for more information.
update-initramfs: deferring update (trigger activated)
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf-2.index...
Setting up fglrx-amdcccle (2:13.251-0ubuntu1) ...
Setting up fglrx-dev (2:13.251-0ubuntu1) ...
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.11.0-17-generic
Processing triggers for libc-bin ...
-------------------------------------

In the log

$ cat /var/lib/dkms/fglrx/13.251/build/make.log
DKMS make.log for fglrx-13.251 for kernel 3.11.0-17-generic (i686)
nie, 2 mar 2014, 15:10:53 CET
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.a .??* *.symvers
make -C /lib/modules/3.11.0-17-generic/build SUBDIRS=/var/lib/dkms/fglrx/13.251/build/2.6.x modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-17-generic'
  CC [M]  /var/lib/dkms/fglrx/13.251/build/2.6.x/firegl_public.o
  CC [M]  /var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.o
/var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.c: In function ‘KCL_ACPI_ParseTable’:
/var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.c:999:5: warning: passing argument 1 of ‘(acpi_status (*)(u32,  void *, void *))handler’ makes integer from pointer without a cast [enabled by default]
     ((acpi_table_handler)handler)(hdr);
     ^
/var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.c:999:5: note: expected ‘u32’ but argument is of type ‘struct acpi_table_header *’
/var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.c:999:5: error: too few arguments to function ‘(acpi_status (*)(u32,  void *, void *))handler’
make[2]: *** [/var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.o] Error 1
make[1]: *** [_module_/var/lib/dkms/fglrx/13.251/build/2.6.x] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-17-generic'
make: *** [kmod_build] Error 2
build failed with return value 2

Where the error is :

    /var/lib/dkms/fglrx/13.251/build/2.6.x/kcl_acpi.c:999:5: error: too few arguments to function ‘(acpi_status (*)(u32,  void *, void *))handler’

Best Answer

Got it! :-)

sudo gedit /usr/src/fglrx-13.251/kcl_acpi.c

Delete these last 3 lines in the file:

     ((acpi_table_handler)handler)(hdr);
     return KCL_ACPI_OK;
}

replace them with:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,1)
    ((acpi_tbl_table_handler)handler)(hdr);
#else
    ((acpi_table_handler)handler)(hdr);
#endif
    return KCL_ACPI_OK;
}

Then run:

sudo dkms install -m fglrx -v 13.251 -k 3.11.0-17-generic

Then reboot. Worked for me - working kernel 3.11 and fglrx now!

(I worked this out from this page: https://gist.github.com/moldcraft/8116528)

As you dont have the drivers properly installed yet you will have to edit the extracted file at catalyst/common/lib/modules/fglrx/build_mod/kcl_acpi.c as in the URL above...

If you wanna +1 my other question feel free to ;-)

Related Question