Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp6099737rwn; Mon, 12 Sep 2022 21:28:00 -0700 (PDT) X-Google-Smtp-Source: AA6agR6Ug0WaQlFOFmpEE19xKGYwd81jOE+zjp/3a337NTMUCXqdOGRsOg4gdnQdzl94N7K8qI9u X-Received: by 2002:aa7:9e0d:0:b0:540:94a7:9051 with SMTP id y13-20020aa79e0d000000b0054094a79051mr24866804pfq.59.1663043280705; Mon, 12 Sep 2022 21:28:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663043280; cv=none; d=google.com; s=arc-20160816; b=lCFB/VrYe7KGFkX0Av0iFyej0jPC1VIsbX0yDYdn/FDrTvb7WwZkHAEj2OtEGwPF2R VICI2cnwIbrti9HCZd6JNmvuepdpZZ2+yryIiba4RcvqtdfTObvu2+/Zf6YWCzWKV7u1 +POVbaVYVXPLWK1A/XTQJ8hfNt5D2e1qSyoV3fsDWnXAYVqsfIIPwm+HotV/1IJzquP/ 0r2JCV5TlkCeg9iBvrs1Sw4nVBkOOiNmRtFrGIsFDx7YLWDjiCBmspYs2TMm9exzCKZt I4sSZRHnj27Wn7f6XWtgqoR74lqRWbbEWkkC4Ajc/lRnQ8VsJkD8HlqGwHF/8NmCxsLg o+ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=4Pi8ekBAUcMtZ2UcYZkXEyVW2hcUPE9tmGs8Y6nsmwQ=; b=YfMmwwgWl186T+3Ko/hAczwKoad1PHRN9IabwTBt1d/Z3YmQVNCSFbw35vtsC3zY6s bWyD7DDv9YcRtylPYhHcUN38G2CXcvZOlFjK6oY95z5u6CAOnokSkvVBwuHisCpgAEB1 H6i6YLu4JpjK5xToZk5OJxOvcx+5EiQtmWpWuT7zobr/WBCSY/17c7WCyPUIkKHSyAuA 4KLTe1UAVY5W48FZJh9FeFYJzHmG9TcZyaDsGJkzr5u2ExwRldEJ32VlY4901uZCmSxN i4XfAPhS7iarynp2+iw6RCn+14RUW2vWWuFR7g830/ZjOvKAevZRylqg/wCbnRbAH6gv uqng== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v36-20020a634824000000b00430ae3ac71csi10938266pga.267.2022.09.12.21.27.48; Mon, 12 Sep 2022 21:28:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230070AbiIMDiq (ORCPT + 99 others); Mon, 12 Sep 2022 23:38:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229830AbiIMDib (ORCPT ); Mon, 12 Sep 2022 23:38:31 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECB2E54651; Mon, 12 Sep 2022 20:38:27 -0700 (PDT) Received: from kwepemi500012.china.huawei.com (unknown [172.30.72.55]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4MRTb322LvzNmF7; Tue, 13 Sep 2022 11:33:51 +0800 (CST) Received: from huawei.com (10.67.174.53) by kwepemi500012.china.huawei.com (7.221.188.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 13 Sep 2022 11:38:25 +0800 From: Liao Chang To: , , , , , , , , , , CC: , , , Subject: [PATCH V2 1/3] riscv/kprobe: Optimize the performance of patching single-step slot Date: Tue, 13 Sep 2022 11:34:52 +0800 Message-ID: <20220913033454.104519-2-liaochang1@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220913033454.104519-1-liaochang1@huawei.com> References: <20220913033454.104519-1-liaochang1@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.174.53] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemi500012.china.huawei.com (7.221.188.12) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Single-step slot would not be used until kprobe is enabled, that means no race condition occurs on it under SMP, hence it is safe to pacth ss slot without stopping machine. Signed-off-by: Liao Chang --- arch/riscv/kernel/probes/kprobes.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/riscv/kernel/probes/kprobes.c b/arch/riscv/kernel/probes/kprobes.c index e6e950b7cf32..bc1f39b96e41 100644 --- a/arch/riscv/kernel/probes/kprobes.c +++ b/arch/riscv/kernel/probes/kprobes.c @@ -24,12 +24,14 @@ post_kprobe_handler(struct kprobe *, struct kprobe_ctlblk *, struct pt_regs *); static void __kprobes arch_prepare_ss_slot(struct kprobe *p) { unsigned long offset = GET_INSN_LENGTH(p->opcode); + kprobe_opcode_t slot[MAX_INSN_SIZE]; p->ainsn.api.restore = (unsigned long)p->addr + offset; - patch_text(p->ainsn.api.insn, p->opcode); - patch_text((void *)((unsigned long)(p->ainsn.api.insn) + offset), - __BUG_INSN_32); + memcpy(slot, &p->opcode, offset); + *(kprobe_opcode_t *)((unsigned long)slot + offset) = __BUG_INSN_32; + patch_text_nosync(p->ainsn.api.insn, slot, + offset + GET_INSN_LENGTH(__BUG_INSN_32)); } static void __kprobes arch_prepare_simulate(struct kprobe *p) -- 2.17.1