Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6730c3c1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Fix AGP compile on non-x86 architectures



AGP shouldn't use "global_flush_tlb()" to flush the AGP mappings, that i
spurely an x86'ism.  The proper AGP mapping flusher that should be used
is "flush_agp_mappings()", which on x86 obviously happens to do a global
TLB flush.

This makes AGP (or at least the config _I_ happen to use) compile again
on ppc64.

Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 969780f8
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
			printk(KERN_ERR PFX "unable to get memory for scratch page.\n");
			return -ENOMEM;
		}
		global_flush_tlb();
		flush_agp_mappings();

		bridge->scratch_page_real = virt_to_gart(addr);
		bridge->scratch_page =
@@ -191,7 +191,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
	if (bridge->driver->needs_scratch_page) {
		bridge->driver->agp_destroy_page(
				gart_to_virt(bridge->scratch_page_real));
		global_flush_tlb();
		flush_agp_mappings();
	}
	if (got_gatt)
		bridge->driver->free_gatt_table(bridge);
@@ -217,7 +217,7 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)
	    bridge->driver->needs_scratch_page) {
		bridge->driver->agp_destroy_page(
				gart_to_virt(bridge->scratch_page_real));
		global_flush_tlb();
		flush_agp_mappings();
	}
}

+1 −3
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ void agp_free_memory(struct agp_memory *curr)
		for (i = 0; i < curr->page_count; i++) {
			curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i]));
		}
		global_flush_tlb();
		flush_agp_mappings();
	}
	agp_free_key(curr->key);
	vfree(curr->memory);
@@ -213,8 +213,6 @@ struct agp_memory *agp_allocate_memory(struct agp_bridge_data *bridge,
		new->memory[i] = virt_to_gart(addr);
		new->page_count++;
	}
	global_flush_tlb();

	new->bridge = bridge;

	flush_agp_mappings();