]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - arch/powerpc/kernel/traps.c
powerpc: tm: Enable transactional memory (TM) lazily for userspace
[mirror_ubuntu-zesty-kernel.git] / arch / powerpc / kernel / traps.c
index 2f5ef5a8035393f12496806a238be1f36252d508..a1f8f5641e9e22db73c6f3a2ffc124605d1e2bfe 100644 (file)
@@ -1392,6 +1392,15 @@ void vsx_unavailable_exception(struct pt_regs *regs)
 #ifdef CONFIG_PPC64
 static void tm_unavailable(struct pt_regs *regs)
 {
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+       if (user_mode(regs)) {
+               current->thread.load_tm++;
+               regs->msr |= MSR_TM;
+               tm_enable();
+               tm_restore_sprs(&current->thread);
+               return;
+       }
+#endif
        pr_emerg("Unrecoverable TM Unavailable Exception "
                        "%lx at %lx\n", regs->trap, regs->nip);
        die("Unrecoverable TM Unavailable Exception", regs, SIGABRT);