]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/char/agp/intel-agp.c
agp/intel-agp: Clear entire GTT on startup
[net-next-2.6.git] / drivers / char / agp / intel-agp.c
index 37cb4e2b2328e9c8eecad122e9b1bd47551a4c6c..33b4853b1353b65639385c2543ca85f5d02c428c 100644 (file)
@@ -176,6 +176,7 @@ static struct _intel_private {
         * popup and for the GTT.
         */
        int gtt_entries;                        /* i830+ */
+       int gtt_total_size;
        union {
                void __iomem *i9xx_flush_page;
                void *i8xx_flush_page;
@@ -1151,7 +1152,7 @@ static int intel_i915_configure(void)
        readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */
 
        if (agp_bridge->driver->needs_scratch_page) {
-               for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
+               for (i = intel_private.gtt_entries; i < intel_private.gtt_total_size; i++) {
                        writel(agp_bridge->scratch_page, intel_private.gtt+i);
                }
                readl(intel_private.gtt+i-1);   /* PCI Posting. */
@@ -1312,6 +1313,8 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
        if (!intel_private.gtt)
                return -ENOMEM;
 
+       intel_private.gtt_total_size = gtt_map_size / 4;
+
        temp &= 0xfff80000;
 
        intel_private.registers = ioremap(temp, 128 * 4096);
@@ -1398,6 +1401,8 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
        if (!intel_private.gtt)
                return -ENOMEM;
 
+       intel_private.gtt_total_size = gtt_size / 4;
+
        intel_private.registers = ioremap(temp, 128 * 4096);
        if (!intel_private.registers) {
                iounmap(intel_private.gtt);