From 173e394197eb53d46c664ac8723afefedea5d50f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 30 Jan 2008 13:34:08 +0100 Subject: [PATCH] --- yaml --- r: 80542 b: refs/heads/master c: cd8ddf1a2800026dd58433333cce7a65cbc6c6d2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/pageattr.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 59ef3904658c..796a9f59324c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: af1e6844d60057774910a2d08bd75b67d73ba7d5 +refs/heads/master: cd8ddf1a2800026dd58433333cce7a65cbc6c6d2 diff --git a/trunk/arch/x86/mm/pageattr.c b/trunk/arch/x86/mm/pageattr.c index cdd2ea2a2239..90b658ac39c2 100644 --- a/trunk/arch/x86/mm/pageattr.c +++ b/trunk/arch/x86/mm/pageattr.c @@ -25,12 +25,24 @@ within(unsigned long addr, unsigned long start, unsigned long end) /* * Flushing functions */ + + +/** + * clflush_cache_range - flush a cache range with clflush + * @addr: virtual start address + * @size: number of bytes to flush + * + * clflush is an unordered instruction which needs fencing with mfence + * to avoid ordering issues. + */ void clflush_cache_range(void *addr, int size) { int i; + mb(); for (i = 0; i < size; i += boot_cpu_data.x86_clflush_size) clflush(addr+i); + mb(); } static void __cpa_flush_all(void *arg)