diff options
author | David Vrabel <david.vrabel@citrix.com> | 2014-04-07 08:52:12 -0400 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2014-04-07 08:52:12 -0400 |
commit | 2c5cb2770392fb9c5d8518688c8bc61986d70dc6 (patch) | |
tree | b19210e709de6ee0d22b67ef605a569500cf1a18 /drivers/gpu/drm/drm_cache.c | |
parent | cd979883b9ede90643e019f33cb317933eb867b4 (diff) | |
parent | 683b6c6f82a60fabf47012581c2cfbf1b037ab95 (diff) |
Merge commit '683b6c6f82a60fabf47012581c2cfbf1b037ab95' into stable/for-linus-3.15
This merge of the irq-core-for-linus branch broke the ARM build when
Xen is enabled.
Conflicts:
drivers/xen/events/events_base.c
Diffstat (limited to 'drivers/gpu/drm/drm_cache.c')
-rw-r--r-- | drivers/gpu/drm/drm_cache.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c index bb8f58012189..534cb89b160d 100644 --- a/drivers/gpu/drm/drm_cache.c +++ b/drivers/gpu/drm/drm_cache.c | |||
@@ -32,6 +32,12 @@ | |||
32 | #include <drm/drmP.h> | 32 | #include <drm/drmP.h> |
33 | 33 | ||
34 | #if defined(CONFIG_X86) | 34 | #if defined(CONFIG_X86) |
35 | |||
36 | /* | ||
37 | * clflushopt is an unordered instruction which needs fencing with mfence or | ||
38 | * sfence to avoid ordering issues. For drm_clflush_page this fencing happens | ||
39 | * in the caller. | ||
40 | */ | ||
35 | static void | 41 | static void |
36 | drm_clflush_page(struct page *page) | 42 | drm_clflush_page(struct page *page) |
37 | { | 43 | { |
@@ -44,7 +50,7 @@ drm_clflush_page(struct page *page) | |||
44 | 50 | ||
45 | page_virtual = kmap_atomic(page); | 51 | page_virtual = kmap_atomic(page); |
46 | for (i = 0; i < PAGE_SIZE; i += size) | 52 | for (i = 0; i < PAGE_SIZE; i += size) |
47 | clflush(page_virtual + i); | 53 | clflushopt(page_virtual + i); |
48 | kunmap_atomic(page_virtual); | 54 | kunmap_atomic(page_virtual); |
49 | } | 55 | } |
50 | 56 | ||
@@ -133,7 +139,7 @@ drm_clflush_virt_range(char *addr, unsigned long length) | |||
133 | mb(); | 139 | mb(); |
134 | for (; addr < end; addr += boot_cpu_data.x86_clflush_size) | 140 | for (; addr < end; addr += boot_cpu_data.x86_clflush_size) |
135 | clflush(addr); | 141 | clflush(addr); |
136 | clflush(end - 1); | 142 | clflushopt(end - 1); |
137 | mb(); | 143 | mb(); |
138 | return; | 144 | return; |
139 | } | 145 | } |