Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Sep 2013 01:05:26 +0200
From:      "O. Hartmann" <ohartman@zedat.fu-berlin.de>
To:        Ian Lepore <ian@FreeBSD.org>
Cc:        Ivan Klymenko <fidaj@ukr.net>, FreeBSD CURRENT <freebsd-current@FreeBSD.org>, FreeBSD Ports <freebsd-ports@FreeBSD.org>
Subject:   Re: CURRENT r255426: x11/nvidia-driver: nvidia_subr.c:835:46: error: too few arguments to function call, expected 10, have 9  (VM_PROT_READ | VM_PROT_WRITE), 0);
Message-ID:  <20130910010526.2a6aff37@thor.walstatt.dyndns.org>
In-Reply-To: <1378766963.1111.579.camel@revolution.hippie.lan>
References:  <20130909223748.61dd8859@thor.walstatt.dyndns.org> <20130910000237.6b5604da@nonamehost.local> <20130909231713.34ebfbdd@thor.walstatt.dyndns.org> <20130910002405.4aa701d0@nonamehost.local> <20130910004240.70bc281f@thor.walstatt.dyndns.org> <1378766963.1111.579.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/Vmtyepju929/5CxjndkXwz4
Content-Type: multipart/mixed; boundary="MP_/SiMt+dXgloLdHvspPyGi3UV"

--MP_/SiMt+dXgloLdHvspPyGi3UV
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Mon, 09 Sep 2013 16:49:23 -0600
Ian Lepore <ian@FreeBSD.org> wrote:

