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 D4BBA4F55A0 for ; Tue, 13 Oct 2026 12:06:29 +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=1791893191; cv=none; b=Wi7IG+/LVnzchO/ERl5Xw+V/Y6nY/LxPYPExBqVo5LhwlCVpsCHzHdmaO8/JnEtOdqG1XLF1eBokxd56ZSDC3s9/7lepVacVAuHvEED72mJS3xjUKlk+Im5vXKob7siB8Eb0o1sNz9TauEYq+N4/bHqXZ3G0MOeosHped8y1u6U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791893191; c=relaxed/simple; bh=dvKZ8NJsB7AB+75yN1fyf9hYXwn3aKBDUjRKA15+/M4=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date; b=Y82NO/vUGk9hIaZAGvej4nEt8ekEsyfyxntZw3g5T7HwCJ90DA7+yhM8MLFfLI99zbObqQ0kLLAVBzjgZDKr1lZiU+cug8I6DKI/xGf8z8UFHGZdJkdQIaeYGZe/sRbXUX8uL/gbntGJNdZbSqBgQoJGtr5txpDawdploQriy0Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RPDZyjIZ; 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="RPDZyjIZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 381741F00898; Tue, 13 Oct 2026 12:06:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791893189; bh=Ga1K/XGemiicM1+duLSR4yjWxKY6zdOiWG2eLtUmyqA=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=RPDZyjIZ0QG4f7f/FHxa/+BzLkG0aBt5+lVoAutxRjPX02gddnI3FZ1b/OfBVoflz fhXzEAot/RQ5SPnWyl/2ifKH5/cHzNhr7lsGDh4HfZMlQYUI8R31nkNzObaF1RliNK 0OPtPTXkEMpughDAwaEZYCxkVhuOTYQoi3NVI6Ya0afAPAlDRpRufDbYZlG3a1T8o8 DELUn1LZJEp+Img8IN110+O+UP3aRGph2S0PKWccfEhrxU17BfGyi0koWTQuvpVviA uOHk6QqSKRdpCPgQbWMEVj+D0XkYyv7Wq3QygvDmtDlD8QAdV5D0WZ3vd2K2gwULd+ BJmA7GGy1MBKw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 7/8] media: qcom: camss: csid: Add support for CSID 1190 Reply-To: sashiko-reviews@lists.linux.dev To: "Nihal Kumar Gupta" Cc: devicetree@vger.kernel.org, linux-phy@lists.infradead.org, robh@kernel.org, conor+dt@kernel.org, media-ci@linuxtv.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261013-hawi-maili-camss-v2-7-fc93222da89c@oss.qualcomm.com> References: <20261013-hawi-maili-camss-v2-0-fc93222da89c@oss.qualcomm.com> <20261013-hawi-maili-camss-v2-7-fc93222da89c@oss.qualcomm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 13 Oct 2026 12:06:28 +0000 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: - [High] media: qcom: camss: Integer underflow in __csid_configure_rx() cor= rupts CSID_CSI2_RX_CFG0 - [Medium] media: qcom: camss: Data race on aup_update and rup_update betwe= en process and hardirq context - [Medium] media: camss: CSID 1190 5th RDI stream inaccessible due to MSM_C= SID_PADS_NUM limit - [Low] media: qcom: camss: Macro MSM_CSID_MAX_SRC_STREAMS_1190 implicitly = captures local variable -- commit 479f67e9b9b628614ef82c2426c608857a19f333 Author: Hangxiang Ma media: qcom: camss: csid: Add support for CSID 1190 This commit adds support for the CSID 1190 hardware found on Hawi SoC. It introduces hardware resource descriptions, hardware-specific register programming, reset sequence, and BUF_DONE interrupt handling. CSID 1190 spl= its RUP and AUP updates into separate registers and uses a SET register to comm= it them. > diff --git a/drivers/media/platform/qcom/camss/camss-csid-1190.c b/driver= s/media/platform/qcom/camss/camss-csid-1190.c > new file mode 100644 > index 0000000000000..999733aa8ae63 > --- /dev/null > +++ b/drivers/media/platform/qcom/camss/camss-csid-1190.c [ ... ] > +/* CSI2 RX Configuration */ > +#define CSID_CSI2_RX_CFG0 0x880 > +#define CSI2_RX_CFG0_NUM_ACTIVE_LANES 0 [ ... ] > +#define MSM_CSID_MAX_SRC_STREAMS_1190 (csid_is_lite(csid) ? 4 : 5) [Severity: Low] This isn't a bug, but this macro implicitly captures a local variable named csid from the caller's scope. This masks dependencies and breaks if the loc= al variable is renamed. Could this be refactored to take csid as an explicit macro argument? [ ... ] > +static void __csid_aup_rup_clear(struct csid_device *csid, int port_id) > +{ > + /* Hardware clears the registers upon consuming the settings */ > + csid->aup_update &=3D ~CSID_RUP_AUP_RDI(port_id); > + csid->rup_update &=3D ~CSID_RUP_AUP_RDI(port_id); > +} [Severity: Medium] Are these read-modify-write operations safe from data races? In hardirq context, csid_isr() calls __csid_aup_rup_clear() which clears bi= ts in these same variables using non-atomic operations (&=3D ~). In process context, __csid_aup_update() and __csid_reg_update() also use non-atomic operations (|=3D) to set bits: drivers/media/platform/qcom/camss/camss-csid-1190.c:__csid_aup_update() { csid->aup_update |=3D CSID_RUP_AUP_RDI(port_id); ... } If an INFO_RUP_DONE hardware interrupt fires while the process-context loop= is preparing the next stream's bits, could the two execution paths race, potentially clobbering the interrupt handler's bit clear or the stream configuration's bit set? [ ... ] > +static void __csid_configure_rx(struct csid_device *csid, > + struct csid_phy_config *phy) > +{ > + struct camss *camss =3D csid->camss; > + u8 lane_cnt =3D csid->phy.lane_cnt; > + int val; > + > + if (!lane_cnt) > + lane_cnt =3D 4; > + > + val =3D (phy->lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES; [Severity: High] Does this code underflow if phy->lane_cnt is 0? While lane_cnt is correctly guarded against being 0 by falling back to 4, t= he bitshift operation uses the unmodified phy->lane_cnt struct member instead = of the corrected lane_cnt variable. If phy->lane_cnt is 0, 0 - 1 promotes to an integer -1. Shifting -1 left by= 0 evaluates to 0xFFFFFFFF, which would write an all-ones mask to the CSID_CSI2_RX_CFG0 register, completely corrupting its configuration and all reserved bits. [ ... ] > +static void csid_configure_stream(struct csid_device *csid, u8 enable) > +{ > + u8 i, k; > + > + __csid_configure_rx(csid, &csid->phy); > + > + for (i =3D 0; i < MSM_CSID_MAX_SRC_STREAMS_1190; i++) { > + if (csid->phy.en_vc & BIT(i)) { [Severity: Medium] Is the 5th RDI stream accessible? MSM_CSID_MAX_SRC_STREAMS_1190 evaluates to 5 for non-lite hardware, intendi= ng to support 5 RDI streams. However, the driver globally defines MSM_CSID_PADS_NUM as 5 (1 sink + 4 sources) in camss-csid.h. This restricts the V4L2 media entity to 4 source pads (indices 1 to 4). Sin= ce the stream configuration relies on the csid->phy.en_vc bitmask (populated during link setup based on pad indices), BIT(4) can never be set. Is the 5th iteration of this loop effectively dead code, rendering the 5th RDI stream inaccessible? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261013-hawi-maili= -camss-v2-0-fc93222da89c@oss.qualcomm.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 700DFCC6B08 for ; Tue, 13 Oct 2026 12:06:32 +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: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-Owner; bh=yj3WiZi59oxe2SGtbpkt7unlIzSBVICsQitJMxK78pg=; b=hb+0kQvvNuWKpI zOmytpk1VWe7Vx2iKn6+96IYln7MuHs+nWqWPtQvnN69+nUhwsO/Su3D1Bkf7IXOt5vQwHt3fU2bm Ozlfi8jHPIJ8i6ky2KTZ6+WbciVPN5mLsw3TPupYHZ9WR5CfDnUtbB0uEUys5yfgfV1NCPWum3lnh iPq4GRNKS7YEwehvRbjX6F1WUOuEnpvCv4ZMRcnzG3E/vRY8dpHGI6QItQ67TumCNQMNgWbhzBspt uyQ+VSIf3JUHBdsxsddnH+cuIWCLAAcdllB10LCuQUtfjS29CrwxcFiq6KsOvxsNvIMGKNuAogRur 1qCj3L9p3IpWi5aG0Bog==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGbH5-0000000Cmnw-3WNv; Tue, 13 Oct 2026 12:06:31 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGbH4-0000000Cmn1-1Zv4 for linux-phy@lists.infradead.org; Tue, 13 Oct 2026 12:06:31 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id C759141162; Tue, 13 Oct 2026 12:06:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 381741F00898; Tue, 13 Oct 2026 12:06:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1791893189; bh=Ga1K/XGemiicM1+duLSR4yjWxKY6zdOiWG2eLtUmyqA=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=RPDZyjIZ0QG4f7f/FHxa/+BzLkG0aBt5+lVoAutxRjPX02gddnI3FZ1b/OfBVoflz fhXzEAot/RQ5SPnWyl/2ifKH5/cHzNhr7lsGDh4HfZMlQYUI8R31nkNzObaF1RliNK 0OPtPTXkEMpughDAwaEZYCxkVhuOTYQoi3NVI6Ya0afAPAlDRpRufDbYZlG3a1T8o8 DELUn1LZJEp+Img8IN110+O+UP3aRGph2S0PKWccfEhrxU17BfGyi0koWTQuvpVviA uOHk6QqSKRdpCPgQbWMEVj+D0XkYyv7Wq3QygvDmtDlD8QAdV5D0WZ3vd2K2gwULd+ BJmA7GGy1MBKw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 7/8] media: qcom: camss: csid: Add support for CSID 1190 To: "Nihal Kumar Gupta" Cc: devicetree@vger.kernel.org, linux-phy@lists.infradead.org, robh@kernel.org, conor+dt@kernel.org, media-ci@linuxtv.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261013-hawi-maili-camss-v2-7-fc93222da89c@oss.qualcomm.com> References: <20261013-hawi-maili-camss-v2-0-fc93222da89c@oss.qualcomm.com> <20261013-hawi-maili-camss-v2-7-fc93222da89c@oss.qualcomm.com> Date: Tue, 13 Oct 2026 12:06:28 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list 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-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG1lZGlhOiBxY29tOiBj YW1zczogSW50ZWdlciB1bmRlcmZsb3cgaW4gX19jc2lkX2NvbmZpZ3VyZV9yeCgpIGNvcnJ1cHRz IENTSURfQ1NJMl9SWF9DRkcwCi0gW01lZGl1bV0gbWVkaWE6IHFjb206IGNhbXNzOiBEYXRhIHJh Y2Ugb24gYXVwX3VwZGF0ZSBhbmQgcnVwX3VwZGF0ZSBiZXR3ZWVuIHByb2Nlc3MgYW5kIGhhcmRp cnEgY29udGV4dAotIFtNZWRpdW1dIG1lZGlhOiBjYW1zczogQ1NJRCAxMTkwIDV0aCBSREkgc3Ry ZWFtIGluYWNjZXNzaWJsZSBkdWUgdG8gTVNNX0NTSURfUEFEU19OVU0gbGltaXQKLSBbTG93XSBt ZWRpYTogcWNvbTogY2Ftc3M6IE1hY3JvIE1TTV9DU0lEX01BWF9TUkNfU1RSRUFNU18xMTkwIGlt cGxpY2l0bHkgY2FwdHVyZXMgbG9jYWwgdmFyaWFibGUKLS0KCmNvbW1pdCA0NzlmNjdlOWI5YjYy ODYxNGVmODJjMjQyNmM2MDg4NTdhMTlmMzMzCkF1dGhvcjogSGFuZ3hpYW5nIE1hIDxoYW5neGlh bmcubWFAb3NzLnF1YWxjb21tLmNvbT4KCm1lZGlhOiBxY29tOiBjYW1zczogY3NpZDogQWRkIHN1 cHBvcnQgZm9yIENTSUQgMTE5MAoKVGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciB0aGUgQ1NJ RCAxMTkwIGhhcmR3YXJlIGZvdW5kIG9uIEhhd2kgU29DLgpJdCBpbnRyb2R1Y2VzIGhhcmR3YXJl IHJlc291cmNlIGRlc2NyaXB0aW9ucywgaGFyZHdhcmUtc3BlY2lmaWMgcmVnaXN0ZXIKcHJvZ3Jh bW1pbmcsIHJlc2V0IHNlcXVlbmNlLCBhbmQgQlVGX0RPTkUgaW50ZXJydXB0IGhhbmRsaW5nLiBD U0lEIDExOTAgc3BsaXRzClJVUCBhbmQgQVVQIHVwZGF0ZXMgaW50byBzZXBhcmF0ZSByZWdpc3Rl cnMgYW5kIHVzZXMgYSBTRVQgcmVnaXN0ZXIgdG8gY29tbWl0CnRoZW0uCgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vY2Ftc3MvY2Ftc3MtY3NpZC0xMTkwLmMgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vY2Ftc3MvY2Ftc3MtY3NpZC0xMTkwLmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLjk5OTczM2FhOGFlNjMKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2NhbXNzL2Nh bXNzLWNzaWQtMTE5MC5jClsgLi4uIF0KPiArLyogQ1NJMiBSWCBDb25maWd1cmF0aW9uICovCj4g KyNkZWZpbmUgQ1NJRF9DU0kyX1JYX0NGRzAJCQkweDg4MAo+ICsjZGVmaW5lCQlDU0kyX1JYX0NG RzBfTlVNX0FDVElWRV9MQU5FUwkJMApbIC4uLiBdCj4gKyNkZWZpbmUgTVNNX0NTSURfTUFYX1NS Q19TVFJFQU1TXzExOTAJCShjc2lkX2lzX2xpdGUoY3NpZCkgPyA0IDogNSkKCltTZXZlcml0eTog TG93XQpUaGlzIGlzbid0IGEgYnVnLCBidXQgdGhpcyBtYWNybyBpbXBsaWNpdGx5IGNhcHR1cmVz IGEgbG9jYWwgdmFyaWFibGUgbmFtZWQKY3NpZCBmcm9tIHRoZSBjYWxsZXIncyBzY29wZS4gVGhp cyBtYXNrcyBkZXBlbmRlbmNpZXMgYW5kIGJyZWFrcyBpZiB0aGUgbG9jYWwKdmFyaWFibGUgaXMg cmVuYW1lZC4gQ291bGQgdGhpcyBiZSByZWZhY3RvcmVkIHRvIHRha2UgY3NpZCBhcyBhbiBleHBs aWNpdAptYWNybyBhcmd1bWVudD8KClsgLi4uIF0KPiArc3RhdGljIHZvaWQgX19jc2lkX2F1cF9y dXBfY2xlYXIoc3RydWN0IGNzaWRfZGV2aWNlICpjc2lkLCBpbnQgcG9ydF9pZCkKPiArewo+ICsJ LyogSGFyZHdhcmUgY2xlYXJzIHRoZSByZWdpc3RlcnMgdXBvbiBjb25zdW1pbmcgdGhlIHNldHRp bmdzICovCj4gKwljc2lkLT5hdXBfdXBkYXRlICY9IH5DU0lEX1JVUF9BVVBfUkRJKHBvcnRfaWQp Owo+ICsJY3NpZC0+cnVwX3VwZGF0ZSAmPSB+Q1NJRF9SVVBfQVVQX1JESShwb3J0X2lkKTsKPiAr fQoKW1NldmVyaXR5OiBNZWRpdW1dCkFyZSB0aGVzZSByZWFkLW1vZGlmeS13cml0ZSBvcGVyYXRp b25zIHNhZmUgZnJvbSBkYXRhIHJhY2VzPwoKSW4gaGFyZGlycSBjb250ZXh0LCBjc2lkX2lzcigp IGNhbGxzIF9fY3NpZF9hdXBfcnVwX2NsZWFyKCkgd2hpY2ggY2xlYXJzIGJpdHMKaW4gdGhlc2Ug c2FtZSB2YXJpYWJsZXMgdXNpbmcgbm9uLWF0b21pYyBvcGVyYXRpb25zICgmPSB+KS4KCkluIHBy b2Nlc3MgY29udGV4dCwgX19jc2lkX2F1cF91cGRhdGUoKSBhbmQgX19jc2lkX3JlZ191cGRhdGUo KSBhbHNvIHVzZQpub24tYXRvbWljIG9wZXJhdGlvbnMgKHw9KSB0byBzZXQgYml0czoKCmRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9jYW1zcy9jYW1zcy1jc2lkLTExOTAuYzpfX2NzaWRfYXVw X3VwZGF0ZSgpIHsKICAgIGNzaWQtPmF1cF91cGRhdGUgfD0gQ1NJRF9SVVBfQVVQX1JESShwb3J0 X2lkKTsKICAgIC4uLgp9CgpJZiBhbiBJTkZPX1JVUF9ET05FIGhhcmR3YXJlIGludGVycnVwdCBm aXJlcyB3aGlsZSB0aGUgcHJvY2Vzcy1jb250ZXh0IGxvb3AgaXMKcHJlcGFyaW5nIHRoZSBuZXh0 IHN0cmVhbSdzIGJpdHMsIGNvdWxkIHRoZSB0d28gZXhlY3V0aW9uIHBhdGhzIHJhY2UsCnBvdGVu dGlhbGx5IGNsb2JiZXJpbmcgdGhlIGludGVycnVwdCBoYW5kbGVyJ3MgYml0IGNsZWFyIG9yIHRo ZSBzdHJlYW0KY29uZmlndXJhdGlvbidzIGJpdCBzZXQ/CgpbIC4uLiBdCj4gK3N0YXRpYyB2b2lk IF9fY3NpZF9jb25maWd1cmVfcngoc3RydWN0IGNzaWRfZGV2aWNlICpjc2lkLAo+ICsJCQkJc3Ry dWN0IGNzaWRfcGh5X2NvbmZpZyAqcGh5KQo+ICt7Cj4gKwlzdHJ1Y3QgY2Ftc3MgKmNhbXNzID0g Y3NpZC0+Y2Ftc3M7Cj4gKwl1OCBsYW5lX2NudCA9IGNzaWQtPnBoeS5sYW5lX2NudDsKPiArCWlu dCB2YWw7Cj4gKwo+ICsJaWYgKCFsYW5lX2NudCkKPiArCQlsYW5lX2NudCA9IDQ7Cj4gKwo+ICsJ dmFsID0gKHBoeS0+bGFuZV9jbnQgLSAxKSA8PCBDU0kyX1JYX0NGRzBfTlVNX0FDVElWRV9MQU5F UzsKCltTZXZlcml0eTogSGlnaF0KRG9lcyB0aGlzIGNvZGUgdW5kZXJmbG93IGlmIHBoeS0+bGFu ZV9jbnQgaXMgMD8KCldoaWxlIGxhbmVfY250IGlzIGNvcnJlY3RseSBndWFyZGVkIGFnYWluc3Qg YmVpbmcgMCBieSBmYWxsaW5nIGJhY2sgdG8gNCwgdGhlCmJpdHNoaWZ0IG9wZXJhdGlvbiB1c2Vz IHRoZSB1bm1vZGlmaWVkIHBoeS0+bGFuZV9jbnQgc3RydWN0IG1lbWJlciBpbnN0ZWFkIG9mCnRo ZSBjb3JyZWN0ZWQgbGFuZV9jbnQgdmFyaWFibGUuCgpJZiBwaHktPmxhbmVfY250IGlzIDAsIDAg LSAxIHByb21vdGVzIHRvIGFuIGludGVnZXIgLTEuIFNoaWZ0aW5nIC0xIGxlZnQgYnkgMApldmFs dWF0ZXMgdG8gMHhGRkZGRkZGRiwgd2hpY2ggd291bGQgd3JpdGUgYW4gYWxsLW9uZXMgbWFzayB0 byB0aGUKQ1NJRF9DU0kyX1JYX0NGRzAgcmVnaXN0ZXIsIGNvbXBsZXRlbHkgY29ycnVwdGluZyBp dHMgY29uZmlndXJhdGlvbiBhbmQgYWxsCnJlc2VydmVkIGJpdHMuCgpbIC4uLiBdCj4gK3N0YXRp YyB2b2lkIGNzaWRfY29uZmlndXJlX3N0cmVhbShzdHJ1Y3QgY3NpZF9kZXZpY2UgKmNzaWQsIHU4 IGVuYWJsZSkKPiArewo+ICsJdTggaSwgazsKPiArCj4gKwlfX2NzaWRfY29uZmlndXJlX3J4KGNz aWQsICZjc2lkLT5waHkpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBNU01fQ1NJRF9NQVhfU1JD X1NUUkVBTVNfMTE5MDsgaSsrKSB7Cj4gKwkJaWYgKGNzaWQtPnBoeS5lbl92YyAmIEJJVChpKSkg ewoKW1NldmVyaXR5OiBNZWRpdW1dCklzIHRoZSA1dGggUkRJIHN0cmVhbSBhY2Nlc3NpYmxlPwoK TVNNX0NTSURfTUFYX1NSQ19TVFJFQU1TXzExOTAgZXZhbHVhdGVzIHRvIDUgZm9yIG5vbi1saXRl IGhhcmR3YXJlLCBpbnRlbmRpbmcKdG8gc3VwcG9ydCA1IFJESSBzdHJlYW1zLiBIb3dldmVyLCB0 aGUgZHJpdmVyIGdsb2JhbGx5IGRlZmluZXMKTVNNX0NTSURfUEFEU19OVU0gYXMgNSAoMSBzaW5r ICsgNCBzb3VyY2VzKSBpbiBjYW1zcy1jc2lkLmguCgpUaGlzIHJlc3RyaWN0cyB0aGUgVjRMMiBt ZWRpYSBlbnRpdHkgdG8gNCBzb3VyY2UgcGFkcyAoaW5kaWNlcyAxIHRvIDQpLiBTaW5jZQp0aGUg c3RyZWFtIGNvbmZpZ3VyYXRpb24gcmVsaWVzIG9uIHRoZSBjc2lkLT5waHkuZW5fdmMgYml0bWFz ayAocG9wdWxhdGVkCmR1cmluZyBsaW5rIHNldHVwIGJhc2VkIG9uIHBhZCBpbmRpY2VzKSwgQklU KDQpIGNhbiBuZXZlciBiZSBzZXQuIElzIHRoZSA1dGgKaXRlcmF0aW9uIG9mIHRoaXMgbG9vcCBl ZmZlY3RpdmVseSBkZWFkIGNvZGUsIHJlbmRlcmluZyB0aGUgNXRoIFJESSBzdHJlYW0KaW5hY2Nl c3NpYmxlPwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9w YXRjaHNldC8yMDI2MTAxMy1oYXdpLW1haWxpLWNhbXNzLXYyLTAtZmM5MzIyMmRhODljQG9zcy5x dWFsY29tbS5jb20/cGFydD03CgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1waHkK