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 BA713C5DF97 for ; Wed, 26 Aug 2026 11:04:10 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GhOsbqSCK9/0Jwu2vMcrWsB/54EDDhS+c25jagDgrWs=; b=KqRuRQ6TOMAaV9 p+lW2svnFEhYrjLiamsrrKTTtOa2hjBJSOgmKEBHrw9Bfcuz1BaKo0A4PqJiUF7vw1ua7HhASX3ev MN92dSxim+ClhFrfYKnsi1EPD+nEXwSTu0Dcr0zrJjrfbTcxr06k/3f1EgiJZlUcpyeN+y/7Lc7vP LEcKgjn/+q58CLPxj6sMzDafePV8y9qS+d4Jqq5lbRpHjcsuBCp2Yj+VMJZ3rWwJGWrfWKd1UfVxf VxvMPKRe7ZlJamDfIG8tudQWGgbvHEDrKvWCcKl6WBN7PFmLk0UtADe+TGj89yLbtTJ6z++ODa6ol vZ5uhXER0KhFHHLiErow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wzBQQ-00000002KjU-0ud2; Wed, 26 Aug 2026 11:04:10 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wzBQO-00000002KjM-1uwm for linux-i3c@lists.infradead.org; Wed, 26 Aug 2026 11:04:08 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id EAC9442A87; Wed, 26 Aug 2026 11:04:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8FF461F000E9; Wed, 26 Aug 2026 11:04:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787742247; bh=/silV9NurI0YAP0vORMsQqp5NaleRhZHq0G5SYodBr0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=XtDzHPewJM68gOvDGKWheJkWPvXOwoaPxrqyFDk8UPbDMNlMAeVRgpmuVMIqgKsTQ 1UOerYx3BDjSvabZjXYj9lwfV/PUg5vVBZ7vuYwSTACdazuJjOPQ1KdK/xDpfL/tem E0KFxtD6vlMoJciECmRiHw9ErmFlBaZT60uCa8irtTcawXPq2O3s1SBZQtiRPScttq ggURtXvX/VYWgy0nK41qJdLIQcd2+tLzPaTaQRitR+3nOxca3F7BcSURGEEAkIXqrN 6fcckowtbWW7LwtSOIpJdezvowjGUcmljf9FAQKFCPscSE9MM4Y43H1uKPf2vCIjH0 Jzs3S1QjXpsrQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v16 6/8] i3c: hub: Add support for the I3C interface in the I3C hub To: "Lakshay Piplani" Cc: Frank.Li@kernel.org, devicetree@vger.kernel.org, conor+dt@kernel.org, robh@kernel.org, linux-i3c@lists.infradead.org, "Alexandre Belloni" In-Reply-To: <20260826103819.1614843-7-lakshay.piplani@nxp.com> References: <20260826103819.1614843-1-lakshay.piplani@nxp.com> <20260826103819.1614843-7-lakshay.piplani@nxp.com> Date: Wed, 26 Aug 2026 11:04:07 +0000 Message-Id: <20260826110407.8FF461F000E9@smtp.kernel.org> X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0NyaXRpY2FsXSBGcmVlaW5nIGBp M2NfaHViX2Rldl9kYXRhYCB3aGlsZSBpdCBtYXkgc3RpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUg cGFyZW50IGNvbnRyb2xsZXIncyBhc3luY2hyb25vdXMgSUJJIHBhdGggbGVhZHMgdG8gYSBVc2Ut QWZ0ZXItRnJlZS4KLSBbSGlnaF0gRHluYW1pYyBkb3duc3RyZWFtIGRldmljZXMgZGlzY292ZXJl ZCB2aWEgREFBIGFyZSBlcnJvbmVvdXNseSByZWdpc3RlcmVkIHRvIHRoZSBwYXJlbnQgY29udHJv bGxlcidzIGJ1cywgbWFraW5nIHRoZW0gY29tcGxldGVseSB1bnJlYWNoYWJsZSBmb3Igc3Vic2Vx dWVudCB0cmFuc2ZlcnMgb24gcG9ydC1zd2l0Y2hpbmcgaHVicy4KLSBbSGlnaF0gUmVzZXJ2ZWQg YWRkcmVzcyBzbG90cyBvbiB0aGUgcGFyZW50IGJ1cyBhcmUgcGVybWFuZW50bHkgbGVha2VkIHdo ZW4gdGhlIGh1YiBkcml2ZXIgaXMgcmVtb3ZlZC4KLSBbTWVkaXVtXSBGb3J3YXJkaW5nIGJyb2Fk Y2FzdCBDQ0NzIHRvIHRoZSBwYXJlbnQgY29udHJvbGxlciBicmVha3MgdmlydHVhbCBidXMgaXNv bGF0aW9uIGJ5IHVuaW50ZW50aW9uYWxseSBhZmZlY3RpbmcgdGhlIGVudGlyZSBwYXJlbnQgYnVz LgotLQoKY29tbWl0IDk0YzYyY2U1NmRjYzlkNDYxNzQ5YWRjM2RiMTBhODA2MTg2NWRjOWIKQXV0 aG9yOiBMYWtzaGF5IFBpcGxhbmkgPGxha3NoYXkucGlwbGFuaUBueHAuY29tPgoKICAgIGkzYzog aHViOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEkzQyBpbnRlcmZhY2UgaW4gdGhlIEkzQyBodWIKICAg IAogICAgQWRkIHZpcnR1YWwgSTNDIGJ1cyBzdXBwb3J0IGZvciB0aGUgaHViIGFuZCBwcm92aWRl IGludGVyZmFjZSB0byBlbmFibGUKICAgIG9yIGRpc2FibGUgZG93bnN0cmVhbSBwb3J0cy4KCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTNjL2h1Yi5jIGIvZHJpdmVycy9pM2MvaHViLmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLjZmNTIyNzIxNWFlMjIKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9pM2MvaHViLmMKPiBAQCAtMCwwICsxLDc5OCBA QApbIC4uLiBdCj4gK3N0YXRpYyB2b2lkIGkzY19odWJfZGV0YWNoX2kzY19kZXYoc3RydWN0IGkz Y19kZXZfZGVzYyAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgaTNjX2h1Yl9kZXZfZGF0YSAqZGF0YSA9 IGkzY19kZXZfZ2V0X21hc3Rlcl9kYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaTNjX21hc3Rlcl9jb250 cm9sbGVyICpwYXJlbnQ7Cj4gKwo+ICsJaWYgKCFkYXRhKQo+ICsJCXJldHVybjsKPiArCj4gKwlw YXJlbnQgPSBpM2NfZGV2X2dldF9tYXN0ZXIoJmRhdGEtPnBhcmVudF9kZXNjKTsKPiArCj4gKwkv Kgo+ICsJICogcGFyZW50X2Rlc2MuaWJpIHNob3VsZCBhbHJlYWR5IGJlIGNsZWFyZWQgYnkgaTNj X2h1Yl9mcmVlX2liaSgpCj4gKwkgKiBiZWZvcmUgd2UgZ2V0IGhlcmUuIElmIGl0IGlzIHN0aWxs IHNldCwgdGhlIGtmcmVlKGRhdGEpIGJlbG93IGZyZWVzCj4gKwkgKiBhIGRlc2NyaXB0b3IgdGhl IHBhcmVudCBjb250cm9sbGVyIGNhbiBzdGlsbCByZWFjaCB2aWEgdW4tZmx1c2hlZAo+ICsJICog YXN5bmNocm9ub3VzIElCSSB3b3JrICh1c2UtYWZ0ZXItZnJlZSwgbm90IGp1c3QgYSBsZWFrKS4K PiArCSAqLwo+ICsJV0FSTl9PTl9PTkNFKGRhdGEtPnBhcmVudF9kZXNjLmliaSk7Cj4gKwo+ICsJ aWYgKHBhcmVudCkgewo+ICsJCWkzY19idXNfbWFpbnRlbmFuY2VfbG9jaygmcGFyZW50LT5idXMp Owo+ICsJCWkzY19tYXN0ZXJfZGV0YWNoX2kzY19kZXZfY29udHJvbGxlcl9sb2NrZWQoJmRhdGEt PnBhcmVudF9kZXNjKTsKPiArCQlpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jaygmcGFyZW50LT5i dXMpOwo+ICsJfQo+ICsKPiArCWkzY19kZXZfc2V0X21hc3Rlcl9kYXRhKGRldiwgTlVMTCk7Cj4g KwltdXRleF9kZXN0cm95KCZkYXRhLT5wYXJlbnRfZGVzYy5pYmlfbG9jayk7Cj4gKwlrZnJlZShk YXRhKTsKCltTZXZlcml0eTogQ3JpdGljYWxdCkRvZXMgdGhpcyBjb2RlIGludHJvZHVjZSBhIHVz ZS1hZnRlci1mcmVlIHdoZW4gSUJJIGlzIHN0aWxsIGFjdGl2ZT8KCklmIGRhdGEtPnBhcmVudF9k ZXNjLmliaSBpcyBub3QgTlVMTCwgYXMgZXhwbGljaXRseSBjaGVja2VkIGJ5IHRoZQpXQVJOX09O X09OQ0UsIHRoZSBwYXJlbnQgY29udHJvbGxlcidzIGFzeW5jaHJvbm91cyBJQkkgcGF0aCBtYXkg c3RpbGwKaGF2ZSBhIHdvcmsgaXRlbSBxdWV1ZWQgcmVmZXJlbmNpbmcgZGF0YS0+cGFyZW50X2Rl c2MuIEJ5IHVuY29uZGl0aW9uYWxseQpjYWxsaW5nIGtmcmVlKGRhdGEpLCB3ZSBhbGxvdyB0aGUg cGVuZGluZyBhc3luYyB3b3JrIHRvIGRlcmVmZXJlbmNlCmZyZWVkIG1lbW9yeSB3aGVuIGl0IGV4 ZWN1dGVzLgoKPiArfQo+ICsKPiArLyoqCj4gKyAqIGkzY19odWJfZG9fZGFhKCkgLSBQZXJmb3Jt IERBQSB2aWEgaHViIHBvcnQKPiArICogQGh1YjogSHViIGluc3RhbmNlCj4gKyAqIEBjb250cm9s bGVyOiBWaXJ0dWFsIGNvbnRyb2xsZXIgZm9yIGEgaHViIHBvcnQKPiArICoKPiArICogRW5hYmxl cyB0aGUgcG9ydCBjb25uZWN0aW9uLCBwZXJmb3JtcyBEQUEgb24gdGhlIHBhcmVudCBjb250cm9s bGVyLAo+ICsgKiB0aGVuIGRpc2FibGVzIHRoZSBjb25uZWN0aW9uLgo+ICsgKi8KPiArc3RhdGlj IGludCBpM2NfaHViX2RvX2RhYShzdHJ1Y3QgaTNjX2h1YiAqaHViLAo+ICsJCQkgIHN0cnVjdCBp M2NfbWFzdGVyX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCj4gK3sKPiArCXN0cnVjdCBpM2NfbWFz dGVyX2NvbnRyb2xsZXIgKnBhcmVudDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFodWIgfHwg IWh1Yi0+aHViX2RldikKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlwYXJlbnQgPSBpM2Nf ZGV2X2dldF9tYXN0ZXIoaHViLT5odWJfZGV2LT5kZXNjKTsKPiArCWlmICghcGFyZW50KQo+ICsJ CXJldHVybiAtRU5PREVWOwo+ICsKPiArCS8qCj4gKwkgKiBMb2NrIG9yZGVyOiBodWIgcm91dGlu ZyBtdXRleCBiZWZvcmUgdGhlIHBhcmVudCBidXMgbG9jayAodGFrZW4gaGVyZQo+ICsJICogaW5z aWRlIGkzY19tYXN0ZXJfZG9fZGFhKCkpLiBUaGUgZGVwdGgta2V5ZWQgbG9ja2RlcCBjbGFzc2Vz IGFib3ZlCj4gKwkgKiBrZWVwIHRoaXMgbmVzdGluZyBhY3ljbGljIHdoZW4gdGhlIHBhcmVudCBp cyBpdHNlbGYgYSBodWIuCj4gKwkgKi8KPiArCW11dGV4X2xvY2soJmh1Yi0+bG9jayk7Cj4gKwlp M2NfaHViX2VuYWJsZV9wb3J0KGNvbnRyb2xsZXIpOwo+ICsKPiArCS8qCj4gKwkgKiBEb3duc3Ry ZWFtIGRldmljZXMgcmVhY2hhYmxlIHRocm91Z2ggaHViIHRhcmdldC1wb3J0IHJvdXRlcyBzaGFy ZSB0aGUKPiArCSAqIHBhcmVudCBjb250cm9sbGVyJ3MgSTNDIGFkZHJlc3Mgc3BhY2UuIFRoZSBo dWIgZ2F0ZXMgYWNjZXNzIHRvIGEKPiArCSAqIHRhcmdldC1wb3J0IG5ldHdvcmssIGJ1dCBpdCBk b2VzIG5vdCBjcmVhdGUgYW4gaW5kZXBlbmRlbnQgZHluYW1pYwo+ICsJICogYWRkcmVzcyBkb21h aW4gcGVyIHZpcnR1YWwgYnVzLgo+ICsJICoKPiArCSAqIFJ1biBEQUEgb24gdGhlIHBhcmVudCBj b250cm9sbGVyIHNvIGR5bmFtaWMgYWRkcmVzc2VzIHJlbWFpbiB1bmlxdWUKPiArCSAqIGFjcm9z cyBhbGwgZG93bnN0cmVhbSBkZXZpY2VzLCBldmVuIHdoZW4gdGhleSBhcmUgYmVoaW5kIGRpZmZl cmVudAo+ICsJICogdGFyZ2V0IHBvcnRzLgo+ICsJICovCj4gKwlyZXQgPSBpM2NfbWFzdGVyX2Rv X2RhYShwYXJlbnQpOwoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIGRlbGVnYXRpbmcgREFBIHRvIHRo ZSBwaHlzaWNhbCBwYXJlbnQgY29udHJvbGxlciBicmVhayByZWFjaGFiaWxpdHkKZm9yIGRvd25z dHJlYW0gZGV2aWNlcz8KCldoZW4gZGV2aWNlcyByZXNwb25kIHRvIEVOVERBQSwgdGhleSBhcmUg aW5zdGFudGlhdGVkIG9uIHRoZSBwYXJlbnQgYnVzCnJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGJ1 cy4gSWYgZHJpdmVycyBzdWJzZXF1ZW50bHkgaW5pdGlhdGUgdHJhbnNmZXJzLCB0aGV5CnVzZSB0 aGUgcGFyZW50IGNvbnRyb2xsZXIncyB0cmFuc2ZlciBvcGVyYXRpb25zIGRpcmVjdGx5LCBieXBh c3NpbmcgdGhlCmh1YidzIGkzY19odWJfbWFzdGVyX3ByaXZfeGZlcnMoKS4gQXMgYSByZXN1bHQs IHRoZSBodWIgdGFyZ2V0IHBvcnQgaXMKbmV2ZXIgZW5hYmxlZCBkdXJpbmcgdGhlIHRyYW5zZmVy LCBsZWF2aW5nIHRoZXNlIGRvd25zdHJlYW0gZGV2aWNlcwpwZXJtYW5lbnRseSB1bnJlYWNoYWJs ZS4KCj4gKwlpM2NfaHViX2Rpc2FibGVfcG9ydChjb250cm9sbGVyKTsKPiArCW11dGV4X3VubG9j aygmaHViLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9ClsgLi4uIF0KPiArc3RhdGlj IGludCBpM2NfaHViX3NlbmRfY2NjX2NtZChzdHJ1Y3QgaTNjX2h1YiAqaHViLAo+ICsJCQkJc3Ry dWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqY29udHJvbGxlciwKPiArCQkJCXN0cnVjdCBpM2Nf Y2NjX2NtZCAqY21kKQo+ICt7Cj4gKwlzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICpwYXJl bnQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghaHViIHx8ICFodWItPmh1Yl9kZXYpCj4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJcGFyZW50ID0gaTNjX2Rldl9nZXRfbWFzdGVyKGh1Yi0+ aHViX2Rldi0+ZGVzYyk7Cj4gKwlpZiAoIXBhcmVudCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiAr Cj4gKwltdXRleF9sb2NrKCZodWItPmxvY2spOwo+ICsJaTNjX2h1Yl9lbmFibGVfcG9ydChjb250 cm9sbGVyKTsKPiArCXJldCA9IGkzY19tYXN0ZXJfc2VuZF9jY2NfY21kKHBhcmVudCwgY21kKTsK CltTZXZlcml0eTogTWVkaXVtXQpDYW4gZm9yd2FyZGluZyB1bmZpbHRlcmVkIGJyb2FkY2FzdCBD Q0NzIHRvIHRoZSBwYXJlbnQgY29udHJvbGxlciBicmVhawp2aXJ0dWFsIGJ1cyBpc29sYXRpb24/ CgpJZiBhIGRyaXZlciBvbiBhIHNwZWNpZmljIHZpcnR1YWwgYnVzIGlzc3VlcyBicm9hZGNhc3Qg Y29tbWFuZHMgKHN1Y2ggYXMKU0VUTVJMLCBTRVRNV0wsIG9yIEVORUMpLCB0aGlzIGZvcndhcmRz IHRoZW0gdG8gdGhlIHBhcmVudCBjb250cm9sbGVyIHdoaWNoCmJyb2FkY2FzdHMgdGhlbSBnbG9i YWxseS4gVGhpcyB3aWxsIHVuaW50ZW50aW9uYWxseSBhbHRlciB0aGUgY29uZmlndXJhdGlvbgpv ciBldmVudCBzdGF0ZSBvZiBhbGwgcGVlciBkZXZpY2VzIG9uIHRoZSBwYXJlbnQgYnVzIGFuZCBv dGhlciBvcGVuIHRhcmdldApwb3J0cy4KCj4gKwlpM2NfaHViX2Rpc2FibGVfcG9ydChjb250cm9s bGVyKTsKPiArCW11dGV4X3VubG9jaygmaHViLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ ICt9ClsgLi4uIF0KPiAraW50IGkzY19odWJfcmVzZXJ2ZV9wYXJlbnRfYWRkcnNsb3RzX2Zyb21f ZHQoc3RydWN0IGkzY19odWJfY29udHJvbGxlciAqaHViYywKPiArCQkJCQkgICAgIHN0cnVjdCBk ZXZpY2Vfbm9kZSAqbm9kZSkKPiArewo+ICsJc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAq cGFyZW50ID0gaHViYy0+cGFyZW50Owo+ICsJZW51bSBpM2NfYWRkcl9zbG90X3N0YXR1cyBzdGF0 dXM7Cj4gKwl1MzIgYXNzaWduZWRfYWRkcjsKPiArCXUzMiByZWdbM107Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCWlmICghcGFyZW50IHx8ICFub2RlKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAr CWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlX3Njb3BlZChub2RlLCBjaGlsZCkgewo+ ICsJCS8qCj4gKwkJICogT25seSBjb25zaWRlciBhZGRyZXNzYWJsZSBidXMgbm9kZXM6IGEgdmFs aWQgInJlZyIgaXMKPiArCQkgKiByZXF1aXJlZCB0byBkZXNjcmliZSBhIGRldmljZSwgYnV0IGl0 cyBzdGF0aWMtYWRkcmVzcyB2YWx1ZQo+ICsJCSAqIGRvZXMgbm90IGFmZmVjdCB0aGUgcmVzZXJ2 YXRpb24gYmVsb3cuCj4gKwkJICovCj4gKwkJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF92YXJpYWJs ZV91MzJfYXJyYXkoY2hpbGQsICJyZWciLCByZWcsIDEsIDMpOwo+ICsJCWlmIChyZXQgPCAwKQo+ ICsJCQljb250aW51ZTsKPiArCj4gKwkJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoY2hpbGQs ICJhc3NpZ25lZC1hZGRyZXNzIiwgJmFzc2lnbmVkX2FkZHIpOwo+ICsJCWlmIChyZXQpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQkvKiBTa2lwIG5vZGVzIHdpdGhvdXQgYSB1c2FibGUgZHluYW1p YyBhZGRyZXNzLiAqLwo+ICsJCWlmICghYXNzaWduZWRfYWRkciB8fCBhc3NpZ25lZF9hZGRyID4g STNDX01BWF9BRERSKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaTNjX2J1c19tYWludGVuYW5j ZV9sb2NrKCZwYXJlbnQtPmJ1cyk7Cj4gKwkJc3RhdHVzID0gaTNjX2J1c19nZXRfYWRkcl9zbG90 X3N0YXR1cygmcGFyZW50LT5idXMsCj4gKwkJCQkJCSAgICAgIGFzc2lnbmVkX2FkZHIpOwo+ICsJ CWlmIChzdGF0dXMgPT0gSTNDX0FERFJfU0xPVF9GUkVFKQo+ICsJCQlpM2NfYnVzX3NldF9hZGRy X3Nsb3Rfc3RhdHVzKCZwYXJlbnQtPmJ1cywKPiArCQkJCQkJICAgICBhc3NpZ25lZF9hZGRyLAo+ ICsJCQkJCQkgICAgIEkzQ19BRERSX1NMT1RfSTNDX0RFVik7CgpbU2V2ZXJpdHk6IEhpZ2hdCkRv ZXMgdGhpcyBjb2RlIHBlcm1hbmVudGx5IGxlYWsgcGFyZW50IGJ1cyBhZGRyZXNzIHNsb3RzIHdo ZW4gdGhlIGh1YiBkcml2ZXIKaXMgcmVtb3ZlZD8KClRoZSBhZGRyZXNzIHNsb3RzIGluIHRoZSBw YXJlbnQgYnVzIHN0YXRlIGFyZSBzZXQgdG8gSTNDX0FERFJfU0xPVF9JM0NfREVWLgpIb3dldmVy LCB0aGVyZSBhcHBlYXJzIHRvIGJlIG5vIGNvcnJlc3BvbmRpbmcgdGVhcmRvd24gbWVjaGFuaXNt IHByb3ZpZGVkCnRvIHJldmVydCB0aGVzZSBzbG90cyB0byBJM0NfQUREUl9TTE9UX0ZSRUUgd2hl biB0aGUgdmlydHVhbCBjb250cm9sbGVycwphcmUgZGVzdHJveWVkIG9yIHRoZSBodWIgZHJpdmVy IGlzIHVuYm91bmQuIFRoaXMgbGVhayBjYW4gZXZlbnR1YWxseSBleGhhdXN0CnRoZSBhZGRyZXNz IHNwYWNlIGFuZCBjYXVzZSBmYWlsdXJlcyBmb3Igc3Vic2VxdWVudCBkZXZpY2VzLgoKPiArCQlp M2NfYnVzX21haW50ZW5hbmNlX3VubG9jaygmcGFyZW50LT5idXMpOwo+ICsJfQo+ICsJcmV0dXJu IDA7Cj4gK30KCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMv cGF0Y2hzZXQvMjAyNjA4MjYxMDM4MTkuMTYxNDg0My0xLWxha3NoYXkucGlwbGFuaUBueHAuY29t P3BhcnQ9NgoKLS0gCmxpbnV4LWkzYyBtYWlsaW5nIGxpc3QKbGludXgtaTNjQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1pM2MK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 212273E5EFD for ; Wed, 26 Aug 2026 11:04:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787742256; cv=none; b=HaRj+1Mf/4g5vqA1kWDERYIDX+2kFXZIFk2FZTxw/hcUC18RACTgNJDlIO39Vi9rpSuUMQD5sphuPhbxI8sprjfC9dseEtnTZKoIky4I6oRkIphdfmsIVmL+w2AVTzl+ACpmquBKXZ/SpSAoCAnUi8ZFjEF2meWUSj885lFKy5k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787742256; c=relaxed/simple; bh=II//pgk7K5GccKj3wbSHRaa+A+8ns91UAgdqDPxa1+c=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=Uoia5zwdw1FkuFySamU31vo9WptFotIDejAnw7aEW50eO23EM+wuJDkBfsK3Ks2PmbiopVHgTi9e7sC0YKBqJvBSrpNDU6AMvEnzb3rBNIMO2jxCxt7qUML799hpmSffuTnJ6MZmtt4Sbp7aDvsoiluqaGFN1EV9BXWFCT/SOgE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XtDzHPew; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XtDzHPew" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8FF461F000E9; Wed, 26 Aug 2026 11:04:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787742247; bh=/silV9NurI0YAP0vORMsQqp5NaleRhZHq0G5SYodBr0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=XtDzHPewJM68gOvDGKWheJkWPvXOwoaPxrqyFDk8UPbDMNlMAeVRgpmuVMIqgKsTQ 1UOerYx3BDjSvabZjXYj9lwfV/PUg5vVBZ7vuYwSTACdazuJjOPQ1KdK/xDpfL/tem E0KFxtD6vlMoJciECmRiHw9ErmFlBaZT60uCa8irtTcawXPq2O3s1SBZQtiRPScttq ggURtXvX/VYWgy0nK41qJdLIQcd2+tLzPaTaQRitR+3nOxca3F7BcSURGEEAkIXqrN 6fcckowtbWW7LwtSOIpJdezvowjGUcmljf9FAQKFCPscSE9MM4Y43H1uKPf2vCIjH0 Jzs3S1QjXpsrQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v16 6/8] i3c: hub: Add support for the I3C interface in the I3C hub Reply-To: sashiko-reviews@lists.linux.dev To: "Lakshay Piplani" Cc: Frank.Li@kernel.org, devicetree@vger.kernel.org, conor+dt@kernel.org, robh@kernel.org, linux-i3c@lists.infradead.org, "Alexandre Belloni" In-Reply-To: <20260826103819.1614843-7-lakshay.piplani@nxp.com> References: <20260826103819.1614843-1-lakshay.piplani@nxp.com> <20260826103819.1614843-7-lakshay.piplani@nxp.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 26 Aug 2026 11:04:07 +0000 Message-Id: <20260826110407.8FF461F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 4 potential issue(= s) to consider: - [Critical] Freeing `i3c_hub_dev_data` while it may still be referenced by= the parent controller's asynchronous IBI path leads to a Use-After-Free. - [High] Dynamic downstream devices discovered via DAA are erroneously regi= stered to the parent controller's bus, making them completely unreachable f= or subsequent transfers on port-switching hubs. - [High] Reserved address slots on the parent bus are permanently leaked wh= en the hub driver is removed. - [Medium] Forwarding broadcast CCCs to the parent controller breaks virtua= l bus isolation by unintentionally affecting the entire parent bus. -- commit 94c62ce56dcc9d461749adc3db10a8061865dc9b Author: Lakshay Piplani i3c: hub: Add support for the I3C interface in the I3C hub =20 Add virtual I3C bus support for the hub and provide interface to enable or disable downstream ports. > diff --git a/drivers/i3c/hub.c b/drivers/i3c/hub.c > new file mode 100644 > index 0000000000000..6f5227215ae22 > --- /dev/null > +++ b/drivers/i3c/hub.c > @@ -0,0 +1,798 @@ [ ... ] > +static void i3c_hub_detach_i3c_dev(struct i3c_dev_desc *dev) > +{ > + struct i3c_hub_dev_data *data =3D i3c_dev_get_master_data(dev); > + struct i3c_master_controller *parent; > + > + if (!data) > + return; > + > + parent =3D i3c_dev_get_master(&data->parent_desc); > + > + /* > + * parent_desc.ibi should already be cleared by i3c_hub_free_ibi() > + * before we get here. If it is still set, the kfree(data) below frees > + * a descriptor the parent controller can still reach via un-flushed > + * asynchronous IBI work (use-after-free, not just a leak). > + */ > + WARN_ON_ONCE(data->parent_desc.ibi); > + > + if (parent) { > + i3c_bus_maintenance_lock(&parent->bus); > + i3c_master_detach_i3c_dev_controller_locked(&data->parent_desc); > + i3c_bus_maintenance_unlock(&parent->bus); > + } > + > + i3c_dev_set_master_data(dev, NULL); > + mutex_destroy(&data->parent_desc.ibi_lock); > + kfree(data); [Severity: Critical] Does this code introduce a use-after-free when IBI is still active? If data->parent_desc.ibi is not NULL, as explicitly checked by the WARN_ON_ONCE, the parent controller's asynchronous IBI path may still have a work item queued referencing data->parent_desc. By unconditionally calling kfree(data), we allow the pending async work to dereference freed memory when it executes. > +} > + > +/** > + * i3c_hub_do_daa() - Perform DAA via hub port > + * @hub: Hub instance > + * @controller: Virtual controller for a hub port > + * > + * Enables the port connection, performs DAA on the parent controller, > + * then disables the connection. > + */ > +static int i3c_hub_do_daa(struct i3c_hub *hub, > + struct i3c_master_controller *controller) > +{ > + struct i3c_master_controller *parent; > + int ret; > + > + if (!hub || !hub->hub_dev) > + return -ENODEV; > + > + parent =3D i3c_dev_get_master(hub->hub_dev->desc); > + if (!parent) > + return -ENODEV; > + > + /* > + * Lock order: hub routing mutex before the parent bus lock (taken here > + * inside i3c_master_do_daa()). The depth-keyed lockdep classes above > + * keep this nesting acyclic when the parent is itself a hub. > + */ > + mutex_lock(&hub->lock); > + i3c_hub_enable_port(controller); > + > + /* > + * Downstream devices reachable through hub target-port routes share the > + * parent controller's I3C address space. The hub gates access to a > + * target-port network, but it does not create an independent dynamic > + * address domain per virtual bus. > + * > + * Run DAA on the parent controller so dynamic addresses remain unique > + * across all downstream devices, even when they are behind different > + * target ports. > + */ > + ret =3D i3c_master_do_daa(parent); [Severity: High] Does delegating DAA to the physical parent controller break reachability for downstream devices? When devices respond to ENTDAA, they are instantiated on the parent bus rather than the virtual bus. If drivers subsequently initiate transfers, th= ey use the parent controller's transfer operations directly, bypassing the hub's i3c_hub_master_priv_xfers(). As a result, the hub target port is never enabled during the transfer, leaving these downstream devices permanently unreachable. > + i3c_hub_disable_port(controller); > + mutex_unlock(&hub->lock); > + > + return ret; > +} [ ... ] > +static int i3c_hub_send_ccc_cmd(struct i3c_hub *hub, > + struct i3c_master_controller *controller, > + struct i3c_ccc_cmd *cmd) > +{ > + struct i3c_master_controller *parent; > + int ret; > + > + if (!hub || !hub->hub_dev) > + return -ENODEV; > + > + parent =3D i3c_dev_get_master(hub->hub_dev->desc); > + if (!parent) > + return -ENODEV; > + > + mutex_lock(&hub->lock); > + i3c_hub_enable_port(controller); > + ret =3D i3c_master_send_ccc_cmd(parent, cmd); [Severity: Medium] Can forwarding unfiltered broadcast CCCs to the parent controller break virtual bus isolation? If a driver on a specific virtual bus issues broadcast commands (such as SETMRL, SETMWL, or ENEC), this forwards them to the parent controller which broadcasts them globally. This will unintentionally alter the configuration or event state of all peer devices on the parent bus and other open target ports. > + i3c_hub_disable_port(controller); > + mutex_unlock(&hub->lock); > + > + return ret; > +} [ ... ] > +int i3c_hub_reserve_parent_addrslots_from_dt(struct i3c_hub_controller *= hubc, > + struct device_node *node) > +{ > + struct i3c_master_controller *parent =3D hubc->parent; > + enum i3c_addr_slot_status status; > + u32 assigned_addr; > + u32 reg[3]; > + int ret; > + > + if (!parent || !node) > + return -ENODEV; > + > + for_each_available_child_of_node_scoped(node, child) { > + /* > + * Only consider addressable bus nodes: a valid "reg" is > + * required to describe a device, but its static-address value > + * does not affect the reservation below. > + */ > + ret =3D of_property_read_variable_u32_array(child, "reg", reg, 1, 3); > + if (ret < 0) > + continue; > + > + ret =3D of_property_read_u32(child, "assigned-address", &assigned_addr= ); > + if (ret) > + continue; > + > + /* Skip nodes without a usable dynamic address. */ > + if (!assigned_addr || assigned_addr > I3C_MAX_ADDR) > + continue; > + > + i3c_bus_maintenance_lock(&parent->bus); > + status =3D i3c_bus_get_addr_slot_status(&parent->bus, > + assigned_addr); > + if (status =3D=3D I3C_ADDR_SLOT_FREE) > + i3c_bus_set_addr_slot_status(&parent->bus, > + assigned_addr, > + I3C_ADDR_SLOT_I3C_DEV); [Severity: High] Does this code permanently leak parent bus address slots when the hub driver is removed? The address slots in the parent bus state are set to I3C_ADDR_SLOT_I3C_DEV. However, there appears to be no corresponding teardown mechanism provided to revert these slots to I3C_ADDR_SLOT_FREE when the virtual controllers are destroyed or the hub driver is unbound. This leak can eventually exhaust the address space and cause failures for subsequent devices. > + i3c_bus_maintenance_unlock(&parent->bus); > + } > + return 0; > +} --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260826103819.1614= 843-1-lakshay.piplani@nxp.com?part=3D6