61,6 → 61,12 |
drm_clflush_page(*pages++); |
mb(); |
} |
|
static void |
drm_clflush_ipi_handler(void *null) |
{ |
wbinvd(); |
} |
#endif |
|
void |
119,21 → 125,20 |
|
#if 0 |
void |
drm_clflush_virt_range(void *addr, unsigned long length) |
drm_clflush_virt_range(char *addr, unsigned long length) |
{ |
#if defined(CONFIG_X86) |
if (cpu_has_clflush) { |
const int size = boot_cpu_data.x86_clflush_size; |
void *end = addr + length; |
addr = (void *)(((unsigned long)addr) & -size); |
char *end = addr + length; |
mb(); |
for (; addr < end; addr += size) |
clflushopt(addr); |
for (; addr < end; addr += boot_cpu_data.x86_clflush_size) |
clflush(addr); |
clflush(end - 1); |
mb(); |
return; |
} |
|
if (wbinvd_on_all_cpus()) |
if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) |
printk(KERN_ERR "Timed out waiting for cache flush.\n"); |
#else |
printk(KERN_ERR "Architecture has no drm_cache.c support\n"); |