> On Tue, 2013-09-10 at 00:42 +0200, O. Hartmann wrote:
> > On Tue, 10 Sep 2013 00:24:05 +0300
> > Ivan Klymenko <fidaj@ukr.net> wrote:
> >=20
> > > =F7 Mon, 9 Sep 2013 23:17:13 +0200
> > > "O. Hartmann" <ohartman@zedat.fu-berlin.de> =D0=C9=DB=C5=D4:
> > >=20
> > > > On Tue, 10 Sep 2013 00:02:37 +0300
> > > > Ivan Klymenko <fidaj@ukr.net> wrote:
> > > >=20
> > > > > =F7 Mon, 9 Sep 2013 22:37:48 +0200
> > > > > "O. Hartmann" <ohartman@zedat.fu-berlin.de> =D0=C9=DB=C5=D4:
> > > > > >  /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-4.2.1=
8/out/freebsd.amd64/release/bin/src/vboxdrv/r0drv/freebsd/alloc-r0drv-freeb=
sd.c:83:76:
> > > > > > error: too few arguments to function call, expected 10,
> > > > > > have 9 cbAllocated, TRUE, VM_PROT_ALL, VM_PROT_ALL, 0); ^
> > > > > > @/vm/vm_map.h:368:1: note: 'vm_map_find' declared here int
> > > > > > vm_map_find(vm_map_t, vm_object_t, vm_ooffset_t,
> > > > > > vm_offset_t *, vm_size_t,
> > > > >=20
> > > > > Try the following changes:
> > > > >         int rc =3D vm_map_find(kernel_map, pVmObject, 0, &Addr,
> > > > > ---                          cbAllocated, TRUE, VM_PROT_ALL,
> > > > > VM_PROT_ALL, 0); +++                          cbAllocated, 0,
> > > > > VMFS_OPTIMAL_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
> > > > >=20
> > > > > for Nvidia driver need to make similar changes...
> > > > The man page of vm_map_find() says the last parameter is of int,
> > > > named int cow. On the hurry, I didn't find any explanation of
> > > > that parameter. Setting it to "0" (zero) also in the
> > > > nvidia_subr.c makes the driver compile again.
> > > >=20
> > > > But simply filling in a int zero is a bit strange without
> > > > knowing what to do, isn't it?
> > > >=20
> > > > Thanks anyway,
> > > >=20
> > > > Oliver
> > >=20
> > > This commit you to find an appropriate example ...
> > > http://docs.freebsd.org/cgi/getmsg.cgi?fetch=3D291456+0+current/svn-s=
rc-head
> > > And in this case, the driver Nvidia really need to specify 0 in
> > > place of the sixth argument ...
> > > but I'm not sure at 100% :)
> >=20
> > I have a patch attached for the x11/nvidia-driver Makefile. It
> > doesn't work and I loose hairs due to not knowing why.
> >=20
> > When issuing the following command sequence on the console:
> >=20
> > cd /usr/ports/x11/nvidia-driver
> > make clean extract
> > sed -i -e '/(VM_PROT_READ | VM_PROT_WRITE), 0);$/s/0);$/0, 0);/g' \
> > work/NVIDIA-FreeBSD-x86_64-325.15/src/nvidia_subr.c
> >=20
> >=20
> > and check then line 835 (the corrupt one) in file=20
> > work/NVIDIA-FreeBSD-x86_64-325.15/src/nvidia_subr.c,
> >=20
> > I see this BEFORE:
> >=20
> >     status =3D vm_map_find(kernel_map, at->object, (i * PAGE_SIZE),
> >             &virtual_address, size, VMFS_ANY_SPACE,
> >             (VM_PROT_READ | VM_PROT_WRITE),
> > =3D=3D=3D(835)>>            (VM_PROT_READ | VM_PROT_WRITE), 0);
> >=20
> >=20
> > and I see this AFTER the sed'ed replacement:
> >=20
> >     status =3D vm_map_find(kernel_map, at->object, (i * PAGE_SIZE),
> >             &virtual_address, size, VMFS_ANY_SPACE,
> >             (VM_PROT_READ | VM_PROT_WRITE),
> > =3D=3D=3D(835)>>            (VM_PROT_READ | VM_PROT_WRITE), 0, 0);
> >=20
> > BUT: Using the patch (see attached, please apply to
> > x11/nvidia-driver/Makefile) gives me an error in x11/nvidia-driver:
> >=20
> > make clean patch
> >=20
> > =3D=3D=3D>  Cleaning for nvidia-driver-325.15
> > =3D=3D=3D>  License NVIDIA accepted by the user
> > =3D=3D=3D>  Found saved configuration for nvidia-driver-325.08_1
> > =3D=3D=3D>   nvidia-driver-325.15 depends on file: /usr/local/sbin/pkg -
> > found =3D=3D=3D> Fetching all distfiles required by nvidia-driver-325.15
> > for building
> > =3D=3D=3D>  Extracting for nvidia-driver-325.15
> > =3D> SHA256 Checksum OK for NVIDIA-FreeBSD-x86_64-325.15.tar.gz.
> > =3D=3D=3D>  Patching for nvidia-driver-325.15
> > sed: 1: "/(VM_PROT_READ | VM_PRO ...": invalid command code 0
> > *** Error code 1
> >=20
> > The Shell/make should be able to substitute within a single-quotet
> > command to sed, but the error message reports differently.
> >=20
> > Do not be confused about the driver revision I use. I tried the
> > official one (319.XX) as well and it is not working the very same
> > way and the patch won't either.
> >=20
> > Oliver
>=20
> I don't know about the sed error, but I think the change you're trying
> to make is wrong.  The new '0' parameter to vm_map_find() isn't added
> at the end, it goes after the size parameter.
>=20
> -- Ian

Yes, you're correct and my face is red like a tomatoe :-(

I try this sed replacement expression:
sed -i -e '/\&virtual_address\, size\, \
VMFS_ANY\_SPACE\,$/s//\&virtual_address\, size\, 0\, \
VMFS_ANY\_SPACE\,/g' work/NVIDIA-FreeBSD-x86_64-325.15/src/nvidia_subr.c

It works from the command line, but it doesn't work from the (attached)
Makefile-patch.

--MP_/SiMt+dXgloLdHvspPyGi3UV
Content-Type: text/x-patch
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=nvidia-driver_2nd.patch

--- Makefile.orig	2013-09-10 00:30:53.000000000 +0200
+++ Makefile	2013-09-10 01:04:05.000000000 +0200
@@ -160,6 +160,12 @@
 		s/CAP_IOCTL/cap_rights_init(\&rights, &)/' \
 			${WRKSRC}/src/nvidia_linux.c
 .endif
+# Changes in vm_map_find() due to r255426
+.if ${OSVERSION} > 1000053
+	${REINPLACE_CMD} -e '/\&virtual_address\, size\, VMFS_ANY\_SPACE\,$/s/\
+	/\&virtual_address\, size\, 0\, VMFS_ANY\_SPACE\,/g' \
+	${WRKSRC}/src/nvidia_subr.c
+.endif
 # Fix stack buffer overflow in nvidia_sysctl_bus_type()
 .if ${NVVERSION} < 3192300
 	${REINPLACE_CMD} -E '/bus_type\[4\]/d ; \

--MP_/SiMt+dXgloLdHvspPyGi3UV--

--Sig_/Vmtyepju929/5CxjndkXwz4
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.21 (FreeBSD)

iQEcBAEBAgAGBQJSLlQ3AAoJEOgBcD7A/5N8r7kH/jQ+EKxUICcnwJ1huoQCl2R0
Rtie4n33ylRFMmoqNm1EEdsGbb30vMTdI/x6/puNJ58uTKpOUpLdJ9gfhpB4+75a
S9Xv3K/Jva4SV1jzuVeCAi0+Vo64zqHiysatVm00LGEId9BlB06iJmbak1gMqd2I
u2wksFQ8dmcwks4DK/PuYbWgaXCHXnXXDmkzF5SUTfy9gwBGxfyxOZ38ydbDsc6d
ThqrfeFmqm7qSAOREnaWG9BjZuEkQ1k385SA1n5VXFifzrebdevaAUyZO/iBMhG6
+U7ppozqnreH32pDZXlsEHay2KK/M0TQ/wdQPM/rHxomtptUMWbJkZVY2+tQ8yk=
=a/7R
-----END PGP SIGNATURE-----

--Sig_/Vmtyepju929/5CxjndkXwz4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130910010526.2a6aff37>