Date: Tue, 25 Feb 2003 11:22:13 -0800 From: walt <wa1ter@myrealbox.com> To: freebsd-current@freebsd.org Subject: Re: patch for the nVidia driver and -CURRENT Message-ID: <3E5BC265.8090009@myrealbox.com> In-Reply-To: <b3gckj$2eoj$1@FreeBSD.csie.NCTU.edu.tw> References: <b3gckj$2eoj$1@FreeBSD.csie.NCTU.edu.tw>
next in thread | previous in thread | raw e-mail | index | archive | help
Maxime Henrion wrote:
> --X1bOJ3K7DJ5YkBrT
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
>
> Hi all,
>
>
> Recent interface changes made the nVidia driver unbuildable on -CURRENT.
> The attached patch should make it work as it used to. Please let me
> know if it doesn't.
Yes! <Mmmmmwahhhh!> [Big kiss to Maxime] Thank you!
The only thing I needed to do to make it work was to delete this line
from nv-freebsd.h:
#error This driver does not support FreeBSD 5.0/-CURRENT!
As long as you are patching you may as well patch that one also, yes?
> --X1bOJ3K7DJ5YkBrT
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: attachment; filename="nvidia.patch"
>
> diff -u NVIDIA_FreeBSD-1.0-3203/src/nv-freebsd.h nvidia/src/nv-freebsd.h
> --- NVIDIA_FreeBSD-1.0-3203/src/nv-freebsd.h Wed Oct 30 15:30:58 2002
> +++ nvidia/src/nv-freebsd.h Tue Feb 25 00:00:48 2003
> @@ -86,6 +83,7 @@
>
> #if __FreeBSD_version >= 500000
> #include <sys/mutex.h>
> +#include <sys/filedesc.h>
> #include <dev/pci/pcireg.h>
> #include <dev/pci/pcivar.h>
>
> @@ -306,7 +304,8 @@
> int nvidia_open_dev (struct nvidia_softc *);
> int nvidia_close_ctl (dev_t, d_thread_t *);
> int nvidia_close_dev (struct nvidia_softc *, dev_t, d_thread_t *);
> -int nvidia_mmap_dev (struct nvidia_softc *, vm_offset_t);
> +int nvidia_mmap_dev (struct nvidia_softc *, vm_offset_t,
> + vm_offset_t *);
>
> #endif /* __NV_FREEBSD_H__ */
>
> diff -u NVIDIA_FreeBSD-1.0-3203/src/nvidia_dev.c nvidia/src/nvidia_dev.c
> --- NVIDIA_FreeBSD-1.0-3203/src/nvidia_dev.c Wed Oct 30 15:30:58 2002
> +++ nvidia/src/nvidia_dev.c Mon Feb 24 23:59:21 2003
> @@ -135,6 +135,7 @@
> int nvidia_dev_mmap(
> dev_t dev,
> vm_offset_t offset,
> + vm_offset_t *paddr,
> int nprot
> )
> {
> @@ -148,7 +149,7 @@
> nv = sc->nv_state;
>
> nv_lock_api(nv);
> - status = nvidia_mmap_dev(sc, offset);
> + status = nvidia_mmap_dev(sc, offset, paddr);
> nv_unlock_api(nv);
>
> return status;
> diff -u NVIDIA_FreeBSD-1.0-3203/src/nvidia_subr.c nvidia/src/nvidia_subr.c
> --- NVIDIA_FreeBSD-1.0-3203/src/nvidia_subr.c Wed Oct 30 15:30:58 2002
> +++ nvidia/src/nvidia_subr.c Tue Feb 25 00:00:14 2003
> @@ -1401,7 +1405,8 @@
>
> int nvidia_mmap_dev(
> struct nvidia_softc *sc,
> - vm_offset_t offset
> + vm_offset_t offset,
> + vm_offset_t *paddr
> )
> {
> nv_alloc_t *at;
> @@ -1412,14 +1417,20 @@
> * are physical addresses and mapped into user-space directly. We can
> * only do some basic sanity checking here.
> */
> - if (IS_FB_OFFSET(nv, offset, PAGE_SIZE))
> - return atop(offset);
> + if (IS_FB_OFFSET(nv, offset, PAGE_SIZE)) {
> + *paddr = offset;
> + return 0;
> + }
>
> - if (IS_REG_OFFSET(nv, offset, PAGE_SIZE))
> - return atop(offset);
> + if (IS_REG_OFFSET(nv, offset, PAGE_SIZE)) {
> + *paddr = offset;
> + return 0;
> + }
>
> - if (IS_AGP_OFFSET(nv, offset, PAGE_SIZE))
> - return atop(offset);
> + if (IS_AGP_OFFSET(nv, offset, PAGE_SIZE)) {
> + *paddr = offset;
> + return 0;
> + }
>
> /*
> * If the offset does not fall into any of the relevant apertures, we
> @@ -1431,7 +1442,8 @@
> SLIST_FOREACH(at, &sc->alloc_list, list) {
> if (offset >= at->address &&
> offset < at->address + at->size)
> - return atop(vtophys(offset));
> + *paddr = vtophys(offset);
> + return 0;
> }
>
> return -1;
>
> --X1bOJ3K7DJ5YkBrT--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E5BC265.8090009>
