Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jul 2012 21:12:13 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Marcel Moolenaar <marcel@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r238172 - head/sys/dev/agp
Message-ID:  <20120706181213.GI2338@deviant.kiev.zoral.com.ua>
In-Reply-To: <201207061557.q66Fv45N069464@svn.freebsd.org>
References:  <201207061557.q66Fv45N069464@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--2xeD/fx0+7k8I/QN
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Jul 06, 2012 at 03:57:04PM +0000, Marcel Moolenaar wrote:
> Author: marcel
> Date: Fri Jul  6 15:57:03 2012
> New Revision: 238172
> URL: http://svn.freebsd.org/changeset/base/238172
>=20
> Log:
>   agp.c:
>   Don't use Maxmem when the amount of memory is meant. Use realmem instea=
d.
>   Maxmem is not only a MD variable, it represents the highest physical me=
mory
>   address in use. On systems where memory is sparsely layed-out the highe=
st
>   memory address and the amount of memory are not interchangeable. Scalin=
g the
>   AGP aperture based on the actual amount of memory (=3D realmem) rather =
than
>   the available memory (=3D physmem) makes sure there's consistent behavi=
our
>   across architectures.
>  =20
>   agp_i810.c:
>   While arguably the use of Maxmem can be considered correct, replace its=
 use
>   with realmem anyway. agp_i810.c is specific to amd64, i386 & pc98, which
>   have a dense physical memory layout. Avoiding Maxmem here is done with =
an
>   eye on copy-n-paste behaviour in general and to avoid confusion caused =
by
>   using realmem in agp.c and Maxmem in agp_i810.c.
The agp_i810.c use is to prevent attachment when largest physical address
of populated memory exceeds GPU limits established by PTE format and
chipset errata. Editing Maxmem to be spelled as realmem seems to change
nothing right now, but I do argue that this is wrong, and commit message
makes future archeology quite confusing.

>  =20
>   In both cases, remove the inclusion of md_var.h
>=20
> Modified:
>   head/sys/dev/agp/agp.c
>   head/sys/dev/agp/agp_i810.c
>=20
> Modified: head/sys/dev/agp/agp.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/dev/agp/agp.c	Fri Jul  6 15:46:38 2012	(r238171)
> +++ head/sys/dev/agp/agp.c	Fri Jul  6 15:57:03 2012	(r238172)
> @@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$");
>  #include <vm/vm_pageout.h>
>  #include <vm/pmap.h>
> =20
> -#include <machine/md_var.h>
>  #include <machine/bus.h>
>  #include <machine/resource.h>
>  #include <sys/rman.h>
> @@ -234,7 +233,7 @@ agp_generic_attach(device_t dev)
>  	 * Work out an upper bound for agp memory allocation. This
>  	 * uses a heurisitc table from the Linux driver.
>  	 */
> -	memsize =3D ptoa(Maxmem) >> 20;
> +	memsize =3D ptoa(realmem) >> 20;
>  	for (i =3D 0; i < agp_max_size; i++) {
>  		if (memsize <=3D agp_max[i][0])
>  			break;
>=20
> Modified: head/sys/dev/agp/agp_i810.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/dev/agp/agp_i810.c	Fri Jul  6 15:46:38 2012	(r238171)
> +++ head/sys/dev/agp/agp_i810.c	Fri Jul  6 15:57:03 2012	(r238172)
> @@ -74,7 +74,6 @@ __FBSDID("$FreeBSD$");
> =20
>  #include <machine/bus.h>
>  #include <machine/resource.h>
> -#include <machine/md_var.h>
>  #include <sys/rman.h>
> =20
>  MALLOC_DECLARE(M_AGP);
> @@ -1439,7 +1438,7 @@ agp_i810_attach(device_t dev)
>  	if (error)
>  		return (error);
> =20
> -	if (ptoa((vm_paddr_t)Maxmem) >
> +	if (ptoa((vm_paddr_t)realmem) >
>  	    (1ULL << sc->match->driver->busdma_addr_mask_sz) - 1) {
>  		device_printf(dev, "agp_i810 does not support physical "
>  		    "memory above %ju.\n", (uintmax_t)(1ULL <<

--2xeD/fx0+7k8I/QN
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAk/3KnwACgkQC3+MBN1Mb4hiKQCgn1NuIpG7znvtNOjeueP8FG1o
YYYAn3SlmhlhtHbxlfti65lktViYUsbu
=j6vY
-----END PGP SIGNATURE-----

--2xeD/fx0+7k8I/QN--



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