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 41B3839A7E0 for ; Tue, 1 Sep 2026 11:51:21 +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=1788263483; cv=none; b=mV7LmGMdb0/f/1FN8jg4flvXfIEUZ4+NJLJERwDyExZU96tddwgjPSxVUQ3zBsIbNr7yFheC2WyO6tbQ8XmKK3HiVnlIEKclhe7Ik5Z9SXizHIPReySllGDgFarmYQypzPiHCI9lc0my/4QVGXeDtHrqZhSeHCKk4tganKbL8K8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788263483; c=relaxed/simple; bh=JtxqVk5NwK808DcPDDJZyAfomJtbzDXg0y3m6792SSM=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=kWZ5BBijK3kTrQSFIr+7+H0o/1epwFxS/o+4ODxw1UnRLbfOyZkNJBC/LTnR1P1VERrsUgc4tufCxOcsXuO5rdT/5xXH3JnsNdRZVoYCshzZJd7GOohOM0Zkt9nA69hhSNxlk2mYNAoh6XIDroMHJ4mIGBRWJDloibvHspmqn0s= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lFzUhJgY; 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="lFzUhJgY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 622F71F000E9; Tue, 1 Sep 2026 11:51:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788263481; bh=VR0hNmq1MqgYNy0fHyILETThfMxQJXGNu4w58/otCnM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=lFzUhJgYdzaCgN8h+njVv3VgtviT2o4eLmqPz9sVER2b+eYULyxCvJYd08Osa+NFn hNcgu/lxMuZdvUwx1E3fTRW4WhVzizDhDFVUpOVwqLEC1Fcqf+8rpqTFom0HMkb4Du YhRwrtK2mEPjC6ueUrDW0TakVRCMIc95+8JzvtNWj0SosK4Nw4uGQBK2ojqlPbHnrA B4bsj2ThDGyTp1zyTzAgSaIrm51RHuo+4pztTwkj8oTh0pug4JT0Y8GGjmXRfXcLjB 8UQ7KEtEurgYTl5dHh8KY4seewHcEeBd6jMsC+iQculpJ7xoTyOCpg9ICRdi7NWASm y2ZRjA22Trc8w== From: sashiko-bot@kernel.org Subject: Re: [PATCH 7/8] i3c: mipi-i3c-hci: Improve AST2700 PIO TX queue utilization Reply-To: sashiko-reviews@lists.linux.dev To: "Billy Tsai" Cc: "Alexandre Belloni" , devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, Frank.Li@kernel.org, linux-i3c@lists.infradead.org In-Reply-To: <20260901-b4-i3c-hci-ast2700-v1-7-19909e7cbd7e@aspeedtech.com> References: <20260901-b4-i3c-hci-ast2700-v1-0-19909e7cbd7e@aspeedtech.com> <20260901-b4-i3c-hci-ast2700-v1-7-19909e7cbd7e@aspeedtech.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 01 Sep 2026 11:51:20 +0000 Message-Id: <20260901115121.622F71F000E9@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 2 potential issue(= s) to consider: - [High] Calling `of_device_is_compatible()` via the `is_aspeed()` helper i= nside the high-speed PIO TX data transfer loop causes severe CPU overhead a= nd latency. - [High] Hardware TOCTOU / Stale write pointer read leading to FIFO overflo= w. -- commit 3be95193756af176407d7f4071b09a591d9a4eb3 Author: Billy Tsai i3c: mipi-i3c-hci: Improve AST2700 PIO TX queue utilization This commit updates the MIPI I3C HCI driver to improve TX FIFO utilization for the AST2700 controller. It introduces a vendor-specific check to poll the exact number of free FIFO entries using hardware read/write pointers instead of relying on a half-empty threshold. > diff --git a/drivers/i3c/master/mipi-i3c-hci/pio.c b/drivers/i3c/master/m= ipi-i3c-hci/pio.c > index 6bd5e43364a1d..3d70257dcc1dc 100644 > --- a/drivers/i3c/master/mipi-i3c-hci/pio.c > +++ b/drivers/i3c/master/mipi-i3c-hci/pio.c [ ... ] > @@ -295,11 +296,23 @@ static bool hci_pio_do_tx(struct i3c_hci *hci, stru= ct hci_pio_data *pio) > p +=3D (xfer->data_len - xfer->data_left) / 4; > =20 > while (xfer->data_left >=3D 4) { > - /* bail out if FIFO free space is below set threshold */ > - if (!(pio_reg_read(INTR_STATUS) & STAT_TX_THLD)) > + unsigned int avail =3D pio->tx_thresh_size; > + > + if (is_aspeed(hci)) { [Severity: High] Does calling of_device_is_compatible() inside this fastpath byte-transfer loop cause significant CPU overhead and latency? Looking at is_aspeed() in vendor_aspeed.h, it parses the Device Tree and performs string matching: static inline bool is_aspeed(struct i3c_hci *hci) { return of_device_is_compatible(hci->master.dev.of_node, "aspeed,ast2700-i3c-hci"); } Since this executes repeatedly for every 4 bytes transferred, it might ruin throughput, especially for non-Aspeed controllers where it gets evaluated constantly. Would it be better to check compatibility exactly once during probe and cache the result as a quirk flag? > + /* > + * The vendor FIFO pointers give the exact free space, > + * allowing better TX FIFO utilization than the > + * threshold status. > + */ > + avail =3D aspeed_i3c_avail_tx_entries(hci); [Severity: High] Could this read of the hardware write pointer immediately after posting a write lead to a FIFO overflow? Memory-mapped I/O writes over buses like AHB/AXI are posted, and the hardware controller might need a few clock cycles to commit the data and update its pointers.=20 If aspeed_i3c_avail_tx_entries() reads QUEUE_PTR0 before the hardware increments the write pointer, won't avail remain artificially high? If it does, the loop will immediately push another chunk of data, potentially overflowing the 32-entry hardware FIFO.=20 Should the driver locally track and deduct the number of words written from the available space during the active transfer instead of re-polling the hardware register? > + if (!avail) > + return false; > + } else if (!(pio_reg_read(INTR_STATUS) & STAT_TX_THLD)) { [ ... ] --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260901-b4-i3c-hci= -ast2700-v1-0-19909e7cbd7e@aspeedtech.com?part=3D7 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 A6276C61DD3 for ; Tue, 1 Sep 2026 11:51:25 +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=e32M0rzbD5Jz8yHU4nLxmGtc/NggfONU5XpI+OGtW5U=; b=EXhg1F/oTPD8lr h6x/pPURnp86/nGQ8yzvmgUhh08emqZVAW7yqX6AGQLPu67tQl6I5irEx6zNBdWkJA0/YhAykxG1R 8BGQaxYBkJrCX6XsfUpqi45MsLwzTRlk+XzaF/Y8q/qqD8Wx1ffFHu95LFG7MVfEa9IPgKTaUL4b+ kS6eqzY/FwyeFQRKdReWJFQv+y7JRHDtfM0getPpovZ788uxw16k4+3YZWl4GPiZ8KgWtrxi5z3kh FNp23gXJOlWP/CvVNOUInLDOK2hgxEiNJX2/zN97cx/9MlPrN+bm5G1QPVpYKxYLja876Gkx3Ov5P U6xvzXGwOuvyjKTOA3XQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x1N1R-0000000Bjri-1N37; Tue, 01 Sep 2026 11:51:25 +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 1x1N1O-0000000BjrR-2V3a for linux-i3c@lists.infradead.org; Tue, 01 Sep 2026 11:51:23 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id EB1E241502; Tue, 1 Sep 2026 11:51:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 622F71F000E9; Tue, 1 Sep 2026 11:51:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788263481; bh=VR0hNmq1MqgYNy0fHyILETThfMxQJXGNu4w58/otCnM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=lFzUhJgYdzaCgN8h+njVv3VgtviT2o4eLmqPz9sVER2b+eYULyxCvJYd08Osa+NFn hNcgu/lxMuZdvUwx1E3fTRW4WhVzizDhDFVUpOVwqLEC1Fcqf+8rpqTFom0HMkb4Du YhRwrtK2mEPjC6ueUrDW0TakVRCMIc95+8JzvtNWj0SosK4Nw4uGQBK2ojqlPbHnrA B4bsj2ThDGyTp1zyTzAgSaIrm51RHuo+4pztTwkj8oTh0pug4JT0Y8GGjmXRfXcLjB 8UQ7KEtEurgYTl5dHh8KY4seewHcEeBd6jMsC+iQculpJ7xoTyOCpg9ICRdi7NWASm y2ZRjA22Trc8w== From: sashiko-bot@kernel.org Subject: Re: [PATCH 7/8] i3c: mipi-i3c-hci: Improve AST2700 PIO TX queue utilization To: "Billy Tsai" Cc: "Alexandre Belloni" , devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, Frank.Li@kernel.org, linux-i3c@lists.infradead.org In-Reply-To: <20260901-b4-i3c-hci-ast2700-v1-7-19909e7cbd7e@aspeedtech.com> References: <20260901-b4-i3c-hci-ast2700-v1-0-19909e7cbd7e@aspeedtech.com> <20260901-b4-i3c-hci-ast2700-v1-7-19909e7cbd7e@aspeedtech.com> Date: Tue, 01 Sep 2026 11:51:20 +0000 Message-Id: <20260901115121.622F71F000E9@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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIENhbGxpbmcgYG9mX2Rl dmljZV9pc19jb21wYXRpYmxlKClgIHZpYSB0aGUgYGlzX2FzcGVlZCgpYCBoZWxwZXIgaW5zaWRl IHRoZSBoaWdoLXNwZWVkIFBJTyBUWCBkYXRhIHRyYW5zZmVyIGxvb3AgY2F1c2VzIHNldmVyZSBD UFUgb3ZlcmhlYWQgYW5kIGxhdGVuY3kuCi0gW0hpZ2hdIEhhcmR3YXJlIFRPQ1RPVSAvIFN0YWxl IHdyaXRlIHBvaW50ZXIgcmVhZCBsZWFkaW5nIHRvIEZJRk8gb3ZlcmZsb3cuCi0tCgpjb21taXQg M2JlOTUxOTM3NTZhZjE3NjQwN2Q3ZjQwNzFiMDlhNTkxZDlhNGViMwpBdXRob3I6IEJpbGx5IFRz YWkgPGJpbGx5X3RzYWlAYXNwZWVkdGVjaC5jb20+CgppM2M6IG1pcGktaTNjLWhjaTogSW1wcm92 ZSBBU1QyNzAwIFBJTyBUWCBxdWV1ZSB1dGlsaXphdGlvbgoKVGhpcyBjb21taXQgdXBkYXRlcyB0 aGUgTUlQSSBJM0MgSENJIGRyaXZlciB0byBpbXByb3ZlIFRYIEZJRk8gdXRpbGl6YXRpb24KZm9y IHRoZSBBU1QyNzAwIGNvbnRyb2xsZXIuIEl0IGludHJvZHVjZXMgYSB2ZW5kb3Itc3BlY2lmaWMg Y2hlY2sgdG8gcG9sbAp0aGUgZXhhY3QgbnVtYmVyIG9mIGZyZWUgRklGTyBlbnRyaWVzIHVzaW5n IGhhcmR3YXJlIHJlYWQvd3JpdGUgcG9pbnRlcnMKaW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgaGFs Zi1lbXB0eSB0aHJlc2hvbGQuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kzYy9tYXN0ZXIvbWlw aS1pM2MtaGNpL3Bpby5jIGIvZHJpdmVycy9pM2MvbWFzdGVyL21pcGktaTNjLWhjaS9waW8uYwo+ IGluZGV4IDZiZDVlNDMzNjRhMWQuLjNkNzAyNTdkY2MxZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9pM2MvbWFzdGVyL21pcGktaTNjLWhjaS9waW8uYwo+ICsrKyBiL2RyaXZlcnMvaTNjL21hc3Rl ci9taXBpLWkzYy1oY2kvcGlvLmMKClsgLi4uIF0KCj4gQEAgLTI5NSwxMSArMjk2LDIzIEBAIHN0 YXRpYyBib29sIGhjaV9waW9fZG9fdHgoc3RydWN0IGkzY19oY2kgKmhjaSwgc3RydWN0IGhjaV9w aW9fZGF0YSAqcGlvKQo+ICAJcCArPSAoeGZlci0+ZGF0YV9sZW4gLSB4ZmVyLT5kYXRhX2xlZnQp IC8gNDsKPiAgCj4gIAl3aGlsZSAoeGZlci0+ZGF0YV9sZWZ0ID49IDQpIHsKPiAtCQkvKiBiYWls IG91dCBpZiBGSUZPIGZyZWUgc3BhY2UgaXMgYmVsb3cgc2V0IHRocmVzaG9sZCAqLwo+IC0JCWlm ICghKHBpb19yZWdfcmVhZChJTlRSX1NUQVRVUykgJiBTVEFUX1RYX1RITEQpKQo+ICsJCXVuc2ln bmVkIGludCBhdmFpbCA9IHBpby0+dHhfdGhyZXNoX3NpemU7Cj4gKwo+ICsJCWlmIChpc19hc3Bl ZWQoaGNpKSkgewoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIGNhbGxpbmcgb2ZfZGV2aWNlX2lzX2Nv bXBhdGlibGUoKSBpbnNpZGUgdGhpcyBmYXN0cGF0aCBieXRlLXRyYW5zZmVyCmxvb3AgY2F1c2Ug c2lnbmlmaWNhbnQgQ1BVIG92ZXJoZWFkIGFuZCBsYXRlbmN5PwoKTG9va2luZyBhdCBpc19hc3Bl ZWQoKSBpbiB2ZW5kb3JfYXNwZWVkLmgsIGl0IHBhcnNlcyB0aGUgRGV2aWNlIFRyZWUgYW5kCnBl cmZvcm1zIHN0cmluZyBtYXRjaGluZzoKCnN0YXRpYyBpbmxpbmUgYm9vbCBpc19hc3BlZWQoc3Ry dWN0IGkzY19oY2kgKmhjaSkKewoJcmV0dXJuIG9mX2RldmljZV9pc19jb21wYXRpYmxlKGhjaS0+ bWFzdGVyLmRldi5vZl9ub2RlLAoJCQkJCSJhc3BlZWQsYXN0MjcwMC1pM2MtaGNpIik7Cn0KClNp bmNlIHRoaXMgZXhlY3V0ZXMgcmVwZWF0ZWRseSBmb3IgZXZlcnkgNCBieXRlcyB0cmFuc2ZlcnJl ZCwgaXQgbWlnaHQgcnVpbgp0aHJvdWdocHV0LCBlc3BlY2lhbGx5IGZvciBub24tQXNwZWVkIGNv bnRyb2xsZXJzIHdoZXJlIGl0IGdldHMgZXZhbHVhdGVkCmNvbnN0YW50bHkuIFdvdWxkIGl0IGJl IGJldHRlciB0byBjaGVjayBjb21wYXRpYmlsaXR5IGV4YWN0bHkgb25jZSBkdXJpbmcKcHJvYmUg YW5kIGNhY2hlIHRoZSByZXN1bHQgYXMgYSBxdWlyayBmbGFnPwoKPiArCQkJLyoKPiArCQkJICog VGhlIHZlbmRvciBGSUZPIHBvaW50ZXJzIGdpdmUgdGhlIGV4YWN0IGZyZWUgc3BhY2UsCj4gKwkJ CSAqIGFsbG93aW5nIGJldHRlciBUWCBGSUZPIHV0aWxpemF0aW9uIHRoYW4gdGhlCj4gKwkJCSAq IHRocmVzaG9sZCBzdGF0dXMuCj4gKwkJCSAqLwo+ICsJCQlhdmFpbCA9IGFzcGVlZF9pM2NfYXZh aWxfdHhfZW50cmllcyhoY2kpOwoKW1NldmVyaXR5OiBIaWdoXQpDb3VsZCB0aGlzIHJlYWQgb2Yg dGhlIGhhcmR3YXJlIHdyaXRlIHBvaW50ZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgcG9zdGluZyBhCndy aXRlIGxlYWQgdG8gYSBGSUZPIG92ZXJmbG93PwoKTWVtb3J5LW1hcHBlZCBJL08gd3JpdGVzIG92 ZXIgYnVzZXMgbGlrZSBBSEIvQVhJIGFyZSBwb3N0ZWQsIGFuZCB0aGUKaGFyZHdhcmUgY29udHJv bGxlciBtaWdodCBuZWVkIGEgZmV3IGNsb2NrIGN5Y2xlcyB0byBjb21taXQgdGhlIGRhdGEgYW5k CnVwZGF0ZSBpdHMgcG9pbnRlcnMuIAoKSWYgYXNwZWVkX2kzY19hdmFpbF90eF9lbnRyaWVzKCkg cmVhZHMgUVVFVUVfUFRSMCBiZWZvcmUgdGhlIGhhcmR3YXJlCmluY3JlbWVudHMgdGhlIHdyaXRl IHBvaW50ZXIsIHdvbid0IGF2YWlsIHJlbWFpbiBhcnRpZmljaWFsbHkgaGlnaD8KSWYgaXQgZG9l cywgdGhlIGxvb3Agd2lsbCBpbW1lZGlhdGVseSBwdXNoIGFub3RoZXIgY2h1bmsgb2YgZGF0YSwK cG90ZW50aWFsbHkgb3ZlcmZsb3dpbmcgdGhlIDMyLWVudHJ5IGhhcmR3YXJlIEZJRk8uIAoKU2hv dWxkIHRoZSBkcml2ZXIgbG9jYWxseSB0cmFjayBhbmQgZGVkdWN0IHRoZSBudW1iZXIgb2Ygd29y ZHMgd3JpdHRlbiBmcm9tCnRoZSBhdmFpbGFibGUgc3BhY2UgZHVyaW5nIHRoZSBhY3RpdmUgdHJh bnNmZXIgaW5zdGVhZCBvZiByZS1wb2xsaW5nIHRoZQpoYXJkd2FyZSByZWdpc3Rlcj8KCj4gKwkJ CWlmICghYXZhaWwpCj4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfSBlbHNlIGlmICghKHBpb19y ZWdfcmVhZChJTlRSX1NUQVRVUykgJiBTVEFUX1RYX1RITEQpKSB7CgpbIC4uLiBdCgotLSAKU2Fz aGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwOTAx LWI0LWkzYy1oY2ktYXN0MjcwMC12MS0wLTE5OTA5ZTdjYmQ3ZUBhc3BlZWR0ZWNoLmNvbT9wYXJ0 PTcKCi0tIApsaW51eC1pM2MgbWFpbGluZyBsaXN0CmxpbnV4LWkzY0BsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtaTNj Cg==