diff options
Diffstat (limited to 'usr/src/uts/intel/io/agpgart/agpgart.c')
-rw-r--r-- | usr/src/uts/intel/io/agpgart/agpgart.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/uts/intel/io/agpgart/agpgart.c b/usr/src/uts/intel/io/agpgart/agpgart.c index 62e3c57e76..8701d3a63f 100644 --- a/usr/src/uts/intel/io/agpgart/agpgart.c +++ b/usr/src/uts/intel/io/agpgart/agpgart.c @@ -768,10 +768,17 @@ lyr_get_info(agp_kern_info_t *info, agp_registered_dev_t *agp_regdev) * - scratch page size * * scratch page size = 4 - * GTT size = aperture size (in MBs) + * GTT size (KB) = aperture size (MB) * this algorithm came from Xorg source code */ - prealloc_size = prealloc_size - info->agpki_apersize - 4; + if (prealloc_size > (info->agpki_apersize + 4)) + prealloc_size = + prealloc_size - info->agpki_apersize - 4; + else { + AGPDB_PRINT2((CE_WARN, "lyr_get_info: " + "pre-allocated memory too small, setting to zero")); + prealloc_size = 0; + } info->agpki_presize = prealloc_size; AGPDB_PRINT2((CE_NOTE, "lyr_get_info: prealloc_size = %ldKB, apersize = %dMB", |