radeon_vram_limit = 0;
        }
 
+       if (radeon_gart_size == -1) {
+               /* default to a larger gart size on newer asics */
+               if (rdev->family >= CHIP_RV770)
+                       radeon_gart_size = 1024;
+               else
+                       radeon_gart_size = 512;
+       }
        /* gtt size must be power of two and greater or equal to 32M */
        if (radeon_gart_size < 32) {
-               dev_warn(rdev->dev, "gart size (%d) too small forcing to 512M\n",
+               dev_warn(rdev->dev, "gart size (%d) too small\n",
                                radeon_gart_size);
-               radeon_gart_size = 512;
-
+               if (rdev->family >= CHIP_RV770)
+                       radeon_gart_size = 1024;
+               else
+                       radeon_gart_size = 512;
        } else if (!radeon_check_pot_argument(radeon_gart_size)) {
                dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n",
                                radeon_gart_size);
-               radeon_gart_size = 512;
+               if (rdev->family >= CHIP_RV770)
+                       radeon_gart_size = 1024;
+               else
+                       radeon_gart_size = 512;
        }
        rdev->mc.gtt_size = (uint64_t)radeon_gart_size << 20;
 
        rdev->family = flags & RADEON_FAMILY_MASK;
        rdev->is_atom_bios = false;
        rdev->usec_timeout = RADEON_MAX_USEC_TIMEOUT;
-       rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
+       rdev->mc.gtt_size = 512 * 1024 * 1024;
        rdev->accel_working = false;
        /* set up ring ids */
        for (i = 0; i < RADEON_NUM_RINGS; i++) {
 
 int radeon_r4xx_atom = 0;
 int radeon_agpmode = 0;
 int radeon_vram_limit = 0;
-int radeon_gart_size = 512; /* default gart size */
+int radeon_gart_size = -1; /* auto */
 int radeon_benchmarking = 0;
 int radeon_testing = 0;
 int radeon_connector_table = 0;
 MODULE_PARM_DESC(agpmode, "AGP Mode (-1 == PCI)");
 module_param_named(agpmode, radeon_agpmode, int, 0444);
 
-MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc)");
+MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc., -1 = auto)");
 module_param_named(gartsize, radeon_gart_size, int, 0600);
 
 MODULE_PARM_DESC(benchmark, "Run benchmark");