From: Bob McElrath <bob+linux-kernel@mcelrath.org>
To: Petr Sebor <petr@scssoft.com>, linux-kernel@vger.kernel.org
Subject: Re: NVIDIA binary-only driver patch for 2.5.40
Date: Wed, 2 Oct 2002 11:43:15 -0500 [thread overview]
Message-ID: <20021002164315.GN25319@draal.physics.wisc.edu> (raw)
In-Reply-To: <3D9B1AD4.3030407@scssoft.com>
[-- Attachment #1.1: Type: text/plain, Size: 753 bytes --]
Petr Sebor [petr@scssoft.com] wrote:
> Bob McElrath wrote:
> >Here is an updated patch to the binary-only drivers provided by NVIDIA
> >+ err = remap_page_rage( (size_t) uaddr, (size_t) start, size_bytes,
>
> Hello,
>
> isn't this a typo? Shouldn't this be 'remap_page_range' as well?
Whoops, thought I fixed that one...
Revised patch attached.
P.S. It's not my fault. That typo was in Roberto's patch. ;)
Cheers,
-- Bob
Bob McElrath (bob+linux-kernel@mcelrath.org)
Univ. of Wisconsin at Madison, Department of Physics
"The purpose of separation of church and state is to keep forever from
these shores the ceaseless strife that has soaked the soil of Europe in
blood for centuries." -- James Madison
[-- Attachment #1.2: nvidia.2.5.40.patch --]
[-- Type: text/plain, Size: 7095 bytes --]
diff -ur NVIDIA_kernel-1.0-3123/nv-linux.h NVIDIA_kernel-1.0-3123.bob/nv-linux.h
--- NVIDIA_kernel-1.0-3123/nv-linux.h Tue Aug 27 18:36:53 2002
+++ NVIDIA_kernel-1.0-3123.bob/nv-linux.h Wed Oct 2 10:25:19 2002
@@ -36,11 +36,6 @@
# error This driver does not support 2.3.x development kernels!
#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!
-# define KERNEL_2_5
-#else
-# error This driver does not support 2.6.x or newer kernels!
#endif
#if defined (CONFIG_SMP) && !defined (__SMP__)
diff -ur NVIDIA_kernel-1.0-3123/nv.c NVIDIA_kernel-1.0-3123.bob/nv.c
--- NVIDIA_kernel-1.0-3123/nv.c Tue Aug 27 18:36:52 2002
+++ NVIDIA_kernel-1.0-3123.bob/nv.c Wed Oct 2 10:47:03 2002
@@ -1068,11 +1068,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;
@@ -1178,9 +1189,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");
rm_free_unused_clients(nv, current->pid, (void *) file);
@@ -1299,11 +1315,21 @@
#if defined(NVCPU_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;
@@ -1316,11 +1342,20 @@
#if defined(NVCPU_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;
@@ -1350,8 +1385,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;
}
@@ -1627,8 +1667,12 @@
nv_lock_bh(nv);
nv->bh_count++;
nvl->bh->data = nv->pdev;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
queue_task(nvl->bh, &tq_immediate);
mark_bh(IMMEDIATE_BH);
+#else
+ schedule_task(nvl->bh);
+#endif
nv_unlock_bh(nv);
}
}
@@ -2179,7 +2223,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-3123/os-interface.c NVIDIA_kernel-1.0-3123.bob/os-interface.c
--- NVIDIA_kernel-1.0-3123/os-interface.c Tue Aug 27 18:36:52 2002
+++ NVIDIA_kernel-1.0-3123.bob/os-interface.c Wed Oct 2 11:26:51 2002
@@ -27,7 +27,10 @@
BOOL os_is_administrator(PHWINFO pDev)
{
- return suser();
+ /* Actually suser() wasn't really a bool, but since the
+ nvidia guys want it as a bool, let's give them a bool.
+ */
+ return (!capable(CAP_SYS_ADMIN)?1:0);
}
U032 os_get_page_size(VOID)
@@ -1141,9 +1144,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;
@@ -1176,10 +1184,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_range( (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;
@@ -1593,7 +1605,8 @@
agp_addr = agpinfo.aper_base + (agp_data->offset << PAGE_SHIFT);
- err = remap_page_range(vma->vm_start, (size_t) agp_addr,
+ err = remap_page_range(vma,
+ vma->vm_start, (size_t) agp_addr,
agp_data->num_pages << PAGE_SHIFT,
#if defined(NVCPU_IA64)
vma->vm_page_prot);
[-- Attachment #2: Type: application/pgp-signature, Size: 240 bytes --]
next prev parent reply other threads:[~2002-10-02 16:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-02 16:10 Bob McElrath
[not found] ` <3D9B1AD4.3030407@scssoft.com>
2002-10-02 16:43 ` Bob McElrath [this message]
2002-10-02 17:19 ` Roberto Nibali
[not found] ` <20021002224913.GA3438@gnuppy.monkey.org>
2002-10-02 22:56 ` Bob McElrath
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=20021002164315.GN25319@draal.physics.wisc.edu \
--to=bob+linux-kernel@mcelrath.org \
--cc=linux-kernel@vger.kernel.org \
--cc=petr@scssoft.com \
/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
all inboxes | Powered by JetHome®