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 5799FC83F1A for ; Wed, 23 Jul 2025 17:42:47 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=sl/e0cD1lG1nQlsFBzw+QD9b94FKMCjAcIYc1hMWWI8=; b=WbXLXOTUzmdnpFJbwPYTtZB+98 VE1RkrHpomvdIf7uV7SGNYKayl8sV4CDKI+3u0WysLCNL5KeiGMM7194cyxTA9+MPhyXD1fh2w8/P Ltc/t4dRBXa37NdBNPRqrvgVtlWBRwI4C/rab9p/gUZJhqKkrTXfQGqJ2jS7O/GhIulXiI/gXnYiF /wJIIfKIi/2slArkvUnG9SYrPo9GsAGwl9da1t9CpfZbc8pUOwzjPt8QeineiluJQvN1waSdBhzF0 2/G3QoiII9i1HCj3ypbbXCG1laAkjtR6xIDi21AaRa1r7Z0+FMn0bt3tQFcwT0mCfIPhAyLb1HKOY mMeTRCqA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uedUD-00000005dvI-0a41; Wed, 23 Jul 2025 17:42:37 +0000 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uedBO-00000005akK-2tR1 for linux-riscv@lists.infradead.org; Wed, 23 Jul 2025 17:23:11 +0000 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-748fe69a7baso171463b3a.3 for ; Wed, 23 Jul 2025 10:23:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753291390; x=1753896190; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=gZzLZVb3xyIld6X5p/usujO/Mtg8MXgowsKQnou8Wu8=; b=hCiUjFSYDnw/PnpreaPt2Zz92LrJtaFavLQzYXxGtFW6cjm5GRZdGFTGy1D61avAnG XN3AtzUyRnKHP845kSTGpwLV3qVZuZbjkvBPwpOKdjHUXH12/gg30GXCJbL5wHG+i2d1 bhEy0/ikkevVOteU8EHSRnlsYcl/0jIEO5tZQcLDQwGKPIR5eVQMiRcvdU1RA2vE24nH 2GNl11Du9EsgHCiPU1n+8D2AB95Ls9b6RAmqS9j7RusowAq+qEASuwhxn5pohd2oFRN2 OuKJktB0S3No7/t3QUs9i++ue7hzdf4VDcimTSpa3fg319NLHnBId9mWy7txO+0ZXHqu EhzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753291390; x=1753896190; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gZzLZVb3xyIld6X5p/usujO/Mtg8MXgowsKQnou8Wu8=; b=HOFjMFaWbZGCDNbaldCaecKmVPBxfzw5W/qgguHB8F+THNwKanXyYFHMkvbv8M1GDc gwqTvgiL2pDFYocxFuesf5Qt69nPQX+4zrboS1SV1Abe3y9MrouKy5LHFv5BV27QWgzu N8ImGlRln8AtrTIioYpmRrXn5qSK1JRtX9XoUvGTsoYo8Md6JM7Hq/tfNPlW5uk49H2j BKpcidRxPYshkRlRGeBmQRlmee2ro7gsNYFdGw0YCPnafhvLtTQiPcErV3TA/4IkHZCy CjMJV+6lYAB0u+hhZrO6SeD0H6VkGUTxBnxP9gY44X53+vXISegG1UmCYBuIlZu7nuB2 gs8A== X-Gm-Message-State: AOJu0YxgBE41EySMa6VJFam2ogqJFc7FsMG1EskPJBi1osEcCxBaAgvF Q6WIuFiY9lRtUmLRUdBE2NSiJL2DH9RpVvg1/C+tEMQub8mg/PTUtD7VL6ki9/MtwJ4= X-Gm-Gg: ASbGncu7LxiF7Q5KbONV2BiQ3P0mRYc/GDpfHd3zRQFqo3BVX8BZAz/LmmnPErmGG+8 dCJ63kPCKQ/jgDVvdC/Pz0F/fqGNuyLgbGBtX1XLRw4ZeK+w7QyRo6h7bkuQiUDPjRPLSYu5BUw CH7UCxCd2D+l3bIIJ2ROxnL3e3NtfM9AQlDZZljTBQ5eSkjAo+MZsawqfr7WEeinr/+cGBfOMIy oG4kWWxke+iK4uqZZI+f8EVwAP63TWk6e+H67TqntuIMKQhrncrjkmetsAYS0qRn49OyJ5zMw5G zFKo941TbmcM3y1C/gRDQOG93OPw1gcTwTSz/zClOf7tq9I2jO1dEMsEuEKHar1Xdv1nVx72VkS +Dij7wgsDxxYFFx66moV0v3P/ZLJQsHKJ X-Google-Smtp-Source: AGHT+IHzUtPKawIqkFt5Igo1MBp83lf/CM3Egcfzh15ZfVazcE1EcIjKr1I00hNV1fElvqn0wBjMmA== X-Received: by 2002:a05:6a00:1823:b0:751:6ff5:df35 with SMTP id d2e1a72fcca58-76034c9066dmr6582847b3a.8.1753291389805; Wed, 23 Jul 2025 10:23:09 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-759cbc68ba1sm10197019b3a.146.2025.07.23.10.23.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jul 2025 10:23:09 -0700 (PDT) Date: Wed, 23 Jul 2025 10:23:06 -0700 From: Deepak Gupta To: Jesse Taube Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Oleg Nesterov , Himanshu Chauhan , Charlie Jenkins , Samuel Holland , Andrew Jones , Atish Patra , Anup Patel , Mayuresh Chitale , Conor Dooley , WangYuli , Huacai Chen , Nam Cao , Andrew Morton , "Mike Rapoport (Microsoft)" , Luis Chamberlain , Yunhui Cui , Joel Granados , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Celeste Liu , Evan Green , Nylon Chen Subject: Re: [RFC PATCH 6/6] riscv: ptrace: Add hw breakpoint support Message-ID: References: <20250722173829.984082-1-jesse@rivosinc.com> <20250722173829.984082-7-jesse@rivosinc.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250723_102310_732132_157C1DC1 X-CRM114-Status: GOOD ( 26.68 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBKdWwgMjMsIDIwMjUgYXQgMDk6NTU6MjVBTSAtMDcwMCwgSmVzc2UgVGF1YmUgd3Jv dGU6Cj5PbiBUdWUsIEp1bCAyMiwgMjAyNSBhdCA5OjE44oCvUE0gRGVlcGFrIEd1cHRhIDxkZWJ1 Z0ByaXZvc2luYy5jb20+IHdyb3RlOgo+Pgo+PiBPbiBUdWUsIEp1bCAyMiwgMjAyNSBhdCAxMDoz ODoyOUFNIC0wNzAwLCBKZXNzZSBUYXViZSB3cm90ZToKPj4gPkFkZCBhYmlsaXR5IHRvIHNldHVw IGh3IGJyZWFrcG9pbnRzIHRvIHB0cmFjZS4gQ2FsbCBkZWZpbmVzIGEgbmV3Cj4+ID5zdHJ1Y3R1 cmUgb2YgKHVsb25nWzNdKXticF9hZGRyLCBicF9sZW4sIGJwX3R5cGV9IHdpdGgKPj4gPmJwX3R5 cGUgYmVpbmcgb25lIG9mIEhXX0JSRUFLUE9JTlRfTEVOX1ggYW5kCj4+ID5icF9sZW4gYmVpbmcg b25lIG9mIEhXX0JSRUFLUE9JTlRfWCB3aXRoIGEgdmFsdWUgb2YKPj4gPnplcm8gZGlzc2FibGlu ZyB0aGUgYnJlYWtwb2ludC4KPj4gPgo+PiA+U2lnbmVkLW9mZi1ieTogSmVzc2UgVGF1YmUgPGpl c3NlQHJpdm9zaW5jLmNvbT4KPj4gPi0tLQo+PiA+IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJv Y2Vzc29yLmggICB8ICA0ICsrCj4+ID4gYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL3B0cmFj ZS5oIHwgIDMgKy0KPj4gPiBhcmNoL3Jpc2N2L2tlcm5lbC9od19icmVha3BvaW50LmMgICAgfCAx NCArKysrLQo+PiA+IGFyY2gvcmlzY3Yva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICB8ICA0ICsr Cj4+ID4gYXJjaC9yaXNjdi9rZXJuZWwvcHRyYWNlLmMgICAgICAgICAgIHwgOTMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiA+IDUgZmlsZXMgY2hhbmdlZCwgMTE2IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCj4+ID4KPj4gPmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAo+ PiA+aW5kZXggNWY1NmViOWQxMTRhLi40ODhkOTU2YTk1MWYgMTAwNjQ0Cj4+ID4tLS0gYS9hcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCj4+ID4rKysgYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oCj4+ID5AQCAtMTIsNiArMTIsNyBAQAo+PiA+Cj4+ID4gI2luY2x1 ZGUgPHZkc28vcHJvY2Vzc29yLmg+Cj4+ID4KPj4gPisjaW5jbHVkZSA8YXNtL2h3X2JyZWFrcG9p bnQuaD4KPj4gPiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgo+PiA+Cj4+ID4gI2RlZmluZSBhcmNo X2dldF9tbWFwX2VuZChhZGRyLCBsZW4sIGZsYWdzKSAgICAgICAgICAgICAgICAgICBcCj4+ID5A QCAtMTA4LDYgKzEwOSw5IEBAIHN0cnVjdCB0aHJlYWRfc3RydWN0IHsKPj4gPiAgICAgICBzdHJ1 Y3QgX19yaXNjdl92X2V4dF9zdGF0ZSB2c3RhdGU7Cj4+ID4gICAgICAgdW5zaWduZWQgbG9uZyBh bGlnbl9jdGw7Cj4+ID4gICAgICAgc3RydWN0IF9fcmlzY3Zfdl9leHRfc3RhdGUga2VybmVsX3Zz dGF0ZTsKPj4gPisjaWZkZWYgQ09ORklHX0hBVkVfSFdfQlJFQUtQT0lOVAo+PiA+KyAgICAgIHN0 cnVjdCBwZXJmX2V2ZW50ICpwdHJhY2VfYnBzW1JWX01BWF9UUklHR0VSU107Cj4+ID4rI2VuZGlm Cj4+ID4gI2lmZGVmIENPTkZJR19TTVAKPj4gPiAgICAgICAvKiBGbHVzaCB0aGUgaWNhY2hlIG9u IG1pZ3JhdGlvbiAqLwo+PiA+ICAgICAgIGJvb2wgZm9yY2VfaWNhY2hlX2ZsdXNoOwo+PiA+ZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaCBiL2FyY2gvcmlz Y3YvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaAo+PiA+aW5kZXggYTM4MjY4YjE5YzNkLi5hNzk5 OGVkNDE5MTMgMTAwNjQ0Cj4+ID4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20vcHRy YWNlLmgKPj4gPisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaAo+PiA+ QEAgLTE0LDcgKzE0LDggQEAKPj4gPgo+PiA+ICNkZWZpbmUgUFRSQUNFX0dFVEZEUElDX0VYRUMg IDAKPj4gPiAjZGVmaW5lIFBUUkFDRV9HRVRGRFBJQ19JTlRFUlAgICAgICAgIDEKPj4gPi0KPj4g PisjZGVmaW5lIFBUUkFDRV9HRVRIQlBSRUdTICAgICAyCj4+ID4rI2RlZmluZSBQVFJBQ0VfU0VU SEJQUkVHUyAgICAgMwo+Pgo+PiBXaHkgbm90IHVzZSBgUFRSQUNFX0dFVFJFR1NFVGAgYFBUUkFD RV9TRVRSRUdTRVRgID8KPgo+QmVjYXVzZSBpdCB3YXMgZWFzaWVyIHRvIGltcGxlbWVudCB0aGlz IGZpcnN0LCBhbmQgUkVHU0VUIHdpbGwgYmUKPmFub3RoZXIgY29tbWl0IG9udG9wIG9mIHRoaXMg b25lLgo+VW5sZXNzIHRoZXJlIGlzIGEgcmVhc29uIHRvIG5vdCBoYXZlIHRoaXMgdmVyc2lvbi4K PgoKWWVhaCBJIGRvbid0IGhhdmUgc3Ryb25nIGZlZWxpbmdzIG9uIHRoaXMuIFdoYXRldmVyIGlz IGJlc3QgZm9yIHRoZSB0b29scwooZ2RiLCBldGMpIHdobyB3aWxsIGNvbnN1bWUgdGhpcyBpbnRl cmZhY2UsIGxldHMgZG8gdGhhdC4KCj4+Cj4+ID4gLyoKPj4gPiAgKiBVc2VyLW1vZGUgcmVnaXN0 ZXIgc3RhdGUgZm9yIGNvcmUgZHVtcHMsIHB0cmFjZSwgc2lnY29udGV4dAo+PiA+ICAqCj4+ID5k aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvaHdfYnJlYWtwb2ludC5jIGIvYXJjaC9yaXNj di9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCj4+ID5pbmRleCA0MzdmZDgyYjk1OTAuLmM1ODE0NTQ2 NDUzOSAxMDA2NDQKPj4gPi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2h3X2JyZWFrcG9pbnQuYwo+ PiA+KysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCj4+ID5AQCAtNjMzLDcg KzYzMywxOSBAQCB2b2lkIGFyY2hfdW5pbnN0YWxsX2h3X2JyZWFrcG9pbnQoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50KQo+PiA+ICAgICAgICAgICAgICAgcHJfd2FybigiJXM6IEZhaWxlZCB0byB1 bmluc3RhbGwgdHJpZ2dlciAlZC4gZXJyb3I6ICVsZFxuIiwgX19mdW5jX18sIGksIHJldC5lcnJv cik7Cj4+ID4gfQo+PiA+Cj4+ID4tdm9pZCBmbHVzaF9wdHJhY2VfaHdfYnJlYWtwb2ludChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaykgeyB9Cj4+ID4rLyoKPj4gPisgKiBSZWxlYXNlIHRoZSB1c2Vy IGJyZWFrcG9pbnRzIHVzZWQgYnkgcHRyYWNlCj4+ID4rICovCj4+ID4rdm9pZCBmbHVzaF9wdHJh Y2VfaHdfYnJlYWtwb2ludChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPj4gPit7Cj4+ID4rICAg ICAgaW50IGk7Cj4+ID4rICAgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQgPSAmdHNrLT50aHJl YWQ7Cj4+ID4rCj4+ID4rICAgICAgZm9yIChpID0gMDsgaSA8IGRidHJfdG90YWxfbnVtOyBpKysp IHsKPj4gPisgICAgICAgICAgICAgIHVucmVnaXN0ZXJfaHdfYnJlYWtwb2ludCh0LT5wdHJhY2Vf YnBzW2ldKTsKPj4gPisgICAgICAgICAgICAgIHQtPnB0cmFjZV9icHNbaV0gPSBOVUxMOwo+PiA+ KyAgICAgIH0KPj4gPit9Cj4+ID4KPj4gPiB2b2lkIGh3X2JyZWFrcG9pbnRfcG11X3JlYWQoc3Ry dWN0IHBlcmZfZXZlbnQgKmJwKSB7IH0KPj4gPgo+PiA+ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv a2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Nlc3MuYwo+PiA+aW5kZXgg MTVkOGY3NTkwMmY4Li45Y2YwN2VjZmI1MjMgMTAwNjQ0Cj4+ID4tLS0gYS9hcmNoL3Jpc2N2L2tl cm5lbC9wcm9jZXNzLmMKPj4gPisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Nlc3MuYwo+PiA+ QEAgLTksNiArOSw3IEBACj4+ID4KPj4gPiAjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KPj4g PiAjaW5jbHVkZSA8bGludXgvY3B1Lmg+Cj4+ID4rI2luY2x1ZGUgPGxpbnV4L2h3X2JyZWFrcG9p bnQuaD4KPj4gPiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+ID4gI2luY2x1ZGUgPGxpbnV4 L3NjaGVkLmg+Cj4+ID4gI2luY2x1ZGUgPGxpbnV4L3NjaGVkL2RlYnVnLmg+Cj4+ID5AQCAtMTY0 LDYgKzE2NSw3IEBAIHZvaWQgc3RhcnRfdGhyZWFkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNp Z25lZCBsb25nIHBjLAo+PiA+Cj4+ID4gdm9pZCBmbHVzaF90aHJlYWQodm9pZCkKPj4gPiB7Cj4+ ID4rICAgICAgZmx1c2hfcHRyYWNlX2h3X2JyZWFrcG9pbnQoY3VycmVudCk7Cj4+ID4gI2lmZGVm IENPTkZJR19GUFUKPj4gPiAgICAgICAvKgo+PiA+ICAgICAgICAqIFJlc2V0IEZQVSBzdGF0ZSBh bmQgY29udGV4dAo+PiA+QEAgLTIxOCw2ICsyMjAsOCBAQCBpbnQgY29weV90aHJlYWQoc3RydWN0 IHRhc2tfc3RydWN0ICpwLCBjb25zdCBzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3MgKmFyZ3MpCj4+ ID4gICAgICAgICAgICAgICBzZXRfYml0KE1NX0NPTlRFWFRfTE9DS19QTUxFTiwgJnAtPm1tLT5j b250ZXh0LmZsYWdzKTsKPj4gPgo+PiA+ICAgICAgIG1lbXNldCgmcC0+dGhyZWFkLnMsIDAsIHNp emVvZihwLT50aHJlYWQucykpOwo+PiA+KyAgICAgIGlmIChJU19FTkFCTEVEKENPTkZJR19IQVZF X0hXX0JSRUFLUE9JTlQpKQo+PiA+KyAgICAgICAgICAgICAgbWVtc2V0KHAtPnRocmVhZC5wdHJh Y2VfYnBzLCAwLCBzaXplb2YocC0+dGhyZWFkLnB0cmFjZV9icHMpKTsKPj4gPgo+PiA+ICAgICAg IC8qIHAtPnRocmVhZCBob2xkcyBjb250ZXh0IHRvIGJlIHJlc3RvcmVkIGJ5IF9fc3dpdGNoX3Rv KCkgKi8KPj4gPiAgICAgICBpZiAodW5saWtlbHkoYXJncy0+Zm4pKSB7Cj4+ID5kaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wdHJhY2Uu Ywo+PiA+aW5kZXggZWE2N2U5ZmI3YTU4Li5iNzhjZmIwZjFjMGUgMTAwNjQ0Cj4+ID4tLS0gYS9h cmNoL3Jpc2N2L2tlcm5lbC9wdHJhY2UuYwo+PiA+KysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHRy YWNlLmMKPj4gPkBAIC05LDExICs5LDEzIEBACj4+ID4KPj4gPiAjaW5jbHVkZSA8YXNtL3ZlY3Rv ci5oPgo+PiA+ICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Cj4+ID4rI2luY2x1ZGUgPGFzbS9od19i cmVha3BvaW50Lmg+Cj4+ID4gI2luY2x1ZGUgPGFzbS9zeXNjYWxsLmg+Cj4+ID4gI2luY2x1ZGUg PGFzbS90aHJlYWRfaW5mby5oPgo+PiA+ICNpbmNsdWRlIDxhc20vc3dpdGNoX3RvLmg+Cj4+ID4g I2luY2x1ZGUgPGxpbnV4L2F1ZGl0Lmg+Cj4+ID4gI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5oPgo+ PiA+KyNpbmNsdWRlIDxsaW51eC9od19icmVha3BvaW50Lmg+Cj4+ID4gI2luY2x1ZGUgPGxpbnV4 L3B0cmFjZS5oPgo+PiA+ICNpbmNsdWRlIDxsaW51eC9lbGYuaD4KPj4gPiAjaW5jbHVkZSA8bGlu dXgvcmVnc2V0Lmg+Cj4+ID5AQCAtMzM2LDEyICszMzgsMTAzIEBAIHZvaWQgcHRyYWNlX2Rpc2Fi bGUoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKPj4gPiB7Cj4+ID4gfQo+PiA+Cj4+ID4rI2lm ZGVmIENPTkZJR19IQVZFX0hXX0JSRUFLUE9JTlQKPj4gPitzdGF0aWMgdm9pZCBwdHJhY2VfaGJw dHJpZ2dlcmVkKHN0cnVjdCBwZXJmX2V2ZW50ICpicCwKPj4gPisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcGVyZl9zYW1wbGVfZGF0YSAqZGF0YSwKPj4gPisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKPj4gPit7Cj4+ID4rICAg ICAgc3RydWN0IGFyY2hfaHdfYnJlYWtwb2ludCAqYmtwdCA9IGNvdW50ZXJfYXJjaF9icChicCk7 Cj4+ID4rICAgICAgaW50IG51bSA9IDA7Cj4+ID4rCj4+ID4rICAgICAgZm9yY2Vfc2lnX3B0cmFj ZV9lcnJub190cmFwKG51bSwgKHZvaWQgX191c2VyICopYmtwdC0+YWRkcmVzcyk7Cj4+ID4rfQo+ PiA+Kwo+PiA+Ky8qCj4+ID4rICogaWR4IHNlbGVjdHMgdGhlIGJyZWFrcG9pbnQgaW5kZXguCj4+ ID4rICogQm90aCBQVFJBQ0VfR0VUSEJQUkVHUyBhbmQgUFRSQUNFX1NFVEhCUFJFR1MgdHJhbnNm ZXIgdGhyZWUgMzItYml0IHdvcmRzOgo+PiA+KyAqIGFkZHJlc3MgKDApLCBsZW5ndGggKDEpLCB0 eXBlICgyKS4KPj4gPisgKiBJbnN0cnVjdGlvbiBicmVha3BvaW50IGxlbmd0aCBpcyBvbmUgb2Yg SFdfQlJFQUtQT0lOVF9MRU5fWCBvciAwLiAwIHdpbGwKPj4gPisgKiBkaXNhYmxlIHRoZSBicmVh a3BvaW50Lgo+PiA+KyAqIEluc3RydWN0aW9uIGJyZWFrcG9pbnQgdHlwZSBpcyBvbmUgb2YgSFdf QlJFQUtQT0lOVF9YLgo+PiA+KyAqLwo+PiA+Kwo+PiA+K3N0YXRpYyBsb25nIHB0cmFjZV9nZXRo YnByZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIHVuc2lnbmVkIGxvbmcgaWR4LAo+PiA+ KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIF9fdXNlciAqZGF0YXAp Cj4+ID4rewo+PiA+KyAgICAgIHN0cnVjdCBwZXJmX2V2ZW50ICpicDsKPj4gPisgICAgICB1bnNp Z25lZCBsb25nIHVzZXJfZGF0YVszXSA9IHswfTsKPj4gPisKPj4gPisgICAgICBpZiAoaWR4ID49 IFJWX01BWF9UUklHR0VSUykKPj4gPisgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiA+ Kwo+PiA+KyAgICAgIGJwID0gY2hpbGQtPnRocmVhZC5wdHJhY2VfYnBzW2lkeF07Cj4+ID4rCj4+ ID4rICAgICAgaWYgKCFJU19FUlJfT1JfTlVMTChicCkpIHsKPj4gPisgICAgICAgICAgICAgIHVz ZXJfZGF0YVswXSA9IGJwLT5hdHRyLmJwX2FkZHI7Cj4+ID4rICAgICAgICAgICAgICB1c2VyX2Rh dGFbMV0gPSBicC0+YXR0ci5kaXNhYmxlZCA/IDAgOiBicC0+YXR0ci5icF9sZW47Cj4+ID4rICAg ICAgICAgICAgICB1c2VyX2RhdGFbMl0gPSBicC0+YXR0ci5icF90eXBlOwo+PiA+KyAgICAgIH0K Pj4gPisKPj4gPisgICAgICBpZiAoY29weV90b191c2VyKGRhdGFwLCB1c2VyX2RhdGEsIHNpemVv Zih1c2VyX2RhdGEpKSkKPj4gPisgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiA+Kwo+ PiA+KyAgICAgIHJldHVybiAwOwo+PiA+K30KPj4gPisKPj4gPitzdGF0aWMgbG9uZyBwdHJhY2Vf c2V0aGJwcmVncyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCB1bnNpZ25lZCBsb25nIGlkeCwK Pj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VzZXIgKmRh dGFwKQo+PiA+K3sKPj4gPisgICAgICBzdHJ1Y3QgcGVyZl9ldmVudCAqYnA7Cj4+ID4rICAgICAg c3RydWN0IHBlcmZfZXZlbnRfYXR0ciBhdHRyOwo+PiA+KyAgICAgIHVuc2lnbmVkIGxvbmcgdXNl cl9kYXRhWzNdOwo+PiA+Kwo+PiA+KyAgICAgIGlmIChpZHggPj0gUlZfTUFYX1RSSUdHRVJTKQo+ PiA+KyAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ID4rCj4+ID4rICAgICAgaWYgKGNv cHlfZnJvbV91c2VyKHVzZXJfZGF0YSwgZGF0YXAsIHNpemVvZih1c2VyX2RhdGEpKSkKPj4gPisg ICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiA+Kwo+PiA+KyAgICAgIGJwID0gY2hpbGQt PnRocmVhZC5wdHJhY2VfYnBzW2lkeF07Cj4+ID4rICAgICAgaWYgKElTX0VSUl9PUl9OVUxMKGJw KSkKPj4KPj4gV2h5IG5vdCBvbmx5IGNoZWNrIGZvciBOVUxMPwo+PiBJU19FUlJfVkFMVUUgd2ls bCBhbHdheXMgZXhwYW5kIHRvIGJlIHRydWUuIHJpZ2h0Pwo+Cj5CZWNhdXNlIGltIGR1bWIgYW5k IHRob3VnaHQgaSB3YXMgc2V0dGluZyBicCB0byBhbiBlcnJvciBjb2RlLCBidXQgaSdtIG5vdC4K PlllcyBpZiAoIWJwKSBpcyByaWdodC4KPgo+Pgo+PiA+KyAgICAgICAgICAgICAgYXR0ciA9IGJw LT5hdHRyOwo+PiA+KyAgICAgIGVsc2UKPj4gPisgICAgICAgICAgICAgIHB0cmFjZV9icmVha3Bv aW50X2luaXQoJmF0dHIpOwo+PiA+Kwo+PiA+KyAgICAgIGF0dHIuYnBfYWRkciA9IHVzZXJfZGF0 YVswXTsKPj4gPisgICAgICBhdHRyLmJwX2xlbiA9IHVzZXJfZGF0YVsxXTsKPj4gPisgICAgICBh dHRyLmJwX3R5cGUgPSB1c2VyX2RhdGFbMl07Cj4+ID4rICAgICAgYXR0ci5kaXNhYmxlZCA9ICFh dHRyLmJwX2xlbjsKPj4KPj4gSXMgaXQgb2theSB0byBub3QgaGF2ZSBhbnkgc2FuaXRpemF0aW9u IG9uIGlucHV0cz8KPj4KPj4gQ2FuIHRoZXNlIGlucHV0cyBiZSBjb250cm9sbGVkIGJ5IHVzZXIg dG8gZ2l2ZSBrZXJuZWwgYWRkcmVzcyBhbmQga2VybmVsCj4+IGJyZWFrcG9pbnQ/Cj4KPm1vZGlm eV91c2VyX2h3X2JyZWFrcG9pbnQgY2FsbHMgbW9kaWZ5X3VzZXJfaHdfYnJlYWtwb2ludF9jaGVj aywgd2hpY2gKPmV2ZW50dWFsbHkgY2hlY2tzIGlmIHdlIGhhdmUgQ0FQX1NZU19BRE1JTi4KPlNh bWUgZm9yIHJlZ2lzdGVyLiB0eXBlIGFuZCBsZW4gYXJlIGFsc28gY2hlY2tlZCBieSB0aGUKPl91 c2VyX2h3X2JyZWFrcG9pbnRfY2hlY2sgZnVuY3Rpb25zIGFuZCBhZ2FpbiBpbiB0aGUgcmlzY3Yg Y29kZS4KPgo+aXQgd291bGQgYmUgbmljZSBpZiB0aGlzIGNvdWxkIGJlIGRvdWJsZSBjaGVja2Vk LCBidXQgaXQgZG9lcyBzZWVtCj5vdGhlciBhcmNoaXRlY3R1cmVzIGRvbid0IGNoZWNrIGFkZHIg YXN3ZWxsLgoKSSBzZWUuIFRoYXQncyBpbnRlcmVzdGluZy4KCj4KPlRoYW5rcywKPkplc3NlIFRh dWJlCj4KPj4KPj4gPisKPj4gPisgICAgICBpZiAoSVNfRVJSX09SX05VTEwoYnApKSB7Cj4+ID4r ICAgICAgICAgICAgICBicCA9IHJlZ2lzdGVyX3VzZXJfaHdfYnJlYWtwb2ludCgmYXR0ciwgcHRy YWNlX2hicHRyaWdnZXJlZCwgTlVMTCwKPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoaWxkKTsKPj4gPisgICAgICAgICAgICAgIGlmIChJU19FUlIoYnApKQo+ PiA+KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihicCk7Cj4+ID4rCj4+ID4r ICAgICAgICAgICAgICBjaGlsZC0+dGhyZWFkLnB0cmFjZV9icHNbaWR4XSA9IGJwOwo+PiA+KyAg ICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ID4rICAgICAgfSBlbHNlIHsKPj4gPisgICAgICAgICAg ICAgIHJldHVybiBtb2RpZnlfdXNlcl9od19icmVha3BvaW50KGJwLCAmYXR0cik7Cj4+ID4rICAg ICAgfQo+PiA+K30KPj4gPisjZW5kaWYKPj4gPisKPj4gPiBsb25nIGFyY2hfcHRyYWNlKHN0cnVj dCB0YXNrX3N0cnVjdCAqY2hpbGQsIGxvbmcgcmVxdWVzdCwKPj4gPiAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZGF0YSkKPj4gPiB7Cj4+ID4gICAgICAg bG9uZyByZXQgPSAtRUlPOwo+PiA+KyAgICAgIHVuc2lnbmVkIGxvbmcgX191c2VyICpkYXRhcCA9 ICh1bnNpZ25lZCBsb25nIF9fdXNlciAqKSBkYXRhOwo+PiA+Cj4+ID4gICAgICAgc3dpdGNoIChy ZXF1ZXN0KSB7Cj4+ID4rI2lmZGVmIENPTkZJR19IQVZFX0hXX0JSRUFLUE9JTlQKPj4gPisgICAg ICBjYXNlIFBUUkFDRV9HRVRIQlBSRUdTOgo+PiA+KyAgICAgICAgICAgICAgcmV0ID0gcHRyYWNl X2dldGhicHJlZ3MoY2hpbGQsIGFkZHIsIGRhdGFwKTsKPj4gPisgICAgICAgICAgICAgIGJyZWFr Owo+PiA+Kwo+PiA+KyAgICAgIGNhc2UgUFRSQUNFX1NFVEhCUFJFR1M6Cj4+ID4rICAgICAgICAg ICAgICByZXQgPSBwdHJhY2Vfc2V0aGJwcmVncyhjaGlsZCwgYWRkciwgZGF0YXApOwo+PiA+KyAg ICAgICAgICAgICAgYnJlYWs7Cj4+ID4rI2VuZGlmCj4+ID4gICAgICAgZGVmYXVsdDoKPj4gPiAg ICAgICAgICAgICAgIHJldCA9IHB0cmFjZV9yZXF1ZXN0KGNoaWxkLCByZXF1ZXN0LCBhZGRyLCBk YXRhKTsKPj4gPiAgICAgICAgICAgICAgIGJyZWFrOwo+PiA+LS0KPj4gPjIuNDMuMAo+PiA+Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAA1C1FE44A for ; Wed, 23 Jul 2025 17:23:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753291392; cv=none; b=jPbJrIJA8lQRUXz03yFEB6YUwSzHc7oXMw/Np+bbllfC0YH93esLw3X00x2GjbSFmBk+Qb1ZqYxoJpHWXdvT1757uuILwiPs+uM1zR4979NH1NPkmAArp9o5gCGdav7RoLKOZG18lTaeOkyhmlWmxBQzJKNCVo24mQQod1jPTDg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753291392; c=relaxed/simple; bh=89c0NehnKSjdDxtvQ523M84fmQt7jm/P3dvuVsjE8i0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=guAMh/24bKMFyI4uW4XQgzPrZlTiAYEh7IH2biI5pxqtPQxHKDMVdKfbzNCc4Nk5O/DjGGOHOOrqCX9NazqIfwuNEK8aIolf8oeQYsNgwGoclvu+/vz40lZWTTb+pE/M8oIeCwTMr3KZp5mItg3k3/Ttk4jMizw9O2T/ZG5MAls= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=iJkGwW5D; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="iJkGwW5D" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-748e378ba4fso261594b3a.1 for ; Wed, 23 Jul 2025 10:23:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1753291390; x=1753896190; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=gZzLZVb3xyIld6X5p/usujO/Mtg8MXgowsKQnou8Wu8=; b=iJkGwW5D/IJd7Q4CLlG/woadhPd9in9teSc5J5+/CY8/M3kQrLZOldBx0k5586U0R+ C/ZZlEgtbFMlNRM4SanlvShgFPR9I+8vYIjT7pBdbzWyv8qDt8WMe5IILsLvBMVN8tOL ANSQLjIfM5RDtpOR+AHgyMMIW6Kz9zw9Xw1YpjtAB/MVPszV0535+21uj8hVyqFeAUyI UI5dSyOQkUguLe4XpPRs1M4tOuxeArZyWcEHBBfk3gOj4eepEai9wWaLBIIJF7L9NHG3 iLaBvf+PVUqevAGt3TkxecUofa55tucpUhGLtEecZ8mGyL7+MSZGu8Q1BH8GZlr5mlYd W3iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753291390; x=1753896190; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gZzLZVb3xyIld6X5p/usujO/Mtg8MXgowsKQnou8Wu8=; b=CdgVOGgRxpjlEzYTLoD6XHPLGl70K1481vGKCviM9gqSL8YroodczL5R+P0NP0tOmD pM/zWRKo1qb7jurWxh8bJJeFYkkqNTcInm2o/8BHwftKVkBd2cYJJX7aFRg5+08zbz0e sRF3ckhsl/ckwN7i6EGxukADmto86GYkhiT2MtOz3ZY6jE03utzTfxoEpBKJqXiIQU8d 6wwHHbxv/udejr9HmhzoZpjovQH4GpXAGq3SF0gAIwot13qrLgQ0dPxq4SqeX7OHcNrO sDULMAJP0B9PtC0a2Vk6X7yfs0lWUNUdezS0Q7CSou5+SO/KEJbbF0ydpJAUNSz7X8tO Uxmg== X-Forwarded-Encrypted: i=1; AJvYcCWBMQ5wiwjcNW41tCgYgHJ3VLYAYCNpUmI+TspgzleFTsJsq8nFOZpfqDFhb6//kY0On/VPweE1pmrTw58=@vger.kernel.org X-Gm-Message-State: AOJu0Yxo99YXMbIlUhIHcmX015LvheNDMspdxHZtIOehkrQJf21TzoVV aBqRxCwjwYMuqcD/MMe4fZ3o/mLCoQo/Wh1xsbK6T7WkWUR6I7OkMj+CDeZfhHfyDU0= X-Gm-Gg: ASbGncuDj9D1iCnUTze7a9YRnr8MDtSUZ0hTmD9oOJyu3FC5yD+W/Sd0gAhkVjUlrav oVWnvqyJnfZIt88vuDA9heNidCBTmd7L0M82h7g9raUz8CzdY1238xUrwAfqMle6GX69kbi45l5 2jPhrGNdcLQkVreusc0dTKNiqJDQA9hrAxiod96yZGTN9BN6WER8qCIT9bfb59LKFIDBnz8rLDT I8vZ21ubWecslotIExk+7zjw+6k+TbV5qzS0mFCBHv7oGrxREQ4VXJMWjOiJrOHSN52h7QxoNpa VoBdh+8GdCTtLJWEEAwC1EvC9NBbBHbQdETSc8OEQWHwbrYdr0m2iMijyOuRuQu5h8QFj/2CuDd 8d5QJ0TEV9qr8nUE7T+Oe0HFdNWQXQxd8 X-Google-Smtp-Source: AGHT+IHzUtPKawIqkFt5Igo1MBp83lf/CM3Egcfzh15ZfVazcE1EcIjKr1I00hNV1fElvqn0wBjMmA== X-Received: by 2002:a05:6a00:1823:b0:751:6ff5:df35 with SMTP id d2e1a72fcca58-76034c9066dmr6582847b3a.8.1753291389805; Wed, 23 Jul 2025 10:23:09 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-759cbc68ba1sm10197019b3a.146.2025.07.23.10.23.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jul 2025 10:23:09 -0700 (PDT) Date: Wed, 23 Jul 2025 10:23:06 -0700 From: Deepak Gupta To: Jesse Taube Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Oleg Nesterov , Himanshu Chauhan , Charlie Jenkins , Samuel Holland , Andrew Jones , Atish Patra , Anup Patel , Mayuresh Chitale , Conor Dooley , WangYuli , Huacai Chen , Nam Cao , Andrew Morton , "Mike Rapoport (Microsoft)" , Luis Chamberlain , Yunhui Cui , Joel Granados , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Celeste Liu , Evan Green , Nylon Chen Subject: Re: [RFC PATCH 6/6] riscv: ptrace: Add hw breakpoint support Message-ID: References: <20250722173829.984082-1-jesse@rivosinc.com> <20250722173829.984082-7-jesse@rivosinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Wed, Jul 23, 2025 at 09:55:25AM -0700, Jesse Taube wrote: >On Tue, Jul 22, 2025 at 9:18 PM Deepak Gupta wrote: >> >> On Tue, Jul 22, 2025 at 10:38:29AM -0700, Jesse Taube wrote: >> >Add ability to setup hw breakpoints to ptrace. Call defines a new >> >structure of (ulong[3]){bp_addr, bp_len, bp_type} with >> >bp_type being one of HW_BREAKPOINT_LEN_X and >> >bp_len being one of HW_BREAKPOINT_X with a value of >> >zero dissabling the breakpoint. >> > >> >Signed-off-by: Jesse Taube >> >--- >> > arch/riscv/include/asm/processor.h | 4 ++ >> > arch/riscv/include/uapi/asm/ptrace.h | 3 +- >> > arch/riscv/kernel/hw_breakpoint.c | 14 ++++- >> > arch/riscv/kernel/process.c | 4 ++ >> > arch/riscv/kernel/ptrace.c | 93 ++++++++++++++++++++++++++++ >> > 5 files changed, 116 insertions(+), 2 deletions(-) >> > >> >diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h >> >index 5f56eb9d114a..488d956a951f 100644 >> >--- a/arch/riscv/include/asm/processor.h >> >+++ b/arch/riscv/include/asm/processor.h >> >@@ -12,6 +12,7 @@ >> > >> > #include >> > >> >+#include >> > #include >> > >> > #define arch_get_mmap_end(addr, len, flags) \ >> >@@ -108,6 +109,9 @@ struct thread_struct { >> > struct __riscv_v_ext_state vstate; >> > unsigned long align_ctl; >> > struct __riscv_v_ext_state kernel_vstate; >> >+#ifdef CONFIG_HAVE_HW_BREAKPOINT >> >+ struct perf_event *ptrace_bps[RV_MAX_TRIGGERS]; >> >+#endif >> > #ifdef CONFIG_SMP >> > /* Flush the icache on migration */ >> > bool force_icache_flush; >> >diff --git a/arch/riscv/include/uapi/asm/ptrace.h b/arch/riscv/include/uapi/asm/ptrace.h >> >index a38268b19c3d..a7998ed41913 100644 >> >--- a/arch/riscv/include/uapi/asm/ptrace.h >> >+++ b/arch/riscv/include/uapi/asm/ptrace.h >> >@@ -14,7 +14,8 @@ >> > >> > #define PTRACE_GETFDPIC_EXEC 0 >> > #define PTRACE_GETFDPIC_INTERP 1 >> >- >> >+#define PTRACE_GETHBPREGS 2 >> >+#define PTRACE_SETHBPREGS 3 >> >> Why not use `PTRACE_GETREGSET` `PTRACE_SETREGSET` ? > >Because it was easier to implement this first, and REGSET will be >another commit ontop of this one. >Unless there is a reason to not have this version. > Yeah I don't have strong feelings on this. Whatever is best for the tools (gdb, etc) who will consume this interface, lets do that. >> >> > /* >> > * User-mode register state for core dumps, ptrace, sigcontext >> > * >> >diff --git a/arch/riscv/kernel/hw_breakpoint.c b/arch/riscv/kernel/hw_breakpoint.c >> >index 437fd82b9590..c58145464539 100644 >> >--- a/arch/riscv/kernel/hw_breakpoint.c >> >+++ b/arch/riscv/kernel/hw_breakpoint.c >> >@@ -633,7 +633,19 @@ void arch_uninstall_hw_breakpoint(struct perf_event *event) >> > pr_warn("%s: Failed to uninstall trigger %d. error: %ld\n", __func__, i, ret.error); >> > } >> > >> >-void flush_ptrace_hw_breakpoint(struct task_struct *tsk) { } >> >+/* >> >+ * Release the user breakpoints used by ptrace >> >+ */ >> >+void flush_ptrace_hw_breakpoint(struct task_struct *tsk) >> >+{ >> >+ int i; >> >+ struct thread_struct *t = &tsk->thread; >> >+ >> >+ for (i = 0; i < dbtr_total_num; i++) { >> >+ unregister_hw_breakpoint(t->ptrace_bps[i]); >> >+ t->ptrace_bps[i] = NULL; >> >+ } >> >+} >> > >> > void hw_breakpoint_pmu_read(struct perf_event *bp) { } >> > >> >diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c >> >index 15d8f75902f8..9cf07ecfb523 100644 >> >--- a/arch/riscv/kernel/process.c >> >+++ b/arch/riscv/kernel/process.c >> >@@ -9,6 +9,7 @@ >> > >> > #include >> > #include >> >+#include >> > #include >> > #include >> > #include >> >@@ -164,6 +165,7 @@ void start_thread(struct pt_regs *regs, unsigned long pc, >> > >> > void flush_thread(void) >> > { >> >+ flush_ptrace_hw_breakpoint(current); >> > #ifdef CONFIG_FPU >> > /* >> > * Reset FPU state and context >> >@@ -218,6 +220,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) >> > set_bit(MM_CONTEXT_LOCK_PMLEN, &p->mm->context.flags); >> > >> > memset(&p->thread.s, 0, sizeof(p->thread.s)); >> >+ if (IS_ENABLED(CONFIG_HAVE_HW_BREAKPOINT)) >> >+ memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); >> > >> > /* p->thread holds context to be restored by __switch_to() */ >> > if (unlikely(args->fn)) { >> >diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c >> >index ea67e9fb7a58..b78cfb0f1c0e 100644 >> >--- a/arch/riscv/kernel/ptrace.c >> >+++ b/arch/riscv/kernel/ptrace.c >> >@@ -9,11 +9,13 @@ >> > >> > #include >> > #include >> >+#include >> > #include >> > #include >> > #include >> > #include >> > #include >> >+#include >> > #include >> > #include >> > #include >> >@@ -336,12 +338,103 @@ void ptrace_disable(struct task_struct *child) >> > { >> > } >> > >> >+#ifdef CONFIG_HAVE_HW_BREAKPOINT >> >+static void ptrace_hbptriggered(struct perf_event *bp, >> >+ struct perf_sample_data *data, >> >+ struct pt_regs *regs) >> >+{ >> >+ struct arch_hw_breakpoint *bkpt = counter_arch_bp(bp); >> >+ int num = 0; >> >+ >> >+ force_sig_ptrace_errno_trap(num, (void __user *)bkpt->address); >> >+} >> >+ >> >+/* >> >+ * idx selects the breakpoint index. >> >+ * Both PTRACE_GETHBPREGS and PTRACE_SETHBPREGS transfer three 32-bit words: >> >+ * address (0), length (1), type (2). >> >+ * Instruction breakpoint length is one of HW_BREAKPOINT_LEN_X or 0. 0 will >> >+ * disable the breakpoint. >> >+ * Instruction breakpoint type is one of HW_BREAKPOINT_X. >> >+ */ >> >+ >> >+static long ptrace_gethbpregs(struct task_struct *child, unsigned long idx, >> >+ unsigned long __user *datap) >> >+{ >> >+ struct perf_event *bp; >> >+ unsigned long user_data[3] = {0}; >> >+ >> >+ if (idx >= RV_MAX_TRIGGERS) >> >+ return -EINVAL; >> >+ >> >+ bp = child->thread.ptrace_bps[idx]; >> >+ >> >+ if (!IS_ERR_OR_NULL(bp)) { >> >+ user_data[0] = bp->attr.bp_addr; >> >+ user_data[1] = bp->attr.disabled ? 0 : bp->attr.bp_len; >> >+ user_data[2] = bp->attr.bp_type; >> >+ } >> >+ >> >+ if (copy_to_user(datap, user_data, sizeof(user_data))) >> >+ return -EFAULT; >> >+ >> >+ return 0; >> >+} >> >+ >> >+static long ptrace_sethbpregs(struct task_struct *child, unsigned long idx, >> >+ unsigned long __user *datap) >> >+{ >> >+ struct perf_event *bp; >> >+ struct perf_event_attr attr; >> >+ unsigned long user_data[3]; >> >+ >> >+ if (idx >= RV_MAX_TRIGGERS) >> >+ return -EINVAL; >> >+ >> >+ if (copy_from_user(user_data, datap, sizeof(user_data))) >> >+ return -EFAULT; >> >+ >> >+ bp = child->thread.ptrace_bps[idx]; >> >+ if (IS_ERR_OR_NULL(bp)) >> >> Why not only check for NULL? >> IS_ERR_VALUE will always expand to be true. right? > >Because im dumb and thought i was setting bp to an error code, but i'm not. >Yes if (!bp) is right. > >> >> >+ attr = bp->attr; >> >+ else >> >+ ptrace_breakpoint_init(&attr); >> >+ >> >+ attr.bp_addr = user_data[0]; >> >+ attr.bp_len = user_data[1]; >> >+ attr.bp_type = user_data[2]; >> >+ attr.disabled = !attr.bp_len; >> >> Is it okay to not have any sanitization on inputs? >> >> Can these inputs be controlled by user to give kernel address and kernel >> breakpoint? > >modify_user_hw_breakpoint calls modify_user_hw_breakpoint_check, which >eventually checks if we have CAP_SYS_ADMIN. >Same for register. type and len are also checked by the >_user_hw_breakpoint_check functions and again in the riscv code. > >it would be nice if this could be double checked, but it does seem >other architectures don't check addr aswell. I see. That's interesting. > >Thanks, >Jesse Taube > >> >> >+ >> >+ if (IS_ERR_OR_NULL(bp)) { >> >+ bp = register_user_hw_breakpoint(&attr, ptrace_hbptriggered, NULL, >> >+ child); >> >+ if (IS_ERR(bp)) >> >+ return PTR_ERR(bp); >> >+ >> >+ child->thread.ptrace_bps[idx] = bp; >> >+ return 0; >> >+ } else { >> >+ return modify_user_hw_breakpoint(bp, &attr); >> >+ } >> >+} >> >+#endif >> >+ >> > long arch_ptrace(struct task_struct *child, long request, >> > unsigned long addr, unsigned long data) >> > { >> > long ret = -EIO; >> >+ unsigned long __user *datap = (unsigned long __user *) data; >> > >> > switch (request) { >> >+#ifdef CONFIG_HAVE_HW_BREAKPOINT >> >+ case PTRACE_GETHBPREGS: >> >+ ret = ptrace_gethbpregs(child, addr, datap); >> >+ break; >> >+ >> >+ case PTRACE_SETHBPREGS: >> >+ ret = ptrace_sethbpregs(child, addr, datap); >> >+ break; >> >+#endif >> > default: >> > ret = ptrace_request(child, request, addr, data); >> > break; >> >-- >> >2.43.0 >> >