Recently build a new machine (Dual Quad Core Opteron 2354) with ATI V5600 Video Card.
- Installed openSUSE.
- Downloaded thttp://he V5600 driver from Advanced Micro Devices, AMD – Global Provider of Innovative Microprocessor, Graphics and Media Solutions ati.amd.com/support/drivers/linux64/linux64-firegl.html
- Check the Installer Instructions: https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_cat85-inst.html
- Run the installer: ./ati-driver-installer-8-5-x86.x86_64.run
- Checked /usr/share/ati/fglrx-install.log and noticed that the kernel module failed to load because export of symbol “flush_tlb_page” has been removed in the x86_64 SMP kernel.
Here a few steps that might help to make things work:
- Run ./ati-driver-installer-8-5-x86.x86_64.run --extract <dir> to extract all the files in the installer.
- Did a grep for “flush_tlb_page” and found it in:common/lib/modules/fglrx/build_mod/firegl_public.c around line 2591:
void ATI_API_CALL KCL_flush_tlb_onepage(struct vm_area_struct * vma, unsigned long va)
{
/Some kernel developer removed the export of symbol “flush_tlb_page” on 2.6.25 x86_64 SMP kernel.
Define a simple version here./
#if defined(x86_64) && defined(SMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
on_each_cpu(KCL_flush_tlb_one, &va, 1, 1);
#else
flush_tlb_page(vma, va);
#endif
}
- For some reason the call already should have been replaced by the conditional:
#if defined(x86_64) && defined(SMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
But obviously was not. - Changed the code like:
void ATI_API_CALL KCL_flush_tlb_onepage(struct vm_area_struct * vma, unsigned long va)
{
/Some kernel developer removed the export of symbol “flush_tlb_page” on 2.6.25 x86_64 SMP kernel.
Define a simple version here./
//#if defined(x86_64) && defined(SMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
on_each_cpu(KCL_flush_tlb_one, &va, 1, 1);
//#else
// flush_tlb_page(vma, va);
//#endif
} - Made sure there was no old fglrx.ko sitting (such as in /lib/modules/2.6.25.5-1.1-default/extra/): (# find / -name fglrx.ko -print) and renamed that one to fglrx.ko-
-
- Went into ati-driver-installer-8-5-x86.x86_64.run to see what it does and created ati.sh with that information:
ati.sh:
label=“ATI Proprietary Linux Driver-8.493.1”
drv_release=echo $label | cut -d'-' -f2
./ati-installer.sh $drv_release --install
- Went into ati-driver-installer-8-5-x86.x86_64.run to see what it does and created ati.sh with that information:
- Run ati.sh from the <dir> created by the extraction of the installer.
- Checked /usr/share/ati/fglrx-install.log and now the kernel module loaded normally.
- Rebooted the system.
- Activated “Desktop Effects”