Major overhaul
authorLuca Barbato <lu_zero@gentoo.org>
Fri, 4 Nov 2005 12:38:19 +0000 (12:38 +0000)
committerLuca Barbato <lu_zero@gentoo.org>
Fri, 4 Nov 2005 12:38:19 +0000 (12:38 +0000)
Package-Manager: portage-2.0.53_rc6

media-video/ati-drivers/ChangeLog
media-video/ati-drivers/Manifest
media-video/ati-drivers/ati-drivers-8.18.8-r1.ebuild [new file with mode: 0644]
media-video/ati-drivers/files/digest-ati-drivers-8.18.8-r1 [new file with mode: 0644]
media-video/ati-drivers/files/fglrx-2.6.14-access_ok.patch [new file with mode: 0644]
media-video/ati-drivers/files/fglrx-2.6.14-compat_ioctl.patch [new file with mode: 0644]

index 7351e021d225e143c4cb0d434a03ddbab8aa2db4..3804dcf3a4c53a64b078a97d9aca3ef467ce1fdf 100644 (file)
@@ -1,6 +1,15 @@
 # ChangeLog for media-video/ati-drivers
 # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ChangeLog,v 1.121 2005/10/28 07:18:47 lu_zero Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ChangeLog,v 1.122 2005/11/04 12:38:19 lu_zero Exp $
+
+*ati-drivers-8.18.8-r1 (04 Nov 2005)
+
+  04 Nov 2005; Luca Barbato <lu_zero@gentoo.org>
+  +files/fglrx-2.6.14-access_ok.patch,
+  +files/fglrx-2.6.14-compat_ioctl.patch, +ati-drivers-8.18.8-r1.ebuild:
+  New ebuild with linux 2.6.14 and modular X support, thanks to Mike Auty
+  <m.auty@softhome.net> and George L. Emigh <george@georgelemigh.com>, kernel
+  patches from ati unofficial bugzilla
 
 *ati-drivers-8.18.8 (28 Oct 2005)
 
index b4c526de66c2bd1c3664859695cd92790c92a33f..647c3015413a0cc7f03017029213383e04f31820 100644 (file)
@@ -1,28 +1,32 @@
-MD5 62c92bb51d8753565542d8ab3167f664 ati-drivers-8.18.8.ebuild 7857
-MD5 c306bb93866a4dd8913899229dd20726 metadata.xml 227
+MD5 07e3d7f1e1b45b625b42eeae2a893f88 ChangeLog 21987
 MD5 b0e07b107756bc3303e04b578b67d9a1 ati-drivers-8.14.13-r2.ebuild 6687
-MD5 2e5825fd6b2b03eb70a10b920f7eb3e3 ati-drivers-8.18.6.ebuild 7086
+MD5 a96355b7f8818179863b85c69bf584c3 ati-drivers-8.14.13-r3.ebuild 7675
 MD5 a37cb5612ebeb94a8e4fa889c88c7c9e ati-drivers-8.14.13-r4.ebuild 7495
 MD5 2e1be14c39b4c9fd43e3f87b580e5302 ati-drivers-8.14.13-r5.ebuild 7781
-MD5 3d37cc1ba0ff95564e3da181e3f1eed8 ati-drivers-8.18.6-r1.ebuild 7910
-MD5 142444f733b464a3c075fac4415aef50 ati-drivers-8.16.20.ebuild 6227
-MD5 7346755fc59af5e82171671c63048aab ChangeLog 21596
-MD5 a96355b7f8818179863b85c69bf584c3 ati-drivers-8.14.13-r3.ebuild 7675
 MD5 9f31103cb72e7f3a236941fa70891c5a ati-drivers-8.16.20-r1.ebuild 6512
-MD5 0850638c4f5ac2466c793df428fc5d84 files/fglrx-2.6.12-pci_name.patch 2807
-MD5 ac17fe94be90be4ac158d26cd759884f files/digest-ati-drivers-8.16.20-r1 158
+MD5 142444f733b464a3c075fac4415aef50 ati-drivers-8.16.20.ebuild 6227
+MD5 3d37cc1ba0ff95564e3da181e3f1eed8 ati-drivers-8.18.6-r1.ebuild 7910
+MD5 2e5825fd6b2b03eb70a10b920f7eb3e3 ati-drivers-8.18.6.ebuild 7086
+MD5 ec484cd3e1f4b41a61ec90075caf75aa ati-drivers-8.18.8-r1.ebuild 8060
+MD5 62c92bb51d8753565542d8ab3167f664 ati-drivers-8.18.8.ebuild 7857
+MD5 e61309d064f12cc623e4d6e78aa82b36 files/09ati 39
 MD5 32c54a887820a2712b641217c3b54272 files/8.8.25-smp.patch 376
