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 C0758C83F07 for ; Mon, 7 Jul 2025 10:48:27 +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=23/DnUXoT1RMqcv4m5HChdue7GLw4020iHw/KmXoqYE=; b=jPM4wWQYdqGbDX SKYwG2irE3JXj1flaKq2UxdqzI9lQaGbx0/6j49C16XyXYFu1iHCvJ7X7Id/WDF8z0ZnJapxzc1SZ 4IQ6xC+lDnig8LKHBGyBGbnqqYZYNjRGrhKXcnoDolqB/bVg8JHcxax9AMtiNveO0vPJ64kOCXq9c MgKANx6t7nmY8VghCAABccN21cb35faoniTWDb9ZqzfqnbOxAB4DgLabGXII6giJCQtbSZQKNZMHv Y+QHmpzBl26ot+EwlOqqBUF0h0Go31P0zAvdSUG44/fFWbfooRj6UZOUmoyNI4i6Pw16SFqu0csqq xmPM+KKzyuHS7b5HoLew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uYjOX-00000002CKw-14RK; Mon, 07 Jul 2025 10:48:21 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uYir0-000000026zF-3THw for linux-amlogic@lists.infradead.org; Mon, 07 Jul 2025 10:13:44 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 2D9D143AD8; Mon, 7 Jul 2025 10:13:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1751883221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uJ6v8vKMuUeSsnqwBVwgaKkap7Pusx+eOZgrYQrQo6o=; b=X+eOXd+T15l8C8kbXpUVnuaNdaFGDRpJ+yKULX8vRV0l1AXvaW8fuSU0ZRuRnIW3moaeGy APyse81GVkDtqP1O2AdRlStvfuYsLWWSKaSQPmuQ0gTsAK4H/MeaX717HWqBIJEOcoF+CT 1yEVAcQVY4PDCNIbuuaHnDNuBYppsavPaILCh/0JJib3s3vlyVo0VRM3sKfocGkfQJ6ftf /T/9ang/348nZRZCXzk/g6RAbPKl+PT8DegbvXx52PDH2KM4/RNkys3oFg6yV7KxiH5rLq PynTYD/7Q7IW1ARrtSlOREMoUlzh8ViY7llK5Zi7ZfzsTVq1yzBTHl+B7BMUew== Date: Mon, 7 Jul 2025 12:13:19 +0200 From: Luca Ceresoli To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Inki Dae , Jagan Teki , Marek Szyprowski , Jani Nikula , Dmitry Baryshkov , Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-amlogic@lists.infradead.org Subject: Re: [PATCH 00/32] drm/mipi-dsi: avoid DSI host drivers to have pointers to DSI devices Message-ID: <20250707121319.1e40a73a@booty> In-Reply-To: <20250707115853.128f2e6f@booty> References: <20250625-drm-dsi-host-no-device-ptr-v1-0-e36bc258a7c5@bootlin.com> <20250707-strange-warm-bear-cb4ee8@houat> <20250707115853.128f2e6f@booty> Organization: Bootlin X-Mailer: Claws Mail 4.3.1 (GTK 3.24.49; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdefudehfecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepfffhvfevuffkjghfohfogggtgfesthhqredtredtjeenucfhrhhomhepnfhutggrucevvghrvghsohhlihcuoehluhgtrgdrtggvrhgvshholhhisegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpedvgeejjeevhefhiefgffethfdtieffheefvedtgeekteejffdtvedugeeihfdvkeenucffohhmrghinhepfhhrvggvuggvshhkthhophdrohhrghdpkhgvrhhnvghlrdhorhhgpdgsohhothhlihhnrdgtohhmnecukfhppeekjedruddvtddrvddukedrvddtjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekjedruddvtddrvddukedrvddtjedphhgvlhhopegsohhothihpdhmrghilhhfrhhomheplhhutggrrdgtvghrvghsohhlihessghoohhtlhhinhdrtghomhdpnhgspghrtghpthhtohepvdehpdhrtghpthhtohepmhhrihhprghrugeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepmhgrrghrthgvnhdrlhgrnhhkhhhorhhstheslhhinhhugidrihhnthgvlhdrtghomhdprhgtphhtthhopehtiihimhhmvghrmhgrnhhnsehsuhhsvgdruggvpdhrtghpthhtoheprghir hhlihgvugesghhmrghilhdrtghomhdprhgtphhtthhopehsihhmohhnrgesfhhffihllhdrtghhpdhrtghpthhtoheprghnughriigvjhdrhhgrjhgurgesihhnthgvlhdrtghomhdprhgtphhtthhopehnvghilhdrrghrmhhsthhrohhngheslhhinhgrrhhordhorhhgpdhrtghpthhtoheprhhfohhssheskhgvrhhnvghlrdhorhhg X-GND-Sasl: luca.ceresoli@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250707_031343_162308_279CFF50 X-CRM114-Status: GOOD ( 68.40 ) X-BeenThere: linux-amlogic@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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgTWF4aW1lLAoKb3VjaCwgZS1tYWlsIHNlbnQgYnkgbWlzdGFrZSB1bmZpbmlzaGVkIGFuZCB3 aXRob3V0IHByb29mLXJlYWRpbmcuLi4Kd2VsbCwgbGV0IG1lIGNvbnRpbnVlIGl0IGJlbG93LgoK T24gTW9uLCA3IEp1bCAyMDI1IDExOjU4OjUzICswMjAwCkx1Y2EgQ2VyZXNvbGkgPGx1Y2EuY2Vy ZXNvbGlAYm9vdGxpbi5jb20+IHdyb3RlOgoKPiBPbiBNb24sIDcgSnVsIDIwMjUgMDg6MTY6NDkg KzAyMDAKPiBNYXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5lbC5vcmc+IHdyb3RlOgo+IAo+ID4g SGkgTHVjYSwKPiA+IAo+ID4gT24gV2VkLCBKdW4gMjUsIDIwMjUgYXQgMDY6NDU6MDRQTSArMDIw MCwgTHVjYSBDZXJlc29saSB3cm90ZTogIAo+ID4gPiBUaGlzIHNlcmllcyBpcyB0aGUgZmlyc3Qg YXR0ZW1wdCBhdCBhdm9pZGluZyBEU0kgaG9zdCBkcml2ZXJzIHRvIGhhdmUKPiA+ID4gcG9pbnRl cnMgdG8gRFNJIGRldmljZXMgKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UpLCBhcyBkaXNjdXNzZWQg ZHVyaW5nIHRoZQo+ID4gPiBMaW51eCBQbHVtYmVycyBDb25mZXJlbmNlIDIwMjQgd2l0aCBNYXhp bWUgYW5kIERtaXRyeS4KPiA+ID4gCj4gPiA+IEl0IGlzIHdvcmtpbmcsIGJ1dCBJIGNvbnNpZGVy IHRoaXMgYSBkcmFmdCBpbiBvcmRlciB0byBkaXNjdXNzIGFuZAo+ID4gPiBjaGFsbGVuZ2UgdGhl IHByb3Bvc2VkIGFwcHJvYWNoLgo+ID4gPiAKPiA+ID4gT3ZlcmFsbCB3b3JrCj4gPiA+ID09PT09 PT09PT09PQo+ID4gPiAKPiA+ID4gVGhpcyBpcyBwYXJ0IG9mIHRoZSB3b3JrIHRvd2FyZHMgcmVt b3ZhbCBvZiBicmlkZ2VzIGZyb20gYSBzdGlsbCBleGlzdGluZwo+ID4gPiBEUk0gcGlwZWxpbmUg d2l0aG91dCB1c2UtYWZ0ZXItZnJlZS4gVGhlIGdyYW5kIHBsYW4gYXMgZGlzY3Vzc2VkIGluIFsx XS4KPiA+ID4gSGVyZSdzIHRoZSB3b3JrIGJyZWFrZG93biAo4p6cIG1hcmtzIHRoZSBjdXJyZW50 IHNlcmllcyk6Cj4gPiA+IAo+ID4gPiAgMS4g4oCmIGFkZCByZWZjb3VudGluZyB0byBEUk0gYnJp ZGdlcyAoc3RydWN0IGRybV9icmlkZ2UpCj4gPiA+ICAgICAoYmFzZWQgb24gZGV2bV9kcm1fYnJp ZGdlX2FsbG9jKCkgWzBdKQo+ID4gPiAgICAgQS4g4pyUIGFkZCBuZXcgYWxsb2MgQVBJIGFuZCBy ZWZjb3VudGluZyAoaW4gdjYuMTYtcmMxKQo+ID4gPiAgICAgQi4g4pyUIGNvbnZlcnQgYWxsIGJy aWRnZSBkcml2ZXJzIHRvIG5ldyBBUEkgKG5vdyBpbiBkcm0tbWlzYy1uZXh0KQo+ID4gPiAgICAg Qy4g4pyUIGt1bml0IHRlc3RzIChub3cgaW4gZHJtLW1pc2MtbmV4dCkKPiA+ID4gICAgIEQuIOKA piBhZGQgZ2V0L3B1dCB0byBkcm1fYnJpZGdlX2FkZC9yZW1vdmUoKSArIGF0dGFjaC9kZXRhY2go KQo+ID4gPiAgICAgICAgICBhbmQgd2FybiBvbiBvbGQgYWxsb2NhdGlvbiBwYXR0ZXJuICh1bmRl ciByZXZpZXcpCj4gPiA+ICAgICBFLiDigKYgYWRkIGdldC9wdXQgb24gZHJtX2JyaWRnZSBhY2Nl c3NvcnMKPiA+ID4gICAgICAgIDEuIOKApiBkcm1fYnJpZGdlX2NoYWluX2dldF9maXJzdF9icmlk Z2UoKSArIGFkZCBhIGNsZWFudXAgYWN0aW9uCj4gPiA+ICAgICAgICAyLiDigKYgZHJtX2JyaWRn ZV9jaGFpbl9nZXRfbGFzdF9icmlkZ2UoKQo+ID4gPiAgICAgICAgMy4gZHJtX2JyaWRnZV9nZXRf cHJldl9icmlkZ2UoKQo+ID4gPiAgICAgICAgNC4gZHJtX2JyaWRnZV9nZXRfbmV4dF9icmlkZ2Uo KQo+ID4gPiAgICAgICAgNS4gZHJtX2Zvcl9lYWNoX2JyaWRnZV9pbl9jaGFpbigpCj4gPiA+ICAg ICAgICA2LiBkcm1fYnJpZGdlX2Nvbm5lY3Rvcl9pbml0Cj4gPiA+ICAgICAgICA3LiBvZl9kcm1f ZmluZF9icmlkZ2UKPiA+ID4gICAgICAgIDguIGRybV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZSwg Kl9vZl9nZXRfYnJpZGdlCj4gPiA+ICAgICBGLiBkZWJ1Z2ZzIGltcHJvdmVtZW50cwo+ID4gPiAg Mi4gaGFuZGxlIGdyYWNlZnVsbHkgYXRvbWljIHVwZGF0ZXMgZHVyaW5nIGJyaWRnZSByZW1vdmFs Cj4gPiA+ICAzLiDinpwgYXZvaWQgRFNJIGhvc3QgZHJpdmVycyB0byBoYXZlIGRhbmdsaW5nIHBv aW50ZXJzIHRvIERTSSBkZXZpY2VzCj4gPiA+ICAgICAgICh0aGlzIHNlcmllcykKPiA+ID4gIDQu IGZpbmlzaCB0aGUgaG90cGx1ZyBicmlkZ2Ugd29yaywgcmVtb3ZpbmcgdGhlICJhbHdheXMtZGlz Y29ubmVjdGVkIgo+ID4gPiAgICAgY29ubmVjdG9yLCBtb3ZpbmcgY29kZSB0byB0aGUgY29yZSBh bmQgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlCj4gPiA+ICAgICBob3RwbHVnLWJyaWRnZSBpdHNl bGYgKHRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkIGFzIHBvaW50cyAxLTMgYXJlCj4gPiA+ICAg ICBkZXZlbG9wZWQpCj4gPiA+IAo+ID4gPiBbMF0gaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Au b3JnL2RybS9taXNjL2tlcm5lbC8tL2NvbW1pdC8wY2M2YWFkZDdmYzFlNjI5YjcxNWVhM2QxYmE1 MzdlZjJkYTk1ZWVjCj4gPiA+IFsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjUw MjA2LWhvdHBsdWctZHJtLWJyaWRnZS12Ni0wLTlkNmYyYzljMzA1OEBib290bGluLmNvbS90LyN1 Cj4gPiA+IAo+ID4gPiBNb3RpdmF0aW9uCj4gPiA+ID09PT09PT09PT0KPiA+ID4gCj4gPiA+IFRo ZSBtb3RpdmF0aW9uIGZvciB0aGlzIHNlcmllcyBpcyB0aGF0IHdpdGggaG90LXBsdWdnYWJsZSBo YXJkd2FyZSBhIERTSQo+ID4gPiBkZXZpY2UgY2FuIGJlIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBE U0kgaG9zdCBhdCBydW50aW1lLCBhbmQgbGF0ZXIgb24KPiA+ID4gcmVjb25uZWN0ZWQsIHBvdGVu dGlhbGx5IHdpdGggYSBkaWZmZXJlbnQgbW9kZWwgaGF2aW5nIGRpZmZlcmVudCBidXMKPiA+ID4g cGFyYW1ldGVycy4KPiA+ID4gCj4gPiA+IERTSSBob3N0IGRyaXZlcnMgY3VycmVudGx5IHJlY2Vp dmUgYSBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlIHBvaW50ZXIgaW4gdGhlCj4gPiA+IGF0dGFjaCBj YWxsYmFjayBhbmQgc29tZSBzdG9yZSBpdCBwZXJtYW5lbnRseSBmb3IgbGF0ZXIgYWNjZXNzIHRv IHRoZSBidXIKPiA+ID4gZm9ybWF0IGRhdGEgKGxhbmVzLCBjaGFubmVsLCBwaXhlbCBmb3JtYXQg ZXRjKS4gVGhlIHN0b3JlZCBwb2ludGVyIGNhbgo+ID4gPiBiZWNvbWUgZGFuZ2xpbmcgaWYgdGhl IGRldmljZSBpcyByZW1vdmVkLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCj4gPiA+IAo+ ID4gPiBDdXJyZW50bHkgdGhlIGRhdGEgZXhjaGFuZ2UgYmV0d2VlbiBEU0kgaG9zdCBhbmQgZGV2 aWNlIGhhcHBlbnMgcHJpbWFyaWx5Cj4gPiA+IGJ5IHR3byBtZWFuczoKPiA+ID4gCj4gPiA+ICAq IHRoZSBkZXZpY2UgcmVxdWVzdHMgYXR0YWNoLCBkZXRhY2ggYW5kIG1lc3NhZ2UgdHJhbnNmZXIg dG8gdGhlIGhvc3QgYnkKPiA+ID4gICAgY2FsbGluZyBtaXBpX2RzaV9hdHRhY2gvZGV0YWNoL3Ry YW5zZmVyIHdoaWNoIGluIHR1cm4gY2FsbCB0aGUgY2FsbGJhY2tzCj4gPiA+ICAgIGluIHN0cnVj dCBtaXBpX2RzaV9ob3N0X29wcwo+ID4gPiAgICAgLSBmb3IgdGhpcyB0byB3b3JrLCBzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlIGhhcyBhIHBvaW50ZXIgdG8gdGhlIGhvc3Q6Cj4gPiA+ICAgICAgIHRo aXMgaXMgT0sgYmVjYXVzZSB0aGUgZ29hbCBpcyBzdXBwb3J0aW5nIGhvdHBsdWcgb2YgdGhlICJy ZW1vdGUiCj4gPiA+ICAgICAgIHBhcnQgb2YgdGhlIERSTSBwaXBlbGluZQo+ID4gPiAgKiB0aGUg aG9zdCBhY2Nlc3NlcyBkaXJlY3RseSB0aGUgZmllbGRzIG9mIHN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UsIHRvCj4gPiA+ICAgIHdoaWNoIGl0IHJlY2VpdmVzIGEgcG9pbnRlciBpbiB0aGUgLmF0dGFj aCBhbmQgLmRldGFjaCBjYWxsYmFja3MKPiA+ID4gCj4gPiA+IFRoZSBzZWNvbmQgYnVsbGV0IGlz IHRoZSBwcm9ibGVtYXRpYyBvbmUsIHdoaWNoIHdlIHdhbnQgdG8gcmVtb3ZlLgo+ID4gPiAKPiA+ ID4gU3RyYXRlZ3kKPiA+ID4gPT09PT09PT0KPiA+ID4gCj4gPiA+IEkgZGV2aXNlZCB0d28gcG9z c2libGUgc3RyYXRlZ2llcyB0byBhZGRyZXNzIGl0Ogo+ID4gPiAKPiA+ID4gIDEuIGNoYW5nZSB0 aGUgaG9zdCBvcHMgdG8gbm90IHBhc3MgYSBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlLCBidXQgaW5z dGVhZAo+ID4gPiAgICAgdG8gcGFzcyBvbmx5IGEgY29weSBvZiB0aGUgbmVlZGVkIGluZm9ybWF0 aW9uIChidXMgZm9ybWF0IG1haW5seSksIHNvCj4gPiA+ICAgICB0aGUgaG9zdCBkcml2ZXIgZG9l cyBuZXZlciBhY2Nlc3MgYW55IGluZm8gZnJvbSB0aGUgZGV2aWNlCj4gPiA+ICAgICAKPiA+ID4g IDIuIGxldCB0aGUgaG9zdCBnZXQgaW5mbyBmcm9tIHRoZSBkZXZpY2UgYXMgbmVlZGVkLCBidXQg d2l0aG91dCBoYXZpbmcgYQo+ID4gPiAgICAgcG9pbnRlciB0byBpdDsgdGhpcyBpcyBiZSBiYXNl ZCBvbjoKPiA+ID4gICAgICAtIHN0b3JpbmcgYSBfX3ByaXZhdGUgbWlwaV9kc2lfZGV2aWNlIHBv aW50ZXIgaW4gc3RydWN0IG1pcGlfZHNpX2hvc3QKPiA+ID4gICAgICAtIGFkZGluZyBnZXR0ZXJz IHRvIHRoZSBEU0kgY29yZSBmb3IgdGhlIGhvc3QgdG8gcXVlcnkgdGhlIG5lZWRlZAo+ID4gPiAg ICAgICAgaW5mbywgZS5nLiBkcm1fbWlwaV9kc2lfaG9zdF9nZXRfZGV2aWNlX2xhbmVzKGhvc3Qp ICh0aGUgZ2V0dGVycwo+ID4gPiAgICAgICAgd291bGQgYmUgYWxsb3dlZCB0byBkZXJlZmVyZW5j ZSB0aGUgZGV2aWNlIHBvaW50ZXIpCj4gPiA+IAo+ID4gPiBUaGlzIHNlcmllcyBpbXBsZW1lbnRz IHN0cmF0ZWd5IDEuIEl0IGRvZXMgc28gYnkgYWRkaW5nIGEgLmF0dGFjaF9uZXcgaG9zdAo+ID4g PiBvcCwgd2hpY2ggZG9lcyBub3QgdGFrZSBhIG1pcGlfZHNpX2RldmljZSBwb2ludGVyLCBhbmQg Y29udmVydGluZyBtb3N0IGhvc3QKPiA+ID4gZHJpdmVycyB0byBpdC4gT25jZSBhbGwgZHJpdmVy cyBhcmUgY29udmVydGVkLCB0aGUgb2xkIG9wIGNhbiBiZSByZW1vdmVkLAo+ID4gPiBhbmQgLmF0 dGFjaF9uZXcgcmVuYW1lZCB0byAuYXR0YWNoLiAgICAKPiA+IAo+ID4gSSBkb24ndCByZWNhbGwg ZGlzY3Vzc2luZyB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IGF0IFBsdW1iZXJzLCBzbyBzb3JyeQo+ ID4gaWYgd2UncmUgY29taW5nIGJhY2sgdG8gdGhlIHNhbWUgZGlzY3Vzc2lvbiB3ZSBoYWQuCj4g PiAKPiA+IEknbSBub3QgbmVjZXNzYXJpbHkgb3Bwb3NlZCB0byBjaGFuZ2luZyB0aGUgTUlQSS1E U0kgYnVzIEFQSSwgYnV0IEkKPiA+IGRvbid0IHRoaW5rIGNoYW5naW5nIHRoZSBzZW1hbnRpY3Mg dG8gcmVtb3ZlIHRoZSBmYWN0IHRoYXQgYSBwYXJ0aWN1bGFyCj4gPiBkZXZpY2UgaXMgY29ubmVj dGVkIG9yIG5vdCBpcyBhIGdvb2QgaWRlYS4KPiA+IAo+ID4gSSB3b3VsZCBoYXZlIGV4cGVjdGVk IHRvIGhhdmUgYnVzIGRyaXZlciAobWF5YmUpIHRha2UgYSBkZXZpY2UgcG9pbnRlcgo+ID4gYXQg YXR0YWNoLCBhbmQgZHJvcCBpdCBhdCBkZXRhY2guCj4gPiAKPiA+IFRoZW4sIHdoZW4gd2UgZGV0 ZWN0IHRoZSBob3RwbHVnIG9mIGEgRFNJIGRldmljZSwgd2UgZGV0YWNoIGl0IGZyb20gaXRzCj4g PiBwYXJlbnQsIGFuZCB3ZSdyZSBkb25lLgo+ID4gCj4gPiBXaGF0IHByZXZlbnRzIHVzIGZyb20g dXNpbmcgdGhhdCBhcHByb2FjaD8gIAo+IAo+IEkgcHJvYmFibHkgc2hvdWxkIGhhdmUgZG9uZSBh IHJlY2FwIG9mIHRoZSB3aG9sZSBkaXNjdXNzaW9uLCBzbyBsZXQgbWUKPiBkbyBpdCBub3cuCj4g Cj4gSXQgYWxsIHN0YXJ0cyB3aXRoIG9uZSBmYWN0OiBhIERTSSBkZXZpY2UgY2FuIGJlIGRpc2Nv bm5lY3RlZCBhbmQgdGhlbgo+IGEgZGlmZmVyZW50IG9uZSBjb25uZWN0ZWQgbGF0ZXIgb24sIGhh dmluZyBhIGRpZmZlcmVudCBEU0kgYnVzIGZvcm1hdAo+IChsYW5lcywgY2hhbm5lbCwgbW9kZSBm bGFncywgd2hhdGV2ZXIpLiBBIGRldGFjaC9hdHRhY2ggc2VxdWVuY2Ugd291bGQKPiBoYW5kbGUg dGhhdCwgYnV0IG9ubHkgaW4gdGhlIHNpbXBsZSBjYXNlIHdoZW4gdGhlcmUgaXMgYSBob3N0L2Rl dmljZQo+IHBhaXIuIExldCdzIGhvdyBjb25zaWRlciB0aGlzIHRvcG9sb2d5Ogo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgICAg ICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilJAgICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAgICAg4pSCICAgIERT SSBicmlkZ2UgICAg4pSCICAgICAgICAgICAgICAgICAgCj4g4pSM4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSQICBBICDilIIgICAgICAgICAgICAgICAgICDilIIgIEIgIOKUjOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkAo+IOKUgiBEU0kgaG9zdOKUnOKUgOKUgOKUgOKU gOKWuuKUgmRldmljZSAgICAgICAgaG9zdOKUnOKUgOKUgOKUgOKUgOKWuuKUgkRTSSBkZXZpY2Ug 4pSCCj4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICDilJTilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgIOKUlOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+IEhlcmUgbGluayBBIGlzIGFsd2F5 cyBjb25uZWN0ZWQsIGxpbmsgQiBpcyBob3QtcGx1Z2dhYmxlLiBXaGVuIHRoZSB0YWlsCj4gZGV2 aWNlIGlzIHJlbW92ZWQgYW5kIGEgZGlmZmVyZW50IG9uZSBwbHVnZ2VkLCBhIGRldGFjaC9hdHRh Y2ggc2VxdWVuY2UKPiBjYW4gdXBkYXRlIHRoZSBidXMgZm9ybWF0IG9uIHRoZSBEU0kgYnJpZGdl LCBidXQgdGhlbiB0aGUgRFNJIGJyaWRnZQo+IGNhbm5vdCB1cGRhdGUgdGhlIGZvcm1hdCBvbiB0 aGUgZmlyc3QgaG9zdCB3aXRob3V0IGZha2luZyBhCj4gZGV0YWNoL2F0dGFjaCB0aGF0IGRvZXMg bm90IG1hcCBhIHJlYWwgZXZlbnQuCj4gCj4gVGhlIGFib3ZlIHRvcG9sb2d5IGlzIHByb2JhYmx5 IG5vdCBjb21tb24sIGJ1dCBpdCBpcyBleGFjdGx5IHdoYXQgdGhlCj4gaG90cGx1Zy1icmlkZ2Ug aW50cm9kdWNlcyBbMF0uIFdoZXRoZXIgdGhlIGhvdHBsdWctYnJpZGdlIHdpbGwgaGF2ZSB0bwo+ IGV2ZW50dWFsbHkgZXhpc3Qgb3Igbm90IHRvIHN1cHBvcnQgaG90cGx1ZyBpcyBzdGlsbCB0byBi ZSBkZWZpbmVkLCBidXQKPiByZWdhcmRsZXNzIHRoZXJlIGlzIGFub3RoZXIgcHJvYmxlbWF0aWMg YXNwZWN0Lgo+IAo+IFRoZSBzZWNvbmQgcHJvYmxlbWF0aWMgYXNwZWN0IGlzIHRoYXQgc2V2ZXJh bCBEU0kgaG9zdCBkcml2ZXJzIHdpbGwgbm90Cj4gZXZlbiBkcm1fYnJpZGdlX2FkZCgpIHVudGls IHRoZXkgaGF2ZSBhbiBhdHRhY2hlZCBEU0kgZGV2aWNlLiBPbmUgc3VjaAo+IGV4YW1wbGUgaXMg c2Ftc3VuZy1kc2ltLCB3aGljaCBjYWxscyBkcm1fYnJpZGdlX2FkZCgpCj4gaW4gc2Ftc3VuZ19k c2ltX2hvc3RfYXR0YWNoKCkuIFdoZW4gc3VjaCBhIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBmaXJz dAo+IERTSSBob3N0LCB0aGUgRFNJIGJyaWRnZSBtdXN0IHJlZ2lzdGVyIGEgRFNJIGRldmljZSBi ZWZvcmUgdGhlIERSTSBjYXJkCj4gY2FuIGJlIGluc3RhbnRpYXRlZC4gU2VlIHRoZSBsZW5ndGh5 IGNvbW1lbnQgYmVmb3JlCj4gaG90cGx1Z19icmlkZ2VfZHNpX2F0dGFjaCgpIGluIFswXSBmb3Ig bW9yZSBnb3J5IGRldGFpbHMsIGJ1dCB0aGUKPiBvdXRjb21lIGlzIHRoYXQgdGhlIGhvdHBsdWct YnJpZGdlIG5lZWRzIHRvIGF0dGFjaCBhIERTSSBkZXZpY2Ugd2l0aAo+IGEgZmFrZSBmb3JtYXQg b25jZSBpbml0aWFsbHkganVzdCB0byBsZXQgdGhlIERSTSBjYXJkIHByb2JlLCBhbmQgdGhlCj4g ZGV0YWNoIGFuZCByZWF0dGFjaCB3aXRoIHRoZSBjb3JyZWN0IGZvcm1hdCBvbmNlIGFuIGFjdHVh bCBEU0kgZGV2aWNlCj4gaXMgY29ubmVjdGVkIGF0IHRoZSB0YWlsLgo+IAo+IFswXSBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNDA5MTctaG90cGx1Zy1kcm0tYnJpZGdlLXY0LTQtYmM0 ZGZlZTYxYmU2QGJvb3RsaW4uY29tLwo+IAo+IFRoZSBhYm92ZSB3b3VsZCBiZSBpbXByb3ZlZCBp ZiB0aGUgRFNJIGhvc3QgQVBJIHByb3ZpZGVkIGEgd2F5IHRvCj4gbm90aWZ5IHRvIHRoZSBob3N0 IGFib3V0IGEgYnVzIGZvcm1hdCBjaGFuZ2UsIHdoaWNoIGlzIGhvd2V2ZXIgbm90Cj4gcHJlc2Vu dCBjdXJyZW50bHkuCj4gCj4gVGhlIG5haXZlIHNvbHV0aW9uIHdvdWxkIGJlIGFkZGluZyBhIG5l dyBEU0kgaG9zdCBvcDoKPiAKPiAgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIHsKPiAgCWludCAo KmF0dGFjaCkoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCj4gIAkJICAgICAgc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpKTsKPiAgCWludCAoKmRldGFjaCkoc3RydWN0IG1pcGlfZHNpX2hv c3QgKmhvc3QsCj4gIAkJICAgICAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKTsKPiArCWlu dCAoKmJ1c19mbXRfY2hhbmdlZCkoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCj4gKyAJCSAg ICAgIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSk7Cj4gIAlzc2l6ZV90ICgqdHJhbnNmZXIp KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICAJCQkgICAgY29uc3Qgc3RydWN0IG1pcGlf ZHNpX21zZyAqbXNnKTsKPiAgfTsKPiAKPiBUaGlzIHdvdWxkIGFsbG93IHJlZHVjZSB0aGUgY3Vy cmVudCBzZXF1ZW5jZToKPiAgMS4gYXR0YWNoIHdpdGggZHVtbXkgZm9ybWF0IChubyB0YWlsIGRl dmljZSB5ZXQpCj4gIDIuIGZha2UgZGV0YWNoCj4gIDMuIGF0dGFjaAo+IAo+IHdpdGg6Cj4gIDEu IGF0dGFjaCB3aXRoIGR1bW15IGZvcm1hdCAobm8gdGFpbCBkZXZpY2UgeWV0KQo+ICAyLiB1cGRh dGUgZm9ybWF0Cj4gCj4gQWRkaW5nIHN1Y2ggYSBuZXcgb3Agd291bGQgYmUgcGFydCBvZiBjaGFw dGVyIDQgb2YgdGhpcyB3b3JrLCBiZWluZyBpdAo+IHF1aXRlIHVzZWxlc3Mgd2l0aG91dCBob3Rw bHVnLgo+IAo+IEhvd2V2ZXIgd2hpbGUgcmVhc29uaW5nIGFib3V0IHRoaXMgSSBub3RpY2VkIHRo ZSBEU0kgaG9zdCBkcml2ZXJzIHBlZWsKPiBpbnRvIHRoZSBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl IGZpZWxkcyB0byByZWFkIHRoZSBmb3JtYXQsIHNvIHRoZXJlIGlzCj4gbm8gc29ydCBvZiBpc29s YXRpb24gYmV0d2VlbiBob3N0IGFuZCBkZXZpY2UuIEludHJvZHVjaW5nIGEgc3RydWN0IHRvCj4g Y29udGFpbiBhbGwgdGhlIGZvcm1hdCBmaWVsZHMgbG9va2VkIGxpa2UgYSBnb29kIGltcHJvdmVt ZW50IGluIHRlcm1zCj4gb2YgY29kZSBvcmdhbml6YXRpb24uCj4gCj4gWWV0IGFub3RoZXIgYXNw ZWN0IGlzIHRoYXQgc2V2ZXJhbCBob3N0IGRyaXZlcnMga2VlcCBhIHBvaW50ZXIgdG8gdGhlCj4g ZGV2aWNlLCBhbmQgdGh1cyBpbiBjYXNlIG9mIGZvcm1hdCBjaGFuZ2UgaW4gdGhlIERTSSBkZXZp Y2UgdGhleSBtaWdodAo+IGJlIHJlYWRpbmcgZGlmZmVyZW50IGZpZWxkcyBhdCBkaWZmZXJlbnQg bW9tZW50cywgZW5kaW5nIHVwIHdpdGggYW4KPiBpbmNvbnNpc3RlbnQgZm9ybWF0Lgo+IAo+IFRo ZSBhYm92ZSBjb25zaWRlcmF0aW9ucywgd2hpY2ggYXJlIGFsbCBwYXJ0aWFsbHkgb3ZlcmxhcHBl ZCwgbGVkIG1lIHRvCj4gdGhlIGlkZWEgb2YgaW50cm9kdWNpbmcgYSBzdHJ1Y3QgdG8gZXhjaGFu Z2UgYSBEU0kgYnVzIGZvcm1hdCwgdG8gYmUKPiBleGNoYW5nZWQgYXMgYSB3aG9sZSAoImF0b21p Y2FsbHkiKSBiZXR3ZWVuIGhvc3QgYW5kIGRldmljZS4gV2hhdCdzCj4geW91ciBvcGluaW9uIGFi b3V0IGludHJvZHVjaW5nIHN1Y2ggYSBzdHJ1Y3Q/Cj4gCj4gVGhlIHNlY29uZCBhc3BlY3Qgb2Yg dGhpcyBzZXJpZXMgaXMgbm90IHBhc3NpbmcgcG9pbnRlcnMsIGFuZCB0aGF0J3MKPiB0aGUgY29y ZSB0b3BpYyB5b3UgcXVlc3Rpb25lZC4gSSByZWFsaXplIGl0IGlzIG5vdCBzdHJpY3RseSBuZWNl c3NhcnkKPiB0byByZWFjaCB0aGUgdmFyaW91cyBnb2FscyBkaXNjdXNzZWQgaW4gdGhpcyBlLW1h aWwuIFRoZSB3b3JrIEknbSBkb2luZwo+IG9uIHRoZSBkcm1fYnJpZGdlIHN0cnVjdCBpcyBhY3R1 YWxseSBhIHdheSB0byBzdG9yZSBhIHBvaW50ZXIgd2hpbGUKPiBhdm9pZGluZyB1c2UtYWZ0ZXIt ZnJlZSwgc28gdGhhdCBjYW4gb2J2aW91c2x5IGJlIGRvbmUgZm9yIGEgc2ltcGxlcgo+IHNjZW5h cmlvIHN1Y2ggYXMgRFNJIGhvc3QtZGV2aWNlLiBIb3dldmVyIEkgdGhvdWdodCBub3QgcGFzc2lu ZyBhCj4gcG9pbnRlciB3b3VsZCBiZSBhIG1vcmUgcmFkaWNhbCBzb2x1dGlvbjogaWYgYSBkcml2 ZXIgcmVjZWl2ZXMgbm8KPiBwb2ludGVyLCB0aGVuIGl0IGNhbm5vdCBieSBtaXN0YWtlIGtlZXAg aXQgc3RvcmVkIHdoZW4gaXQgc2hvdWxkbid0LAo+IG1heWJlIGluIGEgcmFyZSBjYXNlIHdpdGhp biBhIGNvbXBsZXggZHJpdmVyIHdoZXJlIGl0IGlzIGhhcmQgdG8gc3BvdC4KPiAKPiBJJ2xsIGJl IE9LIHRvIGNoYW5nZSB0aGUgYXBwcm9hY2ggYW5kIGtlZXAgdGhlIHBvaW50ZXIgcGFzc2VkIGlu IHRoZQo+IGF0dGFjaC9kZXRhY2ggb3BzLCBpZiB0aGF0IGlzIHRoZSBiZXN0IG9wdGlvbi4gSG93 ZXZlciBJJ2QgbGlrZSB0byBoYXZlCj4geW91ciBvcGluaW9uIGFib3V0IHRoZSBhYm92ZSB0b3Bp Y3MgYmVmb3JlIHdvcmtpbmcgdG93YXJkcyB0aGF0Cj4gZGlyZWN0aW9uLCBhbmQgZW5zdXJlIEkg ZnVsbHkgZ3Jhc3AgdGhlIHVzZWZ1bG5lc3Mgb2Yga2VlcGluZyB0aGUKPiBwb2ludGVyLgo+IAo+ IFBvc3Qgc2NyaXB0dW0uIFRoZSB2ZXJ5IGluaXRpYWwgaXNzdWUgdGhhdCBsZWQgdG8gYWxsIHRo aXMgZGlzY3Vzc2lvbgo+IHdoZW4gd3JpdGluZyB0aGUgaG90cGx1Zy1icmlkZ2UgZHJpdmVyIGlz IHRoYXQgdGhlIHNhbXN1bmctZHNpbSBkcml2ZXIKPiB3aWxsIG5vdCBkcm1fYnJpZGdlX2FkZCgp IHVudGlsIGEgRFNJIGRldmljZSBkb2VzIC5hdHRhY2ggdG8gaXQuIEFnYWluLAo+IHNlZSB0aGUg Y29tbWVudHMgYmVmb3JlIGhvdHBsdWdfYnJpZGdlX2RzaV9hdHRhY2goKSBpbiBbMF0gZm9yIGRl dGFpbHMuCj4gSG93ZXZlciBieSByZS1leGFtaW5pbmcgdGhlIGRyaXZlciBmb3IgdGhlIE4tdGgg dGltZSBub3cgZnJvbSBhIG5ldwo+IFBPViwgSSBfdGhpbmtfIHRoaXMgaXMgbm90IGNvcnJlY3Qg YW5kIHBvdGVudGlhbGx5IGVhc3kgdG8gc29sdmUuIEJ1dCB0aGlzIGxlYWRzIHRvIG9uZSBmdW5k YW1lbnRhbCBxdWVzdGlvbjoKClRoZSBxdWVzdGlvbiBpczogc2hvdWxkIGEgRFNJIGhvc3QgYnJp ZGdlIGRyaXZlcjoKCiBBKSB3YWl0IGZvciBhIERTSSBkZXZpY2UgdG8gLmF0dGFjaCBiZWZvcmUg ZHJtX2JyaWRnZV9hZGQoKWluZyBpdHNlbGYsCiAgICBvcgogQikgZHJtX2JyaWRnZV9hZGQoKSBp dHNlbGYgdW5jb25kaXRpb25hbGx5LCBhbmQgbGV0IHRoZSBEU0kgZGV2aWNlCiAgICAuYXR0YWNo IHdoZW5ldmVyIGl0IGhhcHBlbnM/CgpBKSBpcyB3aGF0IG1hbnkgZHJpdmVycyAoSUlSQyB0aGUg bWFqb3JpdHkpIGRvZXMuIEl0IGltcGxpZXMgdGhlIGNhcmQKd2lsbCBub3QgYmUgcG9wdWxhdGVk IHVudGlsIC5hdHRhY2gsIHdoaWNoIGluIHRoZSBob3RwbHVnIGNhc2UgY291bGQKaGFwcGVuIHZl cnkgbGF0ZQoKQikgaXMgZG9uZSBieSBhIGZldyBkcml2ZXJzIGFuZCBhbGxvd3MgdGhlIGNhcmQg dG8gYXBwZWFyIGluIHRoZQpob3RwbHVnIGNhc2Ugd2l0aG91dCB0aGUgZGV2aWNlLCB3aGljaCBp cyBuZWVkZWQgZm9yIGhvdHBsdWcuCgpJIGhhZCB0cmllZCBzaW1wbHkgbW92aW5nIGRybV9icmlk Z2VfYWRkKCkgZnJvbSAuYXR0YWNoIHRvIHByb2JlIGluCnRoZSBzYW1zdW5nLWRzaW0gZHJpdmVy IGluIHRoZSBwYXNlIGJ1dCB0aGF0IHdvdWxkIG5vdCB3b3JrLiBOb3cgSSBkaWQKeWV0IGFub3Ro ZXIgY2hlY2sgYXQgdGhlIGNvZGUgYW5kIEkgc3VzcGVjdCBpdCBjYW4gYmUgZG9uZSB3aXRoIGEg c21hbGwKYWRkaXRpb25hbCBjaGFuZ2UsIGJ1dCBjYW5ub3QgYWNjZXNzIHRoZSBoYXJkd2FyZSB0 byB0ZXN0IGl0IGN1cnJlbnRseS4KCkFuc3dlcmluZyB0aGlzIGxhc3QgcXVlc3Rpb24gbWlnaHQg Y2hhbmdlIGFuZCBzaW1wbGlmeSB0aGUgcmVxdWlyZW1lbnRzCmRpc2N1c3NlZCBpbiB0aGUgKHZl cnkgbGVuZ3RoeSwgc29ycnkgYWJvdXQgdGhhdCkgZGlzY3Vzc2lvbiBhYm92ZS4KCkJlc3QgcmVn YXJkcywKTHVjYQoKLS0gCkx1Y2EgQ2VyZXNvbGksIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5k IEtlcm5lbCBlbmdpbmVlcmluZwpodHRwczovL2Jvb3RsaW4uY29tCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlz dApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A548626057F for ; Mon, 7 Jul 2025 10:13:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.196 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751883224; cv=none; b=Q/MdYVZihBcQLiHN6+ziOLTg7LKaMgZlKqzGOhkJaKDRsE+Xj5Zjpf9AoxO6tXIfsvQxbl0IxTWrhvEspSUYDG+M6JPdgOYVUUff6M8ikgalZFU4JB+Cgiyx6xPliVlJ4/laiREBuoY8veYr7uzHbI3PRFyQuQvOMVASZyeGy5Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751883224; c=relaxed/simple; bh=1T5/s1JnwQ0GhHq+dolYPbnUsq4nV9FPtPSIgX5mbAw=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SnkkF01x59ssH5LeWgil09OtS6UP8jBokXFsfZ6ssuQDe32GpnQiOzdBj5/MnmtsWahmP26HUdqvPJby7P53EV6tYq0bqQ1qtvq2GfmxTOGpnvYIYo1SkKClmQWBeLJJayAIQQp6ni2JEjU76szniWFo5ZRRVKAVYd0gzeRPEqg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=X+eOXd+T; arc=none smtp.client-ip=217.70.183.196 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="X+eOXd+T" Received: by mail.gandi.net (Postfix) with ESMTPSA id 2D9D143AD8; Mon, 7 Jul 2025 10:13:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1751883221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uJ6v8vKMuUeSsnqwBVwgaKkap7Pusx+eOZgrYQrQo6o=; b=X+eOXd+T15l8C8kbXpUVnuaNdaFGDRpJ+yKULX8vRV0l1AXvaW8fuSU0ZRuRnIW3moaeGy APyse81GVkDtqP1O2AdRlStvfuYsLWWSKaSQPmuQ0gTsAK4H/MeaX717HWqBIJEOcoF+CT 1yEVAcQVY4PDCNIbuuaHnDNuBYppsavPaILCh/0JJib3s3vlyVo0VRM3sKfocGkfQJ6ftf /T/9ang/348nZRZCXzk/g6RAbPKl+PT8DegbvXx52PDH2KM4/RNkys3oFg6yV7KxiH5rLq PynTYD/7Q7IW1ARrtSlOREMoUlzh8ViY7llK5Zi7ZfzsTVq1yzBTHl+B7BMUew== Date: Mon, 7 Jul 2025 12:13:19 +0200 From: Luca Ceresoli To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Inki Dae , Jagan Teki , Marek Szyprowski , Jani Nikula , Dmitry Baryshkov , Hui Pu , Thomas Petazzoni , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-amlogic@lists.infradead.org Subject: Re: [PATCH 00/32] drm/mipi-dsi: avoid DSI host drivers to have pointers to DSI devices Message-ID: <20250707121319.1e40a73a@booty> In-Reply-To: <20250707115853.128f2e6f@booty> References: <20250625-drm-dsi-host-no-device-ptr-v1-0-e36bc258a7c5@bootlin.com> <20250707-strange-warm-bear-cb4ee8@houat> <20250707115853.128f2e6f@booty> Organization: Bootlin X-Mailer: Claws Mail 4.3.1 (GTK 3.24.49; x86_64-redhat-linux-gnu) Precedence: bulk X-Mailing-List: linux-sunxi@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 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdefudehfecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepfffhvfevuffkjghfohfogggtgfesthhqredtredtjeenucfhrhhomhepnfhutggrucevvghrvghsohhlihcuoehluhgtrgdrtggvrhgvshholhhisegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpedvgeejjeevhefhiefgffethfdtieffheefvedtgeekteejffdtvedugeeihfdvkeenucffohhmrghinhepfhhrvggvuggvshhkthhophdrohhrghdpkhgvrhhnvghlrdhorhhgpdgsohhothhlihhnrdgtohhmnecukfhppeekjedruddvtddrvddukedrvddtjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekjedruddvtddrvddukedrvddtjedphhgvlhhopegsohhothihpdhmrghilhhfrhhomheplhhutggrrdgtvghrvghsohhlihessghoohhtlhhinhdrtghomhdpnhgspghrtghpthhtohepvdehpdhrtghpthhtohepmhhrihhprghrugeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepmhgrrghrthgvnhdrlhgrnhhkhhhorhhstheslhhinhhugidrihhnthgvlhdrtghomhdprhgtphhtthhopehtiihimhhmvghrmhgrnhhnsehsuhhsvgdruggvpdhrtghpthhtoheprghir hhlihgvugesghhmrghilhdrtghomhdprhgtphhtthhopehsihhmohhnrgesfhhffihllhdrtghhpdhrtghpthhtoheprghnughriigvjhdrhhgrjhgurgesihhnthgvlhdrtghomhdprhgtphhtthhopehnvghilhdrrghrmhhsthhrohhngheslhhinhgrrhhordhorhhgpdhrtghpthhtoheprhhfohhssheskhgvrhhnvghlrdhorhhg X-GND-Sasl: luca.ceresoli@bootlin.com Hi Maxime, ouch, e-mail sent by mistake unfinished and without proof-reading... well, let me continue it below. On Mon, 7 Jul 2025 11:58:53 +0200 Luca Ceresoli wrote: > On Mon, 7 Jul 2025 08:16:49 +0200 > Maxime Ripard wrote: >=20 > > Hi Luca, > >=20 > > On Wed, Jun 25, 2025 at 06:45:04PM +0200, Luca Ceresoli wrote: =20 > > > This series is the first attempt at avoiding DSI host drivers to have > > > pointers to DSI devices (struct mipi_dsi_device), as discussed during= the > > > Linux Plumbers Conference 2024 with Maxime and Dmitry. > > >=20 > > > It is working, but I consider this a draft in order to discuss and > > > challenge the proposed approach. > > >=20 > > > Overall work > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > >=20 > > > This is part of the work towards removal of bridges from a still exis= ting > > > DRM pipeline without use-after-free. The grand plan as discussed in [= 1]. > > > Here's the work breakdown (=E2=9E=9C marks the current series): > > >=20 > > > 1. =E2=80=A6 add refcounting to DRM bridges (struct drm_bridge) > > > (based on devm_drm_bridge_alloc() [0]) > > > A. =E2=9C=94 add new alloc API and refcounting (in v6.16-rc1) > > > B. =E2=9C=94 convert all bridge drivers to new API (now in drm-mi= sc-next) > > > C. =E2=9C=94 kunit tests (now in drm-misc-next) > > > D. =E2=80=A6 add get/put to drm_bridge_add/remove() + attach/deta= ch() > > > and warn on old allocation pattern (under review) > > > E. =E2=80=A6 add get/put on drm_bridge accessors > > > 1. =E2=80=A6 drm_bridge_chain_get_first_bridge() + add a clean= up action > > > 2. =E2=80=A6 drm_bridge_chain_get_last_bridge() > > > 3. drm_bridge_get_prev_bridge() > > > 4. drm_bridge_get_next_bridge() > > > 5. drm_for_each_bridge_in_chain() > > > 6. drm_bridge_connector_init > > > 7. of_drm_find_bridge > > > 8. drm_of_find_panel_or_bridge, *_of_get_bridge > > > F. debugfs improvements > > > 2. handle gracefully atomic updates during bridge removal > > > 3. =E2=9E=9C avoid DSI host drivers to have dangling pointers to DSI= devices > > > (this series) > > > 4. finish the hotplug bridge work, removing the "always-disconnected" > > > connector, moving code to the core and potentially removing the > > > hotplug-bridge itself (this needs to be clarified as points 1-3 a= re > > > developed) > > >=20 > > > [0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7= fc1e629b715ea3d1ba537ef2da95eec > > > [1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6= f2c9c3058@bootlin.com/t/#u > > >=20 > > > Motivation > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > >=20 > > > The motivation for this series is that with hot-pluggable hardware a = DSI > > > device can be disconnected from the DSI host at runtime, and later on > > > reconnected, potentially with a different model having different bus > > > parameters. > > >=20 > > > DSI host drivers currently receive a struct mipi_dsi_device pointer i= n the > > > attach callback and some store it permanently for later access to the= bur > > > format data (lanes, channel, pixel format etc). The stored pointer can > > > become dangling if the device is removed, leading to a use-after-free. > > >=20 > > > Currently the data exchange between DSI host and device happens prima= rily > > > by two means: > > >=20 > > > * the device requests attach, detach and message transfer to the hos= t by > > > calling mipi_dsi_attach/detach/transfer which in turn call the cal= lbacks > > > in struct mipi_dsi_host_ops > > > - for this to work, struct mipi_dsi_device has a pointer to the h= ost: > > > this is OK because the goal is supporting hotplug of the "remot= e" > > > part of the DRM pipeline > > > * the host accesses directly the fields of struct mipi_dsi_device, to > > > which it receives a pointer in the .attach and .detach callbacks > > >=20 > > > The second bullet is the problematic one, which we want to remove. > > >=20 > > > Strategy > > > =3D=3D=3D=3D=3D=3D=3D=3D > > >=20 > > > I devised two possible strategies to address it: > > >=20 > > > 1. change the host ops to not pass a struct mipi_dsi_device, but ins= tead > > > to pass only a copy of the needed information (bus format mainly)= , so > > > the host driver does never access any info from the device > > > =20 > > > 2. let the host get info from the device as needed, but without havi= ng a > > > pointer to it; this is be based on: > > > - storing a __private mipi_dsi_device pointer in struct mipi_dsi= _host > > > - adding getters to the DSI core for the host to query the needed > > > info, e.g. drm_mipi_dsi_host_get_device_lanes(host) (the gette= rs > > > would be allowed to dereference the device pointer) > > >=20 > > > This series implements strategy 1. It does so by adding a .attach_new= host > > > op, which does not take a mipi_dsi_device pointer, and converting mos= t host > > > drivers to it. Once all drivers are converted, the old op can be remo= ved, > > > and .attach_new renamed to .attach. =20 > >=20 > > I don't recall discussing this particular aspect at Plumbers, so sorry > > if we're coming back to the same discussion we had. > >=20 > > I'm not necessarily opposed to changing the MIPI-DSI bus API, but I > > don't think changing the semantics to remove the fact that a particular > > device is connected or not is a good idea. > >=20 > > I would have expected to have bus driver (maybe) take a device pointer > > at attach, and drop it at detach. > >=20 > > Then, when we detect the hotplug of a DSI device, we detach it from its > > parent, and we're done. > >=20 > > What prevents us from using that approach? =20 >=20 > I probably should have done a recap of the whole discussion, so let me > do it now. >=20 > It all starts with one fact: a DSI device can be disconnected and then > a different one connected later on, having a different DSI bus format > (lanes, channel, mode flags, whatever). A detach/attach sequence would > handle that, but only in the simple case when there is a host/device > pair. Let's how consider this topology: > =20 > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =20 > =E2=94=82 DSI bridge =E2=94=82 =20 > =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=90 A =E2=94=82 =E2=94=82 B = =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 > =E2=94=82 DSI host=E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=96=BA= =E2=94=82device host=E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =96=BA=E2=94=82DSI device =E2=94=82 > =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=98 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94= =94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=98 > =20 > Here link A is always connected, link B is hot-pluggable. When the tail > device is removed and a different one plugged, a detach/attach sequence > can update the bus format on the DSI bridge, but then the DSI bridge > cannot update the format on the first host without faking a > detach/attach that does not map a real event. >=20 > The above topology is probably not common, but it is exactly what the > hotplug-bridge introduces [0]. Whether the hotplug-bridge will have to > eventually exist or not to support hotplug is still to be defined, but > regardless there is another problematic aspect. >=20 > The second problematic aspect is that several DSI host drivers will not > even drm_bridge_add() until they have an attached DSI device. One such > example is samsung-dsim, which calls drm_bridge_add() > in samsung_dsim_host_attach(). When such a driver implements the first > DSI host, the DSI bridge must register a DSI device before the DRM card > can be instantiated. See the lengthy comment before > hotplug_bridge_dsi_attach() in [0] for more gory details, but the > outcome is that the hotplug-bridge needs to attach a DSI device with > a fake format once initially just to let the DRM card probe, and the > detach and reattach with the correct format once an actual DSI device > is connected at the tail. >=20 > [0] https://lore.kernel.org/all/20240917-hotplug-drm-bridge-v4-4-bc4dfee6= 1be6@bootlin.com/ >=20 > The above would be improved if the DSI host API provided a way to > notify to the host about a bus format change, which is however not > present currently. >=20 > The naive solution would be adding a new DSI host op: >=20 > struct mipi_dsi_host_ops { > int (*attach)(struct mipi_dsi_host *host, > struct mipi_dsi_device *dsi); > int (*detach)(struct mipi_dsi_host *host, > struct mipi_dsi_device *dsi); > + int (*bus_fmt_changed)(struct mipi_dsi_host *host, > + struct mipi_dsi_device *dsi); > ssize_t (*transfer)(struct mipi_dsi_host *host, > const struct mipi_dsi_msg *msg); > }; >=20 > This would allow reduce the current sequence: > 1. attach with dummy format (no tail device yet) > 2. fake detach > 3. attach >=20 > with: > 1. attach with dummy format (no tail device yet) > 2. update format >=20 > Adding such a new op would be part of chapter 4 of this work, being it > quite useless without hotplug. >=20 > However while reasoning about this I noticed the DSI host drivers peek > into the struct mipi_dsi_device fields to read the format, so there is > no sort of isolation between host and device. Introducing a struct to > contain all the format fields looked like a good improvement in terms > of code organization. >=20 > Yet another aspect is that several host drivers keep a pointer to the > device, and thus in case of format change in the DSI device they might > be reading different fields at different moments, ending up with an > inconsistent format. >=20 > The above considerations, which are all partially overlapped, led me to > the idea of introducing a struct to exchange a DSI bus format, to be > exchanged as a whole ("atomically") between host and device. What's > your opinion about introducing such a struct? >=20 > The second aspect of this series is not passing pointers, and that's > the core topic you questioned. I realize it is not strictly necessary > to reach the various goals discussed in this e-mail. The work I'm doing > on the drm_bridge struct is actually a way to store a pointer while > avoiding use-after-free, so that can obviously be done for a simpler > scenario such as DSI host-device. However I thought not passing a > pointer would be a more radical solution: if a driver receives no > pointer, then it cannot by mistake keep it stored when it shouldn't, > maybe in a rare case within a complex driver where it is hard to spot. >=20 > I'll be OK to change the approach and keep the pointer passed in the > attach/detach ops, if that is the best option. However I'd like to have > your opinion about the above topics before working towards that > direction, and ensure I fully grasp the usefulness of keeping the > pointer. >=20 > Post scriptum. The very initial issue that led to all this discussion > when writing the hotplug-bridge driver is that the samsung-dsim driver > will not drm_bridge_add() until a DSI device does .attach to it. Again, > see the comments before hotplug_bridge_dsi_attach() in [0] for details. > However by re-examining the driver for the N-th time now from a new > POV, I _think_ this is not correct and potentially easy to solve. But thi= s leads to one fundamental question: The question is: should a DSI host bridge driver: A) wait for a DSI device to .attach before drm_bridge_add()ing itself, or B) drm_bridge_add() itself unconditionally, and let the DSI device .attach whenever it happens? A) is what many drivers (IIRC the majority) does. It implies the card will not be populated until .attach, which in the hotplug case could happen very late B) is done by a few drivers and allows the card to appear in the hotplug case without the device, which is needed for hotplug. I had tried simply moving drm_bridge_add() from .attach to probe in the samsung-dsim driver in the pase but that would not work. Now I did yet another check at the code and I suspect it can be done with a small additional change, but cannot access the hardware to test it currently. Answering this last question might change and simplify the requirements discussed in the (very lengthy, sorry about that) discussion above. Best regards, Luca --=20 Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com