#ifdef CONFIG_MODULES
 static char *ftrace_plt;
-
-asm(
-       "       .data\n"
-       "ftrace_plt_template:\n"
-       "       basr    %r1,%r0\n"
-       "       lg      %r1,0f-.(%r1)\n"
-       "       br      %r1\n"
-       "0:     .quad   ftrace_caller\n"
-       "ftrace_plt_template_end:\n"
-       "       .previous\n"
-);
 #endif /* CONFIG_MODULES */
 
 static const char *ftrace_shared_hotpatch_trampoline(const char **end)
 
 bool ftrace_need_init_nop(void)
 {
-       return ftrace_shared_hotpatch_trampoline(NULL);
+       return true;
 }
 
 int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
        return 0;
 }
 
-static void ftrace_generate_nop_insn(struct ftrace_insn *insn)
-{
-       /* brcl 0,0 */
-       insn->opc = 0xc004;
-       insn->disp = 0;
-}
-
-static void ftrace_generate_call_insn(struct ftrace_insn *insn,
-                                     unsigned long ip)
-{
-       unsigned long target;
-
-       /* brasl r0,ftrace_caller */
-       target = FTRACE_ADDR;
-#ifdef CONFIG_MODULES
-       if (is_module_addr((void *)ip))
-               target = (unsigned long)ftrace_plt;
-#endif /* CONFIG_MODULES */
-       insn->opc = 0xc005;
-       insn->disp = (target - ip) / 2;
-}
-
 static void brcl_disable(void *brcl)
 {
        u8 op = 0x04; /* set mask field to zero */
 int ftrace_make_nop(struct module *mod, struct dyn_ftrace *rec,
                    unsigned long addr)
 {
-       struct ftrace_insn orig, new, old;
-
-       if (ftrace_shared_hotpatch_trampoline(NULL)) {
-               brcl_disable((void *)rec->ip);
-               return 0;
-       }
-
-       if (copy_from_kernel_nofault(&old, (void *) rec->ip, sizeof(old)))
-               return -EFAULT;
-       /* Replace ftrace call with a nop. */
-       ftrace_generate_call_insn(&orig, rec->ip);
-       ftrace_generate_nop_insn(&new);
-
-       /* Verify that the to be replaced code matches what we expect. */
-       if (memcmp(&orig, &old, sizeof(old)))
-               return -EINVAL;
-       s390_kernel_write((void *) rec->ip, &new, sizeof(new));
+       brcl_disable((void *)rec->ip);
        return 0;
 }
 
 
 int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
 {
-       struct ftrace_insn orig, new, old;
-
-       if (ftrace_shared_hotpatch_trampoline(NULL)) {
-               brcl_enable((void *)rec->ip);
-               return 0;
-       }
-
-       if (copy_from_kernel_nofault(&old, (void *) rec->ip, sizeof(old)))
-               return -EFAULT;
-       /* Replace nop with an ftrace call. */
-       ftrace_generate_nop_insn(&orig);
-       ftrace_generate_call_insn(&new, rec->ip);
-
-       /* Verify that the to be replaced code matches what we expect. */
-       if (memcmp(&orig, &old, sizeof(old)))
-               return -EINVAL;
-       s390_kernel_write((void *) rec->ip, &new, sizeof(new));
+       brcl_enable((void *)rec->ip);
        return 0;
 }
 
 
 void arch_ftrace_update_code(int command)
 {
-       if (ftrace_shared_hotpatch_trampoline(NULL))
-               ftrace_modify_all_code(command);
-       else
-               ftrace_run_stop_machine(command);
+       ftrace_modify_all_code(command);
 }
 
 static void __ftrace_sync(void *dummy)
 
 int ftrace_arch_code_modify_post_process(void)
 {
-       if (ftrace_shared_hotpatch_trampoline(NULL)) {
-               /* Send SIGP to the other CPUs, so they see the new code. */
-               smp_call_function(__ftrace_sync, NULL, 1);
-       }
+       /* Send SIGP to the other CPUs, so they see the new code. */
+       smp_call_function(__ftrace_sync, NULL, 1);
        return 0;
 }
 
                panic("cannot allocate ftrace plt\n");
 
        start = ftrace_shared_hotpatch_trampoline(&end);
-       if (!start) {
-               start = ftrace_plt_template;
-               end = ftrace_plt_template_end;
-       }
        memcpy(ftrace_plt, start, end - start);
        set_memory_ro((unsigned long)ftrace_plt, 1);
        return 0;