-MD5 b9b5079b56d44f5056ac6b7e846943be files/digest-ati-drivers-8.18.8 168
-MD5 82c5244e2e3822f5e73ff38138dc23c1 files/digest-ati-drivers-8.14.13-r4 157
-MD5 275238baa6d2db2b96bc8b98275a7928 files/fglrx-8.14.13-alt-2.6.12-agp.patch 2586
 MD5 f1b11573ad27da023fce7d7a67a37861 files/8.8.25-via-amd64.patch 1198
-MD5 3f9c6083c83f1c87c4b860ef4eca55f6 files/digest-ati-drivers-8.18.6-r1 168
-MD5 73907ca81a7435350b4529ddaa7305d5 files/ioctl32.patch 368
 MD5 82c5244e2e3822f5e73ff38138dc23c1 files/digest-ati-drivers-8.14.13-r2 157
-MD5 3e29001f6bcfcec91a4802e6c6e37fc1 files/digest-ati-drivers-8.18.6 156
-MD5 e61309d064f12cc623e4d6e78aa82b36 files/09ati 39
-MD5 ac17fe94be90be4ac158d26cd759884f files/digest-ati-drivers-8.16.20 158
 MD5 82c5244e2e3822f5e73ff38138dc23c1 files/digest-ati-drivers-8.14.13-r3 157
+MD5 82c5244e2e3822f5e73ff38138dc23c1 files/digest-ati-drivers-8.14.13-r4 157
 MD5 82c5244e2e3822f5e73ff38138dc23c1 files/digest-ati-drivers-8.14.13-r5 157
+MD5 ac17fe94be90be4ac158d26cd759884f files/digest-ati-drivers-8.16.20 158
+MD5 ac17fe94be90be4ac158d26cd759884f files/digest-ati-drivers-8.16.20-r1 158
+MD5 3e29001f6bcfcec91a4802e6c6e37fc1 files/digest-ati-drivers-8.18.6 156
+MD5 3f9c6083c83f1c87c4b860ef4eca55f6 files/digest-ati-drivers-8.18.6-r1 168
+MD5 b9b5079b56d44f5056ac6b7e846943be files/digest-ati-drivers-8.18.8 168
+MD5 b9b5079b56d44f5056ac6b7e846943be files/digest-ati-drivers-8.18.8-r1 168
 MD5 9ae27a9d7736cb6ce30b41ff384004d8 files/fglrx-2.6.12-inter_module_get.patch 1265
+MD5 0850638c4f5ac2466c793df428fc5d84 files/fglrx-2.6.12-pci_name.patch 2807
+MD5 27685e5b509889cb606108eec627aaac files/fglrx-2.6.14-access_ok.patch 521
+MD5 2e151bc6c93225be53fd1a68d36ee877 files/fglrx-2.6.14-compat_ioctl.patch 3227
+MD5 275238baa6d2db2b96bc8b98275a7928 files/fglrx-8.14.13-alt-2.6.12-agp.patch 2586
+MD5 73907ca81a7435350b4529ddaa7305d5 files/ioctl32.patch 368
 MD5 0a9c95a134ef4f317240c54f62e9480e files/p1.patch 1120
