From 90b738b97cf1756f7b6d47b1585008cf6509c3f2 Mon Sep 17 00:00:00 2001 From: Martin Schlemmer Date: Tue, 9 Nov 2004 22:39:36 +0000 Subject: [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). --- media-video/nvidia-kernel/ChangeLog | 13 ++- media-video/nvidia-kernel/Manifest | 67 +++++++------ ...-disable-preempt-on-smp_processor_id.patch | 20 ++++ .../files/1.0.6629/nv-pgd_offset.patch | 99 +++++++++++++++++++ .../files/1.0.6629/nv-shutup-warnings.patch | 12 +++ .../nvidia-kernel-1.0.6629.ebuild | 14 ++- 6 files changed, 189 insertions(+), 36 deletions(-) create mode 100644 media-video/nvidia-kernel/files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch create mode 100644 media-video/nvidia-kernel/files/1.0.6629/nv-pgd_offset.patch create mode 100644 media-video/nvidia-kernel/files/1.0.6629/nv-shutup-warnings.patch diff --git a/media-video/nvidia-kernel/ChangeLog b/media-video/nvidia-kernel/ChangeLog index 66c62b3e2701..a02b629662b9 100644 --- a/media-video/nvidia-kernel/ChangeLog +++ b/media-video/nvidia-kernel/ChangeLog @@ -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 + +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 nvidia-kernel-1.0.6111-r3.ebuild, nvidia-kernel-1.0.6629.ebuild: diff --git a/media-video/nvidia-kernel/Manifest b/media-video/nvidia-kernel/Manifest index ef83fe1bcee1..8a5b990309bc 100644 --- a/media-video/nvidia-kernel/Manifest +++ b/media-video/nvidia-kernel/Manifest @@ -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 index 000000000000..3ec45c97101b --- /dev/null +++ b/media-video/nvidia-kernel/files/1.0.6629/nv-disable-preempt-on-smp_processor_id.patch @@ -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 index 000000000000..8c6029fdb709 --- /dev/null +++ b/media-video/nvidia-kernel/files/1.0.6629/nv-pgd_offset.patch @@ -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 ++ #include ++ 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 index 000000000000..851d40a1faa8 --- /dev/null +++ b/media-video/nvidia-kernel/files/1.0.6629/nv-shutup-warnings.patch @@ -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 diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild index 3db52447f0bd..01b24e58f47e 100644 --- a/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild +++ b/media-video/nvidia-kernel/nvidia-kernel-1.0.6629.ebuild @@ -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} -- 2.26.2