mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 cpu handling changes from Ingo Molnar:
"Bigger changes:
- Intel CPU hardware-enablement: new vector instructions support
(AVX-512), by Fenghua Yu.
- Support the clflushopt instruction and use it in appropriate
places. clflushopt is similar to clflush but with more relaxed
ordering, by Ross Zwisler.
- MSR accessor cleanups, by Borislav Petkov.
- 'forcepae' boot flag for those who have way too much time to spend
on way too old Pentium-M systems and want to live way too
dangerously, by Chris Bainbridge"
* 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86, cpu: Add forcepae parameter for booting PAE kernels on PAE-disabled Pentium M
Rename TAINT_UNSAFE_SMP to TAINT_CPU_OUT_OF_SPEC
x86, intel: Make MSR_IA32_MISC_ENABLE bit constants systematic
x86, Intel: Convert to the new bit access MSR accessors
x86, AMD: Convert to the new bit access MSR accessors
x86: Add another set of MSR accessor functions
x86: Use clflushopt in drm_clflush_virt_range
x86: Use clflushopt in drm_clflush_page
x86: Use clflushopt in clflush_cache_range
x86: Add support for the clflushopt instruction
x86, AVX-512: Enable AVX-512 States Context Switch
x86, AVX-512: AVX-512 Feature Detection
This commit is contained in:
commit
918d80a136
15 changed files with 248 additions and 101 deletions
|
|
@ -32,6 +32,12 @@
|
|||
#include <drm/drmP.h>
|
||||
|
||||
#if defined(CONFIG_X86)
|
||||
|
||||
/*
|
||||
* clflushopt is an unordered instruction which needs fencing with mfence or
|
||||
* sfence to avoid ordering issues. For drm_clflush_page this fencing happens
|
||||
* in the caller.
|
||||
*/
|
||||
static void
|
||||
drm_clflush_page(struct page *page)
|
||||
{
|
||||
|
|
@ -44,7 +50,7 @@ drm_clflush_page(struct page *page)
|
|||
|
||||
page_virtual = kmap_atomic(page);
|
||||
for (i = 0; i < PAGE_SIZE; i += size)
|
||||
clflush(page_virtual + i);
|
||||
clflushopt(page_virtual + i);
|
||||
kunmap_atomic(page_virtual);
|
||||
}
|
||||
|
||||
|
|
@ -133,7 +139,7 @@ drm_clflush_virt_range(char *addr, unsigned long length)
|
|||
mb();
|
||||
for (; addr < end; addr += boot_cpu_data.x86_clflush_size)
|
||||
clflush(addr);
|
||||
clflush(end - 1);
|
||||
clflushopt(end - 1);
|
||||
mb();
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue