From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A940B376E0; Thu, 25 Jan 2024 11:46:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706183174; cv=none; b=N1JQ/hWLqBhAzO+3VeANBBmpGFnEWr2K+au+bsoFkzi8PtNBIf/mb3bP2pK+kVwjt8mtnRx1kKfu/vpwBn8wpNhvU0nDFoFpcWA8VHZ6PjrbdErgKPbh0CRNYlNuePM8wnMWIEhgpj5/N7lviLGEu0NFDUPOXOrP+aZJFhvrJSE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706183174; c=relaxed/simple; bh=zT7UuuLPgK03PoMVnPSeikhPiQ2VY8XDljDQ6fuzGjM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=mWlHAslqFkttjUf6nxlWy73gO5uq241s8pyBbRGD67TjwCuKyKQNBG17yCdL+g3gVxyxAAQN7GuYEOR1smCe04M4NIq6HooAdJT9BYFdc9asXXy1g2NN4Tov5RcWzZfUmkAV09f7E3bGg/H48EziLDUfBtdIZCbQ3g/VPiqnqE4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iNChhATk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iNChhATk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 844FFC433F1; Thu, 25 Jan 2024 11:46:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706183174; bh=zT7UuuLPgK03PoMVnPSeikhPiQ2VY8XDljDQ6fuzGjM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iNChhATkM652SseRl9tRO4D0GLx0NUKgWDj0I3E84pbIsDKfCFfZVG2cgOEKzRwU2 biQmMGlE8x3jViaqrgaWBn16vjZwdcI7X8NmJ9/KDsi3wEKIEL1ewQOfluszMPzXsi Db5YjwJMS+e0h633Zr1NtrQ4VeCKzdmEaAuDetOCgqM6KUsvucoX6sqbxv1xZr0IbJ IzCsetVR1lUv5WG73SgFuQZWLKuTM7uqDgLAmDTUo0ih8l1BihyOxexlS+2JyQSxH8 C1sG0zUtc+QnA7R5BCuhPSDG0eUsl5lK2/Fx2RCxXQlGdmFBQ1XOmI7Hgf0R6VYKRs VJMwAOFMrxvcw== Date: Thu, 25 Jan 2024 11:46:06 +0000 From: Lee Jones To: Krzysztof Kozlowski Cc: Saravana Kannan , Peter Griffin , arnd@arndb.de, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux@roeck-us.net, wim@linux-watchdog.org, conor+dt@kernel.org, alim.akhtar@samsung.com, jaewon02.kim@samsung.com, chanho61.park@samsung.com, semen.protsenko@linaro.org, kernel-team@android.com, tudor.ambarus@linaro.org, andre.draszik@linaro.org, willmcvicker@google.com, linux-fsd@tesla.com, linux-watchdog@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Greg Kroah-Hartman Subject: Re: [PATCH 3/9] watchdog: s3c2410_wdt: update to use new exynos_pmu_*() apis Message-ID: <20240125114606.GA1327902@google.com> References: <20240122225710.1952066-1-peter.griffin@linaro.org> <20240122225710.1952066-4-peter.griffin@linaro.org> <6c72a521-1048-42eb-ac74-d8f718a90723@linaro.org> <04411aaf-6f2c-4f43-83b4-aa0741ccd25f@linaro.org> Precedence: bulk X-Mailing-List: linux-samsung-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <04411aaf-6f2c-4f43-83b4-aa0741ccd25f@linaro.org> On Thu, 25 Jan 2024, Krzysztof Kozlowski wrote: > On 24/01/2024 22:27, Saravana Kannan wrote: > > On Tue, Jan 23, 2024 at 10:27 PM Krzysztof Kozlowski > > wrote: > >> > >> On 24/01/2024 04:37, Saravana Kannan wrote: > >>> On Tue, Jan 23, 2024 at 10:12 AM Krzysztof Kozlowski > >>> wrote: > >>>> > >>>> On 23/01/2024 18:30, Peter Griffin wrote: > >>>>>>> dev_warn(wdt->dev, "Couldn't get RST_STAT register\n"); > >>>>>>> else if (rst_stat & BIT(wdt->drv_data->rst_stat_bit)) > >>>>>>> @@ -698,14 +699,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev) > >>>>>>> if (ret) > >>>>>>> return ret; > >>>>>>> > >>>>>>> - if (wdt->drv_data->quirks & QUIRKS_HAVE_PMUREG) { > >>>>>>> - wdt->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node, > >>>>>>> - "samsung,syscon-phandle"); > >>>>>>> - if (IS_ERR(wdt->pmureg)) > >>>>>>> - return dev_err_probe(dev, PTR_ERR(wdt->pmureg), > >>>>>>> - "syscon regmap lookup failed.\n"); > >>>>>> > >>>>>> > >>>>>> Continuing topic from the binding: I don't see how you handle probe > >>>>>> deferral, suspend ordering. > >>>>> > >>>>> The current implementation is simply relying on exynos-pmu being > >>>>> postcore_initcall level. > >>>>> > >>>>> I was just looking around for any existing Linux APIs that could be a > >>>>> more robust solution. It looks like > >>>>> > >>>>> of_parse_phandle() > >>>>> and > >>>>> of_find_device_by_node(); > >>>>> > >>>>> Are often used to solve this type of probe deferral issue between > >>>>> devices. Is that what you would recommend using? Or is there something > >>>>> even better? > >>>> > >>>> I think you should keep the phandle and then set device link based on > >>>> of_find_device_by_node(). This would actually improve the code, because > >>>> syscon_regmap_lookup_by_phandle() does not create device links. > >>> > >>> I kinda agree with this. Just because we no longer use a syscon API to > >>> find the PMU register address doesn't mean the WDT doesn't depend on > >>> the PMU. > >>> > >>> However, I think we should move to a generic "syscon" property. Then I > >>> can add support for "syscon" property to fw_devlink and then things > >>> will just work in terms of probe ordering, suspend/resume and also > >>> showing the dependency in DT even if you don't use the syscon APIs. > >>> > >>> Side note 1: > >>> > >>> I think we really should officially document a generic syscon DT > >>> property similar to how we have a generic "clocks" or "dmas" property. > >>> Then we can have a syscon_get_regmap() that's like so: > >>> > >>> struct regmap *syscon_get_regmap(struct device *dev) > >>> { > >>> return syscon_regmap_lookup_by_phandle(dev->of_node, "syscon"); > >>> } > >>> > >>> Instead of every device defining its own bespoke DT property to do the > >>> exact same thing. I did a quick "back of the envelope" grep on this > >>> and I get about 143 unique properties just to get the syscon regmap. > >>> $ git grep -A1 syscon_regmap_lookup_by_phandle | grep '"' | sed -e > >>> 's/^[^"]*//' -e 's/"[^"]*$/"/' | sort | uniq | wc -l > >>> 143 > >> > >> Sorry, generic "syscon" property won't fly with DT maintainers, because > >> there is no such thing as syscon in any of hardware. > > > > Then why do we allow a "syscon" compatible string and nodes? If the > > To bind Linux drivers. > > > "syscon" property isn't clear enough, we can make it something like > > gpios and have it be -syscon or have syscon-names property > > if you want to give it a name. > > This could work. I'm not opposed to this idea. The issue you'll have is keeping the kernel backwards compatible with older DTBs, thus this solution may only be possible for newly created bindings. More than happy to be proven wrong here though. > >>> How are we making sure that it's the exynos-pmu driver that ends up > >>> probing the PMU and not the generic syscon driver? Both of these are > >>> platform drivers. And the exynos PMU device lists both the exynos > >>> compatible string and the syscon property. Is it purely a link order > >>> coincidence? > >> > >> initcall ordering > > > > Both these drivers usr postcore_initcall(). So it's purely because > > soc/ is listed earlier in drivers/Makefile than mfd/. And as soon as > > Oh... great :/. Agree. Even using initcalls for ordering is fragile. Relying on the lexicographical order of a directory / filename structure is akin to rolling a dice. It would be far nicer if you are able to find a more robust method of ensuring load order e.g. dynamically poking at hardware and / or utilising -EPROBE_DEFER. -- Lee Jones [李琼斯] 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 B85BDC47258 for ; Thu, 25 Jan 2024 14:05:35 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tB34mPvZhOtlF31uakHb1HnKgWMlnNpVSjnEoaX4JDw=; b=V3eh3I80jfk5nH 56M7YeFfdCN92Jrsb06Jyeo0upe2RjubpFJxhEXxVBqFarOcV4gFQ1OOC/Q00lkD0SMOPEsfwrLn2 RpGJ1UA8SDd0vdZiTtUWKGV4mvg1Vf1KGQsL5oTTC5c4S7781dhnxCQfMu4t5HxCGz9Cu7QbwsxV2 9h3a9PDgwLqrhbzjj4g00+gK66g1YaGHrbO59VZwIY3ukKSSIuy42m1KfoCyNDyWpf0BV7+fMT12/ Ok+EVJM3kXQGSwHvWRdTSpgz/sEs/mAmY+tOPgU56cKO5B1r06wSyU5Ml/08Nc9auBEdJrZkkc5Bm eix8t9NWJqWc46Rt1VtQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rT0M6-00000000DgA-0nzN; Thu, 25 Jan 2024 14:05:22 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rT0M5-00000000DfX-0bXs for linux-arm-kernel@bombadil.infradead.org; Thu, 25 Jan 2024 14:05:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=ki5B//UMhQdT8bLlyXbZl8MEloSJ8D0BgVxGYjVRxl8=; b=AJSXPh4eBVuxyZQK53xYlwRi5p UJNtFJgfc8JqIAiJWD8xTHF0c0vmVDJa11wjpLctQ6QKfjtyU+viVk8KbA256k8297twl43Ae01VK nP/1kb6q/im5+46l8Yi4+EdaAwzRkzM4t/uqtFSfBhkCFz3xlRhPzVkAJV3+k2UWACf3cHQvlIc0E WD5PhB7NrRQghbLpb7BUf0MK+y5PR6vBWFIr1HdF4alBBs81htcrFU8hEzRMuvt/Hvfwxl4CeLtla I0wqCQrYpXMzXa5FzVwPTpNEtOJ13qI3X9cJWOj0PgSmebPCN1QfCsM40nTcTvJyCQgclvrAkdPt6 H2UTjy0g==; Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by desiato.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rSyCV-00000005ECq-1Sz1 for linux-arm-kernel@lists.infradead.org; Thu, 25 Jan 2024 11:47:21 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id E5897CE0905; Thu, 25 Jan 2024 11:46:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 844FFC433F1; Thu, 25 Jan 2024 11:46:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706183174; bh=zT7UuuLPgK03PoMVnPSeikhPiQ2VY8XDljDQ6fuzGjM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iNChhATkM652SseRl9tRO4D0GLx0NUKgWDj0I3E84pbIsDKfCFfZVG2cgOEKzRwU2 biQmMGlE8x3jViaqrgaWBn16vjZwdcI7X8NmJ9/KDsi3wEKIEL1ewQOfluszMPzXsi Db5YjwJMS+e0h633Zr1NtrQ4VeCKzdmEaAuDetOCgqM6KUsvucoX6sqbxv1xZr0IbJ IzCsetVR1lUv5WG73SgFuQZWLKuTM7uqDgLAmDTUo0ih8l1BihyOxexlS+2JyQSxH8 C1sG0zUtc+QnA7R5BCuhPSDG0eUsl5lK2/Fx2RCxXQlGdmFBQ1XOmI7Hgf0R6VYKRs VJMwAOFMrxvcw== Date: Thu, 25 Jan 2024 11:46:06 +0000 From: Lee Jones To: Krzysztof Kozlowski Cc: Saravana Kannan , Peter Griffin , arnd@arndb.de, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux@roeck-us.net, wim@linux-watchdog.org, conor+dt@kernel.org, alim.akhtar@samsung.com, jaewon02.kim@samsung.com, chanho61.park@samsung.com, semen.protsenko@linaro.org, kernel-team@android.com, tudor.ambarus@linaro.org, andre.draszik@linaro.org, willmcvicker@google.com, linux-fsd@tesla.com, linux-watchdog@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Greg Kroah-Hartman Subject: Re: [PATCH 3/9] watchdog: s3c2410_wdt: update to use new exynos_pmu_*() apis Message-ID: <20240125114606.GA1327902@google.com> References: <20240122225710.1952066-1-peter.griffin@linaro.org> <20240122225710.1952066-4-peter.griffin@linaro.org> <6c72a521-1048-42eb-ac74-d8f718a90723@linaro.org> <04411aaf-6f2c-4f43-83b4-aa0741ccd25f@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <04411aaf-6f2c-4f43-83b4-aa0741ccd25f@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240125_114720_006538_B8D2C84F X-CRM114-Status: GOOD ( 38.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCAyNSBKYW4gMjAyNCwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKCj4gT24gMjQv MDEvMjAyNCAyMjoyNywgU2FyYXZhbmEgS2FubmFuIHdyb3RlOgo+ID4gT24gVHVlLCBKYW4gMjMs IDIwMjQgYXQgMTA6MjfigK9QTSBLcnp5c3p0b2YgS296bG93c2tpCj4gPiA8a3J6eXN6dG9mLmtv emxvd3NraUBsaW5hcm8ub3JnPiB3cm90ZToKPiA+Pgo+ID4+IE9uIDI0LzAxLzIwMjQgMDQ6Mzcs IFNhcmF2YW5hIEthbm5hbiB3cm90ZToKPiA+Pj4gT24gVHVlLCBKYW4gMjMsIDIwMjQgYXQgMTA6 MTLigK9BTSBLcnp5c3p0b2YgS296bG93c2tpCj4gPj4+IDxrcnp5c3p0b2Yua296bG93c2tpQGxp bmFyby5vcmc+IHdyb3RlOgo+ID4+Pj4KPiA+Pj4+IE9uIDIzLzAxLzIwMjQgMTg6MzAsIFBldGVy IEdyaWZmaW4gd3JvdGU6Cj4gPj4+Pj4+PiAgICAgICAgICAgICAgIGRldl93YXJuKHdkdC0+ZGV2 LCAiQ291bGRuJ3QgZ2V0IFJTVF9TVEFUIHJlZ2lzdGVyXG4iKTsKPiA+Pj4+Pj4+ICAgICAgIGVs c2UgaWYgKHJzdF9zdGF0ICYgQklUKHdkdC0+ZHJ2X2RhdGEtPnJzdF9zdGF0X2JpdCkpCj4gPj4+ Pj4+PiBAQCAtNjk4LDE0ICs2OTksNiBAQCBzdGF0aWMgaW50IHMzYzI0MTB3ZHRfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+Pj4+Pj4+ICAgICAgIGlmIChyZXQpCj4gPj4+ Pj4+PiAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gLSAgICAg aWYgKHdkdC0+ZHJ2X2RhdGEtPnF1aXJrcyAmIFFVSVJLU19IQVZFX1BNVVJFRykgewo+ID4+Pj4+ Pj4gLSAgICAgICAgICAgICB3ZHQtPnBtdXJlZyA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3Bo YW5kbGUoZGV2LT5vZl9ub2RlLAo+ID4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJzYW1zdW5nLHN5c2Nvbi1waGFuZGxlIik7Cj4gPj4+Pj4+PiAt ICAgICAgICAgICAgIGlmIChJU19FUlIod2R0LT5wbXVyZWcpKQo+ID4+Pj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUih3ZHQtPnBtdXJl ZyksCj4gPj4+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InN5c2NvbiByZWdtYXAgbG9va3VwIGZhaWxlZC5cbiIpOwo+ID4+Pj4+Pgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBDb250aW51aW5nIHRvcGljIGZyb20gdGhlIGJpbmRpbmc6IEkgZG9uJ3Qgc2VlIGhvdyB5 b3UgaGFuZGxlIHByb2JlCj4gPj4+Pj4+IGRlZmVycmFsLCBzdXNwZW5kIG9yZGVyaW5nLgo+ID4+ Pj4+Cj4gPj4+Pj4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgc2ltcGx5IHJlbHlpbmcg b24gZXh5bm9zLXBtdSBiZWluZwo+ID4+Pj4+IHBvc3Rjb3JlX2luaXRjYWxsIGxldmVsLgo+ID4+ Pj4+Cj4gPj4+Pj4gSSB3YXMganVzdCBsb29raW5nIGFyb3VuZCBmb3IgYW55IGV4aXN0aW5nIExp bnV4IEFQSXMgdGhhdCBjb3VsZCBiZSBhCj4gPj4+Pj4gbW9yZSByb2J1c3Qgc29sdXRpb24uIEl0 IGxvb2tzIGxpa2UKPiA+Pj4+Pgo+ID4+Pj4+IG9mX3BhcnNlX3BoYW5kbGUoKQo+ID4+Pj4+IGFu ZAo+ID4+Pj4+IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUoKTsKPiA+Pj4+Pgo+ID4+Pj4+IEFyZSBv ZnRlbiB1c2VkIHRvIHNvbHZlIHRoaXMgdHlwZSBvZiBwcm9iZSBkZWZlcnJhbCBpc3N1ZSBiZXR3 ZWVuCj4gPj4+Pj4gZGV2aWNlcy4gSXMgdGhhdCB3aGF0IHlvdSB3b3VsZCByZWNvbW1lbmQgdXNp bmc/IE9yIGlzIHRoZXJlIHNvbWV0aGluZwo+ID4+Pj4+IGV2ZW4gYmV0dGVyPwo+ID4+Pj4KPiA+ Pj4+IEkgdGhpbmsgeW91IHNob3VsZCBrZWVwIHRoZSBwaGFuZGxlIGFuZCB0aGVuIHNldCBkZXZp Y2UgbGluayBiYXNlZCBvbgo+ID4+Pj4gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZSgpLiBUaGlzIHdv dWxkIGFjdHVhbGx5IGltcHJvdmUgdGhlIGNvZGUsIGJlY2F1c2UKPiA+Pj4+IHN5c2Nvbl9yZWdt YXBfbG9va3VwX2J5X3BoYW5kbGUoKSBkb2VzIG5vdCBjcmVhdGUgZGV2aWNlIGxpbmtzLgo+ID4+ Pgo+ID4+PiBJIGtpbmRhIGFncmVlIHdpdGggdGhpcy4gSnVzdCBiZWNhdXNlIHdlIG5vIGxvbmdl ciB1c2UgYSBzeXNjb24gQVBJIHRvCj4gPj4+IGZpbmQgdGhlIFBNVSByZWdpc3RlciBhZGRyZXNz IGRvZXNuJ3QgbWVhbiB0aGUgV0RUIGRvZXNuJ3QgZGVwZW5kIG9uCj4gPj4+IHRoZSBQTVUuCj4g Pj4+Cj4gPj4+IEhvd2V2ZXIsIEkgdGhpbmsgd2Ugc2hvdWxkIG1vdmUgdG8gYSBnZW5lcmljICJz eXNjb24iIHByb3BlcnR5LiBUaGVuIEkKPiA+Pj4gY2FuIGFkZCBzdXBwb3J0IGZvciAic3lzY29u IiBwcm9wZXJ0eSB0byBmd19kZXZsaW5rIGFuZCB0aGVuIHRoaW5ncwo+ID4+PiB3aWxsIGp1c3Qg d29yayBpbiB0ZXJtcyBvZiBwcm9iZSBvcmRlcmluZywgc3VzcGVuZC9yZXN1bWUgYW5kIGFsc28K PiA+Pj4gc2hvd2luZyB0aGUgZGVwZW5kZW5jeSBpbiBEVCBldmVuIGlmIHlvdSBkb24ndCB1c2Ug dGhlIHN5c2NvbiBBUElzLgo+ID4+Pgo+ID4+PiBTaWRlIG5vdGUgMToKPiA+Pj4KPiA+Pj4gSSB0 aGluayB3ZSByZWFsbHkgc2hvdWxkIG9mZmljaWFsbHkgZG9jdW1lbnQgYSBnZW5lcmljIHN5c2Nv biBEVAo+ID4+PiBwcm9wZXJ0eSBzaW1pbGFyIHRvIGhvdyB3ZSBoYXZlIGEgZ2VuZXJpYyAiY2xv Y2tzIiBvciAiZG1hcyIgcHJvcGVydHkuCj4gPj4+IFRoZW4gd2UgY2FuIGhhdmUgYSBzeXNjb25f Z2V0X3JlZ21hcCgpIHRoYXQncyBsaWtlIHNvOgo+ID4+Pgo+ID4+PiBzdHJ1Y3QgcmVnbWFwICpz eXNjb25fZ2V0X3JlZ21hcChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj4+IHsKPiA+Pj4gICAgICAg ICByZXR1cm4gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShkZXYtPm9mX25vZGUsICJz eXNjb24iKTsKPiA+Pj4gfQo+ID4+Pgo+ID4+PiBJbnN0ZWFkIG9mIGV2ZXJ5IGRldmljZSBkZWZp bmluZyBpdHMgb3duIGJlc3Bva2UgRFQgcHJvcGVydHkgdG8gZG8gdGhlCj4gPj4+IGV4YWN0IHNh bWUgdGhpbmcuIEkgZGlkIGEgcXVpY2sgImJhY2sgb2YgdGhlIGVudmVsb3BlIiBncmVwIG9uIHRo aXMKPiA+Pj4gYW5kIEkgZ2V0IGFib3V0IDE0MyB1bmlxdWUgcHJvcGVydGllcyBqdXN0IHRvIGdl dCB0aGUgc3lzY29uIHJlZ21hcC4KPiA+Pj4gJCBnaXQgZ3JlcCAtQTEgc3lzY29uX3JlZ21hcF9s b29rdXBfYnlfcGhhbmRsZSB8IGdyZXAgJyInIHwgc2VkIC1lCj4gPj4+ICdzL15bXiJdKi8vJyAt ZSAncy8iW14iXSokLyIvJyB8IHNvcnQgfCB1bmlxIHwgd2MgLWwKPiA+Pj4gMTQzCj4gPj4KPiA+ PiBTb3JyeSwgZ2VuZXJpYyAic3lzY29uIiBwcm9wZXJ0eSB3b24ndCBmbHkgd2l0aCBEVCBtYWlu dGFpbmVycywgYmVjYXVzZQo+ID4+IHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgc3lzY29uIGlu IGFueSBvZiBoYXJkd2FyZS4KPiA+IAo+ID4gVGhlbiB3aHkgZG8gd2UgYWxsb3cgYSAic3lzY29u IiBjb21wYXRpYmxlIHN0cmluZyBhbmQgbm9kZXM/IElmIHRoZQo+IAo+IFRvIGJpbmQgTGludXgg ZHJpdmVycy4KPiAKPiA+ICJzeXNjb24iIHByb3BlcnR5IGlzbid0IGNsZWFyIGVub3VnaCwgd2Ug Y2FuIG1ha2UgaXQgc29tZXRoaW5nIGxpa2UKPiA+IGdwaW9zIGFuZCBoYXZlIGl0IGJlIDx3aGF0 ZXZlcj4tc3lzY29uIG9yIGhhdmUgc3lzY29uLW5hbWVzIHByb3BlcnR5Cj4gPiBpZiB5b3Ugd2Fu dCB0byBnaXZlIGl0IGEgbmFtZS4KPiAKPiBUaGlzIGNvdWxkIHdvcmsuCgpJJ20gbm90IG9wcG9z ZWQgdG8gdGhpcyBpZGVhLiAgVGhlIGlzc3VlIHlvdSdsbCBoYXZlIGlzIGtlZXBpbmcgdGhlCmtl cm5lbCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIG9sZGVyIERUQnMsIHRodXMgdGhpcyBzb2x1 dGlvbiBtYXkgb25seQpiZSBwb3NzaWJsZSBmb3IgbmV3bHkgY3JlYXRlZCBiaW5kaW5ncy4gIE1v cmUgdGhhbiBoYXBweSB0byBiZSBwcm92ZW4Kd3JvbmcgaGVyZSB0aG91Z2guCgo+ID4+PiBIb3cg YXJlIHdlIG1ha2luZyBzdXJlIHRoYXQgaXQncyB0aGUgZXh5bm9zLXBtdSBkcml2ZXIgdGhhdCBl bmRzIHVwCj4gPj4+IHByb2JpbmcgdGhlIFBNVSBhbmQgbm90IHRoZSBnZW5lcmljIHN5c2NvbiBk cml2ZXI/IEJvdGggb2YgdGhlc2UgYXJlCj4gPj4+IHBsYXRmb3JtIGRyaXZlcnMuIEFuZCB0aGUg ZXh5bm9zIFBNVSBkZXZpY2UgbGlzdHMgYm90aCB0aGUgZXh5bm9zCj4gPj4+IGNvbXBhdGlibGUg c3RyaW5nIGFuZCB0aGUgc3lzY29uIHByb3BlcnR5LiBJcyBpdCBwdXJlbHkgYSBsaW5rIG9yZGVy Cj4gPj4+IGNvaW5jaWRlbmNlPwo+ID4+Cj4gPj4gaW5pdGNhbGwgb3JkZXJpbmcKPiA+IAo+ID4g Qm90aCB0aGVzZSBkcml2ZXJzIHVzciBwb3N0Y29yZV9pbml0Y2FsbCgpLiBTbyBpdCdzIHB1cmVs eSBiZWNhdXNlCj4gPiBzb2MvIGlzIGxpc3RlZCBlYXJsaWVyIGluIGRyaXZlcnMvTWFrZWZpbGUg dGhhbiBtZmQvLiBBbmQgYXMgc29vbiBhcwo+IAo+IE9oLi4uIGdyZWF0IDovLgoKQWdyZWUuCgpF dmVuIHVzaW5nIGluaXRjYWxscyBmb3Igb3JkZXJpbmcgaXMgZnJhZ2lsZS4gIFJlbHlpbmcgb24g dGhlCmxleGljb2dyYXBoaWNhbCBvcmRlciBvZiBhIGRpcmVjdG9yeSAvIGZpbGVuYW1lIHN0cnVj dHVyZSBpcyBha2luIHRvCnJvbGxpbmcgYSBkaWNlLiAgSXQgd291bGQgYmUgZmFyIG5pY2VyIGlm IHlvdSBhcmUgYWJsZSB0byBmaW5kIGEgbW9yZQpyb2J1c3QgbWV0aG9kIG9mIGVuc3VyaW5nIGxv YWQgb3JkZXIgZS5nLiBkeW5hbWljYWxseSBwb2tpbmcgYXQKaGFyZHdhcmUgYW5kIC8gb3IgdXRp bGlzaW5nIC1FUFJPQkVfREVGRVIuCgotLSAKTGVlIEpvbmVzIFvmnY7nkLzmlq9dCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==