Update to work with 2.6.10-rc1-mm3+ (basically add support for the new pml4
authorMartin Schlemmer <azarah@gentoo.org>
Tue, 9 Nov 2004 22:39:36 +0000 (22:39 +0000)
committerMartin Schlemmer <azarah@gentoo.org>
Tue, 9 Nov 2004 22:39:36 +0000 (22:39 +0000)
stuff from Andi Kleen ... with a bit of help from him). Fix 'using
smp_processor_id() in preemptible code' traces. Remove -Wpointer-arith to
quiet down build (should really be a flag that they enable for internal
debugging).

media-video/nvidia-kernel/ChangeLog
media-video/nvidia-kernel/Manifest
media-video/nvidia-kernel/files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch [new file with mode: 0644]
media-video/nvidia-kernel/files/1.0.6629/nv-pgd_offset.patch [new file with mode: 0644]
media-video/nvidia-kernel/files/1.0.6629/nv-shutup-warnings.patch [new file with mode: 0644]
media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild

index 66c62b3e27017d4f298f4c46c382d6c0b8a25adb..a02b629662b98bfb09fe0da49da7b081cb52c0ed 100644 (file)
@@ -1,6 +1,17 @@
 # ChangeLog for media-video/nvidia-kernel
 # Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/ChangeLog,v 1.95 2004/11/07 23:30:45 cyfred Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/ChangeLog,v 1.96 2004/11/09 22:39:36 azarah Exp $
+
+  09 Nov 2004; Martin Schlemmer <azarah@gentoo.org>
+  +files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch,
+  +files/1.0.6629/nv-pgd_offset.patch,
+  +files/1.0.6629/nv-shutup-warnings.patch:
+  Update to work with 2.6.10-rc1-mm3+ (basically add support for the new pml4
+  stuff from Andi Kleen ... with a bit of help from him). Fix 'using
+  smp_processor_id() in preemptible code' traces. Remove -Wpointer-arith to
+  quiet down build (should really be a flag that they enable for internal
+  debugging).  Note that the 2.6.10-rc1-mm3+ support is only valid if you fixed
+  the EXPORT_SYMBOL_GPL() issue ...
 
   08 Nov 2004; Andrew Bevitt <cyfred@gentoo.org>
   nvidia-kernel-1.0.6111-r3.ebuild, nvidia-kernel-1.0.6629.ebuild:
index ef83fe1bcee1daed52d5c30264c2bec4184dbefc..8a5b990309bcd419d4b9af923125ca29dff00c78 100644 (file)
@@ -1,46 +1,49 @@
-MD5 3aaa58176d80f6684f305e8a0240ef2f nvidia-kernel-1.0.6106-r1.ebuild 3623
-MD5 c101203927723879a47e207f96102f93 nvidia-kernel-1.0.6629.ebuild 5664
-MD5 b5275c8797b4ec75716a04c8c9273fa7 nvidia-kernel-1.0.4499.ebuild 4026
-MD5 9fd1bc7f640bcab70de6aecd7a6d5105 nvidia-kernel-1.0.6111-r2.ebuild 4113
-MD5 ca5b83d42ef85a76927ca4372fa527f2 nvidia-kernel-1.0.5332-r1.ebuild 4254
 MD5 629e2c50f2d8d26979decb9e58030ae2 nvidia-kernel-1.0.5328-r1.ebuild 4463
-MD5 3bf6bcd6581fce2df5e410cfc2acba3f nvidia-kernel-1.0.4496-r3.ebuild 4284
-MD5 63a5b30228e33e7d1fc441ad59ca5ea3 nvidia-kernel-1.0.6111-r3.ebuild 6305
+MD5 db518b310ce13af5c3d6b0752e097d8d ChangeLog 23984
+MD5 ca5b83d42ef85a76927ca4372fa527f2 nvidia-kernel-1.0.5332-r1.ebuild 4254
+MD5 4a752bd1eb81a261506593b82daaa8c7 nvidia-kernel-1.0.5336-r4.ebuild 4783
 MD5 4e1d103a4e151f53d4bd38b12de4a592 nvidia-kernel-1.0.4363-r3.ebuild 4069
