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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07EFDC6FA82 for ; Mon, 26 Sep 2022 21:17:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231381AbiIZVRp (ORCPT ); Mon, 26 Sep 2022 17:17:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231382AbiIZVRo (ORCPT ); Mon, 26 Sep 2022 17:17:44 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B30D8169D for ; Mon, 26 Sep 2022 14:17:42 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id g1-20020a17090a708100b00203c1c66ae3so8220781pjk.2 for ; Mon, 26 Sep 2022 14:17:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date; bh=kmdrunDnLmESbEAIw7duvGisQC3NuIpiA59yQbUiXIc=; b=wiOrL9A1thkmxJu1zoWAhRS+bj0hy8y2efKqsGC0WePwZmYMQ1DD/itU0j2sAGgpS/ P1S8/1wV0n7YY/bU5ENfC9Wf5wNhgV1036FycYoN9oP/UEkg+PbDO3NNiVxpg6YTxM8j bBtI5Q3HSGtpa0ZyWlHSCCn+R4ZNJDTn69z+RlB84kOdHXPnl9FoqipBX9zNnrH5yBL3 YMywXLnDnBbdcELBxCEjrPlXjrU6ITU1KN4vk7mNprzR0gSziQKNshgF9T7geOc/odDA YoY35ALc6V3DCwsLnoMTsfH3plVwJvuUtxxPMh3Y/82lr7M2COsktRqt9FQMS24HlTv1 U/Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=kmdrunDnLmESbEAIw7duvGisQC3NuIpiA59yQbUiXIc=; b=1ZWUNSbMSPvtKRehZMR2yMPoqcxmbLD7kTTL4DLlM8VH/zJL2b40C/qlyiHbZlahr6 yL5mvxdFIhQz+Crl7s5M0XBzS5RL24O+hJye8gEKiS+i0L/QkT2jeZawPmfhdOPGUeKF JJIrl34CtjQ9cyqQgR4BkUqNlHBDDCoGU1XgtwGTbcO/569s/F1y3n9HSZl5f7GufQqw o6sRjraxURedA6MfD8g4tjinpOzxPnXjOs7QD2nY1o6mx46JR60mHhR0f18jZgTf44mf rXIy4AjZhB2pqZniuK1jTH20XKxLCx+pIe5c5cQheTlB8ajoOeliBbmKZcIcuXP1QWez 661w== X-Gm-Message-State: ACrzQf3IfqaGMhfDbdEbWDuL0E0w7tReg7N6vXUu3NdFk2Cd7kWB0YBF dMujOCnSQ/Q5AQ9bjD6gEQFfbw== X-Google-Smtp-Source: AMsMyM4ylTVOCXrE0LWpNmCRA7TY3lxZQplOCS6+aDNLtMZ9CKffh7pxyW7sdNBYVusKpqrZqIwTFQ== X-Received: by 2002:a17:90b:1941:b0:202:5715:2180 with SMTP id nk1-20020a17090b194100b0020257152180mr763629pjb.23.1664227061577; Mon, 26 Sep 2022 14:17:41 -0700 (PDT) Received: from localhost ([76.146.1.42]) by smtp.gmail.com with ESMTPSA id e128-20020a621e86000000b0053e669cc845sm12655682pfe.190.2022.09.26.14.17.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Sep 2022 14:17:40 -0700 (PDT) From: Kevin Hilman To: =?utf-8?Q?P=C3=A9ter?= Ujfalusi , dmaengine@vger.kernel.org Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Frayer Subject: Re: [PATCH 2/3] dma/ti: convert k3-udma to module In-Reply-To: <11cf284c-d0d6-0687-b70b-2245ff8d6fcd@gmail.com> References: <20220926181848.2917639-1-khilman@baylibre.com> <20220926181848.2917639-3-khilman@baylibre.com> <11cf284c-d0d6-0687-b70b-2245ff8d6fcd@gmail.com> Date: Mon, 26 Sep 2022 14:17:40 -0700 Message-ID: <7hczbhg7ij.fsf@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org P=C3=A9ter Ujfalusi writes: > On 9/26/22 21:18, Kevin Hilman wrote: >> Currently k3-udma driver is built as separate platform drivers with a >> shared probe and identical code path, just differnet platform data. >>=20 >> To enable to build as module, convert the separate platform driver >> into a single module_platform_driver with the data selection done via >> compatible string and of_match. The separate of_match tables are also >> combined into a single table to avoid the multiple calls to >> of_match_node() >>=20 >> Since all modern TI platforms using this are DT enabled, the removal >> of separate platform_drivers shoul should nave no functional change. >>=20 >> Signed-off-by: Kevin Hilman >> --- >> drivers/dma/ti/Kconfig | 4 ++-- >> drivers/dma/ti/k3-udma-glue.c | 5 ++++- >> drivers/dma/ti/k3-udma.c | 40 +++++------------------------------ >> 3 files changed, 11 insertions(+), 38 deletions(-) >>=20 >> diff --git a/drivers/dma/ti/Kconfig b/drivers/dma/ti/Kconfig >> index 79618fac119a..f196be3b222f 100644 >> --- a/drivers/dma/ti/Kconfig >> +++ b/drivers/dma/ti/Kconfig >> @@ -35,7 +35,7 @@ config DMA_OMAP >> DMA engine is found on OMAP and DRA7xx parts. >>=20=20 >> config TI_K3_UDMA >> - bool "Texas Instruments UDMA support" >> + tristate "Texas Instruments UDMA support" >> depends on ARCH_K3 >> depends on TI_SCI_PROTOCOL >> depends on TI_SCI_INTA_IRQCHIP >> @@ -48,7 +48,7 @@ config TI_K3_UDMA >> DMA engine is used in AM65x and j721e. >>=20=20 >> config TI_K3_UDMA_GLUE_LAYER >> - bool "Texas Instruments UDMA Glue layer for non DMAengine users" >> + tristate "Texas Instruments UDMA Glue layer for non DMAengine users" >> depends on ARCH_K3 >> depends on TI_K3_UDMA >> help >> diff --git a/drivers/dma/ti/k3-udma-glue.c b/drivers/dma/ti/k3-udma-glue= .c >> index 4fdd9f06b723..c29de4695ae7 100644 >> --- a/drivers/dma/ti/k3-udma-glue.c >> +++ b/drivers/dma/ti/k3-udma-glue.c >> @@ -6,6 +6,7 @@ >> * >> */ >>=20=20 >> +#include >> #include >> #include >> #include >> @@ -1433,4 +1434,6 @@ static int __init k3_udma_glue_class_init(void) >> { >> return class_register(&k3_udma_glue_devclass); >> } >> -arch_initcall(k3_udma_glue_class_init); >> + >> +module_init(k3_udma_glue_class_init); >> +MODULE_LICENSE("GPL v2"); >> diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c >> index 2f0d2c68c93c..7239ff31c8c5 100644 >> --- a/drivers/dma/ti/k3-udma.c >> +++ b/drivers/dma/ti/k3-udma.c >> @@ -5,6 +5,7 @@ >> */ >>=20=20 >> #include >> +#include >> #include >> #include >> #include >> @@ -4318,18 +4319,10 @@ static const struct of_device_id udma_of_match[]= =3D { >> .compatible =3D "ti,j721e-navss-mcu-udmap", >> .data =3D &j721e_mcu_data, >> }, >> - { /* Sentinel */ }, >> -}; >> - >> -static const struct of_device_id bcdma_of_match[] =3D { >> { >> .compatible =3D "ti,am64-dmss-bcdma", >> .data =3D &am64_bcdma_data, >> }, >> - { /* Sentinel */ }, >> -}; >> - >> -static const struct of_device_id pktdma_of_match[] =3D { >> { >> .compatible =3D "ti,am64-dmss-pktdma", >> .data =3D &am64_pktdma_data, >> @@ -5254,14 +5247,9 @@ static int udma_probe(struct platform_device *pde= v) >> return -ENOMEM; >>=20=20 >> match =3D of_match_node(udma_of_match, dev->of_node); >> - if (!match) >> - match =3D of_match_node(bcdma_of_match, dev->of_node); >> if (!match) { >> - match =3D of_match_node(pktdma_of_match, dev->of_node); >> - if (!match) { >> - dev_err(dev, "No compatible match found\n"); >> - return -ENODEV; >> - } >> + dev_err(dev, "No compatible match found\n"); >> + return -ENODEV; >> } >> ud->match_data =3D match->data; >>=20=20 >> @@ -5494,27 +5482,9 @@ static struct platform_driver udma_driver =3D { >> }, >> .probe =3D udma_probe, >> }; >> -builtin_platform_driver(udma_driver); >>=20=20 >> -static struct platform_driver bcdma_driver =3D { >> - .driver =3D { >> - .name =3D "ti-bcdma", >> - .of_match_table =3D bcdma_of_match, >> - .suppress_bind_attrs =3D true, >> - }, >> - .probe =3D udma_probe, >> -}; >> -builtin_platform_driver(bcdma_driver); >> - >> -static struct platform_driver pktdma_driver =3D { >> - .driver =3D { >> - .name =3D "ti-pktdma", >> - .of_match_table =3D pktdma_of_match, >> - .suppress_bind_attrs =3D true, >> - }, >> - .probe =3D udma_probe, >> -}; >> -builtin_platform_driver(pktdma_driver); >> +module_platform_driver(udma_driver); > I did liked the 'hack' that the dev_* prints contained the actual type > of the DMA (udma/bcdma/pktdma), but it is not working via modules, > unless the driver init parts are split out and the bulk is kept as a > library. > > I had this half way implemented in my wip, but never got the chance to > finalize it. I guess that could always be done as a second path if needed, but I wanted to keep this module conversion as simple as possible at first. > But, one can get the info via the address, so... Shall I take this "so..." as an acked-by? ;) Kevin 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 01922C32771 for ; Mon, 26 Sep 2022 21:19:14 +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:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tYDfzevuWMfhJqBZf21Op0YmVVMimYlVudhDIpBmIb0=; b=AFOmPSqMGWcz+B tw79Yqwf86r0h2uVJgDhzCWQ5A3rTTsuOVoCap/YtSrZS+sXM4RUM8EGrjdN3xDQe9ma5HRT10Jj2 apTyd+2lIXQwataXrceX6qwcrNjq0OZMRefMMvIevRsEm2x8Ummu0MGBeoqxmqBl4aa4/oqtHJ0Sv EMRMGm8i3l6qrwDwVb8J7jda+XAM1jl+MABEB+nw5bR1/PHIM5snx9QOb7ynOIC+wSxIP3OrMKJ+/ G/QwaZl9Yst0douxQhJl/gx2Zqix4aiXULvjT1OyRrqWZlBoxdFEUMYjvoOVZsznFqvFon1riMSlo Wcb0H3k0MlSUihL5OPWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ocvU6-006tdZ-M9; Mon, 26 Sep 2022 21:17:50 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ocvU2-006tZK-5H for linux-arm-kernel@lists.infradead.org; Mon, 26 Sep 2022 21:17:49 +0000 Received: by mail-pl1-x629.google.com with SMTP id w10so7364322pll.11 for ; Mon, 26 Sep 2022 14:17:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date; bh=kmdrunDnLmESbEAIw7duvGisQC3NuIpiA59yQbUiXIc=; b=wiOrL9A1thkmxJu1zoWAhRS+bj0hy8y2efKqsGC0WePwZmYMQ1DD/itU0j2sAGgpS/ P1S8/1wV0n7YY/bU5ENfC9Wf5wNhgV1036FycYoN9oP/UEkg+PbDO3NNiVxpg6YTxM8j bBtI5Q3HSGtpa0ZyWlHSCCn+R4ZNJDTn69z+RlB84kOdHXPnl9FoqipBX9zNnrH5yBL3 YMywXLnDnBbdcELBxCEjrPlXjrU6ITU1KN4vk7mNprzR0gSziQKNshgF9T7geOc/odDA YoY35ALc6V3DCwsLnoMTsfH3plVwJvuUtxxPMh3Y/82lr7M2COsktRqt9FQMS24HlTv1 U/Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=kmdrunDnLmESbEAIw7duvGisQC3NuIpiA59yQbUiXIc=; b=FssdTcwNB0yo9EeIHzy+TQ6TQMFNDAzMFBPJL0ELUoc4xGLZhfbd1kEVDIKRY9GBe5 TsJ8v1Q6+glSEF8JntePas/qa251P3GtaNXpBdbqXJRySQ7ZeBvKSjrkvmuZidCmMo1e 1ugF9QaVCBAUIzxseH84jromJE0PJFWDAF18b4ji/dy0HP93AuK4+CUvi/kqGbPea6PP TkweXwvMLJBZK1wnlz7s7mjbo9HojpJT24z6iSd+5aF1lHPfV946cSwdYtWuAw1G6bXA GQHtoj6twObj9TS1szLRc/oEIBHnqVb/mijj9SVeMM9vnsWLgpZ50+j/QHckqG8gwKwK 2bLA== X-Gm-Message-State: ACrzQf1Yp/Opd7UefHqicAKJguWrYgjVkIaHC5yF0sRw+ZhuSj6tScGs Qv4eyjLhlD+MCviLYIxgUM+07Q== X-Google-Smtp-Source: AMsMyM4ylTVOCXrE0LWpNmCRA7TY3lxZQplOCS6+aDNLtMZ9CKffh7pxyW7sdNBYVusKpqrZqIwTFQ== X-Received: by 2002:a17:90b:1941:b0:202:5715:2180 with SMTP id nk1-20020a17090b194100b0020257152180mr763629pjb.23.1664227061577; Mon, 26 Sep 2022 14:17:41 -0700 (PDT) Received: from localhost ([76.146.1.42]) by smtp.gmail.com with ESMTPSA id e128-20020a621e86000000b0053e669cc845sm12655682pfe.190.2022.09.26.14.17.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Sep 2022 14:17:40 -0700 (PDT) From: Kevin Hilman To: =?utf-8?Q?P=C3=A9ter?= Ujfalusi , dmaengine@vger.kernel.org Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Frayer Subject: Re: [PATCH 2/3] dma/ti: convert k3-udma to module In-Reply-To: <11cf284c-d0d6-0687-b70b-2245ff8d6fcd@gmail.com> References: <20220926181848.2917639-1-khilman@baylibre.com> <20220926181848.2917639-3-khilman@baylibre.com> <11cf284c-d0d6-0687-b70b-2245ff8d6fcd@gmail.com> Date: Mon, 26 Sep 2022 14:17:40 -0700 Message-ID: <7hczbhg7ij.fsf@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220926_141746_441217_C1FD1940 X-CRM114-Status: GOOD ( 25.02 ) 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 UMOpdGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVzaUBnbWFpbC5jb20+IHdyaXRlczoKCj4gT24g OS8yNi8yMiAyMToxOCwgS2V2aW4gSGlsbWFuIHdyb3RlOgo+PiBDdXJyZW50bHkgazMtdWRtYSBk cml2ZXIgaXMgYnVpbHQgYXMgc2VwYXJhdGUgcGxhdGZvcm0gZHJpdmVycyB3aXRoIGEKPj4gc2hh cmVkIHByb2JlIGFuZCBpZGVudGljYWwgY29kZSBwYXRoLCBqdXN0IGRpZmZlcm5ldCBwbGF0Zm9y bSBkYXRhLgo+PiAKPj4gVG8gZW5hYmxlIHRvIGJ1aWxkIGFzIG1vZHVsZSwgY29udmVydCB0aGUg c2VwYXJhdGUgcGxhdGZvcm0gZHJpdmVyCj4+IGludG8gYSBzaW5nbGUgbW9kdWxlX3BsYXRmb3Jt X2RyaXZlciB3aXRoIHRoZSBkYXRhIHNlbGVjdGlvbiBkb25lIHZpYQo+PiBjb21wYXRpYmxlIHN0 cmluZyBhbmQgb2ZfbWF0Y2guICBUaGUgc2VwYXJhdGUgb2ZfbWF0Y2ggdGFibGVzIGFyZSBhbHNv Cj4+IGNvbWJpbmVkIGludG8gYSBzaW5nbGUgdGFibGUgdG8gYXZvaWQgdGhlIG11bHRpcGxlIGNh bGxzIHRvCj4+IG9mX21hdGNoX25vZGUoKQo+PiAKPj4gU2luY2UgYWxsIG1vZGVybiBUSSBwbGF0 Zm9ybXMgdXNpbmcgdGhpcyBhcmUgRFQgZW5hYmxlZCwgdGhlIHJlbW92YWwKPj4gb2Ygc2VwYXJh dGUgcGxhdGZvcm1fZHJpdmVycyBzaG91bCBzaG91bGQgbmF2ZSBubyBmdW5jdGlvbmFsIGNoYW5n ZS4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEtldmluIEhpbG1hbiA8a2hpbG1hbkBiYXlsaWJyZS5j b20+Cj4+IC0tLQo+PiAgZHJpdmVycy9kbWEvdGkvS2NvbmZpZyAgICAgICAgfCAgNCArKy0tCj4+ ICBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLWdsdWUuYyB8ICA1ICsrKystCj4+ICBkcml2ZXJzL2Rt YS90aS9rMy11ZG1hLmMgICAgICB8IDQwICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygt KQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3RpL0tjb25maWcgYi9kcml2ZXJzL2Rt YS90aS9LY29uZmlnCj4+IGluZGV4IDc5NjE4ZmFjMTE5YS4uZjE5NmJlM2IyMjJmIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2RtYS90aS9LY29uZmlnCj4+ICsrKyBiL2RyaXZlcnMvZG1hL3RpL0tj b25maWcKPj4gQEAgLTM1LDcgKzM1LDcgQEAgY29uZmlnIERNQV9PTUFQCj4+ICAJICBETUEgZW5n aW5lIGlzIGZvdW5kIG9uIE9NQVAgYW5kIERSQTd4eCBwYXJ0cy4KPj4gIAo+PiAgY29uZmlnIFRJ X0szX1VETUEKPj4gLQlib29sICJUZXhhcyBJbnN0cnVtZW50cyBVRE1BIHN1cHBvcnQiCj4+ICsJ dHJpc3RhdGUgIlRleGFzIEluc3RydW1lbnRzIFVETUEgc3VwcG9ydCIKPj4gIAlkZXBlbmRzIG9u IEFSQ0hfSzMKPj4gIAlkZXBlbmRzIG9uIFRJX1NDSV9QUk9UT0NPTAo+PiAgCWRlcGVuZHMgb24g VElfU0NJX0lOVEFfSVJRQ0hJUAo+PiBAQCAtNDgsNyArNDgsNyBAQCBjb25maWcgVElfSzNfVURN QQo+PiAgCSAgRE1BIGVuZ2luZSBpcyB1c2VkIGluIEFNNjV4IGFuZCBqNzIxZS4KPj4gIAo+PiAg Y29uZmlnIFRJX0szX1VETUFfR0xVRV9MQVlFUgo+PiAtCWJvb2wgIlRleGFzIEluc3RydW1lbnRz IFVETUEgR2x1ZSBsYXllciBmb3Igbm9uIERNQWVuZ2luZSB1c2VycyIKPj4gKwl0cmlzdGF0ZSAi VGV4YXMgSW5zdHJ1bWVudHMgVURNQSBHbHVlIGxheWVyIGZvciBub24gRE1BZW5naW5lIHVzZXJz Igo+PiAgCWRlcGVuZHMgb24gQVJDSF9LMwo+PiAgCWRlcGVuZHMgb24gVElfSzNfVURNQQo+PiAg CWhlbHAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3RpL2szLXVkbWEtZ2x1ZS5jIGIvZHJp dmVycy9kbWEvdGkvazMtdWRtYS1nbHVlLmMKPj4gaW5kZXggNGZkZDlmMDZiNzIzLi5jMjlkZTQ2 OTVhZTcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZG1hL3RpL2szLXVkbWEtZ2x1ZS5jCj4+ICsr KyBiL2RyaXZlcnMvZG1hL3RpL2szLXVkbWEtZ2x1ZS5jCj4+IEBAIC02LDYgKzYsNyBAQAo+PiAg ICoKPj4gICAqLwo+PiAgCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+ICAjaW5jbHVk ZSA8bGludXgvYXRvbWljLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4gICNpbmNs dWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+PiBAQCAtMTQzMyw0ICsxNDM0LDYgQEAgc3RhdGlj IGludCBfX2luaXQgazNfdWRtYV9nbHVlX2NsYXNzX2luaXQodm9pZCkKPj4gIHsKPj4gIAlyZXR1 cm4gY2xhc3NfcmVnaXN0ZXIoJmszX3VkbWFfZ2x1ZV9kZXZjbGFzcyk7Cj4+ICB9Cj4+IC1hcmNo X2luaXRjYWxsKGszX3VkbWFfZ2x1ZV9jbGFzc19pbml0KTsKPj4gKwo+PiArbW9kdWxlX2luaXQo azNfdWRtYV9nbHVlX2NsYXNzX2luaXQpOwo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIGIvZHJpdmVycy9kbWEvdGkv azMtdWRtYS5jCj4+IGluZGV4IDJmMGQyYzY4YzkzYy4uNzIzOWZmMzFjOGM1IDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKPj4gKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCj4+IEBAIC01LDYgKzUsNyBAQAo+PiAgICovCj4+ICAKPj4gICNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gICNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgo+PiAgI2luY2x1 ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4+IEBAIC00MzE4LDE4ICs0MzE5LDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHVkbWFfb2ZfbWF0Y2hbXSA9IHsKPj4gIAkJLmNv bXBhdGlibGUgPSAidGksajcyMWUtbmF2c3MtbWN1LXVkbWFwIiwKPj4gIAkJLmRhdGEgPSAmajcy MWVfbWN1X2RhdGEsCj4+ICAJfSwKPj4gLQl7IC8qIFNlbnRpbmVsICovIH0sCj4+IC19Owo+PiAt Cj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBiY2RtYV9vZl9tYXRjaFtdID0g ewo+PiAgCXsKPj4gIAkJLmNvbXBhdGlibGUgPSAidGksYW02NC1kbXNzLWJjZG1hIiwKPj4gIAkJ LmRhdGEgPSAmYW02NF9iY2RtYV9kYXRhLAo+PiAgCX0sCj4+IC0JeyAvKiBTZW50aW5lbCAqLyB9 LAo+PiAtfTsKPj4gLQo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcGt0ZG1h X29mX21hdGNoW10gPSB7Cj4+ICAJewo+PiAgCQkuY29tcGF0aWJsZSA9ICJ0aSxhbTY0LWRtc3Mt cGt0ZG1hIiwKPj4gIAkJLmRhdGEgPSAmYW02NF9wa3RkbWFfZGF0YSwKPj4gQEAgLTUyNTQsMTQg KzUyNDcsOSBAQCBzdGF0aWMgaW50IHVkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4+ICAKPj4gIAltYXRjaCA9IG9mX21hdGNoX25v ZGUodWRtYV9vZl9tYXRjaCwgZGV2LT5vZl9ub2RlKTsKPj4gLQlpZiAoIW1hdGNoKQo+PiAtCQlt YXRjaCA9IG9mX21hdGNoX25vZGUoYmNkbWFfb2ZfbWF0Y2gsIGRldi0+b2Zfbm9kZSk7Cj4+ICAJ aWYgKCFtYXRjaCkgewo+PiAtCQltYXRjaCA9IG9mX21hdGNoX25vZGUocGt0ZG1hX29mX21hdGNo LCBkZXYtPm9mX25vZGUpOwo+PiAtCQlpZiAoIW1hdGNoKSB7Cj4+IC0JCQlkZXZfZXJyKGRldiwg Ik5vIGNvbXBhdGlibGUgbWF0Y2ggZm91bmRcbiIpOwo+PiAtCQkJcmV0dXJuIC1FTk9ERVY7Cj4+ IC0JCX0KPj4gKwkJZGV2X2VycihkZXYsICJObyBjb21wYXRpYmxlIG1hdGNoIGZvdW5kXG4iKTsK Pj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+ICAJfQo+PiAgCXVkLT5tYXRjaF9kYXRhID0gbWF0Y2gt PmRhdGE7Cj4+ICAKPj4gQEAgLTU0OTQsMjcgKzU0ODIsOSBAQCBzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RyaXZlciB1ZG1hX2RyaXZlciA9IHsKPj4gIAl9LAo+PiAgCS5wcm9iZQkJPSB1ZG1hX3By b2JlLAo+PiAgfTsKPj4gLWJ1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKHVkbWFfZHJpdmVyKTsKPj4g IAo+PiAtc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNkbWFfZHJpdmVyID0gewo+PiAt CS5kcml2ZXIgPSB7Cj4+IC0JCS5uYW1lCT0gInRpLWJjZG1hIiwKPj4gLQkJLm9mX21hdGNoX3Rh YmxlID0gYmNkbWFfb2ZfbWF0Y2gsCj4+IC0JCS5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwK Pj4gLQl9LAo+PiAtCS5wcm9iZQkJPSB1ZG1hX3Byb2JlLAo+PiAtfTsKPj4gLWJ1aWx0aW5fcGxh dGZvcm1fZHJpdmVyKGJjZG1hX2RyaXZlcik7Cj4+IC0KPj4gLXN0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIHBrdGRtYV9kcml2ZXIgPSB7Cj4+IC0JLmRyaXZlciA9IHsKPj4gLQkJLm5hbWUJ PSAidGktcGt0ZG1hIiwKPj4gLQkJLm9mX21hdGNoX3RhYmxlID0gcGt0ZG1hX29mX21hdGNoLAo+ PiAtCQkuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsCj4+IC0JfSwKPj4gLQkucHJvYmUJCT0g dWRtYV9wcm9iZSwKPj4gLX07Cj4+IC1idWlsdGluX3BsYXRmb3JtX2RyaXZlcihwa3RkbWFfZHJp dmVyKTsKPj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodWRtYV9kcml2ZXIpOwoKPiBJIGRpZCBs aWtlZCB0aGUgJ2hhY2snIHRoYXQgdGhlIGRldl8qIHByaW50cyBjb250YWluZWQgdGhlIGFjdHVh bCB0eXBlCj4gb2YgdGhlIERNQSAodWRtYS9iY2RtYS9wa3RkbWEpLCBidXQgaXQgaXMgbm90IHdv cmtpbmcgdmlhIG1vZHVsZXMsCj4gdW5sZXNzIHRoZSBkcml2ZXIgaW5pdCBwYXJ0cyBhcmUgc3Bs aXQgb3V0IGFuZCB0aGUgYnVsayBpcyBrZXB0IGFzIGEKPiBsaWJyYXJ5Lgo+Cj4gSSBoYWQgdGhp cyBoYWxmIHdheSBpbXBsZW1lbnRlZCBpbiBteSB3aXAsIGJ1dCBuZXZlciBnb3QgdGhlIGNoYW5j ZSB0bwo+IGZpbmFsaXplIGl0LgoKSSBndWVzcyB0aGF0IGNvdWxkIGFsd2F5cyBiZSBkb25lIGFz IGEgc2Vjb25kIHBhdGggaWYgbmVlZGVkLCBidXQgSQp3YW50ZWQgdG8ga2VlcCB0aGlzIG1vZHVs ZSBjb252ZXJzaW9uIGFzIHNpbXBsZSBhcyBwb3NzaWJsZSBhdCBmaXJzdC4KCj4gQnV0LCBvbmUg Y2FuIGdldCB0aGUgaW5mbyB2aWEgdGhlIGFkZHJlc3MsIHNvLi4uCgpTaGFsbCBJIHRha2UgdGhp cyAic28uLi4iIGFzIGFuIGFja2VkLWJ5PyAgOykKCktldmluCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK