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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FD2BC433F5 for ; Mon, 25 Oct 2021 19:39:04 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 1672C6109D for ; Mon, 25 Oct 2021 19:39:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 1672C6109D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yz7ym/YZFFiFlUkqK5cNFsjqnZcGio060Y8kJo1zkNM=; b=BPHXIftYJ/EsM4 znGogK12afX5HQtpIkUVOhEIEsVrA/Cb9QbHwujZytMgmt6Zcs5fvN58sgN8wbN0Wdj7f9FrBRSTB PdEhRGLFoV2mVQHBvyiXsLIn1AibMlB2k/8P7Tu5g9CRuoTkI7WdhbiYn2WYoU/qTSC00Nqpe+88/ CBw3dEOngQxoD7gN+3knft41jpP12m2TDc368Yi56mtCb9XSSUkawuZAOymD+mkkiq1ryxqSWYgp3 fIFlzHfz9ZIpyOenBNSFosXBMTpepYea1U4E/wnJz+Rw0RP0Rwh7iyKz7UDZCwyzS4gGQvGLLh5HH R8eucmY4AerLorZbGLQA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mf5md-00HRxp-2W; Mon, 25 Oct 2021 19:37:23 +0000 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mf5mX-00HRvV-KR for linux-arm-kernel@lists.infradead.org; Mon, 25 Oct 2021 19:37:20 +0000 Received: by mail-qt1-x82e.google.com with SMTP id w8so11346440qts.4 for ; Mon, 25 Oct 2021 12:37:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=Xomg13yoe8Zy0xpyncWa5/BlOSzBi3U2smQU5H2tuU4=; b=H0c2xpINHt6+ynT6sgeT2/fNqpVtsmwtM7vBa8H1jGYjYrC3wWZRExdMscq96TjYnE 0Wppm1YkXbARTmuLqwCJDsY7iZxfaG/x/LVyWDZ0DvAs6sm8kJRZNOV0od3/JSR4+51p B34ccTy0UC98RWPBaF2TjwIkkfgIj3ugUZOdamO8oQISW11bSYiQzqpGCX6lluuoJAu/ kBeqBL4PhmUap2hjKd9vkFtT5PshLeZxlbfCJ947PTbw0/LflEVSmSE0+lEElIqbehDX cCkMiqu5qhg1Rk4srKO4qgRU+oBixZYjqmFLGXKub7kn4tPSZvk38EQfTaEgX7uizYmT fEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=Xomg13yoe8Zy0xpyncWa5/BlOSzBi3U2smQU5H2tuU4=; b=jQuUE7sCL9CLw0qVAb7Li8Z2PNQOzBFfl0IzC2PpXUrW+gfdVPNOwmzw12mZLMfYsC bdYe7LhDH9XN/efCHE/mS4cOqhWXVHqe12Zs3akeAAvak+yKUYZChqfXJc7rSl9afet7 /CNvdK5oHYWcY52EukQamgXP03J3UZHKZDZMwU6eSmGahIPnrRBGhWvAPpNlMVEuhg2l 0X98xmGkfC/rtAcoqqA3oUMjSEQSdHsIxbapyQWyWpxlWY3V9+WsS7agYzCNfd6YFGbw BL8qC7TiAmunmn7djFjTWdB43lEVta/ybU/U/EpzTBNxi7snwMJpi5XypKJqDK5Es+Uc UGqw== X-Gm-Message-State: AOAM530t8S9cM5w4bUoZAgOesxg1MHbJkQYXKqhEZio7VNT84f0zVvm2 XcleJJQqHPWGlUAAXCSIF3J3cQ== X-Google-Smtp-Source: ABdhPJyW7a+Z2+u+aSVG4TVj9FtliW38yyYAb9Y3POPp/FFxZ5+MADly+p5qDcEzhsI/BcDZs3QxFQ== X-Received: by 2002:a05:622a:188b:: with SMTP id v11mr20030425qtc.193.1635190635705; Mon, 25 Oct 2021 12:37:15 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id g11sm10575364qko.31.2021.10.25.12.37.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Oct 2021 12:37:15 -0700 (PDT) Message-ID: Subject: Re: [PATCH v5 00/10] Add support for DMA2D of STMicroelectronics STM32 Soc series From: Nicolas Dufresne To: dillon.minfei@gmail.com, mchehab@kernel.org, mchehab+huawei@kernel.org, hverkuil-cisco@xs4all.nl, ezequiel@collabora.com, gnurou@gmail.com, pihsun@chromium.org, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, mturquette@baylibre.com, sboyd@kernel.org, robh+dt@kernel.org, gabriel.fernandez@st.com, gabriel.fernandez@foss.st.com Cc: patrice.chotard@foss.st.com, hugues.fruchet@foss.st.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org Date: Mon, 25 Oct 2021 15:37:13 -0400 In-Reply-To: <1634533488-25334-1-git-send-email-dillon.minfei@gmail.com> References: <1634533488-25334-1-git-send-email-dillon.minfei@gmail.com> User-Agent: Evolution 3.40.4 (3.40.4-2.fc34) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211025_123717_774889_8E22C0E1 X-CRM114-Status: GOOD ( 29.55 ) 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 TGUgbHVuZGkgMTggb2N0b2JyZSAyMDIxIMOgIDEzOjA0ICswODAwLCBkaWxsb24ubWluZmVpQGdt YWlsLmNvbSBhIMOpY3JpdMKgOgo+IEZyb206IERpbGxvbiBNaW4gPGRpbGxvbi5taW5mZWlAZ21h aWwuY29tPgo+IAo+IFRoaXMgcGF0Y2hzZXQgaW50cm9kdWNlcyBhIGJhc2ljIHN1cHBvcnQgZm9y IERNQTJEIEludGVyZmFjZQo+IG9mIFNUTWljcm9lbGVjdHJvbmljcyBTVE0zMiBTb0Mgc2VyaWVz Lgo+IAo+IFRoaXMgZmlyc3QgYmFzaWMgc3VwcG9ydCBpbXBsZW1lbnRzIFIyTSwgTTJNLCBNMk1f UEZDCj4gTTJNX0JMRU5EIHN1cHBvcnQgd2lsbCBiZSBhZGRlZCBsYXRlciBvbi4KPiAKPiBUaGlz IGhhcyBiZWVuIHRlc3RlZCBvbiBTVE0zMjQ2OS1ESVNDTyBib2FyZC4KPiAKPiBoaXN0b3J5Cj4g djU6Cj4gLSByZWJhc2UgdG8gbWVkaWFfdHJlZSBodHRwczovL2dpdC5saW51eHR2Lm9yZy9tZWRp YV90cmVlLmdpdC8KPiAtIHJlbW92ZSB1bnVzZWQgbG9nIGZyb20gZG1hMmQgZHJpdmVyIHRvIGF2 b2lkIHNwYW0ga2VybmVsIGxvZy4KPiAtIGZpeCAweEZGRkZGRiB0byAweGZmZmZmZiwgMl4yNCB0 byAyXjI0IC0xLCBldGMuCj4gLSBpbnRyb2R1Y2UgcGF0Y2ggIm1lZGlhOiB2NGwyLWN0cmxzOiBB ZGQgVjRMMl9DSURfQ09MT1JGWF9DQkNSIG1heCBzZXR0aW5nIgo+ICAgdG8gYWRkIFY0TDJfQ0lE X0NPTE9SRlhfQ0JDUiBlbnRyeS4KPiAtIHRoYW5rcyB0byBIYW5zJ3MgcGF0Y2gsIG9wZW4gbnVs bHB0ciBjaGVjayBpbiB2NGwyLWNvbXBsaWFuY2UsIHVwZGF0ZSBuZXcKPiAgIHRlc3QgcmVzdWx0 LiB0aGFua3MuCj4gICBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1tZWRpYS8zYWNkOWVl NC01YTU4LTZlZDQtMTdmZS02MTU5NmE1MjUyYjhAeHM0YWxsLm5sLwo+IAo+IHY0IGxpbms6Cj4g aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC9iYzhlMWNkMS0wMDEzLTkwNjItODhiNi1mZGRj YTUzNTkxOWZAeHM0YWxsLm5sLwo+IAo+IHY0Ogo+IC0gcmVwbGFjZSBWNEwyX0NPTE9SRlhfU0VU X0FSR0IsIFY0TDJfQ0lEX0NPTE9SRlhfQVJHQiB0bwo+ICAgVjRMMl9DT0xPUkZYX1NFVF9SR0Is IFY0TDJfQ0lEX0NPTE9SRlhfUkdCIHNpbmNlIEFscGhhIHBhcmFtdGVyIG5vdCB1c2VkCj4gICBp biBjdXJyZW50LiB0aGFua3MgSGFucy4KPiB2MyBsaW5rOgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xrbWwvMTYzMzY4OTAxMi0xNDQ5Mi0xLWdpdC1zZW5kLWVtYWlsLWRpbGxvbi5taW5mZWlA Z21haWwuY29tLwo+IAo+IHYzOgo+IC0gdXNlIFY0TDJfQ09MT1JGWF9TRVRfQVJHQiwgVjRMMl9D SURfQ09MT1JGWF9BUkdCIHRvIHBhc3MgYXJnYiBwYXJhbXRlciB0bwo+ICAgdGhlIGRtYTJkIGRy aXZlciwgaW5zdGVhZCBvZiBhZGQgc3RtMzIgcHJpdmF0ZSBpb2N0bC4KPiAtIHNvbWUgdjIncyBw YXRjaCBhcmUgcmVtb3ZlZCBpbiB0aGlzIHZlcnNpb24uCj4gICAtICJbUEFUQ0ggdjIgNy85XSBt ZWRpYTogZG9jczogYWRkIGRvYyBmb3IgdGhlIHN0bTMyIGRtYTJkIGRyaXZlciIKPiAgIC0gIltQ QVRDSCB2MiA4LzldIG1lZGlhOiB2NGw6IHVhcGk6IEFkZCB1c2VyIGNvbnRyb2wgYmFzZSBmb3Ig c3RtMzIgZG1hMmQKPiAgICAgY29udHJvbHMiCj4gLSBkbWEyZCdzIGRyaXZlciBjaGFuZ2VzIGJh c2VkIG9uIEhhbnMncyByZXZpZXcgcmVzdWx0LiBkZXRhaWwgY2FuIGJlIGZvdW5kIGF0Cj4gICAi bWVkaWE6IHN0bTMyLWRtYTJkOiBTVE0zMiBETUEyRCBkcml2ZXIiCj4gLSBhZGQgc3RtMzIgY2xr IGRyaXZlcnMgYnVnZml4LCBsdGRjIGNsb2NrIGRpc2FibGVkIGFmdGVyIGtlbmVybCBib290IHVw Lgo+IHYzIGJhc2VkIG9uIGtlcm5lbCBhbmQgdjRsLXV0aWxzIGdpdDoKPiAKPiBrZXJuZWw6Cj4g Y29tbWl0IDllMWZmMzA3Yzc3OWNlMWYwZjgxMGM3ZWNjZTNkOTViYmFlNDA4OTYKPiBBdXRob3I6 IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiBEYXRlOiAg IFN1biBPY3QgMyAxNDowODo0NyAyMDIxIC0wNzAwCj4gCj4gICAgIExpbnV4IDUuMTUtcmM0Cj4g Cj4gdjRsLXV0aWxzOgo+IGNvbW1pdCA3MDBmNWRlZDljNmRlMmM2ZGZlNWQxYjQ1M2Q4NTU2NmY5 NWI0ZjBjCj4gQXV0aG9yOiBIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsLWNpc2NvQHhzNGFsbC5ubD4K PiBEYXRlOiAgIFNhdCBPY3QgMiAxMTowMTowNSAyMDIxICswMjAwCj4gCj4gICAgIHRlc3QtbWVk aWE6IHNob3cgdmVyc2lvbiBpbmZvIGVhcmxpZXIgYW5kIHNob3cgY21kIGFyZ3MKPiAKPiAgICAg TG9nIHRoZSB2ZXJzaW9uIGluZm8gZWFybGllciBhbmQgYWxzbyBsb2cgdGhlIGNvbW1hbmQgbGlu ZSBhcmd1bWVudHMuCj4gIAo+ICAgICBTaWduZWQtb2ZmLWJ5OiBIYW5zIFZlcmt1aWwgPGh2ZXJr dWlsLWNpc2NvQHhzNGFsbC5ubD4KPiAKPiB2MiBsaW5rOgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xrbWwvMTYyNjM0MTA2OC0yMDI1My0xMS1naXQtc2VuZC1lbWFpbC1kaWxsb24ubWluZmVp QGdtYWlsLmNvbS8KPiAKPiAKPiB2MjoKPiAtIHVwZGF0ZSB2NGwyLWNvbXBsaWFuY2UgdG8gU0hB OiBhNGYyZTNhNmYzMDYgMjAyMS0wNy0xMyAwODowNDoxNQo+ICAgdGhlIHRlc3QgcmVzdWx0cyBh dCBiZWxvdyBbMV0uCj4gLSBpbnRyb2R1Y2UgRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21l ZGlhL2RyaXZlcnMvc3RtMzItdWFwaS5yc3QKPiAgIHRvIGV4cGxhaW4gdGhlIGRldGFpbCBvZiBk bWEyZCdzIGlvY3RsLgo+IC0gcmVzZXJ2ZWQgMTYgaW9jdGxzIGZyb20gdjRsMi1jb250cm9scy5o IGZvciBzdG0zMiwgaW50cm9kdWNlIHN0bTMyLW1lZGlhLmguCj4gLSBjb2xsZWN0IFJldmlld2Vk LWJ5IHRhZyBmcm9tIFJvYiBIZXJyaW5nLgo+IC0gdXBkYXRlIGRtYTJkIGRyaXZlciBmcm9tIEhh bnMncyByZXZpZXcuIHRoZSBkZXRhaWxzIGNhbiBiZSBmb3VuZAo+ICAgYXQgcmVsYXRlZCBwYXRj aGVzLgo+IHYxIGxpbms6Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8xNjIxNTA4NzI3 LTI0NDg2LTEtZ2l0LXNlbmQtZW1haWwtZGlsbG9uLm1pbmZlaUBnbWFpbC5jb20vCj4gCj4gdjE6 Cj4gVGhlIGNvbW1pdCBiYXNlZCBvbiBrZXJuZWwobWFzdGVyKTogYzNkMGUzZmQ0MWI3ZjBmNWQ1 ZDViNjAyMmFiN2U4MTNmMDRlYTcyNwo+IAo+IE5vdGUgZm9yIHY0bDItY29tcGxpYW5jZSB0b29s IG9uIG51LW1tdSBwbGF0Zm9ybToKPiBJIGFkZCB0d28gY2hhbmdlIGJhc2VkIG9uIHY0bC11dGls cyBzaW5jZSBjb21taXQ6Cj4gZjBjN2UzZDcxZWFmNDE4MmJhZTdlYjNlZTBlNDNiNGVlYjA0N2Vh OQo+IAo+IC0gY2hhbmdlIGZvcmsoKSB0byB2Zm9yaygpIGluIHY0bDItdGVzdC1jb250cm9scy5j cHAKPiAgIHNpbmNlIG5vLW1tdSBwbGF0Zm9ybSBkb24ndCBpbmNsdWRlIGZvcmsoKS4KPiAKPiB3 aXRoIHY0bDItY29tcGxpYW5jZSB0ZXN0IGxvZyAod2l0aCBhYm92ZSBtb2RpZmljYXRpb24pOgo+ IHNpbmNlIHRoZSBzdG0zMmY0NjktZGlzY28gcmFtIGxpbWl0YXRpb24sIHRoZXJlIGFyZSAyNSBm YWlsZWQgb24KPiBkbWFfYWxsb2NfY29oZXJlbnQoKQo+IAo+IFJlYWxseSBhcHByZWNpYXRlIGlm IHNvbWVvbmUgY2FuIGhlbHAgdG8gdGVzdCB0aGlzIHBhdGNoIG9uIHRoZSBTVE0zMjQyOUktRVZB TAo+IGV2YWx1YXRpb24gYm9hcmQgKGh0dHBzOi8vd3d3LnN0LmNvbS9lbi9ldmFsdWF0aW9uLXRv b2xzL3N0bTMyNDI5aS1ldmFsLmh0bWwpCj4gOE0geCAzMi1iaXQgU0RSQU0sIDFNIHggMTYtYml0 IFNSQU0gYW5kIDhNIHggMTYtYml0IE5PUiBGbGFzaAo+IAo+IH4gIyB2NGwyLWNvbXBsaWFuY2Ug LWYgLWQgL2Rldi92aWRlbzAgPiAvZGV2L3R0eXByaW50awo+IFsgMTc5OC41NTA2OTBdIFtVXSB2 NGwyLWNvbXBsaWFuY2UgMS4yMS4wLTQ4NTUsIDMyIGJpdHMsIDMyLWJpdCB0aW1lX3QKPiBbIDE3 OTkuNTI3NTA0XSBbVV0gdjRsMi1jb21wbGlhbmNlIFNIQTogNzAwZjVkZWQ5YzZkIDIwMjEtMTAt MDIgMDk6MDE6MDUKPiBbIDE4MDAuNTM0NTU4XSBbVV0gQ29tcGxpYW5jZSB0ZXN0IGZvciBzdG0t ZG1hMmQgZGV2aWNlIC9kZXYvdmlkZW8wOgo+IFsgMTgwMS41MTQ5OTldIFtVXSBEcml2ZXIgSW5m bzoKPiBbIDE4MDEuOTk4ODQwXSBbVV0gICAgICBEcml2ZXIgbmFtZSAgICAgIDogc3RtLWRtYTJk Cj4gWyAxODAyLjQ4MjE1MV0gW1VdICAgICAgQ2FyZCB0eXBlICAgICAgICA6IHN0bS1kbWEyZAo+ IFsgMTgwMi45NTk4MDhdIFtVXSAgICAgIEJ1cyBpbmZvICAgICAgICAgOiBwbGF0Zm9ybTpzdG0t ZG1hMmQKPiBbIDE4MDMuNDM1NzE1XSBbVV0gICAgICBEcml2ZXIgdmVyc2lvbiAgIDogNS4xNS4w Cj4gWyAxODAzLjkwNDkzOF0gW1VdICAgICAgQ2FwYWJpbGl0aWVzICAgICA6IDB4ODQyMDgwMDAK PiBbIDE4MDQuMzcxMjkwXSBbVV0gICAgICAgICAgICAgIFZpZGVvIE1lbW9yeS10by1NZW1vcnkK PiBbIDE4MDQuODMwODcwXSBbVV0gICAgICAgICAgICAgIFN0cmVhbWluZwo+IFsgMTgwNS4yODE0 NjVdIFtVXSAgICAgICAgICAgICAgRXh0ZW5kZWQgUGl4IEZvcm1hdAo+IFsgMTgwNS43MzMyNDld IFtVXSAgICAgICAgICAgICAgRGV2aWNlIENhcGFiaWxpdGllcwo+IFsgMTgwNi4xODEzNjldIFtV XSAgICAgIERldmljZSBDYXBzICAgICAgOiAweDA0MjA4MDAwCj4gWyAxODA2LjYyMjg5OV0gW1Vd ICAgICAgICAgICAgICBWaWRlbyBNZW1vcnktdG8tTWVtb3J5Cj4gWyAxODA3LjA1NzIwOF0gW1Vd ICAgICAgICAgICAgICBTdHJlYW1pbmcKPiBbIDE4MDcuNDgzODY2XSBbVV0gICAgICAgICAgICAg IEV4dGVuZGVkIFBpeCBGb3JtYXQKPiBbIDE4MDcuOTA3Njc4XSBbVV0gUmVxdWlyZWQgaW9jdGxz Ogo+IFsgMTgwOC4zMjUyODddIFtVXSAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwo+IFsg MTgwOC43ODUyNjBdIFtVXSAgICAgIHRlc3QgaW52YWxpZCBpb2N0bHM6IE9LCj4gWyAxODA5LjE5 OTAxNV0gW1VdIEFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoKPiBbIDE4MDkuNjEzODk0XSBbVV0g ICAgICB0ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMCBvcGVuOiBPSwo+IFsgMTgxMC40MTY3NDZdIFtV XSAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwo+IFsgMTgxMC44Mjc5NzRdIFtVXSAgICAg IHRlc3QgVklESU9DX0cvU19QUklPUklUWTogT0sKPiBbIDE4MTEuNDY2NTA2XSBbVV0gICAgICB0 ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LCj4gWyAxODExLjg2ODM4OF0gW1VdIERlYnVnIGlv Y3RsczoKPiBbIDE4MTIuMjU3Njg5XSBbVV0gICAgICB0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lT VEVSOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4MTMuMDM0MTA4XSBbVV0gICAgICB0ZXN0IFZJ RElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4MTMuODA3NTgzXSBbVV0g SW5wdXQgaW9jdGxzOgo+IFsgMTgxNC4xOTIyNzFdIFtVXSAgICAgIHRlc3QgVklESU9DX0cvU19U VU5FUi9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTgxNC45NTgwNTNd IFtVXSAgICAgIHRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQo+ IFsgMTgxNS43MjE0MjRdIFtVXSAgICAgIHRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAo Tm90IFN1cHBvcnRlZCkKPiBbIDE4MTYuNDg2NDI1XSBbVV0gICAgICB0ZXN0IFZJRElPQ19FTlVN QVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTgxNy4yNTM4NzNdIFtVXSAgICAgIHRlc3Qg VklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTgxOC4wMjE3NzNd IFtVXSAgICAgIHRlc3QgVklESU9DX0cvU19BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAx ODE4Ljc4MzU0Ml0gW1VdICAgICAgSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDAK PiBbIDE4MTkuMTcwNDE0XSBbVV0gT3V0cHV0IGlvY3RsczoKPiBbIDE4MTkuNTQ5NjAxXSBbVV0g ICAgICB0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4 MjAuMzA2MTMyXSBbVV0gICAgICB0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1 cHBvcnRlZCkKPiBbIDE4MjEuMDg1NDk1XSBbVV0gICAgICB0ZXN0IFZJRElPQ19FTlVNQVVET1VU OiBPSyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4MjEuODgzODk0XSBbVV0gICAgICB0ZXN0IFZJRElP Q19HL1MvRU5VTU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODIyLjY5ODI2OV0gW1Vd ICAgICAgdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODIz LjU0MTM0NV0gW1VdICAgICAgT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6 IDAKPiBbIDE4MjQuMzkxNjM1XSBbVV0gSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxz Ogo+IFsgMTgyNC44MzAyOTNdIFtVXSAgICAgIHRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NU RDogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODI1LjcwODg0OF0gW1VdICAgICAgdGVzdCBWSURJ T0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODI2 LjYwODk5NF0gW1VdICAgICAgdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3Vw cG9ydGVkKQo+IFsgMTgyNy41MjA2MTZdIFtVXSAgICAgIHRlc3QgVklESU9DX0cvU19FRElEOiBP SyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4MjguNDM4MjExXSBbVV0gQ29udHJvbCBpb2N0bHM6Cj4g WyAxODI4LjkyNjQ0OV0gW1VdICAgICAgdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllN RU5VOiBPSwo+IFsgMTgyOS44NTY0OTddIFtVXSAgICAgIHRlc3QgVklESU9DX1FVRVJZQ1RSTDog T0sKPiBbIDE4MzAuMzM1NjQ3XSBbVV0gICAgICB0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sKPiBb IDE4MzAuODE2NTEzXSBbVV0gICAgICB0ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sK PiBbIDE4MzEuNzQwMDY3XSBbVV0gICAgICB0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5U L0RRRVZFTlQ6IE9LCj4gWyAxODMyLjY2NjczNl0gW1VdICAgICAgdGVzdCBWSURJT0NfRy9TX0pQ RUdDT01QOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBbIDE4MzMuNTk3MDA1XSBbVV0gICAgICBTdGFu ZGFyZCBDb250cm9sczogMyBQcml2YXRlIENvbnRyb2xzOiAwCj4gWyAxODM0LjA3MDQ1Ml0gW1Vd IEZvcm1hdCBpb2N0bHM6Cj4gWyAxODM0LjU0MDQ2MF0gW1VdICAgICAgdGVzdCBWSURJT0NfRU5V TV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sKPiBbIDE4MzUuNDczMDY1XSBbVV0g ICAgICB0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODM2LjM5 NTIzOF0gW1VdICAgICAgdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBb IDE4MzcuMzIyMTI4XSBbVV0gICAgICB0ZXN0IFZJRElPQ19HX0ZNVDogT0sKPiBbIDE4MzcuNzk4 ODgwXSBbVV0gICAgICB0ZXN0IFZJRElPQ19UUllfRk1UOiBPSwo+IFsgMTgzOC4yNjc1NzRdIFtV XSAgICAgIHRlc3QgVklESU9DX1NfRk1UOiBPSwo+IFsgMTgzOC43MjQyNjRdIFtVXSAgICAgIHRl c3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTgzOS42 Mjc0MDhdIFtVXSAgICAgIHRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTg0 MC41MjY4NzVdIFtVXSAgICAgIHRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkKPiBb IDE4NDEuNDI4NTYyXSBbVV0gICAgICB0ZXN0IFNjYWxpbmc6IE9LCj4gWyAxODQxLjg4MjA4N10g W1VdIENvZGVjIGlvY3RsczoKPiBbIDE4NDIuMzMxNjcyXSBbVV0gICAgICB0ZXN0IFZJRElPQ18o VFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCj4gWyAxODQzLjIyMTQxOV0gW1Vd ICAgICAgdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQo+IFsgMTg0 NC4xMDU4NTRdIFtVXSAgICAgIHRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90 IFN1cHBvcnRlZCkKPiBbIDE4NDQuOTkzOTg2XSBbVV0gQnVmZmVyIGlvY3RsczoKPiBbIDE4NDUu NTU4ODI3XSBbVV0gICAgICB0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVG OiBPSwo+IFsgMTg0Ni40ODYyMjZdIFtVXSAgICAgIHRlc3QgVklESU9DX0VYUEJVRjogT0sKPiBb IDE4NDYuOTM2MTQ4XSBbVV0gICAgICB0ZXN0IFJlcXVlc3RzOiBPSyAoTm90IFN1cHBvcnRlZCkK PiBbIDE4NDcuODA1Njg3XSBbVV0gICAgICB0ZXN0IFRJTUUzMi82NDogT0sKPiBbIDE4NDguMjU1 NzEyXSBbVV0gVGVzdCBpbnB1dCAwOgo+IFsgMTg0OC42ODU1OTFdIFtVXSBTdHJlYW0gdXNpbmcg YWxsIGZvcm1hdHM6Cj4gWyAxODUzLjU5ODA4NV0gW1VdICAgICAgQkEyNCAoMzItYml0IEFSR0Ig OC04LTgtOCkgMXgxIC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDF4MTogT0sKPiBbIDE4 NTguMDg1MTA5XSBbVV0gICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDEgLT4gUkdC MyAoMjQtYml0IFJHQiA4LTgtOCkgMXgxOiBPSwo+IFsgMTg2MS43OTkxODhdIFtVXSAgICAgIEJB MjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDF4MSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01KSAx eDE6IE9LCj4gWyAxODY0Ljg1OTUzNF0gW1VdICAgICAgQkEyNCAoMzItYml0IEFSR0IgOC04LTgt OCkgMXgxIC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDF4MTogT0sKPiBbIDE4NjcuOTc0 NzU1XSBbVV0gICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDEgLT4gQVIxMiAoMTYt Yml0IEFSR0IgNC00LTQtNCkgMXgxOiBPSwo+IFsgMTg2OC40NjYzNjVdIHN0bS1kbWEyZCA0MDAy YjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgNDI5NDY0MzcxMiBmYWlsZWQKPiBbIDE4Njgu OTcxMzk4XSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5 KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAxODY5LjQ4NzU3Ml0gW1VdICAgICAgQkEyNCAoMzIt Yml0IEFSR0IgOC04LTgtOCkgMTYzODN4NjU1MzUgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgt OCkgMTYzODN4NjU1MzU6IEZBSUwKCkhhdmUgeW91IGNvbnNpZGVyZWQgYWRhcHRpbmcgeW91ciBt YXhpbXVtIHdpZHRoL2hlaWdodCB0byBzb21ldGhpbmcgcmVhc29uYWJsZSA/CkNvbnNpZGVyIFY0 TDIgZHJpdmVycyB3aWxsIHVzdWFsbHkgYmUgdXNlZCBmb3Igc3RyZWFtaW5nLCBzbyB1c2luZyAy IE9VVFBVVCBhbmQKMiBDQVBUVVJFIGJ1ZmZlciBpc24ndCBzcGVjaWFsLCBzbyBwZXJoYXBzIGZp bmQgc29tZXRoaW5nIHRoYXQgd2lsbCBiZSBwb3NzaWJsZQp0byBhbGxvY2F0ZSA/IEkgYmV0IHlv dSBjYW4ndCBldmVuIGhhdmUgbW9yZSB0aGVuIDRHIG9mIHJhbSBvbiB0aGF0IGRldmljZSwgc28K ZXZlbiBpZiB0aGVvcmV0aWNhbGx5IHlvdSBjb3VsZCBwcm9ncmFtIHRoZSBIVyBmb3IgMTYzODN4 NjU1MzUsIGl0IGlzIHBoeXNpY2FsbHkKaW1wb3NzaWJsZSB0byBhbGxvY2F0ZSBhIHNlY29uZCBi dWZmZXIgb2YgdGhhdCBzaXplIChvciBhbnkgc2l6ZSkuCgo+IFsgMTg3MC4wMTcxOTddIHN0bS1k bWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgNDI5NDY0MzcxMiBmYWlsZWQK PiBbIDE4NzAuNTYyMjcyXSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJz LmNwcCgxMzQ5KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAxODcxLjE0NzY0NF0gW1VdICAgICAg QkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMTYzODN4NjU1MzUgLT4gUkdCMyAoMjQtYml0IFJH QiA4LTgtOCkgMTYzODN4NjU1MzU6IEZBSUwKPiBbIDE4NzEuNzgwNTMwXSBzdG0tZG1hMmQgNDAw MmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBvZiBzaXplIDQyOTQ2NDM3MTIgZmFpbGVkCj4gWyAxODcy LjQzMTc5N10gW1VdICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTM0 OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+IFsgMTg3My4xMTIxMDBdIFtVXSAgICAgIEJBMjQgKDMy LWJpdCBBUkdCIDgtOC04LTgpIDE2MzgzeDY1NTM1IC0+IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUp IDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAxODczLjgwNTE1Nl0gc3RtLWRtYTJkIDQwMDJiMDAwLmRt YTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSA0Mjk0NjQzNzEyIGZhaWxlZAo+IFsgMTg3NC40OTIzNTNd IFtVXSAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzNDkpOiBxLnJl cWJ1ZnMobm9kZSwgMikKPiBbIDE4NzUuMjIxNTc2XSBbVV0gICAgICBCQTI0ICgzMi1iaXQgQVJH QiA4LTgtOC04KSAxNjM4M3g2NTUzNSAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxNjM4 M3g2NTUzNTogRkFJTAo+IFsgMTg3Ni4wMDAyODNdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDog ZG1hIGFsbG9jIG9mIHNpemUgNDI5NDY0MzcxMiBmYWlsZWQKPiBbIDE4NzYuODA4OTYzXSBbVV0g ICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5KTogcS5yZXFidWZz KG5vZGUsIDIpCj4gWyAxODc3LjYzNDc4NV0gW1VdICAgICAgQkEyNCAoMzItYml0IEFSR0IgOC04 LTgtOCkgMTYzODN4NjU1MzUgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMTYzODN4NjU1 MzU6IEZBSUwKPiBbIDE4ODMuMjgzMTQxXSBbVV0gICAgICBCQTI0ICgzMi1iaXQgQVJHQiA4LTgt OC04KSAyNDB4MzIwIC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDI0MHgzMjA6IE9LCj4g WyAxODg4LjUzMzU4N10gW1VdICAgICAgQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMy MCAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAyNDB4MzIwOiBPSwo+IFsgMTg5Mi43MjkzMjJd IFtVXSAgICAgIEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDI0MHgzMjAgLT4gUkdCUCAoMTYt Yml0IFJHQiA1LTYtNSkgMjQweDMyMDogT0sKPiBbIDE4OTYuMDEzNzgzXSBbVV0gICAgICBCQTI0 ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAyNDB4MzIwIC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01 LTUpIDI0MHgzMjA6IE9LCj4gWyAxODk5LjE5NTgwMl0gW1VdICAgICAgQkEyNCAoMzItYml0IEFS R0IgOC04LTgtOCkgMjQweDMyMCAtPiBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAyNDB4MzIw OiBPSwo+IFsgMTkwMi4zMTg4NTNdIFtVXSAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDF4 MSAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDE6IE9LCj4gWyAxOTA1LjM5OTY2M10g W1VdICAgICAgUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMXgxIC0+IFJHQjMgKDI0LWJpdCBSR0Ig OC04LTgpIDF4MTogT0sKPiBbIDE5MDguNTE1NDYzXSBbVV0gICAgICBSR0IzICgyNC1iaXQgUkdC IDgtOC04KSAxeDEgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMXgxOiBPSwo+IFsgMTkxMS41 ODk3NzVdIFtVXSAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDF4MSAtPiBBUjE1ICgxNi1i aXQgQVJHQiAxLTUtNS01KSAxeDE6IE9LCj4gWyAxOTE0LjY4MjE0N10gW1VdICAgICAgUkdCMyAo MjQtYml0IFJHQiA4LTgtOCkgMXgxIC0+IEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDF4MTog T0sKPiBbIDE5MTUuMTY5NDc4XSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBv ZiBzaXplIDMyMjA5ODM4MDggZmFpbGVkCj4gWyAxOTE1LjY3MTI3OF0gW1VdICAgICAgICAgICAg ICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTM0OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+ IFsgMTkxNi4xODQyODFdIFtVXSAgICAgIFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDE2MzgzeDY1 NTM1IC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAx OTE2LjcwOTg0MF0gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSAz MjIwOTgzODA4IGZhaWxlZAo+IFsgMTkxNy4yNTIzNTJdIFtVXSAgICAgICAgICAgICAgZmFpbDog djRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzNDkpOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiBbIDE5MTcu ODM0NjExXSBbVV0gICAgICBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAxNjM4M3g2NTUzNSAtPiBS R0IzICgyNC1iaXQgUkdCIDgtOC04KSAxNjM4M3g2NTUzNTogRkFJTAo+IFsgMTkxOC40NjM3ODRd IHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMzIyMDk4MzgwOCBm YWlsZWQKPiBbIDE5MTkuMTE0MjkwXSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1i dWZmZXJzLmNwcCgxMzQ5KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAxOTE5Ljc4OTk4Ml0gW1Vd ICAgICAgUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMTYzODN4NjU1MzUgLT4gUkdCUCAoMTYtYml0 IFJHQiA1LTYtNSkgMTYzODN4NjU1MzU6IEZBSUwKPiBbIDE5MjAuNDc5NjI0XSBzdG0tZG1hMmQg NDAwMmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBvZiBzaXplIDMyMjA5ODM4MDggZmFpbGVkCj4gWyAx OTIxLjE2NTIwMl0gW1VdICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAo MTM0OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+IFsgMTkyMS44OTMzNzRdIFtVXSAgICAgIFJHQjMg KDI0LWJpdCBSR0IgOC04LTgpIDE2MzgzeDY1NTM1IC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01 LTUpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAxOTIyLjY2ODA1N10gc3RtLWRtYTJkIDQwMDJiMDAw LmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSAzMjIwOTgzODA4IGZhaWxlZAo+IFsgMTkyMy40Njkz NDJdIFtVXSAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzNDkpOiBx LnJlcWJ1ZnMobm9kZSwgMikKPiBbIDE5MjQuMjk3NTAwXSBbVV0gICAgICBSR0IzICgyNC1iaXQg UkdCIDgtOC04KSAxNjM4M3g2NTUzNSAtPiBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAxNjM4 M3g2NTUzNTogRkFJTAo+IFsgMTkyOS44OTA1OTNdIFtVXSAgICAgIFJHQjMgKDI0LWJpdCBSR0Ig OC04LTgpIDI0MHgzMjAgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMyMDogT0sK PiBbIDE5MzUuMDk4NDk3XSBbVV0gICAgICBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAyNDB4MzIw IC0+IFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgzMjA6IE9LCj4gWyAxOTM5LjI1MDAzM10g W1VdICAgICAgUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMjQweDMyMCAtPiBSR0JQICgxNi1iaXQg UkdCIDUtNi01KSAyNDB4MzIwOiBPSwo+IFsgMTk0Mi41MDM4NTRdIFtVXSAgICAgIFJHQjMgKDI0 LWJpdCBSR0IgOC04LTgpIDI0MHgzMjAgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMjQw eDMyMDogT0sKPiBbIDE5NDUuNjU5MjU0XSBbVV0gICAgICBSR0IzICgyNC1iaXQgUkdCIDgtOC04 KSAyNDB4MzIwIC0+IEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDI0MHgzMjA6IE9LCj4gWyAx OTQ4Ljc2MzkwM10gW1VdICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMXgxIC0+IEJBMjQg KDMyLWJpdCBBUkdCIDgtOC04LTgpIDF4MTogT0sKPiBbIDE5NTEuODMyNDA3XSBbVV0gICAgICBS R0JQICgxNi1iaXQgUkdCIDUtNi01KSAxeDEgLT4gUkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMXgx OiBPSwo+IFsgMTk1NC45Mjc1OTJdIFtVXSAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDF4 MSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01KSAxeDE6IE9LCj4gWyAxOTU3Ljk5MTUzNl0gW1Vd ICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMXgxIC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEt NS01LTUpIDF4MTogT0sKPiBbIDE5NjEuMDg2NjAzXSBbVV0gICAgICBSR0JQICgxNi1iaXQgUkdC IDUtNi01KSAxeDEgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxOiBPSwo+IFsgMTk2 MS41NzU4OTNdIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMjE0 NzMyMzkwNCBmYWlsZWQKPiBbIDE5NjIuMDc5NTcyXSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0 bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAxOTYyLjU5 NDM1NF0gW1VdICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMTYzODN4NjU1MzUgLT4gQkEy NCAoMzItYml0IEFSR0IgOC04LTgtOCkgMTYzODN4NjU1MzU6IEZBSUwKPiBbIDE5NjMuMTIxMjQ5 XSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBvZiBzaXplIDIxNDczMjM5MDQg ZmFpbGVkCj4gWyAxOTYzLjY2NTc4OF0gW1VdICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3Qt YnVmZmVycy5jcHAoMTM0OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+IFsgMTk2NC4yNDkxMjldIFtV XSAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDE2MzgzeDY1NTM1IC0+IFJHQjMgKDI0LWJp dCBSR0IgOC04LTgpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAxOTY0Ljg4MDEwNF0gc3RtLWRtYTJk IDQwMDJiMDAwLmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+IFsg MTk2NS41MzA2NzBdIFtVXSAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3Bw KDEzNDkpOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiBbIDE5NjYuMjEwNTk4XSBbVV0gICAgICBSR0JQ ICgxNi1iaXQgUkdCIDUtNi01KSAxNjM4M3g2NTUzNSAtPiBSR0JQICgxNi1iaXQgUkdCIDUtNi01 KSAxNjM4M3g2NTUzNTogRkFJTAo+IFsgMTk2Ni45MDIzMTZdIHN0bS1kbWEyZCA0MDAyYjAwMC5k bWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiBbIDE5NjcuNTkwMjE1 XSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5KTogcS5y ZXFidWZzKG5vZGUsIDIpCj4gWyAxOTY4LjMxOTg3MV0gW1VdICAgICAgUkdCUCAoMTYtYml0IFJH QiA1LTYtNSkgMTYzODN4NjU1MzUgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMTYzODN4 NjU1MzU6IEZBSUwKPiBbIDE5NjkuMDk3MDEyXSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRt YSBhbGxvYyBvZiBzaXplIDIxNDczMjM5MDQgZmFpbGVkCj4gWyAxOTY5LjkwMDAzNl0gW1VdICAg ICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTM0OSk6IHEucmVxYnVmcyhu b2RlLCAyKQo+IFsgMTk3MC43Mjk5MjBdIFtVXSAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUp IDE2MzgzeDY1NTM1IC0+IEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDE2MzgzeDY1NTM1OiBG QUlMCj4gWyAxOTc2LjMxODk2M10gW1VdICAgICAgUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMjQw eDMyMCAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAyNDB4MzIwOiBPSwo+IFsgMTk4MS40 OTQyMjRdIFtVXSAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDI0MHgzMjAgLT4gUkdCMyAo MjQtYml0IFJHQiA4LTgtOCkgMjQweDMyMDogT0sKPiBbIDE5ODUuNTk5NDA2XSBbVV0gICAgICBS R0JQICgxNi1iaXQgUkdCIDUtNi01KSAyNDB4MzIwIC0+IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUp IDI0MHgzMjA6IE9LCj4gWyAxOTg4LjgyOTE0MV0gW1VdICAgICAgUkdCUCAoMTYtYml0IFJHQiA1 LTYtNSkgMjQweDMyMCAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAyNDB4MzIwOiBPSwo+ IFsgMTk5MS45OTg5OTFdIFtVXSAgICAgIFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDI0MHgzMjAg LT4gQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMjQweDMyMDogT0sKPiBbIDE5OTUuMDg0NTI5 XSBbVV0gICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxeDEgLT4gQkEyNCAoMzItYml0 IEFSR0IgOC04LTgtOCkgMXgxOiBPSwo+IFsgMTk5OC4xOTE4NTNdIFtVXSAgICAgIEFSMTUgKDE2 LWJpdCBBUkdCIDEtNS01LTUpIDF4MSAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAxeDE6IE9L Cj4gWyAyMDAxLjMwNzIxN10gW1VdICAgICAgQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMXgx IC0+IFJHQlAgKDE2LWJpdCBSR0IgNS02LTUpIDF4MTogT0sKPiBbIDIwMDQuNDEzNzI1XSBbVV0g ICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxeDEgLT4gQVIxNSAoMTYtYml0IEFSR0Ig MS01LTUtNSkgMXgxOiBPSwo+IFsgMjAwNy41Mjc0MzddIFtVXSAgICAgIEFSMTUgKDE2LWJpdCBB UkdCIDEtNS01LTUpIDF4MSAtPiBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAxeDE6IE9LCj4g WyAyMDA4LjAxNjI3N10gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6 ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+IFsgMjAwOC41MjMzMThdIFtVXSAgICAgICAgICAgICAgZmFp bDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzNDkpOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiBbIDIw MDkuMDM4ODI4XSBbVV0gICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxNjM4M3g2NTUz NSAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxNjM4M3g2NTUzNTogRkFJTAo+IFsgMjAw OS41NjcyNjldIHN0bS1kbWEyZCA0MDAyYjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMjE0 NzMyMzkwNCBmYWlsZWQKPiBbIDIwMTAuMTEyMjA5XSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0 bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAyMDEwLjY5 NzIyNl0gW1VdICAgICAgQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMTYzODN4NjU1MzUgLT4g UkdCMyAoMjQtYml0IFJHQiA4LTgtOCkgMTYzODN4NjU1MzU6IEZBSUwKPiBbIDIwMTEuMzI5NTUy XSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBvZiBzaXplIDIxNDczMjM5MDQg ZmFpbGVkCj4gWyAyMDExLjk3OTMwN10gW1VdICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3Qt YnVmZmVycy5jcHAoMTM0OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+IFsgMjAxMi42NTg0NDldIFtV XSAgICAgIEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDE2MzgzeDY1NTM1IC0+IFJHQlAgKDE2 LWJpdCBSR0IgNS02LTUpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAyMDEzLjM1MDEwNF0gc3RtLWRt YTJkIDQwMDJiMDAwLmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+ IFsgMjAxNC4wMzU2MTJdIFtVXSAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMu Y3BwKDEzNDkpOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiBbIDIwMTQuNzYyNjQ5XSBbVV0gICAgICBB UjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxNjM4M3g2NTUzNSAtPiBBUjE1ICgxNi1iaXQgQVJH QiAxLTUtNS01KSAxNjM4M3g2NTUzNTogRkFJTAo+IFsgMjAxNS41MzgxODNdIHN0bS1kbWEyZCA0 MDAyYjAwMC5kbWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiBbIDIw MTYuMzM4Nzg0XSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgx MzQ5KTogcS5yZXFidWZzKG5vZGUsIDIpCj4gWyAyMDE3LjE2NjY5Ml0gW1VdICAgICAgQVIxNSAo MTYtYml0IEFSR0IgMS01LTUtNSkgMTYzODN4NjU1MzUgLT4gQVIxMiAoMTYtYml0IEFSR0IgNC00 LTQtNCkgMTYzODN4NjU1MzU6IEZBSUwKPiBbIDIwMjIuNzQ0Mzg3XSBbVV0gICAgICBBUjE1ICgx Ni1iaXQgQVJHQiAxLTUtNS01KSAyNDB4MzIwIC0+IEJBMjQgKDMyLWJpdCBBUkdCIDgtOC04LTgp IDI0MHgzMjA6IE9LCj4gWyAyMDI3LjkyNzU3NV0gW1VdICAgICAgQVIxNSAoMTYtYml0IEFSR0Ig MS01LTUtNSkgMjQweDMyMCAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04KSAyNDB4MzIwOiBPSwo+ IFsgMjAzMi4wNjYzMzddIFtVXSAgICAgIEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDI0MHgz MjAgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMjQweDMyMDogT0sKPiBbIDIwMzUuMjk1MzUx XSBbVV0gICAgICBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAyNDB4MzIwIC0+IEFSMTUgKDE2 LWJpdCBBUkdCIDEtNS01LTUpIDI0MHgzMjA6IE9LCj4gWyAyMDM4LjQ3NjQwOF0gW1VdICAgICAg QVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMjQweDMyMCAtPiBBUjEyICgxNi1iaXQgQVJHQiA0 LTQtNC00KSAyNDB4MzIwOiBPSwo+IFsgMjA0MS41OTEyMjNdIFtVXSAgICAgIEFSMTIgKDE2LWJp dCBBUkdCIDQtNC00LTQpIDF4MSAtPiBCQTI0ICgzMi1iaXQgQVJHQiA4LTgtOC04KSAxeDE6IE9L Cj4gWyAyMDQ0LjY3ODI3NF0gW1VdICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgx IC0+IFJHQjMgKDI0LWJpdCBSR0IgOC04LTgpIDF4MTogT0sKPiBbIDIwNDcuNzc0ODUxXSBbVV0g ICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAxeDEgLT4gUkdCUCAoMTYtYml0IFJHQiA1 LTYtNSkgMXgxOiBPSwo+IFsgMjA1MC44NDk3ODhdIFtVXSAgICAgIEFSMTIgKDE2LWJpdCBBUkdC IDQtNC00LTQpIDF4MSAtPiBBUjE1ICgxNi1iaXQgQVJHQiAxLTUtNS01KSAxeDE6IE9LCj4gWyAy MDUzLjk1NTU2MF0gW1VdICAgICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMXgxIC0+IEFS MTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDF4MTogT0sKPiBbIDIwNTQuNDQ2MjEyXSBzdG0tZG1h MmQgNDAwMmIwMDAuZG1hMmQ6IGRtYSBhbGxvYyBvZiBzaXplIDIxNDczMjM5MDQgZmFpbGVkCj4g WyAyMDU0Ljk1MTUxN10gW1VdICAgICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5j cHAoMTM0OSk6IHEucmVxYnVmcyhub2RlLCAyKQo+IFsgMjA1NS40Njc1ODRdIFtVXSAgICAgIEFS MTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDE2MzgzeDY1NTM1IC0+IEJBMjQgKDMyLWJpdCBBUkdC IDgtOC04LTgpIDE2MzgzeDY1NTM1OiBGQUlMCj4gWyAyMDU1Ljk5NzEyN10gc3RtLWRtYTJkIDQw MDJiMDAwLmRtYTJkOiBkbWEgYWxsb2Mgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+IFsgMjA1 Ni41NDMxOTNdIFtVXSAgICAgICAgICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEz NDkpOiBxLnJlcWJ1ZnMobm9kZSwgMikKPiBbIDIwNTcuMTI4NDU3XSBbVV0gICAgICBBUjEyICgx Ni1iaXQgQVJHQiA0LTQtNC00KSAxNjM4M3g2NTUzNSAtPiBSR0IzICgyNC1iaXQgUkdCIDgtOC04 KSAxNjM4M3g2NTUzNTogRkFJTAo+IFsgMjA1Ny43NjE0MDddIHN0bS1kbWEyZCA0MDAyYjAwMC5k bWEyZDogZG1hIGFsbG9jIG9mIHNpemUgMjE0NzMyMzkwNCBmYWlsZWQKPiBbIDIwNTguNDEzMTkx XSBbVV0gICAgICAgICAgICAgIGZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgxMzQ5KTogcS5y ZXFidWZzKG5vZGUsIDIpCj4gWyAyMDU5LjA5Mzc0OV0gW1VdICAgICAgQVIxMiAoMTYtYml0IEFS R0IgNC00LTQtNCkgMTYzODN4NjU1MzUgLT4gUkdCUCAoMTYtYml0IFJHQiA1LTYtNSkgMTYzODN4 NjU1MzU6IEZBSUwKPiBbIDIwNTkuNzg2MjAxXSBzdG0tZG1hMmQgNDAwMmIwMDAuZG1hMmQ6IGRt YSBhbGxvYyBvZiBzaXplIDIxNDczMjM5MDQgZmFpbGVkCj4gWyAyMDYwLjQ3MjM5M10gW1VdICAg ICAgICAgICAgICBmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMTM0OSk6IHEucmVxYnVmcyhu b2RlLCAyKQo+IFsgMjA2MS4yMDA3MDldIFtVXSAgICAgIEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00 LTQpIDE2MzgzeDY1NTM1IC0+IEFSMTUgKDE2LWJpdCBBUkdCIDEtNS01LTUpIDE2MzgzeDY1NTM1 OiBGQUlMCj4gWyAyMDYxLjk3NzcyOF0gc3RtLWRtYTJkIDQwMDJiMDAwLmRtYTJkOiBkbWEgYWxs b2Mgb2Ygc2l6ZSAyMTQ3MzIzOTA0IGZhaWxlZAo+IFsgMjA2Mi43ODA4MTZdIFtVXSAgICAgICAg ICAgICAgZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDEzNDkpOiBxLnJlcWJ1ZnMobm9kZSwg MikKPiBbIDIwNjMuNjEwMzUxXSBbVV0gICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAx NjM4M3g2NTUzNSAtPiBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAxNjM4M3g2NTUzNTogRkFJ TAo+IFsgMjA2OS4yMDc2ODBdIFtVXSAgICAgIEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDI0 MHgzMjAgLT4gQkEyNCAoMzItYml0IEFSR0IgOC04LTgtOCkgMjQweDMyMDogT0sKPiBbIDIwNzQu MzkyMDM2XSBbVV0gICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQtNC00KSAyNDB4MzIwIC0+IFJH QjMgKDI0LWJpdCBSR0IgOC04LTgpIDI0MHgzMjA6IE9LCj4gWyAyMDc4LjUzODYyMV0gW1VdICAg ICAgQVIxMiAoMTYtYml0IEFSR0IgNC00LTQtNCkgMjQweDMyMCAtPiBSR0JQICgxNi1iaXQgUkdC IDUtNi01KSAyNDB4MzIwOiBPSwo+IFsgMjA4MS43NDkxMzRdIFtVXSAgICAgIEFSMTIgKDE2LWJp dCBBUkdCIDQtNC00LTQpIDI0MHgzMjAgLT4gQVIxNSAoMTYtYml0IEFSR0IgMS01LTUtNSkgMjQw eDMyMDogT0sKPiBbIDIwODQuOTIyMTQ1XSBbVV0gICAgICBBUjEyICgxNi1iaXQgQVJHQiA0LTQt NC00KSAyNDB4MzIwIC0+IEFSMTIgKDE2LWJpdCBBUkdCIDQtNC00LTQpIDI0MHgzMjA6IE9LCj4g WyAyMDg1LjQxNjUzOF0gW1VdIFRvdGFsIGZvciBzdG0tZG1hMmQgZGV2aWNlIC9kZXYvdmlkZW8w OiAxMjEsIFN1Y2NlZWRlZDogOTYsIEZhaWxlZDogMjUsIFdhcm5pbmdzOiAwCj4gKioqIEJMVVJC IEhFUkUgKioqCgpeIEkgZ3Vlc3MgdGhhdCB3YXMgbWVhbnQgZm9yIHlvdSB0byBqdXN0aWZ5IHRo ZSBmYWlsdXJlcy4KCj4gCj4gRGlsbG9uIE1pbiAoMTApOgo+ICAgbWVkaWE6IGFkbWluLWd1aWRl OiBhZGQgc3RtMzItZG1hMmQgZGVzY3JpcHRpb24KPiAgIG1lZGlhOiBkdC1iaW5kaW5nczogbWVk aWE6IGFkZCBkb2N1bWVudCBmb3IgU1RNMzIgRE1BMmQgYmluZGluZ3MKPiAgIEFSTTogZHRzOiBz dG0zMjogQWRkIERNQTJEIHN1cHBvcnQgZm9yIFNUTTMyRjQyOSBzZXJpZXMgc29jCj4gICBBUk06 IGR0czogc3RtMzI6IEVuYWJsZSBETUEyRCBvbiBTVE0zMkY0NjktRElTQ08gYm9hcmQKPiAgIG1l ZGlhOiB2NGwyLW1lbTJtZW06IGFkZCB2NGwyX20ybV9nZXRfdW5tYXBwZWRfYXJlYSBmb3Igbm8t bW11Cj4gICAgIHBsYXRmb3JtCj4gICBtZWRpYTogdmlkZW9idWYyOiBGaXggdGhlIHNpemUgcHJp bnRrIGZvcm1hdAo+ICAgbWVkaWE6IHY0bDItY3RybHM6IEFkZCBWNEwyX0NJRF9DT0xPUkZYX0NC Q1IgbWF4IHNldHRpbmcKPiAgIG1lZGlhOiB2NGwyLWN0cmxzOiBBZGQgUkdCIGNvbG9yIGVmZmVj dHMgY29udHJvbAo+ICAgY2xrOiBzdG0zMjogRml4IGx0ZGMncyBjbG9jayB0dXJuIG9mZiBieSBj bGtfZGlzYWJsZV91bnVzZWQoKSBhZnRlcgo+ICAgICBzeXN0ZW0gZW50ZXIgc2hlbGwKPiAgIG1l ZGlhOiBzdG0zMi1kbWEyZDogU1RNMzIgRE1BMkQgZHJpdmVyCj4gCj4gIC4uLi9hZG1pbi1ndWlk ZS9tZWRpYS9wbGF0Zm9ybS1jYXJkbGlzdC5yc3QgICAgICAgIHwgICAxICsKPiAgLi4uL2Rldmlj ZXRyZWUvYmluZGluZ3MvbWVkaWEvc3Qsc3RtMzItZG1hMmQueWFtbCAgfCAgNzEgKysKPiAgRG9j dW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9jb250cm9sLnJzdCAgfCAgIDkgKwo+ ICBhcmNoL2FybS9ib290L2R0cy9zdG0zMmY0MjkuZHRzaSAgICAgICAgICAgICAgICAgICB8ICAx MCArCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL3N0bTMyZjQ2OS1kaXNjby5kdHMgICAgICAgICAgICAg IHwgICA0ICsKPiAgZHJpdmVycy9jbGsvY2xrLXN0bTMyZjQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDQgLQo+ICAuLi4vbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItZG1h LWNvbnRpZy5jICB8ICAgNCArLQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgICAg ICAgICAgICAgICAgICAgICB8ICAxMSArCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9z dG0zMi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL3N0bTMyL2RtYTJkL2RtYTJkLWh3LmMgICAgICB8IDE0MyArKysrCj4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQvZG1hMmQtcmVncy5oICAgIHwgMTEzICsrKysKPiAgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9zdG0zMi9kbWEyZC9kbWEyZC5jICAgICAgICAgfCA3MzkgKysr KysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQv ZG1hMmQuaCAgICAgICAgIHwgMTM1ICsrKysKPiAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRs Mi1jdHJscy1kZWZzLmMgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9tZWRpYS92NGwyLWNv cmUvdjRsMi1tZW0ybWVtLmMgICAgICAgICAgICAgfCAgMjEgKwo+ICBpbmNsdWRlL21lZGlhL3Y0 bDItbWVtMm1lbS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gIGluY2x1ZGUvdWFw aS9saW51eC92NGwyLWNvbnRyb2xzLmggICAgICAgICAgICAgICAgIHwgICA0ICstCj4gIDE4IGZp bGVzIGNoYW5nZWQsIDEyODAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdCxz dG0zMi1kbWEyZC55YW1sCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL3N0bTMyL2RtYTJkL2RtYTJkLWh3LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQvZG1hMmQtcmVncy5oCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N0bTMyL2RtYTJkL2RtYTJkLmMKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3RtMzIvZG1hMmQvZG1hMmQuaAo+ IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg== 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE04AC4332F for ; Mon, 25 Oct 2021 20:13:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CEB3660230 for ; Mon, 25 Oct 2021 20:13:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236477AbhJYUPc (ORCPT ); Mon, 25 Oct 2021 16:15:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34084 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238135AbhJYUPV (ORCPT ); Mon, 25 Oct 2021 16:15:21 -0400 Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com [IPv6:2607:f8b0:4864:20::831]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC67FC06F692 for ; Mon, 25 Oct 2021 12:37:16 -0700 (PDT) Received: by mail-qt1-x831.google.com with SMTP id w2so11382014qtn.0 for ; Mon, 25 Oct 2021 12:37:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=Xomg13yoe8Zy0xpyncWa5/BlOSzBi3U2smQU5H2tuU4=; b=H0c2xpINHt6+ynT6sgeT2/fNqpVtsmwtM7vBa8H1jGYjYrC3wWZRExdMscq96TjYnE 0Wppm1YkXbARTmuLqwCJDsY7iZxfaG/x/LVyWDZ0DvAs6sm8kJRZNOV0od3/JSR4+51p B34ccTy0UC98RWPBaF2TjwIkkfgIj3ugUZOdamO8oQISW11bSYiQzqpGCX6lluuoJAu/ kBeqBL4PhmUap2hjKd9vkFtT5PshLeZxlbfCJ947PTbw0/LflEVSmSE0+lEElIqbehDX cCkMiqu5qhg1Rk4srKO4qgRU+oBixZYjqmFLGXKub7kn4tPSZvk38EQfTaEgX7uizYmT fEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=Xomg13yoe8Zy0xpyncWa5/BlOSzBi3U2smQU5H2tuU4=; b=YTuJyz6vUOU3tiAHM0G78WUBJ46/Vi95GZMIOCJQ4Fq4wTprfWT4HX71PCEWBSBi86 CWg1Y4QQT26h+cwYcJbXGcIsZjMO0C4kTDt9eX6XHND+fKSKDtbLyKX3GSZQ220WXS4C enFhC9KiNcKZE7qJLgD0GKj9QciyRndMlIYBaXfF495Zp2+XijztfDuEgTa4KiW8E9Gp 7/L3sNq/idgwLmTtismRsSpcdtJvN1T+c/vxKC2qBUfdyXpIpA1ZkqojgWrw4NNulKZS qmolTQcaBgi10JVUwi2mVscT9jsedrKubZW53k8qvWI3qP6r5dn7Yi+KjO722wSZla5f NMyA== X-Gm-Message-State: AOAM530m4le4yzaRQVcHp4vmRcFysJQGXvrjKeiLbnz1I268bdwjCkyq 6RKSqK1Dd6hqjRDSlb15+IuSCQ== X-Google-Smtp-Source: ABdhPJyW7a+Z2+u+aSVG4TVj9FtliW38yyYAb9Y3POPp/FFxZ5+MADly+p5qDcEzhsI/BcDZs3QxFQ== X-Received: by 2002:a05:622a:188b:: with SMTP id v11mr20030425qtc.193.1635190635705; Mon, 25 Oct 2021 12:37:15 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id g11sm10575364qko.31.2021.10.25.12.37.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Oct 2021 12:37:15 -0700 (PDT) Message-ID: Subject: Re: [PATCH v5 00/10] Add support for DMA2D of STMicroelectronics STM32 Soc series From: Nicolas Dufresne To: dillon.minfei@gmail.com, mchehab@kernel.org, mchehab+huawei@kernel.org, hverkuil-cisco@xs4all.nl, ezequiel@collabora.com, gnurou@gmail.com, pihsun@chromium.org, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, mturquette@baylibre.com, sboyd@kernel.org, robh+dt@kernel.org, gabriel.fernandez@st.com, gabriel.fernandez@foss.st.com Cc: patrice.chotard@foss.st.com, hugues.fruchet@foss.st.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org Date: Mon, 25 Oct 2021 15:37:13 -0400 In-Reply-To: <1634533488-25334-1-git-send-email-dillon.minfei@gmail.com> References: <1634533488-25334-1-git-send-email-dillon.minfei@gmail.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.4 (3.40.4-2.fc34) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le lundi 18 octobre 2021 à 13:04 +0800, dillon.minfei@gmail.com a écrit : > From: Dillon Min > > This patchset introduces a basic support for DMA2D Interface > of STMicroelectronics STM32 SoC series. > > This first basic support implements R2M, M2M, M2M_PFC > M2M_BLEND support will be added later on. > > This has been tested on STM32469-DISCO board. > > history > v5: > - rebase to media_tree https://git.linuxtv.org/media_tree.git/ > - remove unused log from dma2d driver to avoid spam kernel log. > - fix 0xFFFFFF to 0xffffff, 2^24 to 2^24 -1, etc. > - introduce patch "media: v4l2-ctrls: Add V4L2_CID_COLORFX_CBCR max setting" > to add V4L2_CID_COLORFX_CBCR entry. > - thanks to Hans's patch, open nullptr check in v4l2-compliance, update new > test result. thanks. > https://lore.kernel.org/linux-media/3acd9ee4-5a58-6ed4-17fe-61596a5252b8@xs4all.nl/ > > v4 link: > https://lore.kernel.org/lkml/bc8e1cd1-0013-9062-88b6-fddca535919f@xs4all.nl/ > > v4: > - replace V4L2_COLORFX_SET_ARGB, V4L2_CID_COLORFX_ARGB to > V4L2_COLORFX_SET_RGB, V4L2_CID_COLORFX_RGB since Alpha paramter not used > in current. thanks Hans. > v3 link: > https://lore.kernel.org/lkml/1633689012-14492-1-git-send-email-dillon.minfei@gmail.com/ > > v3: > - use V4L2_COLORFX_SET_ARGB, V4L2_CID_COLORFX_ARGB to pass argb paramter to > the dma2d driver, instead of add stm32 private ioctl. > - some v2's patch are removed in this version. > - "[PATCH v2 7/9] media: docs: add doc for the stm32 dma2d driver" > - "[PATCH v2 8/9] media: v4l: uapi: Add user control base for stm32 dma2d > controls" > - dma2d's driver changes based on Hans's review result. detail can be found at > "media: stm32-dma2d: STM32 DMA2D driver" > - add stm32 clk drivers bugfix, ltdc clock disabled after kenerl boot up. > v3 based on kernel and v4l-utils git: > > kernel: > commit 9e1ff307c779ce1f0f810c7ecce3d95bbae40896 > Author: Linus Torvalds > Date: Sun Oct 3 14:08:47 2021 -0700 > > Linux 5.15-rc4 > > v4l-utils: > commit 700f5ded9c6de2c6dfe5d1b453d85566f95b4f0c > Author: Hans Verkuil > Date: Sat Oct 2 11:01:05 2021 +0200 > > test-media: show version info earlier and show cmd args > > Log the version info earlier and also log the command line arguments. > > Signed-off-by: Hans Verkuil > > v2 link: > https://lore.kernel.org/lkml/1626341068-20253-11-git-send-email-dillon.minfei@gmail.com/ > > > v2: > - update v4l2-compliance to SHA: a4f2e3a6f306 2021-07-13 08:04:15 > the test results at below [1]. > - introduce Documentation/userspace-api/media/drivers/stm32-uapi.rst > to explain the detail of dma2d's ioctl. > - reserved 16 ioctls from v4l2-controls.h for stm32, introduce stm32-media.h. > - collect Reviewed-by tag from Rob Herring. > - update dma2d driver from Hans's review. the details can be found > at related patches. > v1 link: > https://lore.kernel.org/lkml/1621508727-24486-1-git-send-email-dillon.minfei@gmail.com/ > > v1: > The commit based on kernel(master): c3d0e3fd41b7f0f5d5d5b6022ab7e813f04ea727 > > Note for v4l2-compliance tool on nu-mmu platform: > I add two change based on v4l-utils since commit: > f0c7e3d71eaf4182bae7eb3ee0e43b4eeb047ea9 > > - change fork() to vfork() in v4l2-test-controls.cpp > since no-mmu platform don't include fork(). > > with v4l2-compliance test log (with above modification): > since the stm32f469-disco ram limitation, there are 25 failed on > dma_alloc_coherent() > > Really appreciate if someone can help to test this patch on the STM32429I-EVAL > evaluation board (https://www.st.com/en/evaluation-tools/stm32429i-eval.html) > 8M x 32-bit SDRAM, 1M x 16-bit SRAM and 8M x 16-bit NOR Flash > > ~ # v4l2-compliance -f -d /dev/video0 > /dev/ttyprintk > [ 1798.550690] [U] v4l2-compliance 1.21.0-4855, 32 bits, 32-bit time_t > [ 1799.527504] [U] v4l2-compliance SHA: 700f5ded9c6d 2021-10-02 09:01:05 > [ 1800.534558] [U] Compliance test for stm-dma2d device /dev/video0: > [ 1801.514999] [U] Driver Info: > [ 1801.998840] [U] Driver name : stm-dma2d > [ 1802.482151] [U] Card type : stm-dma2d > [ 1802.959808] [U] Bus info : platform:stm-dma2d > [ 1803.435715] [U] Driver version : 5.15.0 > [ 1803.904938] [U] Capabilities : 0x84208000 > [ 1804.371290] [U] Video Memory-to-Memory > [ 1804.830870] [U] Streaming > [ 1805.281465] [U] Extended Pix Format > [ 1805.733249] [U] Device Capabilities > [ 1806.181369] [U] Device Caps : 0x04208000 > [ 1806.622899] [U] Video Memory-to-Memory > [ 1807.057208] [U] Streaming > [ 1807.483866] [U] Extended Pix Format > [ 1807.907678] [U] Required ioctls: > [ 1808.325287] [U] test VIDIOC_QUERYCAP: OK > [ 1808.785260] [U] test invalid ioctls: OK > [ 1809.199015] [U] Allow for multiple opens: > [ 1809.613894] [U] test second /dev/video0 open: OK > [ 1810.416746] [U] test VIDIOC_QUERYCAP: OK > [ 1810.827974] [U] test VIDIOC_G/S_PRIORITY: OK > [ 1811.466506] [U] test for unlimited opens: OK > [ 1811.868388] [U] Debug ioctls: > [ 1812.257689] [U] test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) > [ 1813.034108] [U] test VIDIOC_LOG_STATUS: OK (Not Supported) > [ 1813.807583] [U] Input ioctls: > [ 1814.192271] [U] test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) > [ 1814.958053] [U] test VIDIOC_G/S_FREQUENCY: OK (Not Supported) > [ 1815.721424] [U] test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) > [ 1816.486425] [U] test VIDIOC_ENUMAUDIO: OK (Not Supported) > [ 1817.253873] [U] test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) > [ 1818.021773] [U] test VIDIOC_G/S_AUDIO: OK (Not Supported) > [ 1818.783542] [U] Inputs: 0 Audio Inputs: 0 Tuners: 0 > [ 1819.170414] [U] Output ioctls: > [ 1819.549601] [U] test VIDIOC_G/S_MODULATOR: OK (Not Supported) > [ 1820.306132] [U] test VIDIOC_G/S_FREQUENCY: OK (Not Supported) > [ 1821.085495] [U] test VIDIOC_ENUMAUDOUT: OK (Not Supported) > [ 1821.883894] [U] test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) > [ 1822.698269] [U] test VIDIOC_G/S_AUDOUT: OK (Not Supported) > [ 1823.541345] [U] Outputs: 0 Audio Outputs: 0 Modulators: 0 > [ 1824.391635] [U] Input/Output configuration ioctls: > [ 1824.830293] [U] test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) > [ 1825.708848] [U] test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) > [ 1826.608994] [U] test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) > [ 1827.520616] [U] test VIDIOC_G/S_EDID: OK (Not Supported) > [ 1828.438211] [U] Control ioctls: > [ 1828.926449] [U] test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK > [ 1829.856497] [U] test VIDIOC_QUERYCTRL: OK > [ 1830.335647] [U] test VIDIOC_G/S_CTRL: OK > [ 1830.816513] [U] test VIDIOC_G/S/TRY_EXT_CTRLS: OK > [ 1831.740067] [U] test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK > [ 1832.666736] [U] test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > [ 1833.597005] [U] Standard Controls: 3 Private Controls: 0 > [ 1834.070452] [U] Format ioctls: > [ 1834.540460] [U] test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK > [ 1835.473065] [U] test VIDIOC_G/S_PARM: OK (Not Supported) > [ 1836.395238] [U] test VIDIOC_G_FBUF: OK (Not Supported) > [ 1837.322128] [U] test VIDIOC_G_FMT: OK > [ 1837.798880] [U] test VIDIOC_TRY_FMT: OK > [ 1838.267574] [U] test VIDIOC_S_FMT: OK > [ 1838.724264] [U] test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > [ 1839.627408] [U] test Cropping: OK (Not Supported) > [ 1840.526875] [U] test Composing: OK (Not Supported) > [ 1841.428562] [U] test Scaling: OK > [ 1841.882087] [U] Codec ioctls: > [ 1842.331672] [U] test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) > [ 1843.221419] [U] test VIDIOC_G_ENC_INDEX: OK (Not Supported) > [ 1844.105854] [U] test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) > [ 1844.993986] [U] Buffer ioctls: > [ 1845.558827] [U] test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK > [ 1846.486226] [U] test VIDIOC_EXPBUF: OK > [ 1846.936148] [U] test Requests: OK (Not Supported) > [ 1847.805687] [U] test TIME32/64: OK > [ 1848.255712] [U] Test input 0: > [ 1848.685591] [U] Stream using all formats: > [ 1853.598085] [U] BA24 (32-bit ARGB 8-8-8-8) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > [ 1858.085109] [U] BA24 (32-bit ARGB 8-8-8-8) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > [ 1861.799188] [U] BA24 (32-bit ARGB 8-8-8-8) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > [ 1864.859534] [U] BA24 (32-bit ARGB 8-8-8-8) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > [ 1867.974755] [U] BA24 (32-bit ARGB 8-8-8-8) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1: OK > [ 1868.466365] stm-dma2d 4002b000.dma2d: dma alloc of size 4294643712 failed > [ 1868.971398] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1869.487572] [U] BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> BA24 (32-bit ARGB 8-8-8-8) 16383x65535: FAIL Have you considered adapting your maximum width/height to something reasonable ? Consider V4L2 drivers will usually be used for streaming, so using 2 OUTPUT and 2 CAPTURE buffer isn't special, so perhaps find something that will be possible to allocate ? I bet you can't even have more then 4G of ram on that device, so even if theoretically you could program the HW for 16383x65535, it is physically impossible to allocate a second buffer of that size (or any size). > [ 1870.017197] stm-dma2d 4002b000.dma2d: dma alloc of size 4294643712 failed > [ 1870.562272] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1871.147644] [U] BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> RGB3 (24-bit RGB 8-8-8) 16383x65535: FAIL > [ 1871.780530] stm-dma2d 4002b000.dma2d: dma alloc of size 4294643712 failed > [ 1872.431797] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1873.112100] [U] BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16383x65535: FAIL > [ 1873.805156] stm-dma2d 4002b000.dma2d: dma alloc of size 4294643712 failed > [ 1874.492353] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1875.221576] [U] BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5) 16383x65535: FAIL > [ 1876.000283] stm-dma2d 4002b000.dma2d: dma alloc of size 4294643712 failed > [ 1876.808963] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1877.634785] [U] BA24 (32-bit ARGB 8-8-8-8) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4) 16383x65535: FAIL > [ 1883.283141] [U] BA24 (32-bit ARGB 8-8-8-8) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240x320: OK > [ 1888.533587] [U] BA24 (32-bit ARGB 8-8-8-8) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x320: OK > [ 1892.729322] [U] BA24 (32-bit ARGB 8-8-8-8) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x320: OK > [ 1896.013783] [U] BA24 (32-bit ARGB 8-8-8-8) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240x320: OK > [ 1899.195802] [U] BA24 (32-bit ARGB 8-8-8-8) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240x320: OK > [ 1902.318853] [U] RGB3 (24-bit RGB 8-8-8) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > [ 1905.399663] [U] RGB3 (24-bit RGB 8-8-8) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > [ 1908.515463] [U] RGB3 (24-bit RGB 8-8-8) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > [ 1911.589775] [U] RGB3 (24-bit RGB 8-8-8) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > [ 1914.682147] [U] RGB3 (24-bit RGB 8-8-8) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1: OK > [ 1915.169478] stm-dma2d 4002b000.dma2d: dma alloc of size 3220983808 failed > [ 1915.671278] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1916.184281] [U] RGB3 (24-bit RGB 8-8-8) 16383x65535 -> BA24 (32-bit ARGB 8-8-8-8) 16383x65535: FAIL > [ 1916.709840] stm-dma2d 4002b000.dma2d: dma alloc of size 3220983808 failed > [ 1917.252352] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1917.834611] [U] RGB3 (24-bit RGB 8-8-8) 16383x65535 -> RGB3 (24-bit RGB 8-8-8) 16383x65535: FAIL > [ 1918.463784] stm-dma2d 4002b000.dma2d: dma alloc of size 3220983808 failed > [ 1919.114290] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1919.789982] [U] RGB3 (24-bit RGB 8-8-8) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16383x65535: FAIL > [ 1920.479624] stm-dma2d 4002b000.dma2d: dma alloc of size 3220983808 failed > [ 1921.165202] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1921.893374] [U] RGB3 (24-bit RGB 8-8-8) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5) 16383x65535: FAIL > [ 1922.668057] stm-dma2d 4002b000.dma2d: dma alloc of size 3220983808 failed > [ 1923.469342] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1924.297500] [U] RGB3 (24-bit RGB 8-8-8) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4) 16383x65535: FAIL > [ 1929.890593] [U] RGB3 (24-bit RGB 8-8-8) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240x320: OK > [ 1935.098497] [U] RGB3 (24-bit RGB 8-8-8) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x320: OK > [ 1939.250033] [U] RGB3 (24-bit RGB 8-8-8) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x320: OK > [ 1942.503854] [U] RGB3 (24-bit RGB 8-8-8) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240x320: OK > [ 1945.659254] [U] RGB3 (24-bit RGB 8-8-8) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240x320: OK > [ 1948.763903] [U] RGBP (16-bit RGB 5-6-5) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > [ 1951.832407] [U] RGBP (16-bit RGB 5-6-5) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > [ 1954.927592] [U] RGBP (16-bit RGB 5-6-5) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > [ 1957.991536] [U] RGBP (16-bit RGB 5-6-5) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > [ 1961.086603] [U] RGBP (16-bit RGB 5-6-5) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1: OK > [ 1961.575893] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 1962.079572] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1962.594354] [U] RGBP (16-bit RGB 5-6-5) 16383x65535 -> BA24 (32-bit ARGB 8-8-8-8) 16383x65535: FAIL > [ 1963.121249] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 1963.665788] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1964.249129] [U] RGBP (16-bit RGB 5-6-5) 16383x65535 -> RGB3 (24-bit RGB 8-8-8) 16383x65535: FAIL > [ 1964.880104] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 1965.530670] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1966.210598] [U] RGBP (16-bit RGB 5-6-5) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16383x65535: FAIL > [ 1966.902316] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 1967.590215] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1968.319871] [U] RGBP (16-bit RGB 5-6-5) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5) 16383x65535: FAIL > [ 1969.097012] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 1969.900036] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 1970.729920] [U] RGBP (16-bit RGB 5-6-5) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4) 16383x65535: FAIL > [ 1976.318963] [U] RGBP (16-bit RGB 5-6-5) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240x320: OK > [ 1981.494224] [U] RGBP (16-bit RGB 5-6-5) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x320: OK > [ 1985.599406] [U] RGBP (16-bit RGB 5-6-5) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x320: OK > [ 1988.829141] [U] RGBP (16-bit RGB 5-6-5) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240x320: OK > [ 1991.998991] [U] RGBP (16-bit RGB 5-6-5) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240x320: OK > [ 1995.084529] [U] AR15 (16-bit ARGB 1-5-5-5) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > [ 1998.191853] [U] AR15 (16-bit ARGB 1-5-5-5) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > [ 2001.307217] [U] AR15 (16-bit ARGB 1-5-5-5) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > [ 2004.413725] [U] AR15 (16-bit ARGB 1-5-5-5) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > [ 2007.527437] [U] AR15 (16-bit ARGB 1-5-5-5) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1: OK > [ 2008.016277] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2008.523318] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2009.038828] [U] AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> BA24 (32-bit ARGB 8-8-8-8) 16383x65535: FAIL > [ 2009.567269] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2010.112209] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2010.697226] [U] AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> RGB3 (24-bit RGB 8-8-8) 16383x65535: FAIL > [ 2011.329552] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2011.979307] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2012.658449] [U] AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16383x65535: FAIL > [ 2013.350104] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2014.035612] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2014.762649] [U] AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5) 16383x65535: FAIL > [ 2015.538183] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2016.338784] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2017.166692] [U] AR15 (16-bit ARGB 1-5-5-5) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4) 16383x65535: FAIL > [ 2022.744387] [U] AR15 (16-bit ARGB 1-5-5-5) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240x320: OK > [ 2027.927575] [U] AR15 (16-bit ARGB 1-5-5-5) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x320: OK > [ 2032.066337] [U] AR15 (16-bit ARGB 1-5-5-5) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x320: OK > [ 2035.295351] [U] AR15 (16-bit ARGB 1-5-5-5) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240x320: OK > [ 2038.476408] [U] AR15 (16-bit ARGB 1-5-5-5) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240x320: OK > [ 2041.591223] [U] AR12 (16-bit ARGB 4-4-4-4) 1x1 -> BA24 (32-bit ARGB 8-8-8-8) 1x1: OK > [ 2044.678274] [U] AR12 (16-bit ARGB 4-4-4-4) 1x1 -> RGB3 (24-bit RGB 8-8-8) 1x1: OK > [ 2047.774851] [U] AR12 (16-bit ARGB 4-4-4-4) 1x1 -> RGBP (16-bit RGB 5-6-5) 1x1: OK > [ 2050.849788] [U] AR12 (16-bit ARGB 4-4-4-4) 1x1 -> AR15 (16-bit ARGB 1-5-5-5) 1x1: OK > [ 2053.955560] [U] AR12 (16-bit ARGB 4-4-4-4) 1x1 -> AR12 (16-bit ARGB 4-4-4-4) 1x1: OK > [ 2054.446212] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2054.951517] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2055.467584] [U] AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> BA24 (32-bit ARGB 8-8-8-8) 16383x65535: FAIL > [ 2055.997127] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2056.543193] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2057.128457] [U] AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> RGB3 (24-bit RGB 8-8-8) 16383x65535: FAIL > [ 2057.761407] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2058.413191] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2059.093749] [U] AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> RGBP (16-bit RGB 5-6-5) 16383x65535: FAIL > [ 2059.786201] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2060.472393] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2061.200709] [U] AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> AR15 (16-bit ARGB 1-5-5-5) 16383x65535: FAIL > [ 2061.977728] stm-dma2d 4002b000.dma2d: dma alloc of size 2147323904 failed > [ 2062.780816] [U] fail: v4l2-test-buffers.cpp(1349): q.reqbufs(node, 2) > [ 2063.610351] [U] AR12 (16-bit ARGB 4-4-4-4) 16383x65535 -> AR12 (16-bit ARGB 4-4-4-4) 16383x65535: FAIL > [ 2069.207680] [U] AR12 (16-bit ARGB 4-4-4-4) 240x320 -> BA24 (32-bit ARGB 8-8-8-8) 240x320: OK > [ 2074.392036] [U] AR12 (16-bit ARGB 4-4-4-4) 240x320 -> RGB3 (24-bit RGB 8-8-8) 240x320: OK > [ 2078.538621] [U] AR12 (16-bit ARGB 4-4-4-4) 240x320 -> RGBP (16-bit RGB 5-6-5) 240x320: OK > [ 2081.749134] [U] AR12 (16-bit ARGB 4-4-4-4) 240x320 -> AR15 (16-bit ARGB 1-5-5-5) 240x320: OK > [ 2084.922145] [U] AR12 (16-bit ARGB 4-4-4-4) 240x320 -> AR12 (16-bit ARGB 4-4-4-4) 240x320: OK > [ 2085.416538] [U] Total for stm-dma2d device /dev/video0: 121, Succeeded: 96, Failed: 25, Warnings: 0 > *** BLURB HERE *** ^ I guess that was meant for you to justify the failures. > > Dillon Min (10): > media: admin-guide: add stm32-dma2d description > media: dt-bindings: media: add document for STM32 DMA2d bindings > ARM: dts: stm32: Add DMA2D support for STM32F429 series soc > ARM: dts: stm32: Enable DMA2D on STM32F469-DISCO board > media: v4l2-mem2mem: add v4l2_m2m_get_unmapped_area for no-mmu > platform > media: videobuf2: Fix the size printk format > media: v4l2-ctrls: Add V4L2_CID_COLORFX_CBCR max setting > media: v4l2-ctrls: Add RGB color effects control > clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after > system enter shell > media: stm32-dma2d: STM32 DMA2D driver > > .../admin-guide/media/platform-cardlist.rst | 1 + > .../devicetree/bindings/media/st,stm32-dma2d.yaml | 71 ++ > Documentation/userspace-api/media/v4l/control.rst | 9 + > arch/arm/boot/dts/stm32f429.dtsi | 10 + > arch/arm/boot/dts/stm32f469-disco.dts | 4 + > drivers/clk/clk-stm32f4.c | 4 - > .../media/common/videobuf2/videobuf2-dma-contig.c | 4 +- > drivers/media/platform/Kconfig | 11 + > drivers/media/platform/Makefile | 1 + > drivers/media/platform/stm32/Makefile | 2 + > drivers/media/platform/stm32/dma2d/dma2d-hw.c | 143 ++++ > drivers/media/platform/stm32/dma2d/dma2d-regs.h | 113 ++++ > drivers/media/platform/stm32/dma2d/dma2d.c | 739 +++++++++++++++++++++ > drivers/media/platform/stm32/dma2d/dma2d.h | 135 ++++ > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 12 +- > drivers/media/v4l2-core/v4l2-mem2mem.c | 21 + > include/media/v4l2-mem2mem.h | 5 + > include/uapi/linux/v4l2-controls.h | 4 +- > 18 files changed, 1280 insertions(+), 9 deletions(-) > create mode 100644 Documentation/devicetree/bindings/media/st,stm32-dma2d.yaml > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d-hw.c > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d-regs.h > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d.c > create mode 100644 drivers/media/platform/stm32/dma2d/dma2d.h >