diff options
author | Martin Schlemmer <azarah@gentoo.org> | 2003-07-14 11:56:10 +0000 |
---|---|---|
committer | Martin Schlemmer <azarah@gentoo.org> | 2003-07-14 11:56:10 +0000 |
commit | ad8ca0fa665633e7123a07e5d42acda8b36dd1d7 (patch) | |
tree | 4144c1977bca7c9c35ab148f7f279837baaea108 /media-video/nvidia-kernel | |
parent | update 2.5 patches; fixup highpmd stuff (diff) | |
download | historical-ad8ca0fa665633e7123a07e5d42acda8b36dd1d7.tar.gz historical-ad8ca0fa665633e7123a07e5d42acda8b36dd1d7.tar.bz2 historical-ad8ca0fa665633e7123a07e5d42acda8b36dd1d7.zip |
update 2.5 patches; fixup highpmd stuff
Diffstat (limited to 'media-video/nvidia-kernel')
4 files changed, 214 insertions, 2 deletions
diff --git a/media-video/nvidia-kernel/Manifest b/media-video/nvidia-kernel/Manifest index bc3f95b4fe2d..ea3f2b2b0d36 100644 --- a/media-video/nvidia-kernel/Manifest +++ b/media-video/nvidia-kernel/Manifest @@ -1,7 +1,7 @@ MD5 04b1f361d40708ab81631bea5e46a632 nvidia-kernel-1.0.2880-r1.ebuild 1970 -MD5 0fab994fcc2ec417b5fd46d491b8e369 ChangeLog 7890 +MD5 0067738cc0705d9823ed5f5d622e260d ChangeLog 8367 MD5 5177ed76121fb4bc1aa220c62319d196 nvidia-kernel-1.0.2960-r1.ebuild 2081 -MD5 cbda0499dcc63e7006d39139a2b2071c nvidia-kernel-1.0.4363-r3.ebuild 4325 +MD5 47a622c47c5a073a5969ef9e56886091 nvidia-kernel-1.0.4363-r3.ebuild 4325 MD5 16a9003f79bea31eeec6f03ae64cd8ef nvidia-kernel-1.0.3123-r2.ebuild 3229 MD5 cdcf177830becdf3c2cb628e1d6a6749 nvidia-kernel-1.0.4363-r2.ebuild 4180 MD5 0646bd1f1f1109063862d1475aaccab4 nvidia-kernel-1.0.4349-r2.ebuild 3702 diff --git a/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-highpmd-20030713.diff b/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-highpmd-20030713.diff new file mode 100644 index 000000000000..c24f7659e7ed --- /dev/null +++ b/media-video/nvidia-kernel/files/1.0.4363/NVIDIA_kernel-1.0-4363-highpmd-20030713.diff @@ -0,0 +1,53 @@ +diff -urpN NVIDIA_kernel-1.0-4363/nv-linux.h NVIDIA_kernel-1.0-4363.highpmd-fixup/nv-linux.h +--- NVIDIA_kernel-1.0-4363/nv-linux.h 2003-07-14 12:42:00.000000000 +0200 ++++ NVIDIA_kernel-1.0-4363.highpmd-fixup/nv-linux.h 2003-07-14 13:38:02.000000000 +0200 +@@ -228,14 +228,14 @@ + + #if defined(pmd_offset_map) + #define NV_PMD_OFFSET(address, pgd, pmd) \ +- { \ +- pmd_t *pmd__ = pmd_offset_map(pgd, address); \ +- pmd = *pmd__; \ +- pmd_unmap(pgd__); \ +- } ++ pmd = pmd_offset_map(pgd, address) ++#define NV_PMD_UNMAP(pmd) \ ++ pmd_unmap(pmd) + #else + #define NV_PMD_OFFSET(address, pgd, pmd) \ +- pmd = *pmd_offset(pgd, address) ++ pmd = pmd_offset(pgd, address) ++#define NV_PMD_UNMAP(pmd) \ ++ ; + #endif + + #define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE) +diff -urpN NVIDIA_kernel-1.0-4363/nv.c NVIDIA_kernel-1.0-4363.highpmd-fixup/nv.c +--- NVIDIA_kernel-1.0-4363/nv.c 2003-07-14 12:42:00.000000000 +0200 ++++ NVIDIA_kernel-1.0-4363.highpmd-fixup/nv.c 2003-07-14 13:38:43.000000000 +0200 +@@ -2087,7 +2087,7 @@ unsigned long + nv_get_phys_address(unsigned long address) + { + pgd_t *pgd; +- pmd_t pmd; ++ pmd_t *pmd; + pte_t pte; + + #if defined(NVCPU_IA64) +@@ -2110,10 +2110,14 @@ nv_get_phys_address(unsigned long addres + + NV_PMD_OFFSET(address, pgd, pmd); + +- if (pmd_none(pmd)) ++ if (pmd_none(*pmd)) { ++ NV_PMD_UNMAP(pmd); + goto failed; ++ } ++ ++ NV_PTE_OFFSET(address, pmd, pte); + +- NV_PTE_OFFSET(address, &pmd, pte); ++ NV_PMD_UNMAP(pmd); + + if (!pte_present(pte)) + goto failed; diff --git a/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3 b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3 new file mode 100644 index 000000000000..b1f93afc2136 --- /dev/null +++ b/media-video/nvidia-kernel/files/digest-nvidia-kernel-1.0.4363-r3 @@ -0,0 +1 @@ +MD5 29b4cfcff63f502787fd2f0ac7a105fd NVIDIA_kernel-1.0-4363.tar.gz 661447 diff --git a/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild b/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild new file mode 100644 index 000000000000..40d4ec12a40d --- /dev/null +++ b/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild @@ -0,0 +1,158 @@ +# Copyright 1999-2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/nvidia-kernel/nvidia-kernel-1.0.4363-r3.ebuild,v 1.1 2003/07/14 11:54:42 azarah Exp $ + +inherit eutils + +# Make sure Portage does _NOT_ strip symbols. Need both lines for +# Portage 1.8.9+ +DEBUGBUILD="yes" +RESTRICT="nostrip" + +NV_V="${PV/1.0./1.0-}" +NV_PACKAGE="NVIDIA_kernel-${NV_V}" +S="${WORKDIR}/${NV_PACKAGE}" +DESCRIPTION="Linux kernel module for the NVIDIA's X driver" +SRC_URI="ftp://download.nvidia.com/XFree86/Linux-x86/${NV_V}/${NV_PACKAGE}.tar.gz" +HOMEPAGE="http://www.nvidia.com/" + +# The slow needs to be set to $KV to prevent unmerges of +# modules for other kernels. +LICENSE="NVIDIA" +SLOT="${KV}" +KEYWORDS="~x86 -ppc -sparc -alpha -hppa -mips -arm" + +DEPEND="virtual/linux-sources + >=sys-apps/portage-1.9.10" +RDEPEND=${DEPEND} +IUSE="" + +pkg_setup() { + if [ ! -f /proc/mtrr ] + then + eerror "This version needs MTRR support for most chipsets!" + eerror "Please enable MTRR support in your kernel config, found at:" + eerror + eerror " Processor type and features -> [*] MTRR (Memory Type Range Register) support" + eerror + eerror "and recompile your kernel ..." + die "MTRR support not detected!" + fi + + check_version_h +} + +check_version_h() { + if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ] + then + eerror "Please verify that your /usr/src/linux symlink is pointing" + eerror "to your current kernel sources, and that you did run:" + eerror + eerror " # make dep" + die "/usr/src/linux symlink not setup!" + fi +} + +get_KV_info() { + check_version_h + + # Get the kernel version of sources in /usr/src/linux ... + export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \ + "${ROOT}/usr/src/linux/include/linux/version.h")" + export KV_major="$(echo "${KV_full}" | cut -d. -f1)" + export KV_minor="$(echo "${KV_full}" | cut -d. -f2)" + export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')" +} + +is_2_5_kernel() { + get_KV_info + + if [ "${KV_major}" -eq 2 -a "${KV_minor}" -eq 5 ] + then + return 0 + else + return 1 + fi +} + +src_unpack() { + unpack ${A} + + # Next section applies patches for linux-2.5 kernel, and/or + # bugfixes for linux-2.4. All these are from: + # + # http://www.minion.de/nvidia/ + # + # Many thanks to Christian Zander <zander@minion.de> for bringing + # these to us, and being so helpful to select which to use. + + get_KV_info + + cd ${S} + einfo "Linux kernel ${KV_major}.${KV_minor}.${KV_micro}" + + if is_2_5_kernel + then + EPATCH_SINGLE_MSG="Applying tasklet patch for kernel 2.5..." \ + epatch ${FILESDIR}/${PV}/${NV_PACKAGE}-2.5-20030713.diff + + # As Andrew Morton pointed out, it is not good practice to + # unmap something and then use a copy of the structure that + # was unmapped. + EPATCH_SINGLE_MSG="Applying highpmd cleanup patch..." \ + epatch ${FILESDIR}/${PV}/${NV_PACKAGE}-highpmd-20030713.diff + + # Kbuild have issues currently (sandbox related). + ln -snf Makefile.nvidia Makefile + fi +} + +src_compile() { + # Portage should determine the version of the kernel sources + check_KV + + # IGNORE_CC_MISMATCH disables a sanity check that's needed when gcc has been + # updated but the running kernel is still compiled with an older gcc. This is + # needed for chrooted building, where the sanity check detects the gcc of the + # kernel outside the chroot rather than within. + make IGNORE_CC_MISMATCH="yes" KERNDIR="/usr/src/linux" \ + clean nvidia.o || die +} + +src_install() { + # The driver goes into the standard modules location + insinto /lib/modules/${KV}/video + doins nvidia.o + + # Add the aliases + insinto /etc/modules.d + newins ${FILESDIR}/nvidia-1.1 nvidia + + # Docs + dodoc ${S}/README + + # The device creation script + into / + newsbin ${S}/makedevices.sh NVmakedevices.sh +} + +pkg_postinst() { + if [ "${ROOT}" = "/" ] + then + # Update module dependency + [ -x /usr/sbin/update-modules ] && /usr/sbin/update-modules + if [ ! -e /dev/.devfsd ] && [ -x /sbin/NVmakedevices.sh ] + then + /sbin/NVmakedevices.sh >/dev/null 2>&1 + fi + fi + + echo + einfo "If you are not using devfs, loading the module automatically at" + einfo "boot up, you need to add \"nvidia\" to your /etc/modules.autoload." + echo + ewarn "Please note that the driver name changed from \"NVdriver\"" + ewarn "to \"nvidia.o\"." + echo +} + |