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 E9A02429831; Tue, 16 Jun 2026 10:14:02 +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=1781604844; cv=none; b=Q6XIi0gofNlRdwxvpQiLwGcmv5T4nCEeRLMSIWUfa0Aopy2GoMbPa7eyCgEkbRtNlWOzqDIdJJVvRhPVygSsdysUUCt/utp9thS9Ci3VokgbtgOUzimWHtY0x1HV2S/2RckZ6D+LihPqATth23aE1YZ6/Pc6MRfzG1CPte+w1D0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781604844; c=relaxed/simple; bh=CkQkf/98/u+xk10cclKmFBg9buW6Zc7qAb+ABsgu6lo=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=tnFahTZon4/hy1W4luHzCI1SFxQteQ1LZsylO+NEtMNauKmuNmWa+WD3YFn3Mlsfot7zZ+rr8FuNe769+u5UEdnzIkM9nJabmKQ2zFB4HX9GZkPJKoKJhn+f7e64FVYnRsgT5xnnv2hV2GFYJPIhhTieRnyV4eSjR3QyzAp4p9c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WvFwrHkz; 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="WvFwrHkz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EB6591F000E9; Tue, 16 Jun 2026 10:14:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1781604842; bh=IWL9O+mOnqNE+zk47q2aUvYc4Z4XdhpD7ad9rAgRuqY=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=WvFwrHkzniFXBlCfpb6r9vahieCEq2yoWhTTLr/xYKzb/GaeX84QgiPBya+CKMo2n y1UnI8NSjbA3N84TuckXZj2McDMmjEtCmuD26kB82PfCVp+lHLbO3uUmzeoHkks3RA +Sb/Sn4bWmlCLFglWYXLOL32N1iGjJRESPEFEPLUxn8c04wQ66x1/FRRwXAqKwS7xI QEfO7GS/8Zis2y1Bun+GfFqFU2hdQXZwmxRYZuFC7+zHWPjb0lZ68z8rCKxvhUustF O/auhD42P/+0IrPg4S3/fIeNf/EWtlYuiw9L0H20wgsN7t2jV0PqVh+BDIH4k1ABh0 dQIzyZKiAlnOw== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 08/12] i3c: dw-i3c-master: Add a quirk to skip clock and reset Reply-To: sashiko-reviews@lists.linux.dev To: "Akhil R" Cc: devicetree@vger.kernel.org, Frank.Li@kernel.org, linux-i3c@lists.infradead.org, linux-hwmon@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org In-Reply-To: <20260616095429.3947205-9-akhilrajeev@nvidia.com> References: <20260616095429.3947205-9-akhilrajeev@nvidia.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 16 Jun 2026 10:14:01 +0000 Message-Id: <20260616101401.EB6591F000E9@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: Pre-existing issues: - [High] Type confusion when an ACPI device binds via PRP0001, causing memo= ry addresses to be cast to hardware quirk flags. - [High] Double disable of clocks during driver unbind if the device is run= time suspended. -- commit 40ac6ebf3eb6f03540ce6b0b57bfd00730536f5d Author: Akhil R i3c: dw-i3c-master: Add a quirk to skip clock and reset Some ACPI-enumerated devices like Tegra410 do not have clock and reset resources exposed via the clk/reset frameworks. Unlike device tree, ACPI on Arm does not model such provider functions. > diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i= 3c-master.c > index 3e510fddf06c5..a2a4b88c20177 100644 > --- a/drivers/i3c/master/dw-i3c-master.c > +++ b/drivers/i3c/master/dw-i3c-master.c [ ... ] > @@ -1577,18 +1593,33 @@ int dw_i3c_common_probe(struct dw_i3c_master *mas= ter, > if (IS_ERR(master->regs)) > return PTR_ERR(master->regs); > =20 > - master->core_clk =3D devm_clk_get_enabled(&pdev->dev, NULL); > - if (IS_ERR(master->core_clk)) > - return PTR_ERR(master->core_clk); > - > - master->pclk =3D devm_clk_get_optional_enabled(&pdev->dev, "pclk"); > - if (IS_ERR(master->pclk)) > - return PTR_ERR(master->pclk); > + if (has_acpi_companion(&pdev->dev)) { > + quirks =3D (unsigned long)device_get_match_data(&pdev->dev); [Severity: High] This is a pre-existing issue, but can this cast cause a type confusion if an ACPI device uses the PRP0001 HID to bind via OF-style matching? In that scenario, has_acpi_companion() evaluates to true, but device_get_match_data() returns a pointer to the OF match data (like struct dw_i3c_drvdata). Casting this pointer directly to an unsigned long would interpret the memory address as a quirk bitmask, potentially enabling quirks randomly depending on the kernel's memory layout. > + } else if (pdev->dev.of_node) { > + drvdata =3D device_get_match_data(&pdev->dev); > + if (drvdata) > + quirks =3D drvdata->flags; > + } > + master->quirks =3D quirks; > =20 > - master->core_rst =3D devm_reset_control_get_optional_exclusive_deassert= ed(&pdev->dev, > - "core_rst"); > - if (IS_ERR(master->core_rst)) > - return PTR_ERR(master->core_rst); > + if (master->quirks & DW_I3C_ACPI_SKIP_CLK_RST) { > + master->core_clk =3D NULL; > + master->pclk =3D NULL; > + master->core_rst =3D NULL; > + } else { > + master->core_clk =3D devm_clk_get_enabled(&pdev->dev, NULL); [Severity: High] This is a pre-existing issue, but does using devm_clk_get_enabled() risk a double-disable during driver unbind if the device is runtime suspended? If the device is in the RPM_SUSPENDED state when dw_i3c_common_remove() run= s, the clock has already been disabled by the runtime_suspend callback. Because the remove function calls pm_runtime_disable() without first waking the device up via pm_runtime_get_sync(), the subsequent automatic devres cleanup will call clk_disable_unprepare() a second time on the already disabled clo= ck. > + if (IS_ERR(master->core_clk)) > + return PTR_ERR(master->core_clk); > + > + master->pclk =3D devm_clk_get_optional_enabled(&pdev->dev, "pclk"); > + if (IS_ERR(master->pclk)) > + return PTR_ERR(master->pclk); > + > + master->core_rst =3D devm_reset_control_get_optional_exclusive_deasser= ted(&pdev->dev, > + "core_rst"); > + if (IS_ERR(master->core_rst)) > + return PTR_ERR(master->core_rst); > + } > =20 > spin_lock_init(&master->xferqueue.lock); > INIT_LIST_HEAD(&master->xferqueue.list); --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260616095429.3947= 205-1-akhilrajeev@nvidia.com?part=3D8 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 0EFF8CD98E7 for ; Tue, 16 Jun 2026 10:14:04 +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=njdn7m1qe500q69Ep7xXvdqGB8zzcxBJHGTpdd8GB2o=; b=euQCaragv1cD8G A0/vLJECLLaGDTDiHCbHpDwU2jh6muMihJByogyqfr7A7a82GRjm4V/K6kFg2zXJt+Ot7KZRUQiaS S07nIl0hFCe/crVZJaphZZdnTQE8vyO9tA5nqropyuYhdImpSLGStjilWR1d4myXKtgbesN2wvQT2 nkxUdUcX0B4XHBIlrKdyIZoZR9Ir/hSXRIocjGz4roN23cxHpFf+NOBNYHsiR9PIK7FBh6J2Feg/j 7Mx5CHToJ2HFkaUsfDSlpUDKgR89hvRLOEqvBji1XOf5TzbmniJbu9dxObTTuB2DU86D5z4gKA7W2 Prx30MWRIYph8Rbbqilw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wZQo0-0000000FaSW-2tgV; Tue, 16 Jun 2026 10:14:04 +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 1wZQnz-0000000FaSD-2UlI for linux-i3c@lists.infradead.org; Tue, 16 Jun 2026 10:14:03 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id ED9F04173C; Tue, 16 Jun 2026 10:14:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EB6591F000E9; Tue, 16 Jun 2026 10:14:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1781604842; bh=IWL9O+mOnqNE+zk47q2aUvYc4Z4XdhpD7ad9rAgRuqY=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=WvFwrHkzniFXBlCfpb6r9vahieCEq2yoWhTTLr/xYKzb/GaeX84QgiPBya+CKMo2n y1UnI8NSjbA3N84TuckXZj2McDMmjEtCmuD26kB82PfCVp+lHLbO3uUmzeoHkks3RA +Sb/Sn4bWmlCLFglWYXLOL32N1iGjJRESPEFEPLUxn8c04wQ66x1/FRRwXAqKwS7xI QEfO7GS/8Zis2y1Bun+GfFqFU2hdQXZwmxRYZuFC7+zHWPjb0lZ68z8rCKxvhUustF O/auhD42P/+0IrPg4S3/fIeNf/EWtlYuiw9L0H20wgsN7t2jV0PqVh+BDIH4k1ABh0 dQIzyZKiAlnOw== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 08/12] i3c: dw-i3c-master: Add a quirk to skip clock and reset To: "Akhil R" Cc: devicetree@vger.kernel.org, Frank.Li@kernel.org, linux-i3c@lists.infradead.org, linux-hwmon@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org In-Reply-To: <20260616095429.3947205-9-akhilrajeev@nvidia.com> References: <20260616095429.3947205-9-akhilrajeev@nvidia.com> Date: Tue, 16 Jun 2026 10:14:01 +0000 Message-Id: <20260616101401.EB6591F000E9@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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBUeXBlIGNvbmZ1c2lvbiB3aGVuIGFuIEFDUEkgZGV2aWNlIGJpbmRzIHZpYSBQUlAw MDAxLCBjYXVzaW5nIG1lbW9yeSBhZGRyZXNzZXMgdG8gYmUgY2FzdCB0byBoYXJkd2FyZSBxdWly ayBmbGFncy4KLSBbSGlnaF0gRG91YmxlIGRpc2FibGUgb2YgY2xvY2tzIGR1cmluZyBkcml2ZXIg dW5iaW5kIGlmIHRoZSBkZXZpY2UgaXMgcnVudGltZSBzdXNwZW5kZWQuCi0tCgpjb21taXQgNDBh YzZlYmYzZWI2ZjAzNTQwY2U2YjBiNTdiZmQwMDczMDUzNmY1ZApBdXRob3I6IEFraGlsIFIgPGFr aGlscmFqZWV2QG52aWRpYS5jb20+CgppM2M6IGR3LWkzYy1tYXN0ZXI6IEFkZCBhIHF1aXJrIHRv IHNraXAgY2xvY2sgYW5kIHJlc2V0CgpTb21lIEFDUEktZW51bWVyYXRlZCBkZXZpY2VzIGxpa2Ug VGVncmE0MTAgZG8gbm90IGhhdmUgY2xvY2sgYW5kIHJlc2V0CnJlc291cmNlcyBleHBvc2VkIHZp YSB0aGUgY2xrL3Jlc2V0IGZyYW1ld29ya3MuIFVubGlrZSBkZXZpY2UgdHJlZSwKQUNQSSBvbiBB cm0gZG9lcyBub3QgbW9kZWwgc3VjaCBwcm92aWRlciBmdW5jdGlvbnMuCgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2kzYy9tYXN0ZXIvZHctaTNjLW1hc3Rlci5jIGIvZHJpdmVycy9pM2MvbWFzdGVy L2R3LWkzYy1tYXN0ZXIuYwo+IGluZGV4IDNlNTEwZmRkZjA2YzUuLmEyYTRiODhjMjAxNzcgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9pM2MvbWFzdGVyL2R3LWkzYy1tYXN0ZXIuYwo+ICsrKyBiL2Ry aXZlcnMvaTNjL21hc3Rlci9kdy1pM2MtbWFzdGVyLmMKClsgLi4uIF0KCj4gQEAgLTE1NzcsMTgg KzE1OTMsMzMgQEAgaW50IGR3X2kzY19jb21tb25fcHJvYmUoc3RydWN0IGR3X2kzY19tYXN0ZXIg Km1hc3RlciwKPiAgCWlmIChJU19FUlIobWFzdGVyLT5yZWdzKSkKPiAgCQlyZXR1cm4gUFRSX0VS UihtYXN0ZXItPnJlZ3MpOwo+ICAKPiAtCW1hc3Rlci0+Y29yZV9jbGsgPSBkZXZtX2Nsa19nZXRf ZW5hYmxlZCgmcGRldi0+ZGV2LCBOVUxMKTsKPiAtCWlmIChJU19FUlIobWFzdGVyLT5jb3JlX2Ns aykpCj4gLQkJcmV0dXJuIFBUUl9FUlIobWFzdGVyLT5jb3JlX2Nsayk7Cj4gLQo+IC0JbWFzdGVy LT5wY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoJnBkZXYtPmRldiwgInBjbGsi KTsKPiAtCWlmIChJU19FUlIobWFzdGVyLT5wY2xrKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihtYXN0 ZXItPnBjbGspOwo+ICsJaWYgKGhhc19hY3BpX2NvbXBhbmlvbigmcGRldi0+ZGV2KSkgewo+ICsJ CXF1aXJrcyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YSgmcGRldi0+ZGV2 KTsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGNh biB0aGlzIGNhc3QgY2F1c2UgYSB0eXBlIGNvbmZ1c2lvbiBpZiBhbgpBQ1BJIGRldmljZSB1c2Vz IHRoZSBQUlAwMDAxIEhJRCB0byBiaW5kIHZpYSBPRi1zdHlsZSBtYXRjaGluZz8KCkluIHRoYXQg c2NlbmFyaW8sIGhhc19hY3BpX2NvbXBhbmlvbigpIGV2YWx1YXRlcyB0byB0cnVlLCBidXQKZGV2 aWNlX2dldF9tYXRjaF9kYXRhKCkgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIE9GIG1hdGNoIGRh dGEgKGxpa2Ugc3RydWN0CmR3X2kzY19kcnZkYXRhKS4gQ2FzdGluZyB0aGlzIHBvaW50ZXIgZGly ZWN0bHkgdG8gYW4gdW5zaWduZWQgbG9uZyB3b3VsZAppbnRlcnByZXQgdGhlIG1lbW9yeSBhZGRy ZXNzIGFzIGEgcXVpcmsgYml0bWFzaywgcG90ZW50aWFsbHkgZW5hYmxpbmcgcXVpcmtzCnJhbmRv bWx5IGRlcGVuZGluZyBvbiB0aGUga2VybmVsJ3MgbWVtb3J5IGxheW91dC4KCj4gKwl9IGVsc2Ug aWYgKHBkZXYtPmRldi5vZl9ub2RlKSB7Cj4gKwkJZHJ2ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hf ZGF0YSgmcGRldi0+ZGV2KTsKPiArCQlpZiAoZHJ2ZGF0YSkKPiArCQkJcXVpcmtzID0gZHJ2ZGF0 YS0+ZmxhZ3M7Cj4gKwl9Cj4gKwltYXN0ZXItPnF1aXJrcyA9IHF1aXJrczsKPiAgCj4gLQltYXN0 ZXItPmNvcmVfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9vcHRpb25hbF9leGNsdXNpdmVf ZGVhc3NlcnRlZCgmcGRldi0+ZGV2LAo+IC0JCQkJCQkJCQkJImNvcmVfcnN0Iik7Cj4gLQlpZiAo SVNfRVJSKG1hc3Rlci0+Y29yZV9yc3QpKQo+IC0JCXJldHVybiBQVFJfRVJSKG1hc3Rlci0+Y29y ZV9yc3QpOwo+ICsJaWYgKG1hc3Rlci0+cXVpcmtzICYgRFdfSTNDX0FDUElfU0tJUF9DTEtfUlNU KSB7Cj4gKwkJbWFzdGVyLT5jb3JlX2NsayA9IE5VTEw7Cj4gKwkJbWFzdGVyLT5wY2xrID0gTlVM TDsKPiArCQltYXN0ZXItPmNvcmVfcnN0ID0gTlVMTDsKPiArCX0gZWxzZSB7Cj4gKwkJbWFzdGVy LT5jb3JlX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKCZwZGV2LT5kZXYsIE5VTEwpOwoKW1Nl dmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEgcHJlLWV4aXN0aW5nIGlzc3VlLCBidXQgZG9lcyB1c2lu ZyBkZXZtX2Nsa19nZXRfZW5hYmxlZCgpIHJpc2sgYQpkb3VibGUtZGlzYWJsZSBkdXJpbmcgZHJp dmVyIHVuYmluZCBpZiB0aGUgZGV2aWNlIGlzIHJ1bnRpbWUgc3VzcGVuZGVkPwoKSWYgdGhlIGRl dmljZSBpcyBpbiB0aGUgUlBNX1NVU1BFTkRFRCBzdGF0ZSB3aGVuIGR3X2kzY19jb21tb25fcmVt b3ZlKCkgcnVucywKdGhlIGNsb2NrIGhhcyBhbHJlYWR5IGJlZW4gZGlzYWJsZWQgYnkgdGhlIHJ1 bnRpbWVfc3VzcGVuZCBjYWxsYmFjay4gQmVjYXVzZQp0aGUgcmVtb3ZlIGZ1bmN0aW9uIGNhbGxz IHBtX3J1bnRpbWVfZGlzYWJsZSgpIHdpdGhvdXQgZmlyc3Qgd2FraW5nIHRoZQpkZXZpY2UgdXAg dmlhIHBtX3J1bnRpbWVfZ2V0X3N5bmMoKSwgdGhlIHN1YnNlcXVlbnQgYXV0b21hdGljIGRldnJl cyBjbGVhbnVwCndpbGwgY2FsbCBjbGtfZGlzYWJsZV91bnByZXBhcmUoKSBhIHNlY29uZCB0aW1l IG9uIHRoZSBhbHJlYWR5IGRpc2FibGVkIGNsb2NrLgoKPiArCQlpZiAoSVNfRVJSKG1hc3Rlci0+ Y29yZV9jbGspKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihtYXN0ZXItPmNvcmVfY2xrKTsKPiArCj4g KwkJbWFzdGVyLT5wY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoJnBkZXYtPmRl diwgInBjbGsiKTsKPiArCQlpZiAoSVNfRVJSKG1hc3Rlci0+cGNsaykpCj4gKwkJCXJldHVybiBQ VFJfRVJSKG1hc3Rlci0+cGNsayk7Cj4gKwo+ICsJCW1hc3Rlci0+Y29yZV9yc3QgPSBkZXZtX3Jl c2V0X2NvbnRyb2xfZ2V0X29wdGlvbmFsX2V4Y2x1c2l2ZV9kZWFzc2VydGVkKCZwZGV2LT5kZXYs Cj4gKwkJCQkJCQkJCQkJImNvcmVfcnN0Iik7Cj4gKwkJaWYgKElTX0VSUihtYXN0ZXItPmNvcmVf cnN0KSkKPiArCQkJcmV0dXJuIFBUUl9FUlIobWFzdGVyLT5jb3JlX3JzdCk7Cj4gKwl9Cj4gIAo+ ICAJc3Bpbl9sb2NrX2luaXQoJm1hc3Rlci0+eGZlcnF1ZXVlLmxvY2spOwo+ICAJSU5JVF9MSVNU X0hFQUQoJm1hc3Rlci0+eGZlcnF1ZXVlLmxpc3QpOwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3 IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MDYxNjA5NTQyOS4zOTQ3MjA1LTEt YWtoaWxyYWplZXZAbnZpZGlhLmNvbT9wYXJ0PTgKCi0tIApsaW51eC1pM2MgbWFpbGluZyBsaXN0 CmxpbnV4LWkzY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtaTNjCg==