aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/agp/intel-agp.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 3999a5f25f38..8a713f1e9653 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -8,6 +8,7 @@
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/pagemap.h> 9#include <linux/pagemap.h>
10#include <linux/agp_backend.h> 10#include <linux/agp_backend.h>
11#include <asm/smp.h>
11#include "agp.h" 12#include "agp.h"
12 13
13/* 14/*
@@ -815,12 +816,6 @@ static void intel_i830_setup_flush(void)
815 intel_i830_fini_flush(); 816 intel_i830_fini_flush();
816} 817}
817 818
818static void
819do_wbinvd(void *null)
820{
821 wbinvd();
822}
823
824/* The chipset_flush interface needs to get data that has already been 819/* The chipset_flush interface needs to get data that has already been
825 * flushed out of the CPU all the way out to main memory, because the GPU 820 * flushed out of the CPU all the way out to main memory, because the GPU
826 * doesn't snoop those buffers. 821 * doesn't snoop those buffers.
@@ -837,12 +832,10 @@ static void intel_i830_chipset_flush(struct agp_bridge_data *bridge)
837 832
838 memset(pg, 0, 1024); 833 memset(pg, 0, 1024);
839 834
840 if (cpu_has_clflush) { 835 if (cpu_has_clflush)
841 clflush_cache_range(pg, 1024); 836 clflush_cache_range(pg, 1024);
842 } else { 837 else if (wbinvd_on_all_cpus() != 0)
843 if (on_each_cpu(do_wbinvd, NULL, 1) != 0) 838 printk(KERN_ERR "Timed out waiting for cache flush.\n");
844 printk(KERN_ERR "Timed out waiting for cache flush.\n");
845 }
846} 839}
847 840
848/* The intel i830 automatically initializes the agp aperture during POST. 841/* The intel i830 automatically initializes the agp aperture during POST.