+MD5 c306bb93866a4dd8913899229dd20726 metadata.xml 227
diff --git a/media-video/ati-drivers/ati-drivers-8.18.8-r1.ebuild b/media-video/ati-drivers/ati-drivers-8.18.8-r1.ebuild
new file mode 100644 (file)
index 0000000..4238157
--- /dev/null
@@ -0,0 +1,304 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/ati-drivers/ati-drivers-8.18.8-r1.ebuild,v 1.1 2005/11/04 12:38:19 lu_zero Exp $
+
+IUSE="opengl"
+
+inherit eutils rpm multilib linux-info linux-mod toolchain-funcs
+
+DESCRIPTION="Ati precompiled drivers for r350, r300, r250 and r200 chipsets"
+HOMEPAGE="http://www.ati.com"
+SRC_URI="x86? ( mirror://gentoo/ati-driver-installer-${PV}-i386.run )
+        amd64? ( mirror://gentoo/ati-driver-installer-${PV}-x86_64.run )"
+
+LICENSE="ATI"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND=">=x11-base/xorg-x11-6.8.0
+        app-admin/eselect-opengl
+        || ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* )"
+
+DEPEND=">=virtual/linux-sources-2.4
+       ${RDEPEND}"
+
+PROVIDE="virtual/opengl"
+
+ATIBIN="${D}/opt/ati/bin"
+RESTRICT="nostrip multilib-pkg-force"
+
+MODULE_NAMES="fglrx(video:${WORKDIR}/common/lib/modules/fglrx/build_mod)"
+
+
+choose_driver_folder() {
+       #new modular X paths
+       if [ "$(get_version_component_range 1 ${X11_IMPLEM_V})" = 7 ]
+       then
+               BASE_NAME="${WORKDIR}/x690"
+               xlibdir="xorg"
+       else
+               BASE_NAME="${WORKDIR}/x$(get_version_component_range 1 ${X11_IMPLEM_V})"
+               xlibdir=""
+
+               # Determine if we are facing X.org 6.8.99 aka 6.9
+               if [ "$(get_version_component_range 1 ${X11_IMPLEM_V})" = 6 ] &&
+                  [ "$(get_version_component_range 2 ${X11_IMPLEM_V})" = 8 ] &&
+                  [ "$(get_version_component_range 3 ${X11_IMPLEM_V})" = 99 ]
+               then
+                       BASE_NAME="${BASE_NAME}90"
+               else
+                       BASE_NAME="${BASE_NAME}$(get_version_component_range 2 ${X11_IMPLEM_V})0"
+               fi
+       fi
+
+       if use amd64 ; then
+               BASE_NAME="${BASE_NAME}_64a"
+       fi
+}
+
+pkg_setup(){
+       #check kernel and sets up KV_OBJ
+       linux-mod_pkg_setup
+       local agp
+       ebegin "Checking for MTRR support enabled"
+       linux_chkconfig_present MTRR
+       eend $?
+       if [[ $? -ne 0 ]] ; then
+       ewarn "You don't have MTRR support enabled, the direct rendering"
+       ewarn "will not work."
+       fi
+
+       ebegin "Checking for AGP support enabled"
+       linux_chkconfig_present AGP
+       eend $?
+
+       if [[ $? -ne 0 ]] ; then
+
+               ebegin "Checking for PCI Express support enabled"
+               linux_chkconfig_present PCIEPORTBUS
+               eend $?
+
+               if [[ $? -ne 0 ]] ; then
+                       ewarn "If you don't have either AGP or PCI Express support enabled, direct rendering"
+                       ewarn "could work only using the internal support."
+               fi
+
+       fi
+       ebegin "Checking for DRM support disabled"
+       ! linux_chkconfig_builtin DRM
+       eend $?
+       if [[ $? -ne 0 ]] ; then
+       ewarn "You have DRM support enabled builtin, the direct rendering"
+       ewarn "will not work."
+       fi
+
+       # Set up X11 implementation
+       X11_IMPLEM_P="$(best_version virtual/x11)"
+       X11_IMPLEM="${X11_IMPLEM_P%-[0-9]*}"
+       X11_IMPLEM="${X11_IMPLEM##*\/}"
+       X11_IMPLEM_V="${X11_IMPLEM_P/${X11_IMPLEM}-/}"
+       X11_IMPLEM_V="${X11_IMPLEM_V##*\/}"
+       einfo "X11 implementation is ${X11_IMPLEM}."
+       choose_driver_folder
+}
+
+src_unpack() {
+       local OLDBIN="/usr/X11R6/bin"
+
+       ebegin "Unpacking Ati drivers"
+       sh ${DISTDIR}/${A} --extract ${WORKDIR} &> /dev/null
+       eend $? || die "unpack failed"
+
+       rm -rf ${BASE_NAME}/usr/X11R6/bin/{fgl_glxgears,fireglcontrolpanel}
+
+       cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
+
+       if kernel_is 2 6
+       then
+               epatch "${FILESDIR}/fglrx-2.6.14-access_ok.patch"
+               epatch "${FILESDIR}/fglrx-2.6.14-compat_ioctl.patch"
+       fi
+}
+
+
+src_compile() {
+       einfo "Building the DRM module..."
+       cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
+       ln -s ${BASE_NAME}/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC$(gcc-major-version)
+
+       if kernel_is 2 6
+       then
+               set_arch_to_kernel
+               addwrite "/usr/src/${FK}"
+               cp 2.6.x/Makefile .
+               export _POSIX2_VERSION="199209"
+               if use_m ;
+               then
+                       make -C ${KV_DIR} M="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
+                               modules || ewarn "DRM module not built"
+               else
+                       make -C ${KV_DIR} SUBDIRS="`pwd`" GCC_VER_MAJ=$(gcc-major-version) \
+                               modules || ewarn "DRM module not built"
+               fi
+               set_arch_to_portage
+       else
+               export _POSIX2_VERSION="199209"
+               # That is the dirty way to avoid the id -u check
+               sed -e 's:`id -u`:0:' \
+                       -e "s:\`uname -r\`:${KV_FULL}:" \
+                       -i make.sh
+               chmod +x make.sh
+               ./make.sh || ewarn "DRM module not built"
+       fi
+}
+
+pkg_preinst() {
+       # Clean the dynamic libGL stuff's home to ensure
+       # we don't have stale libs floating around ...
+       if [ -d "${ROOT}/usr/lib/opengl/ati" ]
+       then
+               rm -rf ${ROOT}/usr/lib/opengl/ati/*
+       fi
+}
+
+src_install() {
+       local ATI_ROOT="/usr/lib/opengl/ati"
+
+       cd ${WORKDIR}/common/lib/modules/fglrx/build_mod
+       linux-mod_src_install
+
+       cd ${WORKDIR}
+
+       local native_dir
+       use x86 && native_dir="lib"
+       use amd64 && native_dir="lib64"
+
+       # Install the libs
+       # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage
+       local MLTEST=$(type dyn_unpack)
+       if [ "${MLTEST/set_abi/}" = "${MLTEST}" ] && has_multilib_profile; then
+               local OABI=${ABI}
+               for ABI in $(get_install_abis); do
+                       src_install-libs
+               done
+               ABI=${OABI}
+               unset OABI
+       elif has_multilib_profile; then
+               src_install-libs
+       elif use amd64; then
+               src_install-libs lib $(get_multilibdir)
+               src_install-libs lib64 $(get_libdir)
+       else
+               src_install-libs
+       fi &> /dev/null
+
+       #apps
+       exeinto /opt/ati/bin
+       doexe ${BASE_NAME}/usr/X11R6/bin/*
+
+       #ati custom stuff
+       insinto /usr
+       doins -r ${WORKDIR}/common/usr/include
+
+       #env.d entry
+       cp ${FILESDIR}/09ati ${T}/
+
+       #Work around hardcoded path in 32bit libGL.so on amd64, bug 101539
+       if has_multilib_profile && [ $(get_abi_LIBDIR x86) = "lib32" ] ; then
+               cat >>${T}/09ati <<EOF
+
+LIBGL_DRIVERS_PATH="/usr/lib32/modules/dri/:/usr/$(get_libdir)/modules/dri"
+EOF
+       fi
+
+       doenvd ${T}/09ati
+}
+
+src_install-libs() {
+       local pkglibdir=lib
+       local inslibdir="$(get_libdir)/$xlibdir"
+       if [ ${#} -eq 2 ]; then
+               pkglibdir=${1}
+               inslibdir=${2}
+       elif has_multilib_profile && [ "${ABI}" == "amd64" ]; then
+               pkglibdir=lib64
+       fi
+
+       einfo "${pkglibdir} -> ${inslibdir}"
+
+       local ATI_ROOT="/usr/$(get_libdir)/opengl/ati"
+
+       # The GLX libraries
+       exeinto ${ATI_ROOT}/lib
+       doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/libGL.so.1.2
+       dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so.1
+       dosym libGL.so.1.2 ${ATI_ROOT}/lib/libGL.so
+
+       # Don't do this... see bug #47598
+       #dosym libGL.so.1.2 ${ATI_ROOT}/lib/libMesaGL.so
+
+       # same as the xorg implementation
+       dosym ../${X11_IMPLEM}/extensions ${ATI_ROOT}/extensions
+       #Workaround
+       if use opengl ; then
+       sed -e "s:libdir=.*:libdir=${ATI_ROOT}/lib:" \
+               /usr/$(get_libdir)/opengl/${X11_IMPLEM}/lib/libGL.la \
+               > $D/${ATI_ROOT}/lib/libGL.la
+       dosym ../${X11_IMPLEM}/include ${ATI_ROOT}/include
+       fi
+       # X and DRI driver
+       if has_version ">=x11-base/xorg-x11-6.8.0-r4"
+       then
+               local X11_DIR="/usr/"
+       else
+               local X11_DIR="/usr/X11R6/"
+       fi
+
+       local X11_LIB_DIR="${X11_DIR}${inslibdir}"
+
+       exeinto ${X11_LIB_DIR}/modules/drivers
+       # In X.org 6.8.99 / 6.9 this is a .so
+       doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/modules/drivers/fglrx_drv.*o
+
+       exeinto ${X11_LIB_DIR}/modules/dri
+       doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so
+       doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/modules/dri/atiogl_a_dri.so
+
+       exeinto ${X11_LIB_DIR}/modules/linux
+       # In X.org 6.8.99 / 6.9 this is a .so
+       if has_version ">=x11-base/xorg-x11-6.8.99"
+       then
+               doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/modules/linux/libfglrxdrm.so
+       else
+               doexe ${BASE_NAME}/usr/X11R6/${pkglibdir}/modules/linux/libfglrxdrm.a
+       fi
+       cp -pPR ${BASE_NAME}/usr/X11R6/${pkglibdir}/lib{fglrx_*,aticonfig} \
+                       ${D}/${X11_LIB_DIR}
+       #Not the best place
+       insinto ${X11_DIR}/include/X11/extensions
+       doins ${BASE_NAME}/usr/X11R6/include/X11/extensions/fglrx_gamma.h
+
+       dodir /etc
+       cp -pPR ${BASE_NAME}/etc/* ${D}/etc/
+}
+
+
+pkg_postinst() {
+       /usr/bin/eselect opengl set --use-old ati
+
+       echo
+       einfo "To switch to ATI OpenGL, run \"eselect opengl set ati\""
+       einfo "To change your XF86Config you can use the bundled \"aticonfig\""
+       if use !opengl ; then
+       ewarn "You don't have the opengl useflag enabled, you won't be able to build"
+       ewarn "opengl applications nor use opengl driver features, if that isn't"
+       ewarn "the intended behaviour please add opengl to your useflag and issue"
+       ewarn "# emerge -Nu ati-drivers"
+       fi
+       # DRM module
+       linux-mod_pkg_postinst
+}
+
+pkg_postrm() {
+       /usr/bin/eselect opengl set --use-old xorg-x11
+}
+
diff --git a/media-video/ati-drivers/files/digest-ati-drivers-8.18.8-r1 b/media-video/ati-drivers/files/digest-ati-drivers-8.18.8-r1
new file mode 100644 (file)
index 0000000..3b61133
--- /dev/null
@@ -0,0 +1,2 @@
+MD5 0618d75904a4b2dd3a2dc822c093a116 ati-driver-installer-8.18.8-i386.run 62367182
+MD5 71da0e3a3f01b401017d85c3cf16d715 ati-driver-installer-8.18.8-x86_64.run 53490938
diff --git a/media-video/ati-drivers/files/fglrx-2.6.14-access_ok.patch b/media-video/ati-drivers/files/fglrx-2.6.14-access_ok.patch
new file mode 100644 (file)
index 0000000..50f1944
--- /dev/null
@@ -0,0 +1,16 @@
+--- build_mod.orig/firegl_public.c     2005-10-22 10:35:00.000000000 +0200
++++ build_mod/firegl_public.c  2005-10-29 11:13:21.000000000 +0200
+
+@@ -1590,7 +1595,11 @@
+ 
+ int ATI_API_CALL __ke_verify_area(int type, const void * addr, unsigned long size)
+ {
+-    return verify_area(type, addr, size);
++#ifdef access_ok
++   return access_ok(type,addr,size) ? 0 : -EFAULT;
++#else
++   return verify_area(type, addr, size);
++#endif 
+ }
+ 
+ int ATI_API_CALL __ke_get_pci_device_info(__ke_pci_dev_t* dev, __ke_pci_device_info_t *pinfo)
diff --git a/media-video/ati-drivers/files/fglrx-2.6.14-compat_ioctl.patch b/media-video/ati-drivers/files/fglrx-2.6.14-compat_ioctl.patch
new file mode 100644 (file)
index 0000000..b333b5b
--- /dev/null
@@ -0,0 +1,104 @@
+--- build_mod.orig/firegl_public.c     2005-11-02 20:29:43.535048712 -0800
++++ build_mod/firegl_public.c  2005-11-02 20:27:19.013019400 -0800
+@@ -122,7 +122,6 @@
+ 
+ #ifdef __x86_64__
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
+-#include "linux/ioctl32.h"
+ #else
+ #include "asm/ioctl32.h"
+ #endif
+@@ -191,6 +190,16 @@ _syscall3( int, modify_ldt, int, func, v
+ // ============================================================
+ /* globals */
+ 
++int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file*));
++long realHandler_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
++void unregister_ioctl32_conversion(unsigned int cmd);
++struct HandlerList {
++       unsigned int cmd;
++       void *handler;
++       struct HandlerList *next;
++};
++struct HandlerList *HandlerListHead = 0x0;
++
+ char* firegl = NULL;
+ int __ke_debuglevel = 0;
+ int __ke_moduleflags = 0;
+@@ -258,6 +267,7 @@ static struct file_operations firegl_fop
+     open:    ip_firegl_open,
+     release: ip_firegl_release,
+     ioctl:   ip_firegl_ioctl,
++    compat_ioctl: realHandler_compat_ioctl,
+     mmap:    ip_firegl_mmap,
+ };
+ 
+@@ -2220,10 +2230,68 @@ int ATI_API_CALL __ke_register_ioctl32_c
+     return register_ioctl32_conversion(cmd, handler);
+ }
+ 
++
++ int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file*))
++ {
++       sizeof(struct HandlerList);
++       struct HandlerList *newHandler = kmalloc(sizeof(struct HandlerList), 0);
++       newHandler->cmd = cmd;
++       newHandler->handler = handler;
++       newHandler->next = HandlerListHead;
++       HandlerListHead = newHandler;
++       return 0;
++ }
++ 
++ long realHandler_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
++ {     
++       int fd;
++       int (*handler)(unsigned int, unsigned int, unsigned long, struct file*);
++       struct fdtable *fdt;
++       struct HandlerList *HandlerEntry = HandlerListHead;
++ 
++       while(HandlerEntry->cmd != cmd){
++               if(HandlerEntry->next == 0x0){ 
++                       return -1;
++               }
++               HandlerEntry = HandlerEntry->next;
++       }       
++       handler = HandlerEntry->handler;
++       fdt = files_fdtable(current->files);
++       for(fd=0;fd<fdt->max_fds;fd++){
++               if(fdt->fd[fd] == filp){
++                       return handler(fd, cmd, arg, filp);
++               }
++       }
++       return -1;
++}
++
++
++
+ void ATI_API_CALL __ke_unregister_ioctl32_conversion(unsigned int cmd)
+ {
+     unregister_ioctl32_conversion(cmd);
+ }
++
++ void unregister_ioctl32_conversion(unsigned int cmd)
++ {
++       struct HandlerList *ahead, *behind;
++       if(HandlerListHead == 0x0) return;
++       behind = HandlerListHead;
++       ahead = HandlerListHead->next;
++       if(behind->cmd == cmd){
++               HandlerListHead = ahead;
++               kfree(behind);
++               return;
++       }
++       while(ahead->cmd != cmd){
++               behind = ahead;
++               ahead = ahead->next;
++       }
++       behind->next = ahead->next;
++       kfree(ahead);
++       return;
++ }
++
+ #endif
+ 
+ /* agp_memory related routine for IGP */