svn commit: r238172 - head/sys/dev/agp

Konstantin Belousov kostikbel at gmail.com
Fri Jul 6 18:12:19 UTC 2012


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
> 
> Log:
>   agp.c:
>   Don't use Maxmem when the amount of memory is meant. Use realmem instead.
>   Maxmem is not only a MD variable, it represents the highest physical memory
>   address in use. On systems where memory is sparsely layed-out the highest
>   memory address and the amount of memory are not interchangeable. Scaling the
>   AGP aperture based on the actual amount of memory (= realmem) rather than
>   the available memory (= physmem) makes sure there's consistent behaviour
>   across architectures.
>   
>   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.

>   
>   In both cases, remove the inclusion of md_var.h
> 
> Modified:
>   head/sys/dev/agp/agp.c
>   head/sys/dev/agp/agp_i810.c
> 
> Modified: head/sys/dev/agp/agp.c
> ==============================================================================
> --- 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>
>  
> -#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 = ptoa(Maxmem) >> 20;
> +	memsize = ptoa(realmem) >> 20;
>  	for (i = 0; i < agp_max_size; i++) {
>  		if (memsize <= agp_max[i][0])
>  			break;
> 
> Modified: head/sys/dev/agp/agp_i810.c
> ==============================================================================
> --- 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$");
>  
>  #include <machine/bus.h>
>  #include <machine/resource.h>
> -#include <machine/md_var.h>
>  #include <sys/rman.h>
>  
>  MALLOC_DECLARE(M_AGP);
> @@ -1439,7 +1438,7 @@ agp_i810_attach(device_t dev)
>  	if (error)
>  		return (error);
>  
> -	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 <<
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20120706/a9d0ed9c/attachment.pgp


More information about the svn-src-all mailing list