diff options
author | Borislav Petkov <[email protected]> | 2016-12-03 16:02:58 +0100 |
---|---|---|
committer | Ingo Molnar <[email protected]> | 2016-12-20 09:36:42 +0100 |
commit | 34bfab0eaf0fb5c6fb14c6b4013b06cdc7984466 (patch) | |
tree | 332c3f082bb67dc8609d8a9c155698e590c736f4 /tools/perf/scripts/python/syscall-counts.py | |
parent | a268b5f1d6e4639fa6d78fc8bdddaebaa032ab24 (diff) |
x86/alternatives: Do not use sync_core() to serialize I$
We use sync_core() in the alternatives code to stop speculative
execution of prefetched instructions because we are potentially changing
them and don't want to execute stale bytes.
What it does on most machines is call CPUID which is a serializing
instruction. And that's expensive.
However, the instruction cache is serialized when we're on the local CPU
and are changing the data through the same virtual address. So then, we
don't need the serializing CPUID but a simple control flow change. Last
being accomplished with a CALL/RET which the noinline causes.
Suggested-by: Linus Torvalds <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Reviewed-by: Andy Lutomirski <[email protected]>
Cc: Andrew Cooper <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Brian Gerst <[email protected]>
Cc: Henrique de Moraes Holschuh <[email protected]>
Cc: Matthew Whitehead <[email protected]>
Cc: One Thousand Gnomes <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/syscall-counts.py')
0 files changed, 0 insertions, 0 deletions