aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/agp/intel-agp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 37cb4e2b2328..33b4853b1353 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -176,6 +176,7 @@ static struct _intel_private {
176 * popup and for the GTT. 176 * popup and for the GTT.
177 */ 177 */
178 int gtt_entries; /* i830+ */ 178 int gtt_entries; /* i830+ */
179 int gtt_total_size;
179 union { 180 union {
180 void __iomem *i9xx_flush_page; 181 void __iomem *i9xx_flush_page;
181 void *i8xx_flush_page; 182 void *i8xx_flush_page;
@@ -1151,7 +1152,7 @@ static int intel_i915_configure(void)
1151 readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */ 1152 readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */
1152 1153
1153 if (agp_bridge->driver->needs_scratch_page) { 1154 if (agp_bridge->driver->needs_scratch_page) {
1154 for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) { 1155 for (i = intel_private.gtt_entries; i < intel_private.gtt_total_size; i++) {
1155 writel(agp_bridge->scratch_page, intel_private.gtt+i); 1156 writel(agp_bridge->scratch_page, intel_private.gtt+i);
1156 } 1157 }
1157 readl(intel_private.gtt+i-1); /* PCI Posting. */ 1158 readl(intel_private.gtt+i-1); /* PCI Posting. */
@@ -1312,6 +1313,8 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
1312 if (!intel_private.gtt) 1313 if (!intel_private.gtt)
1313 return -ENOMEM; 1314 return -ENOMEM;
1314 1315
1316 intel_private.gtt_total_size = gtt_map_size / 4;
1317
1315 temp &= 0xfff80000; 1318 temp &= 0xfff80000;
1316 1319
1317 intel_private.registers = ioremap(temp, 128 * 4096); 1320 intel_private.registers = ioremap(temp, 128 * 4096);
@@ -1398,6 +1401,8 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
1398 if (!intel_private.gtt) 1401 if (!intel_private.gtt)
1399 return -ENOMEM; 1402 return -ENOMEM;
1400 1403
1404 intel_private.gtt_total_size = gtt_size / 4;
1405
1401 intel_private.registers = ioremap(temp, 128 * 4096); 1406 intel_private.registers = ioremap(temp, 128 * 4096);
1402 if (!intel_private.registers) { 1407 if (!intel_private.registers) {
1403 iounmap(intel_private.gtt); 1408 iounmap(intel_private.gtt);