diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r-- | arch/powerpc/kernel/process.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 9ef4aea9fffe..27f0caee55ea 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -1250,17 +1250,9 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
1250 | * mappings. If the new process has the foreign real address | 1250 | * mappings. If the new process has the foreign real address |
1251 | * mappings, we must issue a cp_abort to clear any state and | 1251 | * mappings, we must issue a cp_abort to clear any state and |
1252 | * prevent snooping, corruption or a covert channel. | 1252 | * prevent snooping, corruption or a covert channel. |
1253 | * | ||
1254 | * DD1 allows paste into normal system memory so we do an | ||
1255 | * unpaired copy, rather than cp_abort, to clear the buffer, | ||
1256 | * since cp_abort is quite expensive. | ||
1257 | */ | 1253 | */ |
1258 | if (current_thread_info()->task->thread.used_vas) { | 1254 | if (current_thread_info()->task->thread.used_vas) |
1259 | asm volatile(PPC_CP_ABORT); | 1255 | asm volatile(PPC_CP_ABORT); |
1260 | } else if (cpu_has_feature(CPU_FTR_POWER9_DD1)) { | ||
1261 | asm volatile(PPC_COPY(%0, %1) | ||
1262 | : : "r"(dummy_copy_buffer), "r"(0)); | ||
1263 | } | ||
1264 | } | 1256 | } |
1265 | #endif /* CONFIG_PPC_BOOK3S_64 */ | 1257 | #endif /* CONFIG_PPC_BOOK3S_64 */ |
1266 | 1258 | ||