I just upgraded to linux 2.6.14, which seems to work fine here. Finally, the ipw2200 driver got integrated, so I don’t have the possibility to forget it anymore :)
In Linux 2.6.14 though, developers have decided to finally remove verify_area(), which was deprecated since a while and superceded by access_ok(). This has the drawback of breaking ATI’s proprietary drivers, as as many proprietary vendors, they didn’t move their ass to replace the deprecated stuff they use, before it was too late. So with 2.6.14, modprob’ing fglrx gives:
fglrx: Unknown symbol verify_area
I wrote a little module that puts back this symbol, so I can still use the stupid proprietary driver. Get it there. Now ATI, please do us a favor and update your driver.
Thanks for your module, it worked for me…I really hate ati drivers…I think I’ll buy a nvidia card next time.
great! thanks very much for this workaround! woohoo!
chun
I think I’ll buy a nvidia card next time
I personnaly think nvidia’s drivers are worse than ATI’s ones, because nVidia’s X driver relies on the kernel driver to load. Which means no X if for some reason the kernel driver can’t load. ATI’s drivers on the other hand, still run X although with no openGL direct rendering, if the kernel driver can’t load.
Also, r300.sourceforge.net is progressing nicely and we’ll soon have free (as in freedom) drivers for ATI cards.
How do you install the patch ?
after i extract the tar and run make i get.
CC /root/verify_area/src/verify_area.mod.o
/root/verify_area/src/verify_area.mod.c:9: error: variable `__this_module’ has initializer but incomplete type
/root/verify_area/src/verify_area.mod.c:10: error: unknown field `name’ specified in initializer
/root/verify_area/src/verify_area.mod.c:10: warning: excess elements in struct initializer
/root/verify_area/src/verify_area.mod.c:10: warning: (near initialization for `__this_module’)
/root/verify_area/src/verify_area.mod.c:11: error: unknown field `init’ specified in initializer
/root/verify_area/src/verify_area.mod.c:11: warning: excess elements in struct initializer
/root/verify_area/src/verify_area.mod.c:11: warning: (near initialization for `__this_module’)
/root/verify_area/src/verify_area.mod.c:9: error: storage size of `__this_module’ isn’t known
make[3]: *** [/root/verify_area/src/verify_area.mod.o] Error 1
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.14-ck1′
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/verify_area/src’
make: *** [all] Error 2
This also fixes proprietary management modules for Dell PowerEdges! Thanks!
the commands (as root) to compile and install this verify_area module is:
cd /usr/src/
make all
make install
the goal is to have a file named « verify_area.ko » into the kernel module directory « /lib/modules/2.6.14/extra/ ».
now just reboot and check if the new module get loaded on loading of the fglrx ATI Radeon driver (if not, just force-load it, adding a line in with /etc/modules ).
bye from Ferrara, Italy
GF
Best way to fix this is probably to update the driver yourself. Just cd to /lib/modules/fglrx/build_mod then run
perl -pi -e ‘s/verify_area/access_ok/’ firegl_public.c drm_os_linux.h
(Or just use a text editor on firegl_public.c and drm_os_linux.h and manually change verify_area to access_ok for all occurences in those files..)
.. Worked for me, anyhow.
man i just spent the past 3 days screwing with the kernel to get this work and then i finally find this.
i love you.
you can also change the name of the function in firegl_public.c …
maybe its easier ;)
Nice patch.
Alternatively, instead of messing with the kernel, I patched the driver itself.
since verify_area() and access_ok() have the same signature, you can change the two occurences of verify_area() to access_ok() in :
drm_os_linux.h: line 78
firegl_public.c: line 1478
and recompile the module.
Works like a charm here.
Did you notice the return value was different ? verify_area() returns 0 if OK, -EFAULT otherwise, whereas access_ok() returns TRUE if OK, FALSE otherwise.
I noticed that, but since I’m not familiar with the kernel internals, I tried this at first and it worked.
but this can simply be solved, and here’s a patch for firegl_public.c:
http://chady.net/data/fglrx.patch
I also noticed that the macro in drm_os_linux.h isn’t used anywhere, so it can be skipped.
Thanx for pointing this out.
« Me too » – thank you, worked for me after having been confused over half an hour about the misfunction of the ATI-Thing.
regards,
w.f.
Hey everyone,
Ahh, looked all day long for the right answer. Thanks!
But I’ve one question to all ATI-users:
I’ve really hard problems with my ATI Radeon.
fglrxinfo puts out the correct vendor (ATI), render (RADEON) and version string. But everytime, when I switch to the textconsole and try to switch back to X, everything’s locked. Can’t use the mouse, keyboard and see only the half of my screen. It works fine, when I kill X and start it from the textconsole. Then, there’s no problem to switch between X and the textconsole.
I realy do not undestand that!
kernel: 2.6.13.2
CONFIG_AGP=m
CONFIG_AGP_SIS=m
CONFIG_DRM=n
CONFIG_DRM_RADEON=n
The framebuffer is off.
Can s.o. help me?
Thank you, Ralf
Your module works excellent.
However sadly I’m missing two extra symbols that are apparently no longer present in 2.6.14
fglrx: Unknown symbol register_ioctl32_conversion
fglrx: Unknown symbol unregister_ioctl32_conversion
So for me it’s back to 2.6.13 I’m afraid
Thanx anyway,
Ramon
Thanks a lot for your module!
I had trouble installing DELL’s Openmanage Server Administrator software on a server due to the missing verify_area symbol in a 2.6.15 kernel.
Installed you module and hey: it works!
Hopefully DELL will stop using this deprecated symbol soon.
Thanks,
Karel
It fixed Paragon NTFS for Linux 3.0 under gentoo 2.6.15 too!
Thanks!
Awesome, this fixes Dell OMSA 4.5 for Redhat 9.0 as well.
Thanks!
I’m excited about trying out the patch you created, but I’m a new Linux user and on the road a lot away from my users group; thus, I’m stuck. I don’t want to screw up my system when I enter the terminal mode as root. Do I need to first pull up some set of text entries to insert the patch in a specific chronology, or do I just log in as root then paste the body of the patch text in its entirety as you’ve typed it? Forgive my level of understanding. We all had to start somewhere; for me it’s with a Linux exclusive laptop. Thanks Gurus
Simp: You don\’t have special things to do, because it\’s not really a patch but a standalone module.
All you have to do, when running under the kernel you want to have verify_area available, is:
$ wget http://www.geekounet.org/patches/files/verify_area.tar.gz
$ tar -zxf verify_area.tar.gz
$ cd verify_area
$ make
$ sudo make install
$ sudo modprobe verify_area
And that\’s all :)
I don’t think you have to blame ATI. Those guys maintaing kernel version 2.6 have no sense of responsibility at all. I’ve run into this problem many-many times that symbols present in one version are removed from the next, new symbols added, etc. So you can’t get everything working since one of your cards needs 2.6.x (exactly) and your other card needs 2.6.y.
Older kernel were much more predictable than this shit.
Thank’s for the patch anyway, I could get my USB WLAN adapter to work under 2.6.14