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 5F5AE33A9CF for ; Thu, 23 Jul 2026 06:54:44 +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=1784789685; cv=none; b=bOtgnoL/ePGs8UCtrQmZYoJ9Fv3kw/TNlTS0R5cExEfSWYyFV+F9dZ8dHGQguuosd39MNfonhE7ks+2rMVaMZQcciy5UlJfamPPbEjXkEzNGeOjOtrPlNFiBNKzbugfGaYFCFH/GU1X2bspkardm2xiBbtKttOUMF46VRNk/Eq8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784789685; c=relaxed/simple; bh=yzdiHJgkXO6xrqPTOlCbRJQ6g8KEoNTSAX40T0OC+Hs=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=u2i1NCU7NZaEXWRXGnSzWtsDNGry5r38BOTuWtZfYiQn/LDcD6VVJTdzZkVstb7OqcfQCnTwFhGXYs/nMXQGAL9bSJI9SD3d6LNgHhHevtNXXV2/csBp3OZIck6e9XzPUfe+jULnKwlUNpmHZ4FhrsafXUSI6SncKCTDu/Qqrus= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SIp2WnaN; 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="SIp2WnaN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8DD251F000E9; Thu, 23 Jul 2026 06:54:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784789684; bh=uWTUteCAp9ImnES4vlmlMYvMe9mjMxfM6NVOj07EfW4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=SIp2WnaNB+mL7P/dc1hRNO0nVuFAeBsjO0tJU330sclGNxG+tUpPFuIXWtKMEfsPU SIhSM0OIIoQeJBMGGGaXRYi1l6Y2YcwfS9gGIZtv/6ChRTMH4vEu1Gdwikq9LVSiBC BLY0sRrcAZ5WRw9kIxSrb8aBtwmexN4Rzu026aIYgB1ckX+61K+QuZsd+CNeouPVgi 0N71f9DfBchJTkTXANSKx5GlsQErtmmFl+4rDfRZXCaNAT4HMu5ZrzsNK7GAv8vAvV wAmUg5a0CRz+fHnfAihjk8Ter8wKi5UuRBQ/2kGFywnPAIB2BV2xMH5YnKODV+qHwH XjyfiPY3lY8OA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 3/4] spi: amlogic: spisg: Fix the incorrect keep_ss of the last descriptor Reply-To: sashiko-reviews@lists.linux.dev To: "Xianwei Zhao" Cc: conor+dt@kernel.org, neil.armstrong@linaro.org, devicetree@vger.kernel.org, robh@kernel.org, linux-amlogic@lists.infradead.org In-Reply-To: <20260723-a9-spisg-v2-3-9fc39106b7e2@amlogic.com> References: <20260723-a9-spisg-v2-0-9fc39106b7e2@amlogic.com> <20260723-a9-spisg-v2-3-9fc39106b7e2@amlogic.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 23 Jul 2026 06:54:43 +0000 Message-Id: <20260723065443.8DD251F000E9@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: Pre-existing issues: - [High] Missing pm_runtime_disable() and pm_runtime_put() in probe error p= ath and remove(). - [High] Double-disable of clocks managed by devm_clk_get_enabled(). - [High] Race condition causing spurious -EBUSY transfer failures. - [High] Target abort incorrectly signals successful transfer completion. -- --- Patch [3]: [PATCH v2 3/4] spi: amlogic: spisg: Fix the incorrect keep_s= s of the last descriptor --- commit c9f43474b4fa19eea599df7045d868e70af19bd8 Author: Sunny Luo spi: amlogic: spisg: Fix the incorrect keep_ss of the last descriptor This commit fixes the incorrect handling of the keep_ss state for the last descriptor in the Amlogic SPISG driver. It ensures the CFG_KEEP_SS bit is properly set based on the final transfer's cs_change value, ensuring the chip select behaves correctly even when a cs-hold delay is present. > diff --git a/drivers/spi/spi-amlogic-spisg.c b/drivers/spi/spi-amlogic-sp= isg.c > index a6123975a37cf..2d66f00dccd45 100644 > --- a/drivers/spi/spi-amlogic-spisg.c > +++ b/drivers/spi/spi-amlogic-spisg.c [ ... ] > @@ -539,13 +542,17 @@ static int aml_spisg_transfer_one_message(struct sp= i_controller *ctlr, > xfer->effective_speed_hz); > } > =20 > - if (cs_hold_in_sclk) > + if (cs_hold_in_sclk) { > /* additional null-descriptor to achieve the cs-hold delay */ > aml_spisg_setup_null_desc(spisg, desc, cs_hold_in_sclk); > - else > desc--; > + desc->cfg_bus |=3D FIELD_PREP(CFG_KEEP_SS, 1); > + desc++; > + } else { > + desc--; > + } > =20 > - desc->cfg_bus |=3D FIELD_PREP(CFG_KEEP_SS, 0); > + FIELD_MODIFY(CFG_KEEP_SS, &desc->cfg_bus, last_xfer_keep_ss); > desc->cfg_start |=3D FIELD_PREP(CFG_EOC, 1); > =20 > /* some tolerances */ [Severity: High] This is a pre-existing issue, but does calling spi_finalize_current_message= () before releasing the hardware lock open a race window for the next transfer? In aml_spisg_transfer_one_message(), we have: msg->status =3D ret; spi_finalize_current_message(ctlr); aml_spisg_sem_up_write(spisg); Since spi_finalize_current_message() signals the SPI core that the controll= er is ready, could the SPI core immediately dispatch the next transfer on anot= her CPU, which then fails aml_spisg_sem_down_read() and aborts with -EBUSY? [Severity: High] This isn't a bug introduced by this patch, but does the target abort handler incorrectly signal a successful transfer? In aml_spisg_target_abort(): spisg->status =3D 0; regmap_write(spisg->map, SPISG_REG_DESC_LIST_H, 0); complete(&spisg->completion); And in aml_spisg_transfer_one_message(): if (wait_for_completion_timeout(&spisg->completion, spi_controller_is_target(spisg->controller) ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(ms))) { ret =3D spisg->status ? -EIO : 0; If a transfer is aborted, status is set to 0 and the wait completes. Does this cause the SPI client to incorrectly interpret an aborted transfer as fully successful? [Severity: High] This is a pre-existing issue, but do the probe error path and remove functions leak PM runtime references? In aml_spisg_probe(), the out_clk error path exits without disabling PM runtime: out_clk: if (spisg->core) clk_disable_unprepare(spisg->core); clk_disable_unprepare(spisg->pclk); return ret; Additionally, aml_spisg_remove() does not call pm_runtime_disable(): static void aml_spisg_remove(struct platform_device *pdev) { ... if (!pm_runtime_suspended(&pdev->dev)) { Does this prevent the device's power domain from suspending and cause a kernel warning when rebinding? [Severity: High] This isn't a bug introduced by this patch, but are the devm-managed clocks being double-disabled? In aml_spisg_clk_init(), pclk is explicitly disabled: clk_set_min_rate(spisg->pclk, SPISG_PCLK_RATE_MIN); clk_disable_unprepare(spisg->pclk); In the aml_spisg_probe() error path, both clocks are manually disabled: out_clk: if (spisg->core) clk_disable_unprepare(spisg->core); clk_disable_unprepare(spisg->pclk); And in aml_spisg_remove(), they are disabled again: clk_disable_unprepare(spisg->core); clk_disable_unprepare(spisg->pclk); Since these clocks are acquired using devm_clk_get_enabled(), which automatically registers a cleanup action, will manually disabling them underflow the clock enable count and trigger warnings from the clock framework? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260723-a9-spisg-v= 2-0-9fc39106b7e2@amlogic.com?part=3D3 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 EBFD1C531C7 for ; Thu, 23 Jul 2026 06:54:52 +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=mRaYUyJGEv7OxvQ/EPCZIeg10B/NHvqwqSeeZ2Ycyrw=; b=DRN/YbKX499pl2 FbY8gjpg5voeWaYoykrGKyDJI+yU5lesW5AMLVWu3+S7EG9DM1QESyqaWfS2D6dpni9ygCZ8tSJwN Y1rjGOsYij9IMdFheEH4dLc7qArkYFQ6PGNCWFXNBZSfGIHsV2NAkPelwKtQPpokauiyCpjLL/ooF HDYtg8+GByYN2mXvz/thsy1QwIjIcM8qUfAPszahOpmYKWWIvlc933NS8DDkDoVm/g0cfsIpPLJjr 1Y5aEnBnsbo+B0Nc8S4QH3ETxyklfYqg2KApp9Nk8qJ8NjJj56pn97D6UpkTz/LKgyfQOb26rZ3di OfYpMqugYW6MncPJyrDg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wmnKQ-0000000Daas-1itM; Thu, 23 Jul 2026 06:54:46 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wmnKP-0000000Daam-08hK for linux-amlogic@lists.infradead.org; Thu, 23 Jul 2026 06:54:45 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 467C7600AD; Thu, 23 Jul 2026 06:54:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8DD251F000E9; Thu, 23 Jul 2026 06:54:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784789684; bh=uWTUteCAp9ImnES4vlmlMYvMe9mjMxfM6NVOj07EfW4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=SIp2WnaNB+mL7P/dc1hRNO0nVuFAeBsjO0tJU330sclGNxG+tUpPFuIXWtKMEfsPU SIhSM0OIIoQeJBMGGGaXRYi1l6Y2YcwfS9gGIZtv/6ChRTMH4vEu1Gdwikq9LVSiBC BLY0sRrcAZ5WRw9kIxSrb8aBtwmexN4Rzu026aIYgB1ckX+61K+QuZsd+CNeouPVgi 0N71f9DfBchJTkTXANSKx5GlsQErtmmFl+4rDfRZXCaNAT4HMu5ZrzsNK7GAv8vAvV wAmUg5a0CRz+fHnfAihjk8Ter8wKi5UuRBQ/2kGFywnPAIB2BV2xMH5YnKODV+qHwH XjyfiPY3lY8OA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 3/4] spi: amlogic: spisg: Fix the incorrect keep_ss of the last descriptor To: "Xianwei Zhao" Cc: conor+dt@kernel.org, neil.armstrong@linaro.org, devicetree@vger.kernel.org, robh@kernel.org, linux-amlogic@lists.infradead.org In-Reply-To: <20260723-a9-spisg-v2-3-9fc39106b7e2@amlogic.com> References: <20260723-a9-spisg-v2-0-9fc39106b7e2@amlogic.com> <20260723-a9-spisg-v2-3-9fc39106b7e2@amlogic.com> Date: Thu, 23 Jul 2026 06:54:43 +0000 Message-Id: <20260723065443.8DD251F000E9@smtp.kernel.org> 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: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 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 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBNaXNzaW5nIHBtX3J1bnRpbWVfZGlzYWJsZSgpIGFuZCBwbV9ydW50aW1lX3B1dCgp IGluIHByb2JlIGVycm9yIHBhdGggYW5kIHJlbW92ZSgpLgotIFtIaWdoXSBEb3VibGUtZGlzYWJs ZSBvZiBjbG9ja3MgbWFuYWdlZCBieSBkZXZtX2Nsa19nZXRfZW5hYmxlZCgpLgotIFtIaWdoXSBS YWNlIGNvbmRpdGlvbiBjYXVzaW5nIHNwdXJpb3VzIC1FQlVTWSB0cmFuc2ZlciBmYWlsdXJlcy4K LSBbSGlnaF0gVGFyZ2V0IGFib3J0IGluY29ycmVjdGx5IHNpZ25hbHMgc3VjY2Vzc2Z1bCB0cmFu c2ZlciBjb21wbGV0aW9uLgotLQoKLS0tIFBhdGNoIFszXTogW1BBVENIIHYyIDMvNF0gc3BpOiBh bWxvZ2ljOiBzcGlzZzogRml4IHRoZSBpbmNvcnJlY3Qga2VlcF9zcyBvZiB0aGUgbGFzdCBkZXNj cmlwdG9yIC0tLQpjb21taXQgYzlmNDM0NzRiNGZhMTllZWE1OTlkZjcwNDVkODY4ZTcwYWYxOWJk OApBdXRob3I6IFN1bm55IEx1byA8c3VubnkubHVvQGFtbG9naWMuY29tPgpzcGk6IGFtbG9naWM6 IHNwaXNnOiBGaXggdGhlIGluY29ycmVjdCBrZWVwX3NzIG9mIHRoZSBsYXN0IGRlc2NyaXB0b3IK ClRoaXMgY29tbWl0IGZpeGVzIHRoZSBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdGhlIGtlZXBfc3Mg c3RhdGUgZm9yIHRoZSBsYXN0CmRlc2NyaXB0b3IgaW4gdGhlIEFtbG9naWMgU1BJU0cgZHJpdmVy LiBJdCBlbnN1cmVzIHRoZSBDRkdfS0VFUF9TUyBiaXQgaXMKcHJvcGVybHkgc2V0IGJhc2VkIG9u IHRoZSBmaW5hbCB0cmFuc2ZlcidzIGNzX2NoYW5nZSB2YWx1ZSwgZW5zdXJpbmcgdGhlCmNoaXAg c2VsZWN0IGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gd2hlbiBhIGNzLWhvbGQgZGVsYXkgaXMgcHJl c2VudC4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS1hbWxvZ2ljLXNwaXNnLmMgYi9k cml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5jCj4gaW5kZXggYTYxMjM5NzVhMzdjZi4uMmQ2 NmYwMGRjY2Q0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NwaS9zcGktYW1sb2dpYy1zcGlzZy5j Cj4gKysrIGIvZHJpdmVycy9zcGkvc3BpLWFtbG9naWMtc3Bpc2cuYwoKWyAuLi4gXQoKPiBAQCAt NTM5LDEzICs1NDIsMTcgQEAgc3RhdGljIGludCBhbWxfc3Bpc2dfdHJhbnNmZXJfb25lX21lc3Nh Z2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLAo+ICAJCQkJICAgICAgIHhmZXItPmVmZmVj dGl2ZV9zcGVlZF9oeik7Cj4gIAl9Cj4gIAo+IC0JaWYgKGNzX2hvbGRfaW5fc2NsaykKPiArCWlm IChjc19ob2xkX2luX3NjbGspIHsKPiAgCQkvKiBhZGRpdGlvbmFsIG51bGwtZGVzY3JpcHRvciB0 byBhY2hpZXZlIHRoZSBjcy1ob2xkIGRlbGF5ICovCj4gIAkJYW1sX3NwaXNnX3NldHVwX251bGxf ZGVzYyhzcGlzZywgZGVzYywgY3NfaG9sZF9pbl9zY2xrKTsKPiAtCWVsc2UKPiAgCQlkZXNjLS07 Cj4gKwkJZGVzYy0+Y2ZnX2J1cyB8PSBGSUVMRF9QUkVQKENGR19LRUVQX1NTLCAxKTsKPiArCQlk ZXNjKys7Cj4gKwl9IGVsc2Ugewo+ICsJCWRlc2MtLTsKPiArCX0KPiAgCj4gLQlkZXNjLT5jZmdf YnVzIHw9IEZJRUxEX1BSRVAoQ0ZHX0tFRVBfU1MsIDApOwo+ICsJRklFTERfTU9ESUZZKENGR19L RUVQX1NTLCAmZGVzYy0+Y2ZnX2J1cywgbGFzdF94ZmVyX2tlZXBfc3MpOwo+ICAJZGVzYy0+Y2Zn X3N0YXJ0IHw9IEZJRUxEX1BSRVAoQ0ZHX0VPQywgMSk7Cj4gIAo+ICAJLyogc29tZSB0b2xlcmFu Y2VzICovCgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNzdWUsIGJ1 dCBkb2VzIGNhbGxpbmcgc3BpX2ZpbmFsaXplX2N1cnJlbnRfbWVzc2FnZSgpCmJlZm9yZSByZWxl YXNpbmcgdGhlIGhhcmR3YXJlIGxvY2sgb3BlbiBhIHJhY2Ugd2luZG93IGZvciB0aGUgbmV4dCB0 cmFuc2Zlcj8KCkluIGFtbF9zcGlzZ190cmFuc2Zlcl9vbmVfbWVzc2FnZSgpLCB3ZSBoYXZlOgoK CW1zZy0+c3RhdHVzID0gcmV0OwoJc3BpX2ZpbmFsaXplX2N1cnJlbnRfbWVzc2FnZShjdGxyKTsK CWFtbF9zcGlzZ19zZW1fdXBfd3JpdGUoc3Bpc2cpOwoKU2luY2Ugc3BpX2ZpbmFsaXplX2N1cnJl bnRfbWVzc2FnZSgpIHNpZ25hbHMgdGhlIFNQSSBjb3JlIHRoYXQgdGhlIGNvbnRyb2xsZXIKaXMg cmVhZHksIGNvdWxkIHRoZSBTUEkgY29yZSBpbW1lZGlhdGVseSBkaXNwYXRjaCB0aGUgbmV4dCB0 cmFuc2ZlciBvbiBhbm90aGVyCkNQVSwgd2hpY2ggdGhlbiBmYWlscyBhbWxfc3Bpc2dfc2VtX2Rv d25fcmVhZCgpIGFuZCBhYm9ydHMgd2l0aCAtRUJVU1k/CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMg aXNuJ3QgYSBidWcgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLCBidXQgZG9lcyB0aGUgdGFyZ2V0 IGFib3J0IGhhbmRsZXIKaW5jb3JyZWN0bHkgc2lnbmFsIGEgc3VjY2Vzc2Z1bCB0cmFuc2Zlcj8K CkluIGFtbF9zcGlzZ190YXJnZXRfYWJvcnQoKToKCglzcGlzZy0+c3RhdHVzID0gMDsKCXJlZ21h cF93cml0ZShzcGlzZy0+bWFwLCBTUElTR19SRUdfREVTQ19MSVNUX0gsIDApOwoJY29tcGxldGUo JnNwaXNnLT5jb21wbGV0aW9uKTsKCkFuZCBpbiBhbWxfc3Bpc2dfdHJhbnNmZXJfb25lX21lc3Nh Z2UoKToKCglpZiAod2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZzcGlzZy0+Y29tcGxldGlv biwKCQkJCQlzcGlfY29udHJvbGxlcl9pc190YXJnZXQoc3Bpc2ctPmNvbnRyb2xsZXIpID8KCQkJ CQlNQVhfU0NIRURVTEVfVElNRU9VVCA6IG1zZWNzX3RvX2ppZmZpZXMobXMpKSkgewoJCXJldCA9 IHNwaXNnLT5zdGF0dXMgPyAtRUlPIDogMDsKCklmIGEgdHJhbnNmZXIgaXMgYWJvcnRlZCwgc3Rh dHVzIGlzIHNldCB0byAwIGFuZCB0aGUgd2FpdCBjb21wbGV0ZXMuIERvZXMKdGhpcyBjYXVzZSB0 aGUgU1BJIGNsaWVudCB0byBpbmNvcnJlY3RseSBpbnRlcnByZXQgYW4gYWJvcnRlZCB0cmFuc2Zl ciBhcwpmdWxseSBzdWNjZXNzZnVsPwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEgcHJlLWV4 aXN0aW5nIGlzc3VlLCBidXQgZG8gdGhlIHByb2JlIGVycm9yIHBhdGggYW5kIHJlbW92ZQpmdW5j dGlvbnMgbGVhayBQTSBydW50aW1lIHJlZmVyZW5jZXM/CgpJbiBhbWxfc3Bpc2dfcHJvYmUoKSwg dGhlIG91dF9jbGsgZXJyb3IgcGF0aCBleGl0cyB3aXRob3V0IGRpc2FibGluZwpQTSBydW50aW1l OgoKb3V0X2NsazoKCWlmIChzcGlzZy0+Y29yZSkKCQljbGtfZGlzYWJsZV91bnByZXBhcmUoc3Bp c2ctPmNvcmUpOwoJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNwaXNnLT5wY2xrKTsKCglyZXR1cm4g cmV0OwoKQWRkaXRpb25hbGx5LCBhbWxfc3Bpc2dfcmVtb3ZlKCkgZG9lcyBub3QgY2FsbCBwbV9y dW50aW1lX2Rpc2FibGUoKToKCnN0YXRpYyB2b2lkIGFtbF9zcGlzZ19yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKewouLi4KCWlmICghcG1fcnVudGltZV9zdXNwZW5kZWQoJnBk ZXYtPmRldikpIHsKCkRvZXMgdGhpcyBwcmV2ZW50IHRoZSBkZXZpY2UncyBwb3dlciBkb21haW4g ZnJvbSBzdXNwZW5kaW5nIGFuZCBjYXVzZQphIGtlcm5lbCB3YXJuaW5nIHdoZW4gcmViaW5kaW5n PwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzbid0IGEgYnVnIGludHJvZHVjZWQgYnkgdGhpcyBw YXRjaCwgYnV0IGFyZSB0aGUgZGV2bS1tYW5hZ2VkIGNsb2NrcwpiZWluZyBkb3VibGUtZGlzYWJs ZWQ/CgpJbiBhbWxfc3Bpc2dfY2xrX2luaXQoKSwgcGNsayBpcyBleHBsaWNpdGx5IGRpc2FibGVk OgoKCWNsa19zZXRfbWluX3JhdGUoc3Bpc2ctPnBjbGssIFNQSVNHX1BDTEtfUkFURV9NSU4pOwoK CWNsa19kaXNhYmxlX3VucHJlcGFyZShzcGlzZy0+cGNsayk7CgpJbiB0aGUgYW1sX3NwaXNnX3By b2JlKCkgZXJyb3IgcGF0aCwgYm90aCBjbG9ja3MgYXJlIG1hbnVhbGx5IGRpc2FibGVkOgoKb3V0 X2NsazoKCWlmIChzcGlzZy0+Y29yZSkKCQljbGtfZGlzYWJsZV91bnByZXBhcmUoc3Bpc2ctPmNv cmUpOwoJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNwaXNnLT5wY2xrKTsKCkFuZCBpbiBhbWxfc3Bp c2dfcmVtb3ZlKCksIHRoZXkgYXJlIGRpc2FibGVkIGFnYWluOgoKCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUoc3Bpc2ctPmNvcmUpOwoJCWNsa19kaXNhYmxlX3VucHJlcGFyZShzcGlzZy0+cGNsayk7 CgpTaW5jZSB0aGVzZSBjbG9ja3MgYXJlIGFjcXVpcmVkIHVzaW5nIGRldm1fY2xrX2dldF9lbmFi bGVkKCksIHdoaWNoCmF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIGEgY2xlYW51cCBhY3Rpb24sIHdp bGwgbWFudWFsbHkgZGlzYWJsaW5nIHRoZW0KdW5kZXJmbG93IHRoZSBjbG9jayBlbmFibGUgY291 bnQgYW5kIHRyaWdnZXIgd2FybmluZ3MgZnJvbSB0aGUgY2xvY2sKZnJhbWV3b3JrPwoKLS0gClNh c2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDcy My1hOS1zcGlzZy12Mi0wLTlmYzM5MTA2YjdlMkBhbWxvZ2ljLmNvbT9wYXJ0PTMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFp bGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK