From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794488834; b=LzzFVn7ke6jiNjbevuynZAkSI7izmOOSmGYf9pZSkjbzjO0Aq+rWRjxnkGXLwPAPIDB0 HLK11w2Io+JrOpBxQ+sWDxgYGa8/iaexm0HcQvqP99h6R1YSQQD+5xsS3zszc9T5IKKc7 EOJa6AK09gX/lVKGK75/FJZXFCG05Tlf7PcImz+Wy3EO0wswjaYIJQZ6jAnf29mlb4+oy Tmec3GK9ZcdsDHt1gnVR6qc7d7YmDziHQnNZ+oCttmgUd96EEMB6/NQ/hndkQxg+r8fxw m88njdH9jDPn4Jra8/hAv45eaDT9vKkDMktdecVQFQZpiAwWHvJrq8xyqBwIA9JLJ6A== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794488834; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=IO8mblBXP1RWSPo9tFYz5CS4BOTa6XyJvVMZkiXIqsg=; b=PdwWC+9KyvdoArL/qc+F+RfngVG/M6PyWxVLRD7bVFcFaxqzkqBy9WqgzQMxyllPQfnB arsmJwLMA8BXjzivcxUhfZ8Lv5HNSPAvYny+bf8F7vzr4t4IGBGW/TVvkNYoIGNYheUJi 3VGK9x2ol5xerKey8qUNKPp2lJIjzbxYQM5Y9QyskRHuxNXdI02mT7x4vZusOrVnJN9pg wwLiHc0IyfJBh9GHtp2VQOBLvKqO+ERo4QofZ49XEl0GZAt/QY39VkaoNeWGc9kmQ8j6O h6iVK+kLCyWqKI8zTyyudcErcnpcgSxttceD5JrC8n67UCfm3GAmTiQnyb4wm35jXEA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=bqnwkytp; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14F77606A327 for ; Thu, 12 Nov 2026 13:07:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=bqnwkytp Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CCD11F00A06; Thu, 12 Nov 2026 13:07:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794488833; bh=IO8mblBXP1RWSPo9tFYz5CS4BOTa6XyJvVMZkiXIqsg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=bqnwkytpmBP4Pk73TCfPwytXlOzYLwiiheUj7SfviAJKgbR/bkl2S7mXapSMAIZYb dS4/kWBcrfwkxLRvSEvWoHP4CRMQOcJOpOId00yeEcnEyQS82JwtMZDXLGGa2flKbe 3/YdpYrfy9mWkeH+ZVDITqxA6DemQhgJR1LT+5wQpttySBv82jp50kguqJVWefha5a xl/LQv5dE0I36Kv9L7x4lsXIffj6D3dXIAW2nnhO11mgAjycktpIgL1Rkhe3rzVpEq Bb5+t/LeyQOs4ralXk91lVvuGhqg0Sq+d5DhdK4MPNe6TUjYR2l6e1XFGIfAj2UaOf jUxcTzSDw/PaQ== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v21 4/4] i3c: hub: p3h2x4x: Add SMBus slave mode support Reply-To: sashiko-reviews@lists.linux.dev To: "Lakshay Piplani" , linux-i3c@lists.infradead.org, mfd@lists.linux.dev Cc: Frank.Li@kernel.org, "Alexandre Belloni" , lee@kernel.org In-Reply-To: <20261112124437.3367252-5-lakshay.piplani@nxp.com> References: <20261112124437.3367252-1-lakshay.piplani@nxp.com> <20261112124437.3367252-5-lakshay.piplani@nxp.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 12 Nov 2026 13:07:13 +0000 X-Mailing-List: mfd@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 3 potential issues to consider: - [Medium] i3c: hub: p3h2x4x: empty rx buffer not rejected in p3h2x4x_read_smbus_agent_rx_buf() - [Medium] i3c: hub: p3h2x4x: stale rx flags not cleared in p3h2x4x_tp_i2c_reg_slave() - [Low] i3c: hub: p3h2x4x: missing I2C_CLIENT_TEN check in p3h2x4x_tp_i2c_reg_slave() -- commit c82ca6aaf774f0de048a84b1a2c414e57c266eef Author: Lakshay Piplani i3c: hub: p3h2x4x: Add SMBus slave mode support This commit adds SMBus slave mode support for the P3H2x4x hub target ports, handling receive events via I3C IBI and forwarding received payloads to registered I2C slave clients. > diff --git a/drivers/i3c/hub/p3h2840_i3c_hub_smbus.c b/drivers/i3c/hub/p3= h2840_i3c_hub_smbus.c > index 247d0f4883b7c..02b50d1eb938d 100644 > --- a/drivers/i3c/hub/p3h2840_i3c_hub_smbus.c > +++ b/drivers/i3c/hub/p3h2840_i3c_hub_smbus.c > @@ -3,6 +3,7 @@ > * Copyright 2025-2026 NXP > * This P3H2X4X driver file contain functions for SMBus/I2C virtual Bus = creation and read/write. > */ > +#include > #include > #include > =20 > @@ -15,6 +16,171 @@ enum p3h2x4x_smbus_desc_idx { > P3H2X4X_DESC_READ_LEN, > }; > =20 > +#if IS_ENABLED(CONFIG_I2C_SLAVE) > +static void p3h2x4x_read_smbus_agent_rx_buf(struct i3c_device *i3cdev, e= num p3h2x4x_rcv_buf rfbuf, > + enum p3h2x4x_tp tp) > +{ > + struct p3h2x4x *p3h2x4x =3D i3cdev_get_drvdata(i3cdev); > + struct p3h2x4x_i3c_hub_dev *p3h2x4x_i3c_hub; > + u8 target_buffer_page, flag_clear, temp =3D 0, i, addr; > + u32 packet_len, slave_address; > + struct i2c_client *client; > + u8 *slave_rx_buffer; > + int ret; > + > + if (!p3h2x4x || !p3h2x4x->i3c_hub_priv) > + return; > + > + p3h2x4x_i3c_hub =3D p3h2x4x->i3c_hub_priv; > + slave_rx_buffer =3D p3h2x4x_i3c_hub->slave_rx_buffer; > + > + switch (rfbuf) { > + case RCV_BUF_0: > + target_buffer_page =3D P3H2X4X_TARGET_BUFF_0_PAGE; > + flag_clear =3D P3H2X4X_TARGET_BUF_0_RECEIVE; > + break; > + case RCV_BUF_1: > + target_buffer_page =3D P3H2X4X_TARGET_BUFF_1_PAGE; > + flag_clear =3D P3H2X4X_TARGET_BUF_1_RECEIVE; > + break; > + default: > + return; > + } > + > + target_buffer_page +=3D P3H2X4X_NO_PAGE_PER_TP * tp; > + > + ret =3D regmap_write(p3h2x4x_i3c_hub->regmap, P3H2X4X_PAGE_PTR, target_= buffer_page); > + if (ret) > + goto ibi_err; > + > + /* read buffer length */ > + ret =3D regmap_read(p3h2x4x_i3c_hub->regmap, P3H2X4X_TARGET_BUFF_LENGTH= , &packet_len); > + if (ret) > + goto ibi_err; > + > + if (packet_len) > + packet_len =3D packet_len - 1; [Severity: Medium] Should p3h2x4x_read_smbus_agent_rx_buf() jump to ibi_err when packet_len is 0? P3H2X4X_TARGET_BUFF_LENGTH includes the 1-byte target address, so a valid zero-payload transfer has length 1 before decrementing. When P3H2X4X_TARGET_BUFF_LENGTH reads as 0 (for example, on an aborted transfer or empty buffer), falling through with packet_len =3D=3D 0 reads a stale P3H2X4X_TARGET_BUFF_ADDRESS from a prior transaction and delivers spurious I2C_SLAVE_WRITE_REQUESTED and I2C_SLAVE_STOP events to the slave client. [ ... ] > +#if IS_ENABLED(CONFIG_I2C_SLAVE) > +static int p3h2x4x_tp_i2c_reg_slave(struct i2c_client *slave) > +{ > + struct tp_bus *bus =3D i2c_get_adapdata(slave->adapter); > + struct p3h2x4x_i3c_hub_dev *hub =3D bus->p3h2x4x_i3c_hub; > + struct p3h2x4x *p3h2x4x =3D dev_get_drvdata(hub->dev->parent); > + int relock_ret =3D 0; > + int ret =3D 0; > + > + guard(mutex)(&hub->etx_mutex); > + > + if (!hub->i3cdev || !hub->ibi_ready) > + return -EOPNOTSUPP; > + > + if (bus->tp_smbus_client) > + return -EBUSY; [Severity: Low] Should p3h2x4x_tp_i2c_reg_slave() reject 10-bit addressed clients (slave->flags & I2C_CLIENT_TEN) with -EAFNOSUPPORT? i2c_slave_register() skips 7-bit address validation when I2C_CLIENT_TEN is set and delegates the check to reg_slave(). Without it, registration succeeds and p3h2x4x_read_smbus_agent_rx_buf() truncates client->addr to its low 7 bits when matching against P3H2X4X_TARGET_BUFF_ADDRESS. > + > + scoped_guard(mutex, &p3h2x4x->protected_reg_lock) { > + /* Unlock access to protected registers */ > + ret =3D regmap_write(hub->regmap, P3H2X4X_DEV_REG_PROTECTION_CODE, > + P3H2X4X_REGISTERS_UNLOCK_CODE); > + if (ret) > + break; > + > + ret =3D regmap_set_bits(hub->regmap, > + P3H2X4X_TP_SMBUS_AGNT_IBI_CONFIG, > + bus->tp_mask); > + > + /* Lock access to protected registers */ > + relock_ret =3D regmap_write(hub->regmap, > + P3H2X4X_DEV_REG_PROTECTION_CODE, > + P3H2X4X_REGISTERS_LOCK_CODE); > + } [Severity: Medium] Does p3h2x4x_tp_i2c_reg_slave() need to clear BUF_RECEIVED_FLAG_MASK in P3H2X4X_TP0_SMBUS_AGNT_STS + bus->tp_port before enabling the port IBI? p3h2x4x_configure_tp() enables P3H2X4X_TP_SMBUS_AGNT_EN at probe time, and p3h2x4x_tp_i2c_unreg_slave() only masks the port bit in P3H2X4X_TP_SMBUS_AGNT_IBI_CONFIG. Any SMBus write arriving on the port while no slave is registered fills the target buffers and sets the receive and overflow status flags without triggering p3h2x4x_ibi_handler(). Leaving those flags set across registration either delivers stale payloads to the new slave client or leaves both target buffers permanently occupied if an IBI requires a fresh status transition. --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261112124437.3367= 252-1-lakshay.piplani@nxp.com?part=3D4 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0EB51606A321 for ; Thu, 12 Nov 2026 13:07:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=S+vsadWW; dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=bqnwkytp 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:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=C5z3s7A35fmdmv7j6SasV9A39g9Flk2c5Yho8eQneD4=; b=S+vsadWWK+ZI7/0LznT1O1Latv K8NvMgepMdIF5NPd3GEJLOdzUTstlfQazi1LPeEULwuArjzXfXOAJ7y2UNPxKtsmANfCwIo3pzWRR xjmYs+i9w2if6QE0DSjW9EUbt4QhhKwP8O8dun3r4WPVSNeq1QF0auPJJ0v8Z7uj/ESFD7zRqSKlt 5lbwwumW4FV7ioQWEytqDjadZ92ZQWmm5/dgmejLN7cXcChfuscF0H6RkM5kFkvi7p3qWVGOrh9B+ L4Xf9PPaoBGebdLh6CuE5mQUc9oJdq6IuqwJH5U1dv3LeQC/NY55sxXdu6K3r4YWkH04HedW+/Knf QsTeTbbA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xRUWR-00000009y1g-3B3f; Thu, 12 Nov 2026 13:07:23 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xRUWI-00000009xzo-3WqE for linux-i3c@lists.infradead.org; Thu, 12 Nov 2026 13:07:17 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 20BD163305; Thu, 12 Nov 2026 13:07:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CCD11F00A06; Thu, 12 Nov 2026 13:07:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794488833; bh=IO8mblBXP1RWSPo9tFYz5CS4BOTa6XyJvVMZkiXIqsg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=bqnwkytpmBP4Pk73TCfPwytXlOzYLwiiheUj7SfviAJKgbR/bkl2S7mXapSMAIZYb dS4/kWBcrfwkxLRvSEvWoHP4CRMQOcJOpOId00yeEcnEyQS82JwtMZDXLGGa2flKbe 3/YdpYrfy9mWkeH+ZVDITqxA6DemQhgJR1LT+5wQpttySBv82jp50kguqJVWefha5a xl/LQv5dE0I36Kv9L7x4lsXIffj6D3dXIAW2nnhO11mgAjycktpIgL1Rkhe3rzVpEq Bb5+t/LeyQOs4ralXk91lVvuGhqg0Sq+d5DhdK4MPNe6TUjYR2l6e1XFGIfAj2UaOf jUxcTzSDw/PaQ== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v21 4/4] i3c: hub: p3h2x4x: Add SMBus slave mode support To: "Lakshay Piplani" , linux-i3c@lists.infradead.org, mfd@lists.linux.dev Cc: Frank.Li@kernel.org, "Alexandre Belloni" , lee@kernel.org In-Reply-To: <20261112124437.3367252-5-lakshay.piplani@nxp.com> References: <20261112124437.3367252-1-lakshay.piplani@nxp.com> <20261112124437.3367252-5-lakshay.piplani@nxp.com> Date: Thu, 12 Nov 2026 13:07:13 +0000 X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwKaXNzdWVzIHRvIGNvbnNpZGVyOgotIFtNZWRpdW1dIGkzYzogaHViOiBwM2gy eDR4OiBlbXB0eSByeCBidWZmZXIgbm90IHJlamVjdGVkIGluCiAgcDNoMng0eF9yZWFkX3NtYnVz X2FnZW50X3J4X2J1ZigpCi0gW01lZGl1bV0gaTNjOiBodWI6IHAzaDJ4NHg6IHN0YWxlIHJ4IGZs YWdzIG5vdCBjbGVhcmVkIGluCiAgcDNoMng0eF90cF9pMmNfcmVnX3NsYXZlKCkKLSBbTG93XSBp M2M6IGh1YjogcDNoMng0eDogbWlzc2luZyBJMkNfQ0xJRU5UX1RFTiBjaGVjayBpbgogIHAzaDJ4 NHhfdHBfaTJjX3JlZ19zbGF2ZSgpCi0tCgpjb21taXQgYzgyY2E2YWFmNzc0ZjBkZTA0OGE4NGIx YTJjNDE0ZTU3YzI2NmVlZgpBdXRob3I6IExha3NoYXkgUGlwbGFuaSA8bGFrc2hheS5waXBsYW5p QG54cC5jb20+CgppM2M6IGh1YjogcDNoMng0eDogQWRkIFNNQnVzIHNsYXZlIG1vZGUgc3VwcG9y dAoKVGhpcyBjb21taXQgYWRkcyBTTUJ1cyBzbGF2ZSBtb2RlIHN1cHBvcnQgZm9yIHRoZSBQM0gy eDR4IGh1YiB0YXJnZXQgcG9ydHMsCmhhbmRsaW5nIHJlY2VpdmUgZXZlbnRzIHZpYSBJM0MgSUJJ IGFuZCBmb3J3YXJkaW5nIHJlY2VpdmVkIHBheWxvYWRzIHRvCnJlZ2lzdGVyZWQgSTJDIHNsYXZl IGNsaWVudHMuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kzYy9odWIvcDNoMjg0MF9pM2NfaHVi X3NtYnVzLmMgYi9kcml2ZXJzL2kzYy9odWIvcDNoMjg0MF9pM2NfaHViX3NtYnVzLmMKPiBpbmRl eCAyNDdkMGY0ODgzYjdjLi4wMmI1MGQxZWI5MzhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaTNj L2h1Yi9wM2gyODQwX2kzY19odWJfc21idXMuYwo+ICsrKyBiL2RyaXZlcnMvaTNjL2h1Yi9wM2gy ODQwX2kzY19odWJfc21idXMuYwo+IEBAIC0zLDYgKzMsNyBAQAo+ICAgKiBDb3B5cmlnaHQgMjAy NS0yMDI2IE5YUAo+ICAgKiBUaGlzIFAzSDJYNFggZHJpdmVyIGZpbGUgY29udGFpbiBmdW5jdGlv bnMgZm9yIFNNQnVzL0kyQyB2aXJ0dWFsIEJ1cyBjcmVhdGlvbiBhbmQgcmVhZC93cml0ZS4KPiAg ICovCj4gKyNpbmNsdWRlIDxsaW51eC9pM2MvZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9t ZmQvcDNoMjg0MC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gIAo+IEBAIC0xNSw2 ICsxNiwxNzEgQEAgZW51bSBwM2gyeDR4X3NtYnVzX2Rlc2NfaWR4IHsKPiAgCVAzSDJYNFhfREVT Q19SRUFEX0xFTiwKPiAgfTsKPiAgCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19JMkNfU0xBVkUp Cj4gK3N0YXRpYyB2b2lkIHAzaDJ4NHhfcmVhZF9zbWJ1c19hZ2VudF9yeF9idWYoc3RydWN0IGkz Y19kZXZpY2UgKmkzY2RldiwgZW51bSBwM2gyeDR4X3Jjdl9idWYgcmZidWYsCj4gKwkJCQkJICAg IGVudW0gcDNoMng0eF90cCB0cCkKPiArewo+ICsJc3RydWN0IHAzaDJ4NHggKnAzaDJ4NHggPSBp M2NkZXZfZ2V0X2RydmRhdGEoaTNjZGV2KTsKPiArCXN0cnVjdCBwM2gyeDR4X2kzY19odWJfZGV2 ICpwM2gyeDR4X2kzY19odWI7Cj4gKwl1OCB0YXJnZXRfYnVmZmVyX3BhZ2UsIGZsYWdfY2xlYXIs IHRlbXAgPSAwLCBpLCBhZGRyOwo+ICsJdTMyIHBhY2tldF9sZW4sIHNsYXZlX2FkZHJlc3M7Cj4g KwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50Owo+ICsJdTggKnNsYXZlX3J4X2J1ZmZlcjsKPiAr CWludCByZXQ7Cj4gKwo+ICsJaWYgKCFwM2gyeDR4IHx8ICFwM2gyeDR4LT5pM2NfaHViX3ByaXYp Cj4gKwkJcmV0dXJuOwo+ICsKPiArCXAzaDJ4NHhfaTNjX2h1YiA9IHAzaDJ4NHgtPmkzY19odWJf cHJpdjsKPiArCXNsYXZlX3J4X2J1ZmZlciA9IHAzaDJ4NHhfaTNjX2h1Yi0+c2xhdmVfcnhfYnVm ZmVyOwo+ICsKPiArCXN3aXRjaCAocmZidWYpIHsKPiArCWNhc2UgUkNWX0JVRl8wOgo+ICsJCXRh cmdldF9idWZmZXJfcGFnZSA9IFAzSDJYNFhfVEFSR0VUX0JVRkZfMF9QQUdFOwo+ICsJCWZsYWdf Y2xlYXIgPSBQM0gyWDRYX1RBUkdFVF9CVUZfMF9SRUNFSVZFOwo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSBSQ1ZfQlVGXzE6Cj4gKwkJdGFyZ2V0X2J1ZmZlcl9wYWdlID0gUDNIMlg0WF9UQVJHRVRfQlVG Rl8xX1BBR0U7Cj4gKwkJZmxhZ19jbGVhciA9IFAzSDJYNFhfVEFSR0VUX0JVRl8xX1JFQ0VJVkU7 Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwl0YXJn ZXRfYnVmZmVyX3BhZ2UgKz0gUDNIMlg0WF9OT19QQUdFX1BFUl9UUCAqIHRwOwo+ICsKPiArCXJl dCA9IHJlZ21hcF93cml0ZShwM2gyeDR4X2kzY19odWItPnJlZ21hcCwgUDNIMlg0WF9QQUdFX1BU UiwgdGFyZ2V0X2J1ZmZlcl9wYWdlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBpYmlfZXJyOwo+ ICsKPiArCS8qIHJlYWQgYnVmZmVyIGxlbmd0aCAqLwo+ICsJcmV0ID0gcmVnbWFwX3JlYWQocDNo Mng0eF9pM2NfaHViLT5yZWdtYXAsIFAzSDJYNFhfVEFSR0VUX0JVRkZfTEVOR1RILCAmcGFja2V0 X2xlbik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gaWJpX2VycjsKPiArCj4gKwlpZiAocGFja2V0 X2xlbikKPiArCQlwYWNrZXRfbGVuID0gcGFja2V0X2xlbiAtIDE7CgpbU2V2ZXJpdHk6IE1lZGl1 bV0KU2hvdWxkIHAzaDJ4NHhfcmVhZF9zbWJ1c19hZ2VudF9yeF9idWYoKSBqdW1wIHRvIGliaV9l cnIgd2hlbiBwYWNrZXRfbGVuIGlzCjA/CgpQM0gyWDRYX1RBUkdFVF9CVUZGX0xFTkdUSCBpbmNs dWRlcyB0aGUgMS1ieXRlIHRhcmdldCBhZGRyZXNzLCBzbyBhIHZhbGlkCnplcm8tcGF5bG9hZCB0 cmFuc2ZlciBoYXMgbGVuZ3RoIDEgYmVmb3JlIGRlY3JlbWVudGluZy4gIFdoZW4KUDNIMlg0WF9U QVJHRVRfQlVGRl9MRU5HVEggcmVhZHMgYXMgMCAoZm9yIGV4YW1wbGUsIG9uIGFuIGFib3J0ZWQg dHJhbnNmZXIKb3IgZW1wdHkgYnVmZmVyKSwgZmFsbGluZyB0aHJvdWdoIHdpdGggcGFja2V0X2xl biA9PSAwIHJlYWRzIGEgc3RhbGUKUDNIMlg0WF9UQVJHRVRfQlVGRl9BRERSRVNTIGZyb20gYSBw cmlvciB0cmFuc2FjdGlvbiBhbmQgZGVsaXZlcnMgc3B1cmlvdXMKSTJDX1NMQVZFX1dSSVRFX1JF UVVFU1RFRCBhbmQgSTJDX1NMQVZFX1NUT1AgZXZlbnRzIHRvIHRoZSBzbGF2ZSBjbGllbnQuCgpb IC4uLiBdCgo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfSTJDX1NMQVZFKQo+ICtzdGF0aWMgaW50 IHAzaDJ4NHhfdHBfaTJjX3JlZ19zbGF2ZShzdHJ1Y3QgaTJjX2NsaWVudCAqc2xhdmUpCj4gK3sK PiArCXN0cnVjdCB0cF9idXMgKmJ1cyA9IGkyY19nZXRfYWRhcGRhdGEoc2xhdmUtPmFkYXB0ZXIp Owo+ICsJc3RydWN0IHAzaDJ4NHhfaTNjX2h1Yl9kZXYgKmh1YiA9IGJ1cy0+cDNoMng0eF9pM2Nf aHViOwo+ICsJc3RydWN0IHAzaDJ4NHggKnAzaDJ4NHggPSBkZXZfZ2V0X2RydmRhdGEoaHViLT5k ZXYtPnBhcmVudCk7Cj4gKwlpbnQgcmVsb2NrX3JldCA9IDA7Cj4gKwlpbnQgcmV0ID0gMDsKPiAr Cj4gKwlndWFyZChtdXRleCkoJmh1Yi0+ZXR4X211dGV4KTsKPiArCj4gKwlpZiAoIWh1Yi0+aTNj ZGV2IHx8ICFodWItPmliaV9yZWFkeSkKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gKwo+ICsJ aWYgKGJ1cy0+dHBfc21idXNfY2xpZW50KQo+ICsJCXJldHVybiAtRUJVU1k7CgpbU2V2ZXJpdHk6 IExvd10KU2hvdWxkIHAzaDJ4NHhfdHBfaTJjX3JlZ19zbGF2ZSgpIHJlamVjdCAxMC1iaXQgYWRk cmVzc2VkIGNsaWVudHMKKHNsYXZlLT5mbGFncyAmIEkyQ19DTElFTlRfVEVOKSB3aXRoIC1FQUZO T1NVUFBPUlQ/CgppMmNfc2xhdmVfcmVnaXN0ZXIoKSBza2lwcyA3LWJpdCBhZGRyZXNzIHZhbGlk YXRpb24gd2hlbiBJMkNfQ0xJRU5UX1RFTiBpcwpzZXQgYW5kIGRlbGVnYXRlcyB0aGUgY2hlY2sg dG8gcmVnX3NsYXZlKCkuICBXaXRob3V0IGl0LCByZWdpc3RyYXRpb24Kc3VjY2VlZHMgYW5kIHAz aDJ4NHhfcmVhZF9zbWJ1c19hZ2VudF9yeF9idWYoKSB0cnVuY2F0ZXMgY2xpZW50LT5hZGRyIHRv IGl0cwpsb3cgNyBiaXRzIHdoZW4gbWF0Y2hpbmcgYWdhaW5zdCBQM0gyWDRYX1RBUkdFVF9CVUZG X0FERFJFU1MuCgo+ICsKPiArCXNjb3BlZF9ndWFyZChtdXRleCwgJnAzaDJ4NHgtPnByb3RlY3Rl ZF9yZWdfbG9jaykgewo+ICsJCS8qIFVubG9jayBhY2Nlc3MgdG8gcHJvdGVjdGVkIHJlZ2lzdGVy cyAqLwo+ICsJCXJldCA9IHJlZ21hcF93cml0ZShodWItPnJlZ21hcCwgUDNIMlg0WF9ERVZfUkVH X1BST1RFQ1RJT05fQ09ERSwKPiArCQkJCSAgIFAzSDJYNFhfUkVHSVNURVJTX1VOTE9DS19DT0RF KTsKPiArCQlpZiAocmV0KQo+ICsJCQlicmVhazsKPiArCj4gKwkJcmV0ID0gcmVnbWFwX3NldF9i aXRzKGh1Yi0+cmVnbWFwLAo+ICsJCQkJICAgICAgUDNIMlg0WF9UUF9TTUJVU19BR05UX0lCSV9D T05GSUcsCj4gKwkJCQkgICAgICBidXMtPnRwX21hc2spOwo+ICsKPiArCQkvKiBMb2NrIGFjY2Vz cyB0byBwcm90ZWN0ZWQgcmVnaXN0ZXJzICovCj4gKwkJcmVsb2NrX3JldCA9IHJlZ21hcF93cml0 ZShodWItPnJlZ21hcCwKPiArCQkJCQkgIFAzSDJYNFhfREVWX1JFR19QUk9URUNUSU9OX0NPREUs Cj4gKwkJCQkJICBQM0gyWDRYX1JFR0lTVEVSU19MT0NLX0NPREUpOwo+ICsJfQoKW1NldmVyaXR5 OiBNZWRpdW1dCkRvZXMgcDNoMng0eF90cF9pMmNfcmVnX3NsYXZlKCkgbmVlZCB0byBjbGVhciBC VUZfUkVDRUlWRURfRkxBR19NQVNLIGluClAzSDJYNFhfVFAwX1NNQlVTX0FHTlRfU1RTICsgYnVz LT50cF9wb3J0IGJlZm9yZSBlbmFibGluZyB0aGUgcG9ydCBJQkk/CgpwM2gyeDR4X2NvbmZpZ3Vy ZV90cCgpIGVuYWJsZXMgUDNIMlg0WF9UUF9TTUJVU19BR05UX0VOIGF0IHByb2JlIHRpbWUsIGFu ZApwM2gyeDR4X3RwX2kyY191bnJlZ19zbGF2ZSgpIG9ubHkgbWFza3MgdGhlIHBvcnQgYml0IGlu ClAzSDJYNFhfVFBfU01CVVNfQUdOVF9JQklfQ09ORklHLiAgQW55IFNNQnVzIHdyaXRlIGFycml2 aW5nIG9uIHRoZSBwb3J0CndoaWxlIG5vIHNsYXZlIGlzIHJlZ2lzdGVyZWQgZmlsbHMgdGhlIHRh cmdldCBidWZmZXJzIGFuZCBzZXRzIHRoZSByZWNlaXZlCmFuZCBvdmVyZmxvdyBzdGF0dXMgZmxh Z3Mgd2l0aG91dCB0cmlnZ2VyaW5nIHAzaDJ4NHhfaWJpX2hhbmRsZXIoKS4gIExlYXZpbmcKdGhv c2UgZmxhZ3Mgc2V0IGFjcm9zcyByZWdpc3RyYXRpb24gZWl0aGVyIGRlbGl2ZXJzIHN0YWxlIHBh eWxvYWRzIHRvIHRoZQpuZXcgc2xhdmUgY2xpZW50IG9yIGxlYXZlcyBib3RoIHRhcmdldCBidWZm ZXJzIHBlcm1hbmVudGx5IG9jY3VwaWVkIGlmIGFuCklCSSByZXF1aXJlcyBhIGZyZXNoIHN0YXR1 cyB0cmFuc2l0aW9uLgoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5k ZXYvIy9wYXRjaHNldC8yMDI2MTExMjEyNDQzNy4zMzY3MjUyLTEtbGFrc2hheS5waXBsYW5pQG54 cC5jb20/cGFydD00CgotLSAKbGludXgtaTNjIG1haWxpbmcgbGlzdApsaW51eC1pM2NAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWkzYwo=