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 085CAC6FA83 for ; Tue, 27 Sep 2022 22:56:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231985AbiI0W4g (ORCPT ); Tue, 27 Sep 2022 18:56:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229538AbiI0W4d (ORCPT ); Tue, 27 Sep 2022 18:56:33 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8AEAC7C33A for ; Tue, 27 Sep 2022 15:56:29 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id f23so10350896plr.6 for ; Tue, 27 Sep 2022 15:56:29 -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=EqsA45vArW1jYc6Dv+3e8MlzVLIM63c0M/moa9HScAs=; b=JZOfY0lOjazdIP0MDuNJHVFccA9b0/il8AAhKDa27ZEIeDaH+9fTz8BEbVHlkwP2kw i3S62LkMEK6O6WxnnnXpl3/aTYuQ5FlkPakGBWGhrOfxOQ+ob1rK0v0SBITdUpzB5n+b /llmHiT+TNGjyMipQxiWMcyZbYpg85i/CX8twNJWGJ/CdzIaV+FqnV+HG/KRWqEd2cvQ R3RWKacXTP5r2MmYbWiIAyaYubOyTxRziz+M7APUI5hNlCoMKikX3p0p8lX+lCdh9l55 y8Ct87c2+vApFfVG7xeNPVKSCsTj3tB4rpQLDs04OBlAUiq3rrs1zuWwIKfiZzhbIYGa volQ== 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=EqsA45vArW1jYc6Dv+3e8MlzVLIM63c0M/moa9HScAs=; b=Ms9UT4oEuBQSdc9fgjLwAE/CsI+LghYUjVoYJ+csWfeyJt10WdgGaM0sqFukWwyRTZ oePm89xy7HvNuxEwjrDdliVJv8uhQJYZZ0EF7kt1OzlYkjACdM2lhm6sKINVMl4yfEHs /n45NIskAHVCOIWs/dUpINrbpmklIxCcKtd0D2J8xG9Cp4laqPDb7JMFn8/oVNDz+D1D S/8Te8ylPXfHQN+BoLyZEUz0wU+bLDRN0aKYzytBg7HalsIzpiUHw7aUrtp5g4RrT6Mu QBDnxLBS8cXHHoGsgQ+yKlhy6/G+VdKdJ5kmdRYMMByTkl8Htn4Fl5Rrfqz7v698FjCG ZgGg== X-Gm-Message-State: ACrzQf3qKXiYH2bTF/V7W+KYEPbYSZFWq3mHaOJ+F9QxGwXytCW5VMZ8 8x8ls2kxeItcft8wdMy0nvoy01xzlmnvALQO X-Google-Smtp-Source: AMsMyM5t1JhreBtatSfnKTTKPGS84TrGl9GhuTEiy60uIooQuvggjqh5URIINlBdoD2aFCHbQSXkCA== X-Received: by 2002:a17:902:db12:b0:178:1f91:74e6 with SMTP id m18-20020a170902db1200b001781f9174e6mr29787222plx.100.1664319388738; Tue, 27 Sep 2022 15:56:28 -0700 (PDT) Received: from localhost ([76.146.1.42]) by smtp.gmail.com with ESMTPSA id p125-20020a625b83000000b0052d432b4cc0sm2359967pfb.33.2022.09.27.15.56.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 15:56:27 -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 3/3] dma/ti: convert PSIL to be buildable as module In-Reply-To: <390efbdd-6bb2-b1bb-7c4f-9c6f9032876a@gmail.com> References: <20220926181848.2917639-1-khilman@baylibre.com> <20220926181848.2917639-4-khilman@baylibre.com> <4c9f0284-f8d0-75e5-8bc9-944b040f9edb@gmail.com> <7hfsgeezqx.fsf@baylibre.com> <390efbdd-6bb2-b1bb-7c4f-9c6f9032876a@gmail.com> Date: Tue, 27 Sep 2022 15:56:27 -0700 Message-ID: <7hmtakxw84.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 Hi P=C3=A9ter P=C3=A9ter Ujfalusi writes: > On 26/09/2022 21:50, Kevin Hilman wrote: >> P=C3=A9ter Ujfalusi writes: >>=20 >>> Hi Kevin, >>> >>> On 9/26/22 21:18, Kevin Hilman wrote: >>>> map symbols need EXPORT_SYMBOL and files need MODULE_LICENSE. >>>> >>>> Signed-off-by: Kevin Hilman >>>> --- >>>> drivers/dma/ti/Kconfig | 3 ++- >>>> drivers/dma/ti/k3-psil-am62.c | 4 ++++ >>>> drivers/dma/ti/k3-psil-am64.c | 4 ++++ >>>> drivers/dma/ti/k3-psil-am654.c | 4 ++++ >>>> drivers/dma/ti/k3-psil-j7200.c | 4 ++++ >>>> drivers/dma/ti/k3-psil-j721e.c | 4 ++++ >>>> drivers/dma/ti/k3-psil-j721s2.c | 4 ++++ >>>> drivers/dma/ti/k3-psil.c | 2 ++ >>>> 8 files changed, 28 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/dma/ti/Kconfig b/drivers/dma/ti/Kconfig >>>> index f196be3b222f..2adc2cca10e9 100644 >>>> --- a/drivers/dma/ti/Kconfig >>>> +++ b/drivers/dma/ti/Kconfig >>>> @@ -56,7 +56,8 @@ config TI_K3_UDMA_GLUE_LAYER >>>> If unsure, say N. >>>>=20=20=20 >>>> config TI_K3_PSIL >>>> - bool >>>> + tristate >>>> + default TI_K3_UDMA >>>>=20=20=20 >>>> config TI_DMA_CROSSBAR >>>> bool >>>> diff --git a/drivers/dma/ti/k3-psil-am62.c b/drivers/dma/ti/k3-psil-am= 62.c >>>> index 2b6fd6e37c61..7c4ca85f68b1 100644 >>>> --- a/drivers/dma/ti/k3-psil-am62.c >>>> +++ b/drivers/dma/ti/k3-psil-am62.c >>>> @@ -4,6 +4,7 @@ >>>> */ >>>>=20=20=20 >>>> #include >>>> +#include >>>>=20=20=20 >>>> #include "k3-psil-priv.h" >>>>=20=20=20 >>>> @@ -184,3 +185,6 @@ struct psil_ep_map am62_ep_map =3D { >>>> .dst =3D am62_dst_ep_map, >>>> .dst_count =3D ARRAY_SIZE(am62_dst_ep_map), >>>> }; >>>> +EXPORT_SYMBOL_GPL(am62_ep_map); >>> >>> Wouldn't it be better to build one module (k3-psil.ko) and link all the >>> platform libs into that? >>> They are unconditionally built in all cases anyways and makes the lsmod >>> under control. >>> And no need to export these maps at all is a plus. >>=20 >> I guess that's one option, but seems to be to be the wrong direction for >> a modular kernel. To me, it seems like the next step would be to make >> it so only the SoC specific module is loaded instead of always loading >> them all. > > The PSI-L map is a library atm and exporting all the maps outside of the= =20 > PSI-L library is wrong. We shall have fixed API to look up (and update)=20 > a PSI-L endpoint configuration and only that API shall be allowed. > > I prefer to have a single .ko binary for the PSI-L library/database for=20 > now. Optionally the individual SoC maps could be marked as init data and= =20 > we could make a copy of the one that is needed on the booted device. > > For SoC only loading this whole library way must be reworked to a=20 > platform or a bus driver (the bus description via DT was shot down=20 > during the initial UDMA submission, fyi). So you need to find a 'device'= =20 > which would probe the PSI-L map and only load the map that is needed. > > Furthermore: having the individual maps as separate .ko objects does not= =20 > make much sense as none of them can be removed runtime, the symbols are=20 > used in the 'core' library. OK, I understand. I'll send a v2 with everything built into a single .ko (but I'll leave the initdata stuff for an optional follow-up series, since I don't fully understand how/when all these maps are used.) Thanks for your detailed review & suggestions, 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 934B8C07E9D for ; Tue, 27 Sep 2022 22:57:47 +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=8oAs0KFWMwY06y6rXAeMl2y/Okec7O2FkbUw1lVeV6U=; b=az5FkiS5HWveVI Ul36p0nflanue8rnDuIfwC9UiRhfNjJLt4LPb14sqr5iV0DvB8HjItB8D0XqCm2pj70dC7ctmMz5b lv5yfJw2NtsGR41FIpJBq92SaRHevEWOb+9AiPhDB/M8T5Luoj2ZVaJAoT6hP21assFAWXt6uKlXt Exi+AuzSsWbSCsWoSN7tsx5yZFoT6wHtMLE/f7uIEmqkF1Fi2z6F5CAgSvK/RCCAdP4VwHreWuwAs hzJYJ0UMGKsVqOlvZ2LJmMWqfR4mtzgjHcZx38KazaYVCA+JU67qdT/HUOsoaQ4V2+2N90fiwiNnq Awf0c269m98bMUGQyFlw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1odJVH-00D5k6-54; Tue, 27 Sep 2022 22:56:39 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1odJVC-00D5j5-Cg for linux-arm-kernel@lists.infradead.org; Tue, 27 Sep 2022 22:56:37 +0000 Received: by mail-pl1-x632.google.com with SMTP id iw17so10397445plb.0 for ; Tue, 27 Sep 2022 15:56:29 -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=EqsA45vArW1jYc6Dv+3e8MlzVLIM63c0M/moa9HScAs=; b=JZOfY0lOjazdIP0MDuNJHVFccA9b0/il8AAhKDa27ZEIeDaH+9fTz8BEbVHlkwP2kw i3S62LkMEK6O6WxnnnXpl3/aTYuQ5FlkPakGBWGhrOfxOQ+ob1rK0v0SBITdUpzB5n+b /llmHiT+TNGjyMipQxiWMcyZbYpg85i/CX8twNJWGJ/CdzIaV+FqnV+HG/KRWqEd2cvQ R3RWKacXTP5r2MmYbWiIAyaYubOyTxRziz+M7APUI5hNlCoMKikX3p0p8lX+lCdh9l55 y8Ct87c2+vApFfVG7xeNPVKSCsTj3tB4rpQLDs04OBlAUiq3rrs1zuWwIKfiZzhbIYGa volQ== 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=EqsA45vArW1jYc6Dv+3e8MlzVLIM63c0M/moa9HScAs=; b=fYachPaGE6a5vDi8zB++vzo2kBOefx0tSneuM6h1YLULHCDsENAMIJOmhjqMKmUpj6 9TJ4N9IKsW8pS4AJiAmFHbOpLVPWrYb1bG2B9pq2MIgYSFF23+OfcnwbR1EReEaXh7Qt 3B5Et9naCs3EK2JRppQuah7liQRHtoqExdeRHT0qvwd2shBinTVqa7LLJkXy3ldfw36a cg7hmt/T6Zfil3g7F+2OwYDKdxawJYpOZMQcFqnQcIji0jueLe729C7/felQo+ZFRkY7 VzK08arUy/tooSL+VNWf5WphZPWnU37D+r/tU3wzqh8ldLCnR/Qbntib3sx1Yd5kDyD8 OqIw== X-Gm-Message-State: ACrzQf1o2DOZhm+63rQHFmfNSICfK5e6DO95/Oys0AamY+/Ghb0+4PWN jN0Rye/s6PD1lcgXF2+CDkQQvw== X-Google-Smtp-Source: AMsMyM5t1JhreBtatSfnKTTKPGS84TrGl9GhuTEiy60uIooQuvggjqh5URIINlBdoD2aFCHbQSXkCA== X-Received: by 2002:a17:902:db12:b0:178:1f91:74e6 with SMTP id m18-20020a170902db1200b001781f9174e6mr29787222plx.100.1664319388738; Tue, 27 Sep 2022 15:56:28 -0700 (PDT) Received: from localhost ([76.146.1.42]) by smtp.gmail.com with ESMTPSA id p125-20020a625b83000000b0052d432b4cc0sm2359967pfb.33.2022.09.27.15.56.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Sep 2022 15:56:27 -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 3/3] dma/ti: convert PSIL to be buildable as module In-Reply-To: <390efbdd-6bb2-b1bb-7c4f-9c6f9032876a@gmail.com> References: <20220926181848.2917639-1-khilman@baylibre.com> <20220926181848.2917639-4-khilman@baylibre.com> <4c9f0284-f8d0-75e5-8bc9-944b040f9edb@gmail.com> <7hfsgeezqx.fsf@baylibre.com> <390efbdd-6bb2-b1bb-7c4f-9c6f9032876a@gmail.com> Date: Tue, 27 Sep 2022 15:56:27 -0700 Message-ID: <7hmtakxw84.fsf@baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220927_155634_665641_24A442FC X-CRM114-Status: GOOD ( 25.77 ) 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 SGkgUMOpdGVyCgpQw6l0ZXIgVWpmYWx1c2kgPHBldGVyLnVqZmFsdXNpQGdtYWlsLmNvbT4gd3Jp dGVzOgoKPiBPbiAyNi8wOS8yMDIyIDIxOjUwLCBLZXZpbiBIaWxtYW4gd3JvdGU6Cj4+IFDDqXRl ciBVamZhbHVzaSA8cGV0ZXIudWpmYWx1c2lAZ21haWwuY29tPiB3cml0ZXM6Cj4+IAo+Pj4gSGkg S2V2aW4sCj4+Pgo+Pj4gT24gOS8yNi8yMiAyMToxOCwgS2V2aW4gSGlsbWFuIHdyb3RlOgo+Pj4+ IG1hcCBzeW1ib2xzIG5lZWQgRVhQT1JUX1NZTUJPTCBhbmQgZmlsZXMgbmVlZCBNT0RVTEVfTElD RU5TRS4KPj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IEtldmluIEhpbG1hbiA8a2hpbG1hbkBiYXls aWJyZS5jb20+Cj4+Pj4gLS0tCj4+Pj4gICBkcml2ZXJzL2RtYS90aS9LY29uZmlnICAgICAgICAg IHwgMyArKy0KPj4+PiAgIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwtYW02Mi5jICAgfCA0ICsrKysK Pj4+PiAgIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwtYW02NC5jICAgfCA0ICsrKysKPj4+PiAgIGRy aXZlcnMvZG1hL3RpL2szLXBzaWwtYW02NTQuYyAgfCA0ICsrKysKPj4+PiAgIGRyaXZlcnMvZG1h L3RpL2szLXBzaWwtajcyMDAuYyAgfCA0ICsrKysKPj4+PiAgIGRyaXZlcnMvZG1hL3RpL2szLXBz aWwtajcyMWUuYyAgfCA0ICsrKysKPj4+PiAgIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwtajcyMXMy LmMgfCA0ICsrKysKPj4+PiAgIGRyaXZlcnMvZG1hL3RpL2szLXBzaWwuYyAgICAgICAgfCAyICsr Cj4+Pj4gICA4IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK Pj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS90aS9LY29uZmlnIGIvZHJpdmVycy9k bWEvdGkvS2NvbmZpZwo+Pj4+IGluZGV4IGYxOTZiZTNiMjIyZi4uMmFkYzJjY2ExMGU5IDEwMDY0 NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZG1hL3RpL0tjb25maWcKPj4+PiArKysgYi9kcml2ZXJzL2Rt YS90aS9LY29uZmlnCj4+Pj4gQEAgLTU2LDcgKzU2LDggQEAgY29uZmlnIFRJX0szX1VETUFfR0xV RV9MQVlFUgo+Pj4+ICAgCSAgSWYgdW5zdXJlLCBzYXkgTi4KPj4+PiAgIAo+Pj4+ICAgY29uZmln IFRJX0szX1BTSUwKPj4+PiAtCWJvb2wKPj4+PiArICAgICAgIHRyaXN0YXRlCj4+Pj4gKyAgICAg ICBkZWZhdWx0IFRJX0szX1VETUEKPj4+PiAgIAo+Pj4+ICAgY29uZmlnIFRJX0RNQV9DUk9TU0JB Ugo+Pj4+ICAgCWJvb2wKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtcHNpbC1h bTYyLmMgYi9kcml2ZXJzL2RtYS90aS9rMy1wc2lsLWFtNjIuYwo+Pj4+IGluZGV4IDJiNmZkNmUz N2M2MS4uN2M0Y2E4NWY2OGIxIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZG1hL3RpL2szLXBz aWwtYW02Mi5jCj4+Pj4gKysrIGIvZHJpdmVycy9kbWEvdGkvazMtcHNpbC1hbTYyLmMKPj4+PiBA QCAtNCw2ICs0LDcgQEAKPj4+PiAgICAqLwo+Pj4+ICAgCj4+Pj4gICAjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+PiAgIAo+Pj4+ICAg I2luY2x1ZGUgImszLXBzaWwtcHJpdi5oIgo+Pj4+ICAgCj4+Pj4gQEAgLTE4NCwzICsxODUsNiBA QCBzdHJ1Y3QgcHNpbF9lcF9tYXAgYW02Ml9lcF9tYXAgPSB7Cj4+Pj4gICAJLmRzdCA9IGFtNjJf ZHN0X2VwX21hcCwKPj4+PiAgIAkuZHN0X2NvdW50ID0gQVJSQVlfU0laRShhbTYyX2RzdF9lcF9t YXApLAo+Pj4+ICAgfTsKPj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoYW02Ml9lcF9tYXApOwo+Pj4K Pj4+IFdvdWxkbid0IGl0IGJlIGJldHRlciB0byBidWlsZCBvbmUgbW9kdWxlIChrMy1wc2lsLmtv KSBhbmQgbGluayBhbGwgdGhlCj4+PiBwbGF0Zm9ybSBsaWJzIGludG8gdGhhdD8KPj4+IFRoZXkg YXJlIHVuY29uZGl0aW9uYWxseSBidWlsdCBpbiBhbGwgY2FzZXMgYW55d2F5cyBhbmQgbWFrZXMg dGhlIGxzbW9kCj4+PiB1bmRlciBjb250cm9sLgo+Pj4gQW5kIG5vIG5lZWQgdG8gZXhwb3J0IHRo ZXNlIG1hcHMgYXQgYWxsIGlzIGEgcGx1cy4KPj4gCj4+IEkgZ3Vlc3MgdGhhdCdzIG9uZSBvcHRp b24sIGJ1dCBzZWVtcyB0byBiZSB0byBiZSB0aGUgd3JvbmcgZGlyZWN0aW9uIGZvcgo+PiBhIG1v ZHVsYXIga2VybmVsLiAgVG8gbWUsIGl0IHNlZW1zIGxpa2UgdGhlIG5leHQgc3RlcCB3b3VsZCBi ZSB0byBtYWtlCj4+IGl0IHNvIG9ubHkgdGhlIFNvQyBzcGVjaWZpYyBtb2R1bGUgaXMgbG9hZGVk IGluc3RlYWQgb2YgYWx3YXlzIGxvYWRpbmcKPj4gdGhlbSBhbGwuCj4KPiBUaGUgUFNJLUwgbWFw IGlzIGEgbGlicmFyeSBhdG0gYW5kIGV4cG9ydGluZyBhbGwgdGhlIG1hcHMgb3V0c2lkZSBvZiB0 aGUgCj4gUFNJLUwgbGlicmFyeSBpcyB3cm9uZy4gV2Ugc2hhbGwgaGF2ZSBmaXhlZCBBUEkgdG8g bG9vayB1cCAoYW5kIHVwZGF0ZSkgCj4gYSBQU0ktTCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGFu ZCBvbmx5IHRoYXQgQVBJIHNoYWxsIGJlIGFsbG93ZWQuCj4KPiBJIHByZWZlciB0byBoYXZlIGEg c2luZ2xlIC5rbyBiaW5hcnkgZm9yIHRoZSBQU0ktTCBsaWJyYXJ5L2RhdGFiYXNlIGZvciAKPiBu b3cuIE9wdGlvbmFsbHkgdGhlIGluZGl2aWR1YWwgU29DIG1hcHMgY291bGQgYmUgbWFya2VkIGFz IGluaXQgZGF0YSBhbmQgCj4gd2UgY291bGQgbWFrZSBhIGNvcHkgb2YgdGhlIG9uZSB0aGF0IGlz IG5lZWRlZCBvbiB0aGUgYm9vdGVkIGRldmljZS4KPgo+IEZvciBTb0Mgb25seSBsb2FkaW5nIHRo aXMgd2hvbGUgbGlicmFyeSB3YXkgbXVzdCBiZSByZXdvcmtlZCB0byBhIAo+IHBsYXRmb3JtIG9y IGEgYnVzIGRyaXZlciAodGhlIGJ1cyBkZXNjcmlwdGlvbiB2aWEgRFQgd2FzIHNob3QgZG93biAK PiBkdXJpbmcgdGhlIGluaXRpYWwgVURNQSBzdWJtaXNzaW9uLCBmeWkpLiBTbyB5b3UgbmVlZCB0 byBmaW5kIGEgJ2RldmljZScgCj4gd2hpY2ggd291bGQgcHJvYmUgdGhlIFBTSS1MIG1hcCBhbmQg b25seSBsb2FkIHRoZSBtYXAgdGhhdCBpcyBuZWVkZWQuCj4KPiBGdXJ0aGVybW9yZTogaGF2aW5n IHRoZSBpbmRpdmlkdWFsIG1hcHMgYXMgc2VwYXJhdGUgLmtvIG9iamVjdHMgZG9lcyBub3QgCj4g bWFrZSBtdWNoIHNlbnNlIGFzIG5vbmUgb2YgdGhlbSBjYW4gYmUgcmVtb3ZlZCBydW50aW1lLCB0 aGUgc3ltYm9scyBhcmUgCj4gdXNlZCBpbiB0aGUgJ2NvcmUnIGxpYnJhcnkuCgpPSywgSSB1bmRl cnN0YW5kLiAgSSdsbCBzZW5kIGEgdjIgd2l0aCBldmVyeXRoaW5nIGJ1aWx0IGludG8gYSBzaW5n bGUKLmtvIChidXQgSSdsbCBsZWF2ZSB0aGUgaW5pdGRhdGEgc3R1ZmYgZm9yIGFuIG9wdGlvbmFs IGZvbGxvdy11cCBzZXJpZXMsCnNpbmNlIEkgZG9uJ3QgZnVsbHkgdW5kZXJzdGFuZCBob3cvd2hl biBhbGwgdGhlc2UgbWFwcyBhcmUgdXNlZC4pCgpUaGFua3MgZm9yIHlvdXIgZGV0YWlsZWQgcmV2 aWV3ICYgc3VnZ2VzdGlvbnMsCgpLZXZpbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=