commit 082dd38cdc63cbee3924806bff5d87b751270747 Author: Pierre Willenbrock Date: Fri Dec 12 01:36:41 2008 +0100 Use set_memory_{uc,wb} instead of set_memory_array_{uc,wb} for CONFIG_HIGHMEM64G set_memory_array_{uc,wb} expects an unsigned long *, but was called with a dma_addr_t *. This optimistically assumes only CONFIG_HIGHMEM64G selects something incompatible with unsigned long for dma_addr_t. Signed-off-by: Pierre Willenbrock diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index 97e8b41..aeeaf68 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c @@ -1240,12 +1240,17 @@ int agp_generic_alloc_pages(struct agp_bridge_data *bridge, struct agp_memory *m } #ifdef CONFIG_X86 +#ifdef CONFIG_HIGHMEM64G + for (i = 0; i < num_pages; i++) + set_memory_uc(mem->memory[i], 1); +#else set_memory_array_uc(mem->memory, num_pages); #endif +#endif ret = 0; out: for (i = 0; i < mem->page_count; i++) - mem->memory[i] = virt_to_gart((void *)mem->memory[i]); + mem->memory[i] = virt_to_gart((void *)(unsigned long)mem->memory[i]); return ret; } EXPORT_SYMBOL(agp_generic_alloc_pages); @@ -1279,11 +1284,16 @@ void agp_generic_destroy_pages(struct agp_memory *mem) mem->memory[i] = (unsigned long)gart_to_virt(mem->memory[i]); #ifdef CONFIG_X86 +#ifdef CONFIG_HIGHMEM64G + for (i = 0; i < mem->page_count; i++) + set_memory_wb(mem->memory[i], 1); +#else set_memory_array_wb(mem->memory, mem->page_count); #endif +#endif for (i = 0; i < mem->page_count; i++) { - addr = (void *)mem->memory[i]; + addr = (void *)(unsigned long)mem->memory[i]; page = virt_to_page(addr); #ifndef CONFIG_X86