Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jul 2012 15:57:04 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r238172 - head/sys/dev/agp
Message-ID:  <201207061557.q66Fv45N069464@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.
  
  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 <<



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