-MD5 e5604b2dea3d0ec84fe0f6904f39d0fd ChangeLog 23371
+MD5 9fd1bc7f640bcab70de6aecd7a6d5105 nvidia-kernel-1.0.6111-r2.ebuild 4113
+MD5 3bf6bcd6581fce2df5e410cfc2acba3f nvidia-kernel-1.0.4496-r3.ebuild 4284
+MD5 b5275c8797b4ec75716a04c8c9273fa7 nvidia-kernel-1.0.4499.ebuild 4026
 MD5 c84a79e7d9b69a204003fb8c2dbaad01 metadata.xml 297
-MD5 4a752bd1eb81a261506593b82daaa8c7 nvidia-kernel-1.0.5336-r4.ebuild 4783
-MD5 497ffcbd6a91ed9447dfdf7b736925bd files/digest-nvidia-kernel-1.0.5328-r1 80
+MD5 534b2d2939840b68d4efe816ea8764fc nvidia-kernel-1.0.6629.ebuild 6141
+MD5 3aaa58176d80f6684f305e8a0240ef2f nvidia-kernel-1.0.6106-r1.ebuild 3623
+MD5 63a5b30228e33e7d1fc441ad59ca5ea3 nvidia-kernel-1.0.6111-r3.ebuild 6305
+MD5 56ebaa3ba92e9db848baea746a6aef1a files/digest-nvidia-kernel-1.0.4363-r3 74
+MD5 8a4687b0fc3e7cc0b36c247697d94701 files/digest-nvidia-kernel-1.0.6629 163
+MD5 b6a9c4bdd3961980af4a70f57485d708 files/nvidia-1.1 441
+MD5 046ed3744551619863faea8c5c83db02 files/digest-nvidia-kernel-1.0.4499 74
+MD5 a88479c177f936b6ef19fc73bb39d149 files/digest-nvidia-kernel-1.0.4496-r3 80
 MD5 cf7b2bb276c568f0f66d10951b4ce3ad files/digest-nvidia-kernel-1.0.5332-r1 83
+MD5 497ffcbd6a91ed9447dfdf7b736925bd files/digest-nvidia-kernel-1.0.5328-r1 80
 MD5 1316f73c0eecd8832bb362a3d5ca4892 files/digest-nvidia-kernel-1.0.5336-r4 80
 MD5 50ffea0f5eb12d252905f379bc7be2d6 files/digest-nvidia-kernel-1.0.6106-r1 163
-MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r2 163
 MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r3 163
-MD5 046ed3744551619863faea8c5c83db02 files/digest-nvidia-kernel-1.0.4499 74
-MD5 8a4687b0fc3e7cc0b36c247697d94701 files/digest-nvidia-kernel-1.0.6629 163
-MD5 56ebaa3ba92e9db848baea746a6aef1a files/digest-nvidia-kernel-1.0.4363-r3 74
-MD5 a88479c177f936b6ef19fc73bb39d149 files/digest-nvidia-kernel-1.0.4496-r3 80
-MD5 b6a9c4bdd3961980af4a70f57485d708 files/nvidia-1.1 441
-MD5 f7d7092e9eb9fbe926ff1b8aa9b3f50e files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff 79485
-MD5 183b64f528e98221291072f12db5859d files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff 608
-MD5 c0f21cb76a7471671ec9665968dfaafb files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff 81900
-MD5 6d98825a3cf78f4a5ce42d4f4decab89 files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff 81553
+MD5 ed1e098d85579c75542ef0a49ee4dd5c files/digest-nvidia-kernel-1.0.6111-r2 163
+MD5 14924b09123b075f910c73316baff848 files/1.0.6111/power-suspend-2.6.9-changes.patch 856
+MD5 29eafcaf7ab5d59dd90d3d3243bf57c3 files/1.0.6111/nv_enable_pci.patch 3640
+MD5 762e6f6e16aa6dd5b2469e99fe8decd3 files/1.0.6111/nv-pci_find_class.patch 2903
+MD5 c2b155f40d7b904f07550e8e326969c2 files/1.0.6111/nv-remap-range.patch 5715
+MD5 5177339888e44bb5f4b6124fa5830e7f files/1.0.6111/vmalloc-reserve.patch 542
+MD5 b5b7f947ffb9e6c19f7457ff7c14d0db files/1.0.6111/conftest_koutput_includes.patch 1082
+MD5 bc61be48f85d84f91d2035fa3cc92a47 files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch 6659
 MD5 c2a29e883336157e1a3e99a0bceca549 files/1.0.4499/NVIDIA_kernel-1.0-4499-2.6-20031014.diff 69389
-MD5 e6571e952e13f13d9910b7ad29eaeb4a files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch 970
+MD5 dbf80a2cbaf69a10521429e1b2a7e10c files/1.0.6629/conftest_koutput_includes.patch 1082
+MD5 c3d0a0f59fa6b06a5ee139fb01858287 files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch 542
+MD5 e70739410861defb6bf3d40f2706d554 files/1.0.6629/nv-pgd_offset.patch 3139
+MD5 64d76075a90dedc83f1dc971389c910e files/1.0.6629/nv-shutup-warnings.patch 712
+MD5 f7d7092e9eb9fbe926ff1b8aa9b3f50e files/1.0.4363/NVIDIA_kernel-1.0-4363-2.5-20030714.diff 79485
 MD5 0d4e20c2320c685caad56e357cff0b0c files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20040105.diff 95197
+MD5 e6571e952e13f13d9910b7ad29eaeb4a files/1.0.5328/NVIDIA_kernel-1.0-5328-2.4-via-chipset-fix.patch 970
 MD5 f04497fe1a0f76fcc41a93b554072c4a files/1.0.5328/NVIDIA_kernel-1.0-5328-2.6-20031226.diff 77616
+MD5 6d98825a3cf78f4a5ce42d4f4decab89 files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20030905.diff 81553
+MD5 c0f21cb76a7471671ec9665968dfaafb files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-20031026.diff 81900
+MD5 183b64f528e98221291072f12db5859d files/1.0.4496/NVIDIA_kernel-1.0-4496-2.6-pci_name-20030905.diff 608
 MD5 4c7749ca72483547e15031a2af560415 files/1.0.5332/NVIDIA-Linux-x86_64-1.0-5332-2.6.diff 7216
-MD5 276907ebd8946791398f5f24c27e54c4 files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch 5666
-MD5 6b364c4b64c6de0aea70163850fa3914 files/1.0.5336/Makefile 4410
-MD5 d48d291f79542df558588d1d3575d51c files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch 1681
 MD5 442f1483c003d291a90dfcc87903b045 files/1.0.5336/NVIDIA_kernel-1.0-5336-2.6-20040521.patch 18711
+MD5 276907ebd8946791398f5f24c27e54c4 files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support-v2.patch 5666
 MD5 5dc4b9a2463cb459721ae3e642f6239f files/1.0.5336/NVIDIA_kernel-1.0-5336-fix-makefile-for-2.6.patch 886
+MD5 d48d291f79542df558588d1d3575d51c files/1.0.5336/NVIDIA_kernel-1.0-5336-kbuild-koutput-support.patch 1681
 MD5 7bf40e44b8f2181a1047ddfd13acd6b3 files/1.0.5336/NVIDIA_kernel-1.0-5336-basic-sysfs-support.patch 5439
-MD5 bc61be48f85d84f91d2035fa3cc92a47 files/1.0.6106/NVIDIA_kernel-1.0-6106-koutput-support.patch 6659
-MD5 762e6f6e16aa6dd5b2469e99fe8decd3 files/1.0.6111/nv-pci_find_class.patch 2903
-MD5 b5b7f947ffb9e6c19f7457ff7c14d0db files/1.0.6111/conftest_koutput_includes.patch 1082
-MD5 14924b09123b075f910c73316baff848 files/1.0.6111/power-suspend-2.6.9-changes.patch 856
-MD5 5177339888e44bb5f4b6124fa5830e7f files/1.0.6111/vmalloc-reserve.patch 542
-MD5 29eafcaf7ab5d59dd90d3d3243bf57c3 files/1.0.6111/nv_enable_pci.patch 3640
-MD5 c2b155f40d7b904f07550e8e326969c2 files/1.0.6111/nv-remap-range.patch 5715
-MD5 dbf80a2cbaf69a10521429e1b2a7e10c files/1.0.6629/conftest_koutput_includes.patch 1082
+MD5 6b364c4b64c6de0aea70163850fa3914 files/1.0.5336/Makefile 4410
diff --git a/media-video/nvidia-kernel/files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch b/media-video/nvidia-kernel/files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch
new file mode 100644 (file)
index 0000000..3ec45c9
--- /dev/null
@@ -0,0 +1,20 @@
+--- 1/nv/nv.c  2004-11-07 16:11:33.593487328 +0200
++++ 2/nv/nv.c  2004-11-07 16:12:12.473576656 +0200
+@@ -3156,6 +3156,8 @@ void NV_API_CALL nv_lock_rm(
+     nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
+     NO_COMPILER_WARNINGS(nvl);
+ 
++    preempt_disable();
++
+     if (nvl->rm_lock_cpu == smp_processor_id())
+     {
+         nvl->rm_lock_count++;
+@@ -3167,6 +3169,8 @@ void NV_API_CALL nv_lock_rm(
+ 
+    nvl->rm_lock_cpu = smp_processor_id();
+    nvl->rm_lock_count = 1;
++
++   preempt_enable();
+ }
+ 
+ void NV_API_CALL nv_unlock_rm(
diff --git a/media-video/nvidia-kernel/files/1.0.6629/nv-pgd_offset.patch b/media-video/nvidia-kernel/files/1.0.6629/nv-pgd_offset.patch
new file mode 100644 (file)
index 0000000..8c6029f
--- /dev/null
@@ -0,0 +1,99 @@
+diff -urpN nv.orig/Makefile.kbuild nv/Makefile.kbuild
+--- nv.orig/Makefile.kbuild    2004-11-09 20:27:54.012160376 +0200
++++ nv/Makefile.kbuild 2004-11-09 20:52:59.256328480 +0200
+@@ -168,6 +168,10 @@ ifeq ($(shell echo $(NV_BUILD_NV_PAT_SUP
+ CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT
+ endif
+ 
++ifeq ($(shell $(CONFTEST) pgd_offset), pml4)
++  EXTRA_CFLAGS += -DPML4_PGD_OFFSET
++endif
++
+ ifeq ($(shell $(CONFTEST) remap_pfn_range), 1)
+   EXTRA_CFLAGS += -DNV_REMAP_PFN_RANGE_PRESENT
+ else
+diff -urpN nv.orig/conftest.sh nv/conftest.sh
+--- nv.orig/conftest.sh        2004-11-09 20:27:54.012160376 +0200
++++ nv/conftest.sh     2004-11-09 20:58:16.565090216 +0200
+@@ -23,6 +23,35 @@ else
+ fi
+ 
+ case "$4" in
++    pgd_offset)
++        #
++        # Determine if we have pgd_offset, or pml4_pgd_offset.
++        #
++
++        # Not a very good test, but seems to do the trick
++        echo "#include <linux/mm.h>
++        #include <asm/pgtable.h>
++        int do_test_pgd_offset(void) {
++          unsigned long addr = (unsigned long)0;
++          pml4_t *pml4 = pml4_offset_k(addr);
++          pgd_t *pgd;
++
++          pgd = pml4_pgd_offset(pml4, addr);
++        }" > conftest$$.c
++
++        $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
++        rm -f conftest$$.c
++
++        if [ -f conftest$$.o ]; then
++          echo "pml4"
++          rm -f conftest$$.o
++          exit 0
++        else
++          echo "pgd"
++          exit 0
++        fi
++    ;;
++
+     remap_page_range)
+         #
+         # Determine the number of arguments expected by remap_page_range.
+diff -urpN nv.orig/nv-linux.h nv/nv-linux.h
+--- nv.orig/nv-linux.h 2004-11-09 20:27:54.011160528 +0200
++++ nv/nv-linux.h      2004-11-09 20:51:44.240732584 +0200
+@@ -615,6 +615,28 @@ typedef struct agp_memory agp_memory;
+ #define NV_UNREGISTER_CHRDEV(x...)  unregister_chrdev(x)
+ #endif
+ 
++#if defined(PML4_PGD_OFFSET)
++#define NV_PGD_OFFSET(mm, x...) \
++      ({ \
++            pgd_t *pgd = NULL; \
++            pml4_t *pml4 = pml4_offset(mm, x); \
++            if (!pml4_none(*pml4)) \
++                pgd = pml4_pgd_offset(pml4, address); \
++            pgd; \
++      })
++#define NV_PGD_OFFSET_K(x...) \
++        ({ \
++            pgd_t *pgd = NULL; \
++            pml4_t *pml4 = pml4_offset_k(x); \
++            if (!pml4_none(*pml4)) \
++                pgd = pml4_pgd_offset_k(pml4, address); \
++            pgd; \
++        })
++#else
++#define NV_PGD_OFFSET(mm, x...)     pgd_offset(mm, x)
++#define NV_PGD_OFFSET_K(x...)       pgd_offset_k(x)
++#endif
++
+ #if defined(NV_REMAP_PFN_RANGE_PRESENT)
+ #define NV_REMAP_PAGE_RANGE(from, offset, x...) \
+      remap_pfn_range(vma, from, ((offset) >> PAGE_SHIFT), x)
+diff -urpN nv.orig/nv.c nv/nv.c
+--- nv.orig/nv.c       2004-11-09 20:27:54.010160680 +0200
++++ nv/nv.c    2004-11-09 20:28:37.045618296 +0200
+@@ -2500,8 +2500,8 @@ _get_phys_address(
+     mm = (kern) ? &init_mm : current->mm;
+     spin_lock(&mm->page_table_lock);
+ 
+-    if (kern) pg_dir = pgd_offset_k(address);
+-    else pg_dir = pgd_offset(mm, address);
++    if (kern) pg_dir = NV_PGD_OFFSET_K(address);
++    else pg_dir = NV_PGD_OFFSET(mm, address);
+ 
+     if (!pg_dir || pgd_none(*pg_dir))
+         goto failed;
diff --git a/media-video/nvidia-kernel/files/1.0.6629/nv-shutup-warnings.patch b/media-video/nvidia-kernel/files/1.0.6629/nv-shutup-warnings.patch
new file mode 100644 (file)
index 0000000..851d40a
--- /dev/null
@@ -0,0 +1,12 @@
+diff -urpN nv.orig/Makefile.kbuild nv/Makefile.kbuild
+--- nv.orig/Makefile.kbuild    2004-11-09 20:27:54.012160376 +0200
++++ nv/Makefile.kbuild 2004-11-09 20:52:59.256328480 +0200
+@@ -73,7 +73,7 @@ endif
+ #
+ 
+ EXTRA_CFLAGS += -I$(src)
+-EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith  -Wno-multichar  -Werror -O -fno-common -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
++EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wno-multichar  -Werror -O -fno-common -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error
+ 
+ #
+ # We rely on these two definitions below; if they aren't set, we set them to
index 3db52447f0bddf74b261eafc596a872730c81e76..01b24e58f47e95b55f4572db14c0c393bf8f5629 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2004 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild,v 1.2 2004/11/07 23:30:45 cyfred Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild,v 1.3 2004/11/09 22:39:36 azarah Exp $
 
 inherit eutils kernel-mod
 
@@ -92,6 +92,12 @@ src_unpack() {
        cd ${S}
        # Fix the /usr/src/linux/include/asm not existing on koutput issue #58294
        epatch ${FILESDIR}/${PV}/conftest_koutput_includes.patch
+       # Fix pgd_offset() -> pml4_pgd_offset() for >=2.6.10-rc1-mm3
+       epatch ${FILESDIR}/${PV}/nv-pgd_offset.patch
+       # Fix calling of smp_processor_id() when preempt is enabled
+       epatch ${FILESDIR}/${PV}/nv-disable-preempt-on-smp_processor_id.patch
+       # Shutup pointer arith warnings
+       epatch ${FILESDIR}/${PV}/nv-shutup-warnings.patch
 
        # if you set this then it's your own fault when stuff breaks :)
        [ ! -z "${USE_CRAZY_OPTS}" ] && sed -i "s:-O:${CFLAGS}:" Makefile.*
@@ -169,11 +175,13 @@ pkg_postinst() {
        einfo "If you need to load the module automatically on boot up you need"
        einfo "to add \"nvidia\" to /etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
        echo
-       einfo "Please note that the driver name is \"nvidia\", not \"NVdriver\""
-       echo
        einfo "This module will now work correctly under udev, you do not need to"
        einfo "manually create the devices anymore."
        echo
+       ewarn "If you are using 2.6.10-r1-(bk|mm)[0-9]*, please note that you might have"
+       ewarn "to disable the kernel agp driver, and use NVAGP instead, as there are some"
+       ewarn "unresolved issues with some kernel agp drivers ..."
+       echo
        einfo "Checking kernel module dependencies"
        test -r "${ROOT}/usr/src/linux/System.map" && \
                depmod -ae -F "${ROOT}/usr/src/linux/System.map" -b "${ROOT}" -r ${KV}