From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B4DE0C636D3 for ; Wed, 1 Feb 2023 13:31:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=R0ONl46tBtJTAjewTbZNU9ESE0pOb+Can6bFS6CufrE=; b=tWBtSdz+Jh8Frp DD8oPyN5HD26XKlbCddkFxGfqPyfsNR61+wc+3dTEQe9yWx724psgLECCASryiGtO8TDF+/XMum/7 VT81G1hAJWpc1ec1Y/14GcvOBL3LIomYfzSbjsiREutaiwOGi+67sCHeCXKpgkJtDJzKzj48Ek2dQ ypDoPFF/+2L6PBT8ALfUVEbQd5GEBRFaeKkwjlePM9OuRK647R0bcF1LUuZTFxfBNCa8xU/BntCOH ErvNRVliBqW7N5eZAz4NcpiyxXCnNFcsEN50rBIO3AYd5MftHye8zV7DWTdxYg+sgAABkhOqZhN0M YcxsA5os3nRWJZDR4Qvw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNDCy-00C4ti-Nd; Wed, 01 Feb 2023 13:31:28 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNDCi-00C4kw-E8 for linux-riscv@lists.infradead.org; Wed, 01 Feb 2023 13:31:14 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id EFBE9B82184; Wed, 1 Feb 2023 13:31:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EAB7C433D2; Wed, 1 Feb 2023 13:31:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675258269; bh=8bjsnU5IlOTWIjS9SQViAvA7jUyJimrEv1hWYuyau9I=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=GgkC5+y89K/szZ9HjHct6jIhvWpGSGldZ7wyVtoQNWLlqP4l9KPG2XcswL0hFYefj r/rAluaKqEO+YilJVawS3TH2O8h3hhopcA1i6o+x6KYR7pMeyZ1yMsli4tzs5E7dJK zk1wYcaUxI2ZjDJvA4OrdPKMdIlkuw98anc110miqfjLqK5YJUDzKv94iNAaCxPwH+ cOSChBsyPaW3rOpNR1gySc9fRLbEYniH0DR7p0aAqNamAOThGMHYdXBdnTP2m6X59f SoBBYwIc4tQFXngCzzAkWE4mld4tZm3YmLbb4ubRT/ZS4RfJ0otnmZdNvuTrNfW4sk o+R4Xx1N7agMg== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Chen Guokai , paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, rostedt@goodmis.org, mingo@redhat.com, sfr@canb.auug.org.au Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, liaochang1@huawei.com, Chen Guokai Subject: Re: [PATCH v6 08/13] riscv/kprobe: Patch AUIPC/JALR pair to optimize kprobe In-Reply-To: <20230127130541.1250865-9-chenguokai17@mails.ucas.ac.cn> References: <20230127130541.1250865-1-chenguokai17@mails.ucas.ac.cn> <20230127130541.1250865-9-chenguokai17@mails.ucas.ac.cn> Date: Wed, 01 Feb 2023 14:31:07 +0100 Message-ID: <87r0v9tsv8.fsf@all.your.base.are.belong.to.us> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230201_053112_838275_567E72DC X-CRM114-Status: GOOD ( 20.10 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Q2hlbiBHdW9rYWkgPGNoZW5ndW9rYWkxN0BtYWlscy51Y2FzLmFjLmNuPiB3cml0ZXM6Cgo+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhdGNoLmggYi9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3BhdGNoLmgKPiBpbmRleCA5YTdkNzM0NjAwMWUuLmVlMzE1MzlkZTY1ZiAxMDA2 NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhdGNoLmgKPiArKysgYi9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3BhdGNoLmgKPiBAQCAtOCw1ICs4LDYgQEAKPiAgCj4gIGludCBwYXRj aF90ZXh0X25vc3luYyh2b2lkICphZGRyLCBjb25zdCB2b2lkICppbnNucywgc2l6ZV90IGxlbik7 Cj4gIGludCBwYXRjaF90ZXh0KHZvaWQgKmFkZHIsIHUzMiBpbnNuKTsKPiAraW50IHBhdGNoX3Rl eHRfYmF0Y2godm9pZCAqYWRkciwgY29uc3Qgdm9pZCAqaW5zbiwgc2l6ZV90IHNpemUpOwo+ICAK PiAgI2VuZGlmIC8qIF9BU01fUklTQ1ZfUEFUQ0hfSCAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2tlcm5lbC9wYXRjaC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvcGF0Y2guYwo+IGluZGV4IDc2 NTAwNGI2MDUxMy4uY2UzMjRiNmE2OTk4IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVs L3BhdGNoLmMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wYXRjaC5jCj4gQEAgLTE1LDcgKzE1 LDggQEAKPiAgCj4gIHN0cnVjdCBwYXRjaF9pbnNuIHsKPiAgCXZvaWQgKmFkZHI7Cj4gLQl1MzIg aW5zbjsKPiArCWNvbnN0IHZvaWQgKmluc247Cj4gKwlzaXplX3Qgc2l6ZTsKPiAgCWF0b21pY190 IGNwdV9jb3VudDsKPiAgfTsKPiAgCj4gQEAgLTEwNiw4ICsxMDcsNyBAQCBzdGF0aWMgaW50IHBh dGNoX3RleHRfY2Iodm9pZCAqZGF0YSkKPiAgCj4gIAlpZiAoYXRvbWljX2luY19yZXR1cm4oJnBh dGNoLT5jcHVfY291bnQpID09IG51bV9vbmxpbmVfY3B1cygpKSB7Cj4gIAkJcmV0ID0KCk5pdDog UGxlYXNlIHVzZSB0aGUgZnVsbCB3aWR0aC4gTm8gbmVlZCBmb3IgYSBOTCBoZXJlLgoKPiAtCQkg ICAgcGF0Y2hfdGV4dF9ub3N5bmMocGF0Y2gtPmFkZHIsICZwYXRjaC0+aW5zbiwKPiAtCQkJCQkg ICAgR0VUX0lOU05fTEVOR1RIKHBhdGNoLT5pbnNuKSk7Cj4gKwkJICAgIHBhdGNoX3RleHRfbm9z eW5jKHBhdGNoLT5hZGRyLCBwYXRjaC0+aW5zbiwgcGF0Y2gtPnNpemUpOwo+ICAJCWF0b21pY19p bmMoJnBhdGNoLT5jcHVfY291bnQpOwo+ICAJfSBlbHNlIHsKPiAgCQl3aGlsZSAoYXRvbWljX3Jl YWQoJnBhdGNoLT5jcHVfY291bnQpIDw9IG51bV9vbmxpbmVfY3B1cygpKQo+IEBAIC0xMjMsNyAr MTIzLDggQEAgaW50IHBhdGNoX3RleHQodm9pZCAqYWRkciwgdTMyIGluc24pCj4gIHsKPiAgCXN0 cnVjdCBwYXRjaF9pbnNuIHBhdGNoID0gewo+ICAJCS5hZGRyID0gYWRkciwKPiAtCQkuaW5zbiA9 IGluc24sCj4gKwkJLmluc24gPSAmaW5zbiwKPiArCQkuc2l6ZSA9IEdFVF9JTlNOX0xFTkdUSChp bnNuKSwKPiAgCQkuY3B1X2NvdW50ID0gQVRPTUlDX0lOSVQoMCksCj4gIAl9Owo+ICAKPiBAQCAt MTMxLDMgKzEzMiwxNyBAQCBpbnQgcGF0Y2hfdGV4dCh2b2lkICphZGRyLCB1MzIgaW5zbikKPiAg CQkJCSAgICAgICAmcGF0Y2gsIGNwdV9vbmxpbmVfbWFzayk7Cj4gIH0KPiAgTk9LUFJPQkVfU1lN Qk9MKHBhdGNoX3RleHQpOwo+ICsKPiAraW50IHBhdGNoX3RleHRfYmF0Y2godm9pZCAqYWRkciwg Y29uc3Qgdm9pZCAqaW5zbiwgc2l6ZV90IHNpemUpCj4gK3sKPiArCXN0cnVjdCBwYXRjaF9pbnNu IHBhdGNoID0gewo+ICsJCS5hZGRyID0gYWRkciwKPiArCQkuaW5zbiA9IGluc24sCj4gKwkJLnNp emUgPSBzaXplLAo+ICsJCS5jcHVfY291bnQgPSBBVE9NSUNfSU5JVCgwKSwKPiArCX07Cj4gKwo+ ICsJcmV0dXJuIHN0b3BfbWFjaGluZV9jcHVzbG9ja2VkKHBhdGNoX3RleHRfY2IsICZwYXRjaCwg Y3B1X29ubGluZV9tYXNrKTsKPiArfQo+ICsKPiArTk9LUFJPQkVfU1lNQk9MKHBhdGNoX3RleHRf YmF0Y2gpOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvb3B0LmMgYi9h cmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvb3B0LmMKPiBpbmRleCBhNDdmN2QyYmYzYTYuLmM1MmQ1 YmRjNzQ4YyAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvb3B0LmMKPiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvb3B0LmMKPiBAQCAtOCw2ICs4LDcgQEAKPiAg Cj4gICNkZWZpbmUgcHJfZm10KGZtdCkJIm9wdHByb2JlOiAiIGZtdAo+ICAKPiArI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+Cj4gICNpbmNsdWRl IDxhc20va3Byb2Jlcy5oPgo+ICAjaW5jbHVkZSA8YXNtL3BhdGNoLmg+Cj4gQEAgLTQ0NCwxMSAr NDQ1LDE5IEBAIHN0YXRpYyBib29sIGNhbl9vcHRpbWl6ZSh1bnNpZ25lZCBsb25nIHBhZGRyLCBz dHJ1Y3Qgb3B0aW1pemVkX2twcm9iZSAqb3ApCj4gIAo+ICBpbnQgYXJjaF9wcmVwYXJlZF9vcHRp bnNuKHN0cnVjdCBhcmNoX29wdGltaXplZF9pbnNuICpvcHRpbnNuKQo+ICB7Cj4gLQlyZXR1cm4g MDsKPiArCXJldHVybiBvcHRpbnNuLT5sZW5ndGg7Cj4gIH0KPiAgCj4gIGludCBhcmNoX2NoZWNr X29wdGltaXplZF9rcHJvYmUoc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wKQo+ICB7Cj4gKwl1 bnNpZ25lZCBsb25nIGk7Cj4gKwlzdHJ1Y3Qga3Byb2JlICpwOwo+ICsKPiArCWZvciAoaSA9IFJW Q19JTlNOX0xFTjsgaSA8IG9wLT5vcHRpbnNuLmxlbmd0aDsgaSArPSBSVkNfSU5TTl9MRU4pIHsK PiArCQlwID0gZ2V0X2twcm9iZShvcC0+a3AuYWRkciArIGkpOwo+ICsJCWlmIChwICYmICFrcHJv YmVfZGlzYWJsZWQocCkpCj4gKwkJCXJldHVybiAtRUVYSVNUOwo+ICsJfQo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gQEAgLTUwOSwyMyArNTE4LDc1IEBAIGludCBhcmNoX3ByZXBhcmVfb3B0aW1p emVkX2twcm9iZShzdHJ1Y3Qgb3B0aW1pemVkX2twcm9iZSAqb3AsCj4gIAo+ICB2b2lkIGFyY2hf cmVtb3ZlX29wdGltaXplZF9rcHJvYmUoc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wKQo+ICB7 Cj4gKwlpZiAob3AtPm9wdGluc24uaW5zbikgewo+ICsJCWZyZWVfb3B0aW5zbl9zbG90KG9wLT5v cHRpbnNuLmluc24sIDEpOwo+ICsJCW9wLT5vcHRpbnNuLmluc24gPSBOVUxMOwo+ICsJCW9wLT5v cHRpbnNuLmxlbmd0aCA9IDA7Cj4gKwl9Cj4gIH0KPiAgCj4gIHZvaWQgYXJjaF9vcHRpbWl6ZV9r cHJvYmVzKHN0cnVjdCBsaXN0X2hlYWQgKm9wbGlzdCkKPiAgewo+ICsJbG9uZyBvZmZzOwo+ICsJ a3Byb2JlX29wY29kZV90IGluc25bM107Cj4gKwlzdHJ1Y3Qgb3B0aW1pemVkX2twcm9iZSAqb3As ICp0bXA7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9wLCB0bXAsIG9wbGlzdCwg bGlzdCkgewo+ICsJCVdBUk5fT04oa3Byb2JlX2Rpc2FibGVkKCZvcC0+a3ApKTsKPiArCj4gKwkJ LyogQmFja3VwIGluc3RydWN0aW9ucyB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IGp1bXAgYWRk cmVzcyAqLwo+ICsJCW1lbWNweShvcC0+b3B0aW5zbi5jb3BpZWRfaW5zbiwKPiArCQkgICAgICAg REVUT1VSX0FERFIob3AtPm9wdGluc24uaW5zbiwgREVUT1VSX0lOU05fT0ZGU0VUKSwKPiArCQkg ICAgICAgb3AtPm9wdGluc24ubGVuZ3RoKTsKPiArCj4gKwkJLyoKPiArCQkgKiBBZnRlciBwYXRj aGluZywgaXQgc2hvdWxkIGJlOgo+ICsJCSAqIGF1aXBjIGZyZWVfcmVnaXN0ZXIsICVoaShkZXRv dXJfYnVmZmVyKQo+ICsJCSAqIGphbHIgZnJlZV9yZWdpc3RlciwgZnJlZV9yZWdpc3RlciwgJWxv KGRldG91cl9idWZmZXIpCj4gKwkJICogd2hlcmUgZnJlZV9yZWdpc3RlciB3aWxsIGV2ZW50dWFs bHkgc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MKPiArCQkgKi8KPiArCQlvZmZzID0gKHVuc2lnbmVk IGxvbmcpb3AtPm9wdGluc24uaW5zbiAtCj4gKwkJICAgICAgICh1bnNpZ25lZCBsb25nKW9wLT5r cC5hZGRyOwo+ICsJCWluc25bMF0gPSBydl9hdWlwYyhvcC0+b3B0aW5zbi5yZCwgKG9mZnMgKyAo MSA8PCAxMSkpID4+IDEyKTsKPiArCQlpbnNuWzFdID0gcnZfamFscihvcC0+b3B0aW5zbi5yZCwg b3AtPm9wdGluc24ucmQsIG9mZnMgJiAweEZGRik7Cj4gKwkJLyogRm9yIDMgUlZDICsgMSBSVkkg c2NlbmFyaW8sIGZpbGwgQy5OT1AgZm9yIHBhZGRpbmcgKi8KPiArCQlpZiAob3AtPm9wdGluc24u bGVuZ3RoID4gMiAqIFJWSV9JTlNOX0xFTikKPiArCQkJaW5zblsyXSA9IHJ2Y19hZGRpKDAsIDAp Owo+ICsKPiArCQlwYXRjaF90ZXh0X2JhdGNoKG9wLT5rcC5hZGRyLCBpbnNuLCBvcC0+b3B0aW5z bi5sZW5ndGgpOwo+ICsJCWlmIChtZW1jbXAob3AtPmtwLmFkZHIsIGluc24sIG9wLT5vcHRpbnNu Lmxlbmd0aCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlsaXN0X2RlbF9pbml0KCZvcC0+bGlz dCk7Cj4gKwl9Cj4gIH0KPiAgCj4gIHZvaWQgYXJjaF91bm9wdGltaXplX2twcm9iZXMoc3RydWN0 IGxpc3RfaGVhZCAqb3BsaXN0LAo+ICAJCQkgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmRvbmVfbGlz dCkKPiAgewo+ICsJc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wLCAqdG1wOwo+ICsKPiArCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShvcCwgdG1wLCBvcGxpc3QsIGxpc3QpIHsKPiArCQlhcmNo X3Vub3B0aW1pemVfa3Byb2JlKG9wKTsKPiArCQlsaXN0X21vdmUoJm9wLT5saXN0LCBkb25lX2xp c3QpOwo+ICsJfQo+ICB9Cj4gIAo+ICB2b2lkIGFyY2hfdW5vcHRpbWl6ZV9rcHJvYmUoc3RydWN0 IG9wdGltaXplZF9rcHJvYmUgKm9wKQo+ICB7Cj4gKwlrcHJvYmVfb3Bjb2RlX3QgYnVmW01BWF9D T1BJRURfSU5TTl07Cj4gKwo+ICsJbWVtY3B5KGJ1Ziwgb3AtPm9wdGluc24uY29waWVkX2luc24s IG9wLT5vcHRpbnNuLmxlbmd0aCk7Cj4gKwlpZiAoR0VUX0lOU05fTEVOR1RIKG9wLT5rcC5vcGNv ZGUpID09IFJWSV9JTlNOX0xFTikKPiArCQkqKHUzMiAqKWJ1ZiA9IF9fQlVHX0lOU05fMzI7Cj4g KwllbHNlCj4gKwkJKih1MTYgKilidWYgPSBfX0JVR19JTlNOXzE2Owo+ICsJcGF0Y2hfdGV4dF9i YXRjaChvcC0+a3AuYWRkciwgYnVmLCBvcC0+b3B0aW5zbi5sZW5ndGgpOwo+ICB9Cj4gIAo+ICBp bnQgYXJjaF93aXRoaW5fb3B0aW1pemVkX2twcm9iZShzdHJ1Y3Qgb3B0aW1pemVkX2twcm9iZSAq b3AsCj4gIAkJCQkga3Byb2JlX29wY29kZV90ICphZGRyKQo+ICB7Cj4gLQlyZXR1cm4gMDsKPiAr CXJldHVybiAob3AtPmtwLmFkZHIgPD0gYWRkciAmJgo+ICsJCW9wLT5rcC5hZGRyICsgb3AtPm9w dGluc24ubGVuZ3RoID4gYWRkcik7CgpOaXQ6IFVzZSB0aGUgd2hvbGUgMTAwIGNoYXIgbGluZSB3 aWR0aCwgcGxlYXNlLgoKV2l0aCBvciB3L28gdGhlIG5pdHMgZml4ZWQ6CgpSZXZpZXdlZC1ieTog QmrDtnJuIFTDtnBlbCA8Ympvcm5Aa2VybmVsLm9yZz4KCgpCasO2cm4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlz dApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D23E7C636D3 for ; Wed, 1 Feb 2023 13:32:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232259AbjBANcR (ORCPT ); Wed, 1 Feb 2023 08:32:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231752AbjBANbw (ORCPT ); Wed, 1 Feb 2023 08:31:52 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F077A65ECD for ; Wed, 1 Feb 2023 05:31:27 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0CCF9B82189 for ; Wed, 1 Feb 2023 13:31:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EAB7C433D2; Wed, 1 Feb 2023 13:31:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675258269; bh=8bjsnU5IlOTWIjS9SQViAvA7jUyJimrEv1hWYuyau9I=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=GgkC5+y89K/szZ9HjHct6jIhvWpGSGldZ7wyVtoQNWLlqP4l9KPG2XcswL0hFYefj r/rAluaKqEO+YilJVawS3TH2O8h3hhopcA1i6o+x6KYR7pMeyZ1yMsli4tzs5E7dJK zk1wYcaUxI2ZjDJvA4OrdPKMdIlkuw98anc110miqfjLqK5YJUDzKv94iNAaCxPwH+ cOSChBsyPaW3rOpNR1gySc9fRLbEYniH0DR7p0aAqNamAOThGMHYdXBdnTP2m6X59f SoBBYwIc4tQFXngCzzAkWE4mld4tZm3YmLbb4ubRT/ZS4RfJ0otnmZdNvuTrNfW4sk o+R4Xx1N7agMg== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Chen Guokai , paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, rostedt@goodmis.org, mingo@redhat.com, sfr@canb.auug.org.au Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, liaochang1@huawei.com, Chen Guokai Subject: Re: [PATCH v6 08/13] riscv/kprobe: Patch AUIPC/JALR pair to optimize kprobe In-Reply-To: <20230127130541.1250865-9-chenguokai17@mails.ucas.ac.cn> References: <20230127130541.1250865-1-chenguokai17@mails.ucas.ac.cn> <20230127130541.1250865-9-chenguokai17@mails.ucas.ac.cn> Date: Wed, 01 Feb 2023 14:31:07 +0100 Message-ID: <87r0v9tsv8.fsf@all.your.base.are.belong.to.us> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Chen Guokai writes: > diff --git a/arch/riscv/include/asm/patch.h b/arch/riscv/include/asm/patc= h.h > index 9a7d7346001e..ee31539de65f 100644 > --- a/arch/riscv/include/asm/patch.h > +++ b/arch/riscv/include/asm/patch.h > @@ -8,5 +8,6 @@ >=20=20 > int patch_text_nosync(void *addr, const void *insns, size_t len); > int patch_text(void *addr, u32 insn); > +int patch_text_batch(void *addr, const void *insn, size_t size); >=20=20 > #endif /* _ASM_RISCV_PATCH_H */ > diff --git a/arch/riscv/kernel/patch.c b/arch/riscv/kernel/patch.c > index 765004b60513..ce324b6a6998 100644 > --- a/arch/riscv/kernel/patch.c > +++ b/arch/riscv/kernel/patch.c > @@ -15,7 +15,8 @@ >=20=20 > struct patch_insn { > void *addr; > - u32 insn; > + const void *insn; > + size_t size; > atomic_t cpu_count; > }; >=20=20 > @@ -106,8 +107,7 @@ static int patch_text_cb(void *data) >=20=20 > if (atomic_inc_return(&patch->cpu_count) =3D=3D num_online_cpus()) { > ret =3D Nit: Please use the full width. No need for a NL here. > - patch_text_nosync(patch->addr, &patch->insn, > - GET_INSN_LENGTH(patch->insn)); > + patch_text_nosync(patch->addr, patch->insn, patch->size); > atomic_inc(&patch->cpu_count); > } else { > while (atomic_read(&patch->cpu_count) <=3D num_online_cpus()) > @@ -123,7 +123,8 @@ int patch_text(void *addr, u32 insn) > { > struct patch_insn patch =3D { > .addr =3D addr, > - .insn =3D insn, > + .insn =3D &insn, > + .size =3D GET_INSN_LENGTH(insn), > .cpu_count =3D ATOMIC_INIT(0), > }; >=20=20 > @@ -131,3 +132,17 @@ int patch_text(void *addr, u32 insn) > &patch, cpu_online_mask); > } > NOKPROBE_SYMBOL(patch_text); > + > +int patch_text_batch(void *addr, const void *insn, size_t size) > +{ > + struct patch_insn patch =3D { > + .addr =3D addr, > + .insn =3D insn, > + .size =3D size, > + .cpu_count =3D ATOMIC_INIT(0), > + }; > + > + return stop_machine_cpuslocked(patch_text_cb, &patch, cpu_online_mask); > +} > + > +NOKPROBE_SYMBOL(patch_text_batch); > diff --git a/arch/riscv/kernel/probes/opt.c b/arch/riscv/kernel/probes/op= t.c > index a47f7d2bf3a6..c52d5bdc748c 100644 > --- a/arch/riscv/kernel/probes/opt.c > +++ b/arch/riscv/kernel/probes/opt.c > @@ -8,6 +8,7 @@ >=20=20 > #define pr_fmt(fmt) "optprobe: " fmt >=20=20 > +#include > #include > #include > #include > @@ -444,11 +445,19 @@ static bool can_optimize(unsigned long paddr, struc= t optimized_kprobe *op) >=20=20 > int arch_prepared_optinsn(struct arch_optimized_insn *optinsn) > { > - return 0; > + return optinsn->length; > } >=20=20 > int arch_check_optimized_kprobe(struct optimized_kprobe *op) > { > + unsigned long i; > + struct kprobe *p; > + > + for (i =3D RVC_INSN_LEN; i < op->optinsn.length; i +=3D RVC_INSN_LEN) { > + p =3D get_kprobe(op->kp.addr + i); > + if (p && !kprobe_disabled(p)) > + return -EEXIST; > + } > return 0; > } >=20=20 > @@ -509,23 +518,75 @@ int arch_prepare_optimized_kprobe(struct optimized_= kprobe *op, >=20=20 > void arch_remove_optimized_kprobe(struct optimized_kprobe *op) > { > + if (op->optinsn.insn) { > + free_optinsn_slot(op->optinsn.insn, 1); > + op->optinsn.insn =3D NULL; > + op->optinsn.length =3D 0; > + } > } >=20=20 > void arch_optimize_kprobes(struct list_head *oplist) > { > + long offs; > + kprobe_opcode_t insn[3]; > + struct optimized_kprobe *op, *tmp; > + > + list_for_each_entry_safe(op, tmp, oplist, list) { > + WARN_ON(kprobe_disabled(&op->kp)); > + > + /* Backup instructions which will be replaced by jump address */ > + memcpy(op->optinsn.copied_insn, > + DETOUR_ADDR(op->optinsn.insn, DETOUR_INSN_OFFSET), > + op->optinsn.length); > + > + /* > + * After patching, it should be: > + * auipc free_register, %hi(detour_buffer) > + * jalr free_register, free_register, %lo(detour_buffer) > + * where free_register will eventually save the return address > + */ > + offs =3D (unsigned long)op->optinsn.insn - > + (unsigned long)op->kp.addr; > + insn[0] =3D rv_auipc(op->optinsn.rd, (offs + (1 << 11)) >> 12); > + insn[1] =3D rv_jalr(op->optinsn.rd, op->optinsn.rd, offs & 0xFFF); > + /* For 3 RVC + 1 RVI scenario, fill C.NOP for padding */ > + if (op->optinsn.length > 2 * RVI_INSN_LEN) > + insn[2] =3D rvc_addi(0, 0); > + > + patch_text_batch(op->kp.addr, insn, op->optinsn.length); > + if (memcmp(op->kp.addr, insn, op->optinsn.length)) > + continue; > + > + list_del_init(&op->list); > + } > } >=20=20 > void arch_unoptimize_kprobes(struct list_head *oplist, > struct list_head *done_list) > { > + struct optimized_kprobe *op, *tmp; > + > + list_for_each_entry_safe(op, tmp, oplist, list) { > + arch_unoptimize_kprobe(op); > + list_move(&op->list, done_list); > + } > } >=20=20 > void arch_unoptimize_kprobe(struct optimized_kprobe *op) > { > + kprobe_opcode_t buf[MAX_COPIED_INSN]; > + > + memcpy(buf, op->optinsn.copied_insn, op->optinsn.length); > + if (GET_INSN_LENGTH(op->kp.opcode) =3D=3D RVI_INSN_LEN) > + *(u32 *)buf =3D __BUG_INSN_32; > + else > + *(u16 *)buf =3D __BUG_INSN_16; > + patch_text_batch(op->kp.addr, buf, op->optinsn.length); > } >=20=20 > int arch_within_optimized_kprobe(struct optimized_kprobe *op, > kprobe_opcode_t *addr) > { > - return 0; > + return (op->kp.addr <=3D addr && > + op->kp.addr + op->optinsn.length > addr); Nit: Use the whole 100 char line width, please. With or w/o the nits fixed: Reviewed-by: Bj=C3=B6rn T=C3=B6pel Bj=C3=B6rn