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 7FC8CC43458 for ; Tue, 14 Jul 2026 21:02:48 +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:References:In-Reply-To: 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=DcWo2Csitx9sAdW6/EK2EfXRqKTOuyLCbrqqYs0mCWI=; b=dlU9z+OTQKdeHe PMVIXG2SBsNNtRt2WVVRFRtpu9O5FA902sfDEOrm3LmKJciapulSJxIW2BM+8KAAe+Yoew0rTDS2f uJ4BPxJjzxI1mkqBph9ydRd9DKFOGAyjo8rkVvnJiP22GkRfTI9Z/yHVuqR0AMmxOwar8/FFQ411e UjMc1mQlrUI6QK0YB+EbF0H/pfNdaDg3hjYW+VPV7MLmiijg+L8IoJX0sb/TbjcGLUwwx+9uhYUI6 rZKuYcC34AmQWxdYmywvHvAC57ZE4FQ3YeXZST4qO402vjthFxPxqafKz6n1QY86GT+iogNp9gE/X BL6/ucNCmdOfAPb/aKyA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wjkGm-0000000DIQ4-276S; Tue, 14 Jul 2026 21:02:24 +0000 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wjkGj-0000000DIPO-1jq1 for linux-riscv@lists.infradead.org; Tue, 14 Jul 2026 21:02:23 +0000 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-47640541585so2290516f8f.1 for ; Tue, 14 Jul 2026 14:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784062939; x=1784667739; darn=lists.infradead.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=rF+I37AHgFT2tFAT9wyxmGe1KHl9HXqH6cXLVyI8Vxo=; b=PPvWM8+OJEV0Pq0G9MpTD8CirA2yaQBjUGWFMQSdmam3JnKOHGpMBk1YQkI8HzUUNo /8EOyschmP7JjCFJLinX5PXpbf4xFWckIdOv8Q2bY+9jqLa+4xnD9AXFuSB2ZQFjGA6d vQdmy6kS/PDWFij6NCIg9JoOHuR0QTAAYEgOBvxfEUojvYyr1UB/I2LnGUFG+kEDkF5F oiZSfkEOuyDci+mXZblebPR6depu3tZXKm75c4Coh4bR/m07tK3m5FMSatAKehUuMD9S Tz2M7t8A0/vuZfGTOMzZe2EJdi81iJDXgg2ZacaGlwHotLrzz6lB3AHI2KLF1VSFYOb7 swpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784062939; x=1784667739; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rF+I37AHgFT2tFAT9wyxmGe1KHl9HXqH6cXLVyI8Vxo=; b=laleDDIJJ89RkkCJvv3yRdQWVbfYtichcdiLBVLG80weLsVZX9YS6CFXxDg83uTJOA oQ8AuwkJB4rOj1ZJS4k8OfF1aX625K43T3fUY/oP3uRqepBBqVvGOJmDBvAW4wNcxq1s jB0Xi3o1wm2Z7+cpd8em9gPLdxuJiCNPhceKnATEpMeVrRsgU0RDPMYzrIB3qZiyaKSb d8YqlHOrhbC6To9RLz8IBYeDZVBHzREI6CASYEVhXchbwzYYBDWD5zJ9X+m4akiwDOv2 fRLVvxp+mUOGwh672a3eH2cuUvrjCmq7VkD1Iba6i1tDai1JtbWvUqRIjZjImChnkh1y grKQ== X-Forwarded-Encrypted: i=1; AHgh+RrF99qJDhy3QqVuGPiT573EsWG8sfpoWGT+Yx5N6n2RLhcEqcziVoiN3Up5+lGAz3JxnDpo/8sealnGww==@lists.infradead.org X-Gm-Message-State: AOJu0YySd9bdDQ3kWelNbv4KpvED4Bv2Z0pDdrwazh8sJKzIiBNY4JO7 NOpjC7/JLOLjs8HedHlPTThzK3QkVU4Nwp10G25EQSqjd+MxibNhs9v3 X-Gm-Gg: AfdE7ck0PPr9ySxBB0/fNNOwjk6TbgQT2Yp38O4+kz4EWyeXVHBcqWT0G6fcYKZh5H5 yX86/zqTVLgk9WsQghd9VUnJNDWyZKatzV+ZKwFdRehBoCl/QtnQydC36A3SkjfUDoxumdKIY5l qwy9+RZ+Dpj0mP5w8U5tc9mcuj+Bbmlxha/VMBk01Pc11LQfScB7smfNdyUEDQzibUhb3/iUsCK RADDfkvgAX2uYP4nxS6tpSc9gfr3fmyiqN6Dl32aW/cTNlxwLPXiZkUxaJFudm44XOoDln0Mueh PjMaqcgsTrMe5oagx/sgSGpdOCrbf5r/bP/jZ+6/1jEwcCkaNJUQzr8rUO8kwYwncKF0CT7RFVT dTJTRV6wlZo21QrnoJ8wtbm/P78jHmdbJFfAwu3gHVk9JSIRnNIJ52AlG8U9570H8IewY62ewmk EUycg/RGK6Z/3KW26yWrwGQV00Erx3BtvQIc47YkmYb0VlbWxNyQ== X-Received: by 2002:a5d:6f19:0:b0:47e:96f4:4a5b with SMTP id ffacd0b85a97d-47f4fcef3cfmr20784f8f.51.1784062939220; Tue, 14 Jul 2026 14:02:19 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464d6fa7sm10622252f8f.37.2026.07.14.14.02.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 14:02:18 -0700 (PDT) Date: Tue, 14 Jul 2026 22:02:17 +0100 From: David Laight To: Guo Ren Cc: Robin Murphy , Zhanpeng Zhang , Tomasz Jeznach , Joerg Roedel , Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Vivian Wang , Zong Li , cuiyunhui@bytedance.com, yuanzhu@bytedance.com, iommu@lists.linux.dev, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] iommu/riscv: Use 32-bit MMIO accesses for 64-bit registers Message-ID: <20260714220217.65055d98@pumpkin> In-Reply-To: References: <20260615064855.90316-1-zhangzhanpeng.jasper@bytedance.com> <20260713122903.9458-1-zhangzhanpeng.jasper@bytedance.com> <3591a185-d0b5-4cb0-a0d5-ae9608a4e244@arm.com> <20260714155310.2e17473c@pumpkin> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260714_140221_537983_A074D29D X-CRM114-Status: GOOD ( 61.19 ) 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 T24gV2VkLCAxNSBKdWwgMjAyNiAwMDo1MzowNiArMDgwMApHdW8gUmVuIDxndW9yZW5Aa2VybmVs Lm9yZz4gd3JvdGU6Cgo+IE9uIFR1ZSwgSnVsIDE0LCAyMDI2IGF0IDEwOjUz4oCvUE0gRGF2aWQg TGFpZ2h0Cj4gPGRhdmlkLmxhaWdodC5saW51eEBnbWFpbC5jb20+IHdyb3RlOgo+ID4KPiA+IE9u IFR1ZSwgMTQgSnVsIDIwMjYgMjE6MjQ6MTkgKzA4MDAKPiA+IEd1byBSZW4gPGd1b3JlbkBrZXJu ZWwub3JnPiB3cm90ZToKPiA+ICAKPiA+ID4gT24gVHVlLCBKdWwgMTQsIDIwMjYgYXQgODoyN+KA r1BNIFJvYmluIE11cnBoeSA8cm9iaW4ubXVycGh5QGFybS5jb20+IHdyb3RlOiAgCj4gPiA+ID4K PiA+ID4gPiBPbiAxMy8wNy8yMDI2IDE6MjkgcG0sIFpoYW5wZW5nIFpoYW5nIHdyb3RlOiAgCj4g PiA+ID4gPiBUaGUgUklTQy1WIElPTU1VIHNwZWNpZmljYXRpb24gWzFdIHBlcm1pdHMgNjQtYml0 IHJlZ2lzdGVycyB0byBiZSBhY2Nlc3NlZAo+ID4gPiA+ID4gdXNpbmcgdHdvIDMyLWJpdCB0cmFu c2FjdGlvbnMsIGhpZ2ggaGFsZiBmaXJzdCwgYW5kIGxlYXZlcyB0aGUgc2luZ2xlLWNvcHkKPiA+ ID4gPiA+IGF0b21pY2l0eSBvZiA4LWJ5dGUgSU9NTVUgcmVnaXN0ZXIgYWNjZXNzZXMgdW5zcGVj aWZpZWQuCj4gPiA+ID4gPgo+ID4gPiA+ID4gVXNlIHRoZSBnZW5lcmljIGhpX2xvX3JlYWRxX3Jl bGF4ZWQoKSBhbmQgaGlfbG9fd3JpdGVxX3JlbGF4ZWQoKSBoZWxwZXJzCj4gPiA+ID4gPiBmb3Ig b3JkaW5hcnkgNjQtYml0IElPTU1VIHJlZ2lzdGVycy4gRm9yIEREVFAsIHBvbGwgQlVTWSBpbiB0 aGUgbG93IGhhbGYsCj4gPiA+ID4gPiB0aGVuIHJlYWQgdGhlIGhpZ2ggaGFsZiBhbmQgY29tcG9z ZSB0aGUgcmVnaXN0ZXIgdmFsdWUgZnJvbSB0aGUgcG9sbGVkIGxvdwo+ID4gPiA+ID4gaGFsZi4g SFBNIGNvdW50ZXIgcmVhZHMgcmVxdWlyZSBhIHJvbGxvdmVyLWF3YXJlIHNlcXVlbmNlIGFuZCBy ZW1haW4KPiA+ID4gPiA+IG91dHNpZGUgdGhlc2UgYWNjZXNzb3JzLgo+ID4gPiA+ID4KPiA+ID4g PiA+IFRoaXMgZm9sbG93cyB0aGUgMzItYml0IGFjY2VzcyBkaXJlY3Rpb24gcHJvcG9zZWQgYnkg R3VvIFJlbiBbMl0gYW5kIHVzZXMKPiA+ID4gPiA+IHRoZSBnZW5lcmljIG5vbi1hdG9taWMgTU1J TyBoZWxwZXJzIHN1Z2dlc3RlZCBieSBEYXZpZCBMYWlnaHQuCj4gPiA+ID4gPgo+ID4gPiA+ID4g WzFdIGh0dHBzOi8vZG9jcy5yaXNjdi5vcmcvcmVmZXJlbmNlL2lvbW11Lwo+ID4gPiA+ID4gWzJd IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyNTA5MDMxNDQyMTcuODM3NDQ4LTEtZ3VvcmVu QGtlcm5lbC5vcmcKPiA+ID4gPiA+Cj4gPiA+ID4gPiBTdWdnZXN0ZWQtYnk6IEd1byBSZW4gPGd1 b3JlbkBrZXJuZWwub3JnPgo+ID4gPiA+ID4gU3VnZ2VzdGVkLWJ5OiBEYXZpZCBMYWlnaHQgPGRh dmlkLmxhaWdodC5saW51eEBnbWFpbC5jb20+Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBaaGFu cGVuZyBaaGFuZyA8emhhbmd6aGFucGVuZy5qYXNwZXJAYnl0ZWRhbmNlLmNvbT4KPiA+ID4gPiA+ IC0tLQo+ID4gPiA+ID4gQ2hhbmdlcyBpbiB2MzoKPiA+ID4gPiA+IC0gVXNlIHRoZSBERFRQIGFj Y2VzcyBzZXF1ZW5jZSBmcm9tIFsxXTogcmV0YWluIHRoZSBsb3cgaGFsZiByZXR1cm5lZCBieQo+ ID4gPiA+ID4gICAgQlVTWSBwb2xsaW5nLCByZWFkIG9ubHkgdGhlIGhpZ2ggaGFsZiwgYW5kIGNv bXBvc2UgdGhlIEREVFAgdmFsdWUgZnJvbQo+ID4gPiA+ID4gICAgdGhvc2UgdHdvIDMyLWJpdCBy ZWFkcy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBDaGFuZ2VzIGluIHYyOgo+ID4gPiA+ID4gLSBSZXdv cmsgdGhlIHBhdGNoIGJhc2VkIG9uIEd1byBSZW4ncyBlYXJsaWVyIHByb3Bvc2FsIFsxXS4KPiA+ ID4gPiA+IC0gRHJvcCB0aGUgYnVpbGQtdGltZSBvcHRpb24gYW5kIHVzZSAzMi1iaXQgYWNjZXNz ZXMgdW5jb25kaXRpb25hbGx5Lgo+ID4gPiA+ID4gLSBEcm9wIHRoZSBnbG9iYWwgbG9jayBhbmQg dXNlIHRoZSBnZW5lcmljIGhpZ2gtbG93IE1NSU8gaGVscGVycywgYXMKPiA+ID4gPiA+ICAgIHN1 Z2dlc3RlZCBieSBEYXZpZCBMYWlnaHQuCj4gPiA+ID4gPiAtIFBvbGwgRERUUC5CVVNZIHRocm91 Z2ggaXRzIGxvdyBoYWxmLgo+ID4gPiA+ID4KPiA+ID4gPiA+IExpbmsgdG8gdjE6IFsyXQo+ID4g PiA+ID4gU3BlY2lmaWNhdGlvbiBkaXNjdXNzaW9uOiBbM10KPiA+ID4gPiA+Cj4gPiA+ID4gPiBb MV06IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyNTA5MDMxNDQyMTcuODM3NDQ4LTEtZ3Vv cmVuQGtlcm5lbC5vcmcKPiA+ID4gPiA+IFsyXTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8y MDI2MDYxNTA2NDg1NS45MDMxNi0xLXpoYW5nemhhbnBlbmcuamFzcGVyQGJ5dGVkYW5jZS5jb20K PiA+ID4gPiA+IFszXTogaHR0cHM6Ly9naXRodWIuY29tL3Jpc2N2LW5vbi1pc2EvcmlzY3YtaW9t bXUvaXNzdWVzLzc2NQo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgZHJpdmVycy9pb21tdS9yaXNjdi9p b21tdS5jIHwgOSArKysrKystLS0KPiA+ID4gPiA+ICAgZHJpdmVycy9pb21tdS9yaXNjdi9pb21t dS5oIHwgOSArKystLS0tLS0KPiA+ID4gPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCj4gPiA+ID4gPgo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUuYwo+ ID4gPiA+ID4gaW5kZXggY2VjM2RkZDdhYjEuLmQ2NDdiNzFlYmVjIDEwMDY0NAo+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJz L2lvbW11L3Jpc2N2L2lvbW11LmMKPiA+ID4gPiA+IEBAIC02NzAsOSArNjcwLDEyIEBAIHZvaWQg cmlzY3ZfaW9tbXVfZGlzYWJsZShzdHJ1Y3QgcmlzY3ZfaW9tbXVfZGV2aWNlICppb21tdSkKPiA+ ID4gPiA+Cj4gPiA+ID4gPiAgICNkZWZpbmUgcmlzY3ZfaW9tbXVfcmVhZF9kZHRwKGlvbW11KSAo eyBcCj4gPiA+ID4gPiAgICAgICB1NjQgZGR0cDsgXAo+ID4gPiA+ID4gLSAgICAgcmlzY3ZfaW9t bXVfcmVhZHFfdGltZW91dCgoaW9tbXUpLCBSSVNDVl9JT01NVV9SRUdfRERUUCwgZGR0cCwgXAo+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKGRkdHAgJiBSSVNDVl9J T01NVV9ERFRQX0JVU1kpLCAxMCwgXAo+ID4gPiA+ID4gKyAgICAgdTMyIGRkdHBfbG8sIGRkdHBf aGk7IFwKPiA+ID4gPiA+ICsgICAgIHJpc2N2X2lvbW11X3JlYWRsX3RpbWVvdXQoKGlvbW11KSwg UklTQ1ZfSU9NTVVfUkVHX0REVFAsIGRkdHBfbG8sIFwKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIShkZHRwX2xvICYgUklTQ1ZfSU9NTVVfRERUUF9CVVNZKSwgMTAs IFwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUklTQ1ZfSU9NTVVf RERUUF9USU1FT1VUKTsgXAo+ID4gPiA+ID4gKyAgICAgZGR0cF9oaSA9IHJpc2N2X2lvbW11X3Jl YWRsKChpb21tdSksIFJJU0NWX0lPTU1VX1JFR19ERFRQICsgNCk7IFwgIAo+ID4gPiA+Cj4gPiA+ ID4gSXQgbG9va3MgbGlrZSB3aGVuZXZlciB5b3UgcmVhZCBERFRQIHlvdSdyZSBvbmx5IHJlYWxs eSBsb29raW5nIGF0IHRoZQo+ID4gPiA+IEJVU1kvTU9ERSBmaWVsZHMgYW55d2F5LCBzbyBkb2Vz IHRoaXMgYWN0dWFsbHkgbmVlZCB0byByZWFkIHRoZSB1cHBlcgo+ID4gPiA+IGJpdHMgb2YgUFBO IGF0IGFsbD8gKFRoZSBzcGVjIHNheXMgdGhleSBkb24ndCBldmVuIG5lZWQgdG8gYmUgd3JpdHRl biBvbgo+ID4gPiA+IFJWMzIgZWl0aGVyKSAgCj4gPiA+Cj4gPiA+IFRoZSBtb3RpdmF0aW9uIGlz IG5vdCBSVjMyIGNvbXBhdGliaWxpdHkuIEl0IGFkZHJlc3NlcyBSVjY0IHBsYXRmb3Jtcwo+ID4g PiB3aGVyZSB0aGUgSU9NTVUgY29udHJvbCBwbGFuZSBjYW4gb25seSBiZSBhY2Nlc3NlZCB2aWEg MzItYml0IE1NSU8uCj4gPiA+ICAKPiA+ID4gPiAgCj4gPiA+ID4gPiArICAgICBkZHRwID0gKCh1 NjQpZGR0cF9oaSA8PCAzMikgfCBkZHRwX2xvOyBcCj4gPiA+ID4gPiAgICAgICBkZHRwOyB9KQo+ ID4gPiA+ID4KPiA+ID4gPiA+ICAgc3RhdGljIGludCByaXNjdl9pb21tdV9pb2Rpcl9hbGxvYyhz dHJ1Y3QgcmlzY3ZfaW9tbXVfZGV2aWNlICppb21tdSkKPiA+ID4gPiA+IEBAIC0xNTAxLDcgKzE1 MDQsNyBAQCBzdGF0aWMgaW50IHJpc2N2X2lvbW11X2luaXRfY2hlY2soc3RydWN0IHJpc2N2X2lv bW11X2RldmljZSAqaW9tbXUpCj4gPiA+ID4gPiAgICAgICAgKiByZWd1bGFyIGJvb3QgZmxvdyBh bmQgZGlzYWJsZSB0cmFuc2xhdGlvbiB3aGVuIHdlIGJvb3QgaW50byBhIGtleGVjCj4gPiA+ID4g PiAgICAgICAgKiBrZXJuZWwgYW5kIHRoZSBwcmV2aW91cyBrZXJuZWwgbGVmdCB0aGVtIGVuYWJs ZWQuCj4gPiA+ID4gPiAgICAgICAgKi8KPiA+ID4gPiA+IC0gICAgIGRkdHAgPSByaXNjdl9pb21t dV9yZWFkcShpb21tdSwgUklTQ1ZfSU9NTVVfUkVHX0REVFApOwo+ID4gPiA+ID4gKyAgICAgZGR0 cCA9IHJpc2N2X2lvbW11X3JlYWRfZGR0cChpb21tdSk7Cj4gPiA+ID4gPiAgICAgICBpZiAoZGR0 cCAmIFJJU0NWX0lPTU1VX0REVFBfQlVTWSkKPiA+ID4gPiA+ICAgICAgICAgICAgICAgcmV0dXJu IC1FQlVTWTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9y aXNjdi9pb21tdS5oIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5oCj4gPiA+ID4gPiBpbmRl eCA0NmRmNzlkZDU0OS4uMWIwMzc5MGZiZTEgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2lvbW11L3Jpc2N2L2lvbW11LmgKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaW9tbXUvcmlzY3Yv aW9tbXUuaAo+ID4gPiA+ID4gQEAgLTExLDYgKzExLDcgQEAKPiA+ID4gPiA+ICAgI2lmbmRlZiBf UklTQ1ZfSU9NTVVfSF8KPiA+ID4gPiA+ICAgI2RlZmluZSBfUklTQ1ZfSU9NTVVfSF8KPiA+ID4g PiA+Cj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLTY0LW5vbmF0b21pYy1oaS1sby5oPgo+ ID4gPiA+ID4gICAjaW5jbHVkZSA8bGludXgvaW9tbXUuaD4KPiA+ID4gPiA+ICAgI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+Cj4gPiA+ID4gPiAgICNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KPiA+ ID4gPiA+IEBAIC03MCwxNyArNzEsMTMgQEAgdm9pZCByaXNjdl9pb21tdV9kaXNhYmxlKHN0cnVj dCByaXNjdl9pb21tdV9kZXZpY2UgKmlvbW11KTsKPiA+ID4gPiA+ICAgICAgIHJlYWRsX3JlbGF4 ZWQoKGlvbW11KS0+cmVnICsgKGFkZHIpKQo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgI2RlZmluZSBy aXNjdl9pb21tdV9yZWFkcShpb21tdSwgYWRkcikgXAo+ID4gPiA+ID4gLSAgICAgcmVhZHFfcmVs YXhlZCgoaW9tbXUpLT5yZWcgKyAoYWRkcikpCj4gPiA+ID4gPiArICAgICBoaV9sb19yZWFkcV9y ZWxheGVkKChpb21tdSktPnJlZyArIChhZGRyKSkgIAo+ID4gPiA+Cj4gPiA+ID4gVGhpcyBzZWVt cyB1bm5lY2Vzc2FyeSAoc2ltaWxhcmx5IGZvciB3cml0ZXEoKSBiZWxvdykgLSBvbmNlIHlvdSd2 ZQo+ID4gPiA+IGluY2x1ZGVkIHRoZSBoZWFkZXIsIHRoZW4gaXQgYXV0b21hdGljYWxseSBwcm92 aWRlcyByZWFkcXtfcmVsYXhlZH0oKQo+ID4gPiA+IGZvciBSVjMyIHZpYSB0aGUgbm9uLWF0b21p YyBpbXBsZW1lbnRhdGlvbiwgYW5kIHdoZXJldmVyIGF0b21pY2l0eQo+ID4gPiA+IGRvZXNuJ3Qg bWF0dGVyLCB0aGVuIGFzIHdyaXR0ZW4gdGhlcmUgc2VlbXMgdG8gYmUgbm8gcmVhc29uIGZvciBS VjY0IHRvCj4gPiA+ID4gc3RvcCB1c2luZyB0aGUgcmVndWxhciBhcmNoIHJlYWRxKCkuCj4gPiA+ ID4KPiA+ID4gPiBOb3QgdGhhdCBpdCBtYWtlcyBhbnkgZGlmZmVyZW5jZSB0byBtZSBlaXRoZXIg d2F5LCBidXQgSSBkb24ndCBzZWUgYW55Cj4gPiA+ID4gcmVhbCBpc3N1ZSB3aXRoIHRoZSBzcGVj IC0gaWYgc29mdHdhcmUgKm1heSogbWFrZSBhIDY0LWJpdCBhY2Nlc3MgdG8gYW55Cj4gPiA+ID4g NjQtYml0IHJlZ2lzdGVyIHVuY29uZGl0aW9uYWxseSwgdGhlbiB0aGF0IGNhbiBvbmx5IGltcGx5 IHRoYXQgaGFyZHdhcmUKPiA+ID4gPiAqbXVzdCogYmUgYWJsZSB0byBhY2NvbW1vZGF0ZSBSVjY0 IHNvZnR3YXJlIGNob29zaW5nIHRvIGRvIHNvLCBhbmQKPiA+ID4gPiB0aGVyZWZvcmUgbXVzdCBz dXBwb3J0ICpib3RoKiAzMmIgYW5kIDY0YiBhY2Nlc3NlcyBpbiBnZW5lcmFsLCBleGNlcHQKPiA+ ID4gPiBwZXJoYXBzIG9uIFJWMzItb25seSBzeXN0ZW1zIGlmIHNvZnR3YXJlIGNvdWxkIG5ldmVy IG1ha2UgNjRiIGFjY2Vzc2VzCj4gPiA+ID4gaW4gdGhlIGZpcnN0IHBsYWNlLiBJZiA2NGIgc2lu Z2xlLWNvcHkgYXRvbWljaXR5IGlzIG5vdAo+ID4gPiA+IHJlcXVpcmVkL3NwZWNpZmllZCB0aGVu IGl0IHNob3VsZCBiZSB2YWxpZCB0byBhY2hpZXZlIHRoYXQgYnkganVzdAo+ID4gPiA+IHN0aWNr aW5nIGEgZG93bnNpemVyIGluIHRoZSB1cHN0cmVhbSBpbnRlcmNvbm5lY3QgdG8gc3BsaXQgNjRi IGFjY2Vzc2VzCj4gPiA+ID4gaW50byAzMmJ4MiBpbmNyZW1lbnRhbCBidXJzdHMuCj4gPiA+ID4K PiA+ID4gPiBJZiBkbyBhY3R1YWxseSB5b3UgbmVlZCB0aGlzIGFzIGFuIGVycmF0dW0gd29ya2Fy b3VuZCB0byBzdXBwb3J0Cj4gPiA+ID4gc3BlY2lmaWMgaGFyZHdhcmUgd2hpY2ggaGFzIG1pc2lu dGVycHJldGVkIHRoZSBzcGVjIHRoZW4gSSB0aGluayB5b3UKPiA+ID4gPiBzaG91bGQgYmUgY2xl YXIgYWJvdXQgdGhhdC4gT3RoZXJ3aXNlLCBhZGRpbmcgc3BlY3VsYXRpdmUgIndvcmthcm91bmRz Igo+ID4gPiA+IHdoaWNoIChzbGlnaHRseSkgcGVuYWxpc2UgaGFyZHdhcmUgdGhhdCBnb3QgaXQg cmlnaHQsIHdoaWxlIGludml0aW5nCj4gPiA+ID4gZnV0dXJlIGhhcmR3YXJlIHRvIGdldCBpdCB3 cm9uZywgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHdheSB0byBnbwo+ID4gPiA+IGF0IGFs bC4uLiAgCj4gPiA+Cj4gPiA+IFRoZSBvbmx5IHRocmVlIDY0LWJpdCByZWdpc3RlcnMgdGhlIGRy aXZlciBldmVyIHRvdWNoZXMgYXJlIEREVFAsCj4gPiA+IENBUEFCSUxJVElFUywgYW5kIE1TSV9D RkdfVEJMX0FERFIuIE5vbmUgb2YgdGhlbSBpcyBvbiBhbnkKPiA+ID4gcGVyZm9ybWFuY2UtY3Jp dGljYWwgb3IgaG90IHBhdGguIEV2ZW4gaWYgbmF0aXZlIDY0LWJpdCBNTUlPIGFjY2Vzc2VzCj4g PiA+IHdlcmUgdXNlZCwgdGhlcmUgd291bGQgYmUgbm8gb2JzZXJ2YWJsZSBwZXJmb3JtYW5jZSBi ZW5lZml0Lgo+ID4gPiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IHBlbmFsaXplIGFu eSBoYXJkd2FyZS4KPiA+ID4KPiA+ID4gUmVnYXJkaW5nIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGVy ZSByZW1haW5zIHN1YnN0YW50aWFsIGRpc2FncmVlbWVudAo+ID4gPiBvdmVyIHdoZXRoZXIgNjQt Yml0IGFjY2Vzc2VzIGFyZSBtYW5kYXRvcnkuIFRoZSByZWxldmFudCBzZW50ZW5jZSB1c2VzCj4g PiA+IHRoZSB3b3JkIOKAnG1heeKAnSAo4oCcbWF5IGJlIGFjY2Vzc2VkIHVzaW5nIGVpdGhlciBh IDMyLWJpdCBvciBhIDY0LWJpdAo+ID4gPiBhY2Nlc3PigJ0pLiBQZXIgUkZDIDIxMTksIOKAnG1h eeKAnSBkb2VzIG5vdCBleHByZXNzIGEgcmVxdWlyZW1lbnQuIEJlY2F1c2UKPiA+ID4gZXZlcnkg ZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gYWxyZWFkeSBwcm92aWRlcyB3b3JraW5nIDMyLWJpdCBN TUlPCj4gPiA+IGFjY2Vzcywgd2UgYmVsaWV2ZSB0aGUgc2FmZXIgYW5kIGxlc3MgY29udHJvdmVy c2lhbCBjaG9pY2UgaXMgdG8gdXNlCj4gPiA+IHRoZSBwb3J0YWJsZSAzMi1iaXQgcGF0aCB2aWEg dGhlIGdlbmVyaWMgaGktbG8gaGVscGVycy4KPiA+ID4gIAo+ID4KPiA+IFRoZXJlIGlzIGFsc28g dGhpcyBjbGF1c2U6Cj4gPiAgICAgICAgIFRoZSA4LWJ5dGUgSU9NTVUgcmVnaXN0ZXJzIGFyZSBk ZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBzb2Z0d2FyZSBjYW4KPiA+ICAgICAgICAgcGVyZm9y bSB0d28gaW5kaXZpZHVhbCA0LWJ5dGUgYWNjZXNzZXMsIG9yIGhhcmR3YXJlIGNhbiBwZXJmb3Jt IHR3bwo+ID4gICAgICAgICBpbmRlcGVuZGVudCA0LWJ5dGUgdHJhbnNhY3Rpb25zIHJlc3VsdGlu ZyBmcm9tIGFuIDgtYnl0ZSBhY2Nlc3MsCj4gPiAgICAgICAgIHRvIHRoZSBoaWdoIGFuZCBsb3cg aGFsdmVzIG9mIHRoZSByZWdpc3RlciwgaW4gdGhhdCBvcmRlciwgYXMgbG9uZyBhcwo+ID4gICAg ICAgICB0aGUgcmVnaXN0ZXIgc2VtYW50aWNzLCB3aXRoIHJlZ2FyZCB0byBzaWRlLWVmZmVjdHMs IGFyZSByZXNwZWN0ZWQKPiA+ICAgICAgICAgYmV0d2VlbiB0aGUgdHdvIHNvZnR3YXJlIGFjY2Vz c2VzLCBvciB0d28gaGFyZHdhcmUgdHJhbnNhY3Rpb25zLAo+ID4gICAgICAgICByZXNwZWN0aXZl bHkuCj4gPgo+ID4gSSdtIG5vdCBzdXJlIHdoYXQgdGhlIHJlbGV2YW5jZSBvZiB0aGUgaGlnaC1s b3cgb3JkZXIgaXMuCj4gPiBJdCBjb3VsZCBtZWFuLCBmb3IgZXhhbXBsZSwgdGhhdCBhIHJlYWQg b2YgdGhlIGhpZ2ggd29yZCBjYW4gbGF0Y2ggdGhlIGxvdwo+ID4gZm9yIHRoZSBuZXh0IHJlYWQg LSBzbyB0aGF0IHlvdSBnZXQgYW4gYXRvbWljIDY0Yml0IHJlYWQuCj4gPiBUaGF0IG1pZ2h0IGJl IG9rIGlmIGhhcmR3YXJlIHNwbGl0cyB0aGUgNjRiaXQgcmVhZCwgYnV0IGlmIHNvZnR3YXJlIGRv ZXMgaXQKPiA+IGl0IGlzbid0IGdvaW5nIHRvIGdvIHdlbGwgdW5sZXNzIHRoZSBkcml2ZXIgbG9j a3MgYWxsIChhbmQgaXQgbWlnaHQgYmUgYWxsKQo+ID4gc2xhdmUgYWNjZXNzZXMuCj4gPiBJbiB0 aGUgd29yc3QgY2FzZSB0aGVyZSBtaWdodCBiZSBhIHNpbmdsZSBsYXRjaCBmb3IgYWxsIG9kZCB3 b3JkIHJlYWRzLgo+ID4gV3JpdGVzIGNvdWxkIGJlIHdvcnNlIQo+ID4KPiA+IEhhcmR3YXJlIGNh biBiZSB0aGF0IGJyb2tlbi4KPiA+IEkgcmVtZW1iZXIgYSBQQ0kgc2xhdmUgdGhhdCB0ZXJtaW5h dGVkIHJlYWRzIHJlcXVlc3RpbmcgJ2N5Y2xlIHJlcnVuJwo+ID4gYW5kIHRoZW4gYXNzdW1lZCB0 aGF0IHRoZSBmb2xsb3dpbmcgcmVhZHMgd291bGQgYmUgcmVwZWF0cyBvZiB0aGUgc2FtZQo+ID4g cmVhZCwgbm90IHJlYWRzIG9mIGEgZGlmZmVyZW50IGFkZHJlc3MgYnkgdGhlIG90aGVyIGNwdS4K PiA+IEl0IGRpZG4ndCBkbyB3cml0ZXMgcHJvcGVybHkgZWl0aGVyLCBJJ3ZlIGZvcmdvdHRlbiB0 aGUgZXhhY3QgZGV0YWlscwo+ID4gYnV0IEkgdGhpbmsgYSBzZWNvbmQgKHRoaXJkPykgd3JpdGUg b3ZlcndyaXRlIHNvbWUgbGF0Y2hlcy4gIAo+IAo+IFRoaXMgaXMgcHJlY2lzZWx5IHdoeSB0aGUg c3BlY2lmaWNhdGlvbiBsZWF2ZXMgdGhlIHNpbmdsZS1jb3B5Cj4gYXRvbWljaXR5IG9mIGFuIDgt Ynl0ZSBJT01NVSByZWdpc3RlciBhY2Nlc3MgVU5TUEVDSUZJRUQuIElmIGEgNjQtYml0Cj4gTU1J TyByZWdpc3RlciB3ZXJlIGltcGxlbWVudGVkIHdpdGggYXRvbWljIHNlbWFudGljcywgMzItYml0 IGFjY2Vzc2VzCj4gdXNpbmcgbHcvc3cgbWlnaHQgcmVxdWlyZSBpbXBsaWNpdCBtZWNoYW5pc21z LCBzdWNoIGFzIGxhdGNoaW5nIGhhbGYKPiB0aGUgcmVnaXN0ZXIgZm9yIHN1YnNlcXVlbnQgYWNj ZXNzZXMuIFN1Y2ggbWVjaGFuaXNtcyBjb3VsZCBsZWFkIHRvCj4gZXhhY3RseSB0aGUga2luZCBv ZiBpbnRlcmxlYXZpbmcgcHJvYmxlbSB5b3UgZGVzY3JpYmVkLgoKUmlnaHQsIGJ1dCBpdCBhbHNv IHNheXMgeW91IG11c3QgZG8gaGlnaC1sb3cuClRoZSBvbmx5IHJlYXNvbiBmb3IgdGhhdCB3b3Vs ZCBiZSB0byBhbGxvdyBoYXJkd2FyZSB0aGF0IHJlcXVpcmVzCnRoYXQgb3JkZXJpbmcgLSB3aGlj aCBtZWFucyB0aGUgc29mdHdhcmUgYmV0dGVyIGRvIGJvdGggYWNjZXNzZXMKaW4gdGhhdCBvcmRl ci4KVGhlIHNlY29uZCBoYWxmIG9mIHRoZSBzZW50ZW5jZSBzZWVtcyB0byBsZXQgdGhlIGhhcmR3 YXJlIHVwZGF0ZQpoYWxmIHRoZSByZWdpc3RlciBmcm9tIGEgMzJiaXQgYWNjZXNzIChhcyB5b3Ug bWlnaHQgZXhwZWN0KS4KClRoZSB3aG9sZSB0aGluZyBpcyBtaXNsZWFkaW5nL2NvbmZ1c2luZy4K QW5kLCByZWFkaW5nIHRoZSBmdWxsIHBhZ2UsIHRoZSBzeXN0ZW0gdGhhdCBkb2Vzbid0IHN1cHBv cnQgNjRiaXQKYWNjZXNzZXMgaXMgcHJvYmFibHkgbm9uLWNvbmZvcm1hbnQgYXMgd2VsbC4KCglE YXZpZAoKCj4gCj4gVGhpcyBpcyBvbmUgcmVhc29uIGhhcmR3YXJlIG1heSBmYXZvciBzdHJhaWdo dGZvcndhcmQsIGxhdGNoLWZyZWUKPiAzMi1iaXQgTU1JTyB0cmFuc2FjdGlvbnMuIFRoZSBleGFt cGxlIHlvdSBtZW50aW9uZWQgZnVydGhlcgo+IGlsbHVzdHJhdGVzIHRoZSByb2J1c3RuZXNzIG9m IHRyZWF0aW5nIGVhY2ggMzItYml0IE1NSU8gYWNjZXNzIGFzIGFuCj4gaW5kZXBlbmRlbnQgdHJh bnNhY3Rpb24gd2l0aG91dCByZWx5aW5nIG9uIGhpZGRlbiBsYXRjaCBzZW1hbnRpY3MuCj4gCj4g VXNpbmcgMzItYml0IE1NSU8gYWNjZXNzZXMgZm9yIEREVFAsIENBUEFCSUxJVElFUywgYW5kCj4g TVNJX0NGR19UQkxfQUREUiBpbiB0aGlzIGRyaXZlciBpbnRyb2R1Y2VzIG5vIG1lYW5pbmdmdWwg cGVyZm9ybWFuY2UKPiBvdmVyaGVhZCBhbmQgcHJvdmlkZXMgYnJvYWRlciBjb21wYXRpYmlsaXR5 IHdpdGhvdXQgZGlzYWR2YW50YWdpbmcgYW55Cj4gUklTQy1WIElPTU1VIGltcGxlbWVudGF0aW9u Lgo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 3848B42BC4E for ; Tue, 14 Jul 2026 21:02:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784062943; cv=none; b=qWfu+Igvqu62SVTZ2KLWhjbqn1bFaKDkWmM4X+K3ZQL0D3sTItAwLTCmsbEMM7E4tEMWkG0uhOsC/EUX3XGFuuzqQ+AoWMLdmiPyAVma783wlJItFzVKbm6vw0slTeeNE1mKCWwqCREOUYYunfwHB8Q05IvMoIrPWDozD5BOQic= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784062943; c=relaxed/simple; bh=3Kno23UernUyxvsqyFovL/19JIeexLpAXGvyQAz+Pfo=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Hqz1k1excPZkfMcP5ivDPqUaZoEmznke76f5Tj2Sk7Ce+qUqJeMfffClGg4ZRc/GdnJXhWAAjAZaRin7CFq/Q4IDkDGXYyHT+lHhG6azRiG+iK4Rhc8vYy3GI9kGeRyF4XOudnq1O3hgidTiZEQa/tzyV8m8k6Y3jvIkhb6lsfg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qRHjREHe; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qRHjREHe" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-4728c12ba97so2137260f8f.0 for ; Tue, 14 Jul 2026 14:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784062939; x=1784667739; darn=lists.linux.dev; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=rF+I37AHgFT2tFAT9wyxmGe1KHl9HXqH6cXLVyI8Vxo=; b=qRHjREHeNY5qlZ85MjdHR97nBTtFrzHTHe8CiXE1hPAKgUHVcxC0qcBuJoS0/QJ9zJ Dckg6dQ1H774iCeHTGBnfaq2pj3axVvUMmTqOmAVvhsdMeYc9qvgznE+Vy5VJzmycBuW N5EEESuLolTVSdqrMxLhBcp051AW8M6CNzbkr2nxW3MevYWOMIG7wqNYgu1uJ+qtR0A0 0YN8ric6itVxbhoSV08n2ct/IT6L5rwN7Gv4PaUAO2MEpeIaZOzfO4tHLfrrjkNgGqXC LJ1eKd67feAOIiHFmJrrYEi82e0K58Kj2RtNBglP9V/qz2qGhg3tQIQf17LFZT52zVMd Xacg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784062939; x=1784667739; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rF+I37AHgFT2tFAT9wyxmGe1KHl9HXqH6cXLVyI8Vxo=; b=pWAe8v+9dTahRFXcjhLrRpc7azfChPVydhVab9rzIUkrGz55FI17zjCWD3ZhPk5tr+ IKInCFWwoM/4tvATgJLnYpKsWKHX2sPTIIAQ+crHJ9Z94YGG6eID+SNRiDzbZ7o2TzAR nLPaELurdufvnBlrC9qugUBcpvNK1b4UoEL6TAwhiC180Gpcy2AjopyhtcyPvrDZ/tEV OwQmNVmiEtkv++5e21q+70TqmvcpmTVTSHD6D+ApPDzVQgS1iwEvH4MlCrSb//gSrm0O eeSEi7rzO+X0uiB0q+MYzEwqh7Rjw/fXKne58xfE9lqXSVhi760W1P0MNtmpucY+Cma2 DK+g== X-Forwarded-Encrypted: i=1; AHgh+RqTYM7YRTeIPgBmdrIzkYMlREqaeUY0BDJSCof4R4R5uDEvSDgeSzlRfCpHcJ4fYqvpq4Zx6Q==@lists.linux.dev X-Gm-Message-State: AOJu0YxkalQJlRg7Gk9oGD8c5Vx41P6Dj4mISh/A/faAr1UnaaS5Ve0m sjSaPULkwYin8YFGbcr3aL0cpe9KDkXlm0wPrK4wMqbeYiW5tC9MjF1S X-Gm-Gg: AfdE7cl04FpkFZgBfT+fs2ejeU2PpJk6vHII0yVquUlVLPrPJdgoJglKr5vmpww7OIY YQx8+zVQ2lIf+82I/gA+6ItRc95qfpfwDOfntusSjnV+LPS3fXblvM5h6TrOgfv7ENdFItkZ1Mn idNk0LMDB2d/paX0ZCghcsHd4mBxubeQ/Jr9NgY6N2YRrNm5vZJlfU1qLNr9TPcGr1jZLgxKVfM QUt0ac7KtKDOmeLnIhd2q4MjH0h5DGjleUF5xNqjp6fcMemBKGPP2SdJitQb2EZ9xAQVVzgWRP/ zTRsCyePWg/APSmiJB8l/6gWlDvZOANFwagzSS+zExit301Jl/iuqR8o109N5jq9eQ44E98l/cT 84TLtxAxo1DuBvxm+2pqoQD/CVe+/lPOSCphN581xDplKyXEywVlgeuok7o0S3S4yCZRMGK17sD CXzXHpcf7diQN5unrmrEk7LjyFpBkxMXi1c2gy/28SBa2yZaWaAw== X-Received: by 2002:a5d:6f19:0:b0:47e:96f4:4a5b with SMTP id ffacd0b85a97d-47f4fcef3cfmr20784f8f.51.1784062939220; Tue, 14 Jul 2026 14:02:19 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464d6fa7sm10622252f8f.37.2026.07.14.14.02.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 14:02:18 -0700 (PDT) Date: Tue, 14 Jul 2026 22:02:17 +0100 From: David Laight To: Guo Ren Cc: Robin Murphy , Zhanpeng Zhang , Tomasz Jeznach , Joerg Roedel , Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Vivian Wang , Zong Li , cuiyunhui@bytedance.com, yuanzhu@bytedance.com, iommu@lists.linux.dev, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] iommu/riscv: Use 32-bit MMIO accesses for 64-bit registers Message-ID: <20260714220217.65055d98@pumpkin> In-Reply-To: References: <20260615064855.90316-1-zhangzhanpeng.jasper@bytedance.com> <20260713122903.9458-1-zhangzhanpeng.jasper@bytedance.com> <3591a185-d0b5-4cb0-a0d5-ae9608a4e244@arm.com> <20260714155310.2e17473c@pumpkin> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, 15 Jul 2026 00:53:06 +0800 Guo Ren wrote: > On Tue, Jul 14, 2026 at 10:53=E2=80=AFPM David Laight > wrote: > > > > On Tue, 14 Jul 2026 21:24:19 +0800 > > Guo Ren wrote: > > =20 > > > On Tue, Jul 14, 2026 at 8:27=E2=80=AFPM Robin Murphy wrote: =20 > > > > > > > > On 13/07/2026 1:29 pm, Zhanpeng Zhang wrote: =20 > > > > > The RISC-V IOMMU specification [1] permits 64-bit registers to be= accessed > > > > > using two 32-bit transactions, high half first, and leaves the si= ngle-copy > > > > > atomicity of 8-byte IOMMU register accesses unspecified. > > > > > > > > > > Use the generic hi_lo_readq_relaxed() and hi_lo_writeq_relaxed() = helpers > > > > > for ordinary 64-bit IOMMU registers. For DDTP, poll BUSY in the l= ow half, > > > > > then read the high half and compose the register value from the p= olled low > > > > > half. HPM counter reads require a rollover-aware sequence and rem= ain > > > > > outside these accessors. > > > > > > > > > > This follows the 32-bit access direction proposed by Guo Ren [2] = and uses > > > > > the generic non-atomic MMIO helpers suggested by David Laight. > > > > > > > > > > [1] https://docs.riscv.org/reference/iommu/ > > > > > [2] https://lore.kernel.org/r/20250903144217.837448-1-guoren@kern= el.org > > > > > > > > > > Suggested-by: Guo Ren > > > > > Suggested-by: David Laight > > > > > Signed-off-by: Zhanpeng Zhang > > > > > --- > > > > > Changes in v3: > > > > > - Use the DDTP access sequence from [1]: retain the low half retu= rned by > > > > > BUSY polling, read only the high half, and compose the DDTP va= lue from > > > > > those two 32-bit reads. > > > > > > > > > > Changes in v2: > > > > > - Rework the patch based on Guo Ren's earlier proposal [1]. > > > > > - Drop the build-time option and use 32-bit accesses unconditiona= lly. > > > > > - Drop the global lock and use the generic high-low MMIO helpers,= as > > > > > suggested by David Laight. > > > > > - Poll DDTP.BUSY through its low half. > > > > > > > > > > Link to v1: [2] > > > > > Specification discussion: [3] > > > > > > > > > > [1]: https://lore.kernel.org/r/20250903144217.837448-1-guoren@ker= nel.org > > > > > [2]: https://lore.kernel.org/r/20260615064855.90316-1-zhangzhanpe= ng.jasper@bytedance.com > > > > > [3]: https://github.com/riscv-non-isa/riscv-iommu/issues/765 > > > > > > > > > > drivers/iommu/riscv/iommu.c | 9 ++++++--- > > > > > drivers/iommu/riscv/iommu.h | 9 +++------ > > > > > 2 files changed, 9 insertions(+), 9 deletions(-) > > > > > > > > > > diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/io= mmu.c > > > > > index cec3ddd7ab1..d647b71ebec 100644 > > > > > --- a/drivers/iommu/riscv/iommu.c > > > > > +++ b/drivers/iommu/riscv/iommu.c > > > > > @@ -670,9 +670,12 @@ void riscv_iommu_disable(struct riscv_iommu_= device *iommu) > > > > > > > > > > #define riscv_iommu_read_ddtp(iommu) ({ \ > > > > > u64 ddtp; \ > > > > > - riscv_iommu_readq_timeout((iommu), RISCV_IOMMU_REG_DDTP, dd= tp, \ > > > > > - !(ddtp & RISCV_IOMMU_DDTP_BUSY), = 10, \ > > > > > + u32 ddtp_lo, ddtp_hi; \ > > > > > + riscv_iommu_readl_timeout((iommu), RISCV_IOMMU_REG_DDTP, dd= tp_lo, \ > > > > > + !(ddtp_lo & RISCV_IOMMU_DDTP_BUSY= ), 10, \ > > > > > RISCV_IOMMU_DDTP_TIMEOUT); \ > > > > > + ddtp_hi =3D riscv_iommu_readl((iommu), RISCV_IOMMU_REG_DDTP= + 4); \ =20 > > > > > > > > It looks like whenever you read DDTP you're only really looking at = the > > > > BUSY/MODE fields anyway, so does this actually need to read the upp= er > > > > bits of PPN at all? (The spec says they don't even need to be writt= en on > > > > RV32 either) =20 > > > > > > The motivation is not RV32 compatibility. It addresses RV64 platforms > > > where the IOMMU control plane can only be accessed via 32-bit MMIO. > > > =20 > > > > =20 > > > > > + ddtp =3D ((u64)ddtp_hi << 32) | ddtp_lo; \ > > > > > ddtp; }) > > > > > > > > > > static int riscv_iommu_iodir_alloc(struct riscv_iommu_device *i= ommu) > > > > > @@ -1501,7 +1504,7 @@ static int riscv_iommu_init_check(struct ri= scv_iommu_device *iommu) > > > > > * regular boot flow and disable translation when we boot i= nto a kexec > > > > > * kernel and the previous kernel left them enabled. > > > > > */ > > > > > - ddtp =3D riscv_iommu_readq(iommu, RISCV_IOMMU_REG_DDTP); > > > > > + ddtp =3D riscv_iommu_read_ddtp(iommu); > > > > > if (ddtp & RISCV_IOMMU_DDTP_BUSY) > > > > > return -EBUSY; > > > > > > > > > > diff --git a/drivers/iommu/riscv/iommu.h b/drivers/iommu/riscv/io= mmu.h > > > > > index 46df79dd549..1b03790fbe1 100644 > > > > > --- a/drivers/iommu/riscv/iommu.h > > > > > +++ b/drivers/iommu/riscv/iommu.h > > > > > @@ -11,6 +11,7 @@ > > > > > #ifndef _RISCV_IOMMU_H_ > > > > > #define _RISCV_IOMMU_H_ > > > > > > > > > > +#include > > > > > #include > > > > > #include > > > > > #include > > > > > @@ -70,17 +71,13 @@ void riscv_iommu_disable(struct riscv_iommu_d= evice *iommu); > > > > > readl_relaxed((iommu)->reg + (addr)) > > > > > > > > > > #define riscv_iommu_readq(iommu, addr) \ > > > > > - readq_relaxed((iommu)->reg + (addr)) > > > > > + hi_lo_readq_relaxed((iommu)->reg + (addr)) =20 > > > > > > > > This seems unnecessary (similarly for writeq() below) - once you've > > > > included the header, then it automatically provides readq{_relaxed}= () > > > > for RV32 via the non-atomic implementation, and wherever atomicity > > > > doesn't matter, then as written there seems to be no reason for RV6= 4 to > > > > stop using the regular arch readq(). > > > > > > > > Not that it makes any difference to me either way, but I don't see = any > > > > real issue with the spec - if software *may* make a 64-bit access t= o any > > > > 64-bit register unconditionally, then that can only imply that hard= ware > > > > *must* be able to accommodate RV64 software choosing to do so, and > > > > therefore must support *both* 32b and 64b accesses in general, exce= pt > > > > perhaps on RV32-only systems if software could never make 64b acces= ses > > > > in the first place. If 64b single-copy atomicity is not > > > > required/specified then it should be valid to achieve that by just > > > > sticking a downsizer in the upstream interconnect to split 64b acce= sses > > > > into 32bx2 incremental bursts. > > > > > > > > If do actually you need this as an erratum workaround to support > > > > specific hardware which has misinterpreted the spec then I think you > > > > should be clear about that. Otherwise, adding speculative "workarou= nds" > > > > which (slightly) penalise hardware that got it right, while inviting > > > > future hardware to get it wrong, doesn't seem like the right way to= go > > > > at all... =20 > > > > > > The only three 64-bit registers the driver ever touches are DDTP, > > > CAPABILITIES, and MSI_CFG_TBL_ADDR. None of them is on any > > > performance-critical or hot path. Even if native 64-bit MMIO accesses > > > were used, there would be no observable performance benefit. > > > Therefore, this change does not penalize any hardware. > > > > > > Regarding the specification, there remains substantial disagreement > > > over whether 64-bit accesses are mandatory. The relevant sentence uses > > > the word =E2=80=9Cmay=E2=80=9D (=E2=80=9Cmay be accessed using either= a 32-bit or a 64-bit > > > access=E2=80=9D). Per RFC 2119, =E2=80=9Cmay=E2=80=9D does not expres= s a requirement. Because > > > every existing implementation already provides working 32-bit MMIO > > > access, we believe the safer and less controversial choice is to use > > > the portable 32-bit path via the generic hi-lo helpers. > > > =20 > > > > There is also this clause: > > The 8-byte IOMMU registers are defined in such a way that softw= are can > > perform two individual 4-byte accesses, or hardware can perform= two > > independent 4-byte transactions resulting from an 8-byte access, > > to the high and low halves of the register, in that order, as l= ong as > > the register semantics, with regard to side-effects, are respec= ted > > between the two software accesses, or two hardware transactions, > > respectively. > > > > I'm not sure what the relevance of the high-low order is. > > It could mean, for example, that a read of the high word can latch the = low > > for the next read - so that you get an atomic 64bit read. > > That might be ok if hardware splits the 64bit read, but if software doe= s it > > it isn't going to go well unless the driver locks all (and it might be = all) > > slave accesses. > > In the worst case there might be a single latch for all odd word reads. > > Writes could be worse! > > > > Hardware can be that broken. > > I remember a PCI slave that terminated reads requesting 'cycle rerun' > > and then assumed that the following reads would be repeats of the same > > read, not reads of a different address by the other cpu. > > It didn't do writes properly either, I've forgotten the exact details > > but I think a second (third?) write overwrite some latches. =20 >=20 > This is precisely why the specification leaves the single-copy > atomicity of an 8-byte IOMMU register access UNSPECIFIED. If a 64-bit > MMIO register were implemented with atomic semantics, 32-bit accesses > using lw/sw might require implicit mechanisms, such as latching half > the register for subsequent accesses. Such mechanisms could lead to > exactly the kind of interleaving problem you described. Right, but it also says you must do high-low. The only reason for that would be to allow hardware that requires that ordering - which means the software better do both accesses in that order. The second half of the sentence seems to let the hardware update half the register from a 32bit access (as you might expect). The whole thing is misleading/confusing. And, reading the full page, the system that doesn't support 64bit accesses is probably non-conformant as well. David >=20 > This is one reason hardware may favor straightforward, latch-free > 32-bit MMIO transactions. The example you mentioned further > illustrates the robustness of treating each 32-bit MMIO access as an > independent transaction without relying on hidden latch semantics. >=20 > Using 32-bit MMIO accesses for DDTP, CAPABILITIES, and > MSI_CFG_TBL_ADDR in this driver introduces no meaningful performance > overhead and provides broader compatibility without disadvantaging any > RISC-V IOMMU implementation. >=20