From: Roberto Nibali <ratz@drugphish.ch>
To: Brian Davids <dlister@dlister.net>
Cc: linux-kernel@vger.kernel.org, Michail Rusinov <one@da.ru>
Subject: Re: PROBLEM: NVidia drivers with 2.5 kernel
Date: Fri, 31 May 2002 01:31:08 +0200 [thread overview]
Message-ID: <3CF6B63C.80508@drugphish.ch> (raw)
In-Reply-To: <3CF6723E.3020502@dlister.net>
[-- Attachment #1: Type: text/plain, Size: 540 bytes --]
> There was a patch to nVidia's v.2880 drivers tested on kernel 2.5.15
> posted on May 13 which you can find here:
> http://www.uwsg.iu.edu/hypermail/linux/kernel/0205.1/1034.html
Attached is a version forward ported for:
o linux kernel 2.5.19
o NVIDIA_kernel-1.0-2960
I'm running it on a Dell Inspiron 8000. Besides 2.5.19 being sluggish as
hell and that the HDIO_SET_32BIT ioctl seem not to work, quake2 runs
like hell ;)
Cheers,
Roberto Nibali, ratz
--
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc
[-- Attachment #2: patch.nvidia-2.5.19.diff --]
[-- Type: text/plain, Size: 7194 bytes --]
diff -ur NVIDIA_kernel-1.0-2960/nv-linux.h NVIDIA_kernel-1.0-2960-2.5.19/nv-linux.h
--- NVIDIA_kernel-1.0-2960/nv-linux.h Tue May 14 17:26:16 2002
+++ NVIDIA_kernel-1.0-2960-2.5.19/nv-linux.h Fri May 31 01:03:24 2002
@@ -38,7 +38,7 @@
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
# define KERNEL_2_4
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-# error This driver does not support 2.5.x development kernels!
+//# error This driver does not support 2.5.x development kernels!
# define KERNEL_2_5
#else
# error This driver does not support 2.6.x or newer kernels!
diff -ur NVIDIA_kernel-1.0-2960/nv.c NVIDIA_kernel-1.0-2960-2.5.19/nv.c
--- NVIDIA_kernel-1.0-2960/nv.c Tue May 14 17:26:16 2002
+++ NVIDIA_kernel-1.0-2960-2.5.19/nv.c Fri May 31 01:15:03 2002
@@ -50,6 +50,12 @@
#include <linux/devfs_fs_kernel.h>
#endif
+/* Since 2.5.x this is needed for the coorect lookup of the page table entry */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0)
+#include <asm/kmap_types.h>
+#include <linux/highmem.h>
+#endif
+
#include <asm/page.h>
#include <asm/pgtable.h> // pte bit definitions
#include <asm/system.h> // cli(), *_flags
@@ -1155,11 +1161,22 @@
/* for control device, just jump to its open routine */
/* after setting up the private data */
+
+ /* I don't really know the correct kernel version since when it changed */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
return nv_kern_ctl_open(inode, file);
-
+#else
+ if (NV_DEVICE_IS_CONTROL_DEVICE(kdev_val(inode->i_rdev)))
+ return nv_kern_ctl_open(inode, file);
+#endif
/* what device are we talking about? */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
devnum = NV_DEVICE_NUMBER(inode->i_rdev);
+#else
+ devnum = NV_DEVICE_NUMBER(kdev_val(inode->i_rdev));
+#endif
if (devnum >= NV_MAX_DEVICES)
{
rc = -ENODEV;
@@ -1265,9 +1282,14 @@
/* for control device, just jump to its open routine */
/* after setting up the private data */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
if (NV_DEVICE_IS_CONTROL_DEVICE(inode->i_rdev))
+ return nv_kern_ctl_close(inode, file);
+#else
+ if(NV_DEVICE_IS_CONTROL_DEVICE(kdev_val(inode->i_rdev)))
return nv_kern_ctl_close(inode, file);
-
+#endif
NV_DMSG(nv, "close");
nv_unix_free_all_unused_clients(nv, current->pid, (void *) file);
@@ -1386,11 +1408,21 @@
#if defined(IA64)
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
if (remap_page_range(vma->vm_start,
(u32)(nv->regs.address) + LINUX_VMA_OFFS(vma) - NV_MMAP_REG_OFFSET,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
+#else
+ if (remap_page_range(vma,
+ vma->vm_start,
+ (u32) (nv->regs.address) + LINUX_VMA_OFFS(vma) - NV_MMAP_REG_OFFSET,
+ vma->vm_end - vma->vm_start,
+ vma->vm_page_prot))
+ return -EAGAIN;
+#endif
/* mark it as IO so that we don't dump it on core dump */
vma->vm_flags |= VM_IO;
@@ -1403,11 +1435,20 @@
#if defined(IA64)
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
if (remap_page_range(vma->vm_start,
(u32)(nv->fb.address) + LINUX_VMA_OFFS(vma) - NV_MMAP_FB_OFFSET,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
+#else
+ if (remap_page_range(vma,
+ vma->vm_start,
+ (u32) (nv->fb.address) + LINUX_VMA_OFFS(vma) - NV_MMAP_FB_OFFSET,
+ vma->vm_end - vma->vm_start,
+ vma->vm_page_prot))
+ return -EAGAIN;
+#endif
// mark it as IO so that we don't dump it on core dump
vma->vm_flags |= VM_IO;
@@ -1437,8 +1478,13 @@
while (pages--)
{
page = (unsigned long) at->page_table[i++];
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED))
return -EAGAIN;
+#else
+ if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
+ return -EAGAIN;
+#endif
start += PAGE_SIZE;
pos += PAGE_SIZE;
}
@@ -2273,7 +2319,11 @@
pte_kunmap(pte__);
#else
pte__ = NULL;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
pte = *pte_offset(pg_mid_dir, address);
+#else
+ pte = *pte_offset_map(pg_mid_dir, address);
+#endif
#endif
if (!pte_present(pte))
diff -ur NVIDIA_kernel-1.0-2960/os-interface.c NVIDIA_kernel-1.0-2960-2.5.19/os-interface.c
--- NVIDIA_kernel-1.0-2960/os-interface.c Tue May 14 17:26:16 2002
+++ NVIDIA_kernel-1.0-2960-2.5.19/os-interface.c Fri May 31 01:07:26 2002
@@ -1458,9 +1458,14 @@
uaddr = *priv;
/* finally, let's do it! */
- err = remap_page_range( (size_t) uaddr, (size_t) paddr, size_bytes,
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
+ err = remap_page_range( (size_t) uaddr, (size_t) paddr, size_bytes,
+ PAGE_SHARED);
+#else
+ err = remap_page_range( kaddr, (size_t) uaddr, (size_t) paddr, size_bytes,
PAGE_SHARED);
-
+#endif
if (err != 0)
{
return (void *) NULL;
@@ -1485,10 +1490,14 @@
uaddr = *priv;
- /* finally, let's do it! */
- err = remap_page_range( (size_t) uaddr, (size_t) start, size_bytes,
+ /* finally, let's do it! */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
+ err = remap_page_rage( (size_t) uaddr, (size_t) start, size_bytes,
+ PAGE_SHARED);
+#else
+ err = remap_page_range( *priv, (size_t) uaddr, (size_t) start, size_bytes,
PAGE_SHARED);
-
+#endif
if (err != 0)
{
return (void *) NULL;
@@ -2032,15 +2041,25 @@
return RM_ERROR;
agp_addr = agpinfo.aper_base + (agp_data->offset << PAGE_SHIFT);
-
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
err = remap_page_range(vma->vm_start, (size_t) agp_addr,
agp_data->num_pages << PAGE_SHIFT,
#if defined(IA64)
vma->vm_page_prot);
#else
PAGE_SHARED);
-#endif
-
+#endif /* IA64 */
+
+#else
+ err = remap_page_range(vma,
+ vma->vm_start, (size_t) agp_addr,
+ agp_data->num_pages << PAGE_SHIFT,
+#if defined(IA64)
+ vma->vm_page_prot);
+#else
+ PAGE_SHARED);
+#endif /* IA64 */
+#endif /* LINUX_VERSION_CODE */
if (err) {
printk(KERN_ERR "NVRM: AGPGART: unable to remap %lu pages\n",
(unsigned long)agp_data->num_pages);
next prev parent reply other threads:[~2002-05-30 23:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-30 18:41 PROBLEM: NVidia drivers with 2.5 kernel Brian Davids
2002-05-30 23:31 ` Roberto Nibali [this message]
-- strict thread matches above, loose matches on Subject: below --
2002-05-29 17:35 Michail Rusinov
2002-05-29 22:36 ` Martin Dalecki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3CF6B63C.80508@drugphish.ch \
--to=ratz@drugphish.ch \
--cc=dlister@dlister.net \
--cc=linux-kernel@vger.kernel.org \
--cc=one@da.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox