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 C7C6EE8FDDA for ; Wed, 4 Oct 2023 08:28:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241654AbjJDI2T (ORCPT ); Wed, 4 Oct 2023 04:28:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232596AbjJDI2S (ORCPT ); Wed, 4 Oct 2023 04:28:18 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E83883; Wed, 4 Oct 2023 01:28:15 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-31f71b25a99so1807353f8f.2; Wed, 04 Oct 2023 01:28:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696408094; x=1697012894; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R2yRwJ/7iREzqBe4BdcV/tJQGnF/hrf8riPhHgSOhEw=; b=WD9ZQZI7WBN5r8Y6gItR+IEq/sBg/xMiuoYLfPimuyp0RWIwfERDcCmnMAYbkFPNog Xm2Gh4uoM0uyueXbI3ziQK7V7yWWfYXsBug4fkEHQfSJDL+KS1SbS6fPufB6bEN9j3pl TuZfR/HCk0EjKZTCV1EOKrNIAWj7Y3VzlBhCR2wS6khZuxkzAxfd+opWmI9npU5qt4Xx 8jtgootzP2vfKeTfDnzrp/QWz7d6VfWjajDbkAOTbKD6ZqRLIRmRJSXYlr7hSimFx7PW lA0sNnfohDCHw5KRJF8mp6oflZ5Gecz5J9eAk3+VXCQaviKDaxAfDQ1L8ulmWKjBorw5 7ejw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696408094; x=1697012894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R2yRwJ/7iREzqBe4BdcV/tJQGnF/hrf8riPhHgSOhEw=; b=ROIdAjDjbsQyLLnGd8FqAqUwOPN9u3rFgFW3a1sfYVYSX67C+DnY+vbBIftq86Tw9S hCTFCLAR/sE0mnARGqgBPxVc7F/Q2pYCnKeJWevpxP4vospWc4kQPYNZ1K3kSlHuZkJS iFqJrWZ5Hj8zv2JTDIZwYd/aArrEXaKv5fMnZWHDPyN4l6xISj0nlIGn5zMIt6XtECiz +9sjbgGZ3apQPGjZhYwOkaecNbPPFLLR8/OqCBwMkcop2cNavxKCLlD511fza7gNrt6d t5a/1uJrIK9vQQ5CxepodlN1O5SDn1SpIqVFLaAt5NxetgsqKbdGE3/cyjj4TatiMoOV XIKw== X-Gm-Message-State: AOJu0YyhFWaSRvKDU9JAqLLEJMqQYmqMqHIoNs6d5nsnljLg/IHBcrwF 7GbUB/49Dbxbf1ia24E5qkE= X-Google-Smtp-Source: AGHT+IFxQd2U1GXGAXigVpqGDqbCkb54Gqt1CaOxUHcHY0qZp3vpcOLh5uMbRNt0Tm7+Xvt6dWYbcg== X-Received: by 2002:a5d:61ce:0:b0:31a:d8c0:cb8b with SMTP id q14-20020a5d61ce000000b0031ad8c0cb8bmr1522942wrv.25.1696408093617; Wed, 04 Oct 2023 01:28:13 -0700 (PDT) Received: from PCBABN.skidata.net ([91.230.2.244]) by smtp.gmail.com with ESMTPSA id r2-20020a5d4982000000b00323330edbc7sm3432701wrq.20.2023.10.04.01.28.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Oct 2023 01:28:13 -0700 (PDT) From: Benjamin Bara To: alexander.stein@ew.tq-group.com Cc: abelvesa@kernel.org, aford173@gmail.com, bbara93@gmail.com, benjamin.bara@skidata.com, conor+dt@kernel.org, devicetree@vger.kernel.org, festevam@gmail.com, frank@oltmanns.dev, kernel@pengutronix.de, krzysztof.kozlowski+dt@linaro.org, l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux@armlinux.org.uk, mripard@kernel.org, mturquette@baylibre.com, peng.fan@nxp.com, robh+dt@kernel.org, s.hauer@pengutronix.de, sboyd@kernel.org, shawnguo@kernel.org Subject: Re: [PATCH 00/13] imx8mp: first clock propagation attempt (for LVDS) Date: Wed, 4 Oct 2023 10:28:06 +0200 Message-Id: <20231004082806.2895789-1-bbara93@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <12810050.O9o76ZdvQC@steina-w> References: <12810050.O9o76ZdvQC@steina-w> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org Hi Adam, Alexander! On Wed, 4 Oct 2023 at 10:04, Alexander Stein wrote: > Am Dienstag, 3. Oktober 2023, 15:28:05 CEST schrieb Adam Ford: > > On Sun, Sep 17, 2023 at 5:40 PM Benjamin Bara wrote: > > > Hi! > > > > > > Target of this series is to dynamically set the rate of video_pll1 to > > > the required LVDS clock rate(s), which are configured by the panel, and > > > the lvds-bridge respectively. > > > > > > Some background: > > > The LVDS panel requires two clocks: the crtc clock and the lvds clock. > > > The lvds rate is always 7x the crtc rate. On the imx8mp, these are > > > assigned to media_disp2_pix and media_ldb, which are both > > > > Could the LDB driver be updated to take in the crtc clock as a > > parameter, then set the media_ldb to 7x crct clock. I wonder if that > > might simplify the task a bit. > > I'm not sure if you had something different in mind, but I guess this happens > already in fsl_ldb_atomic_enable(), although using the mode clock. > As this might not always be possible, commit bd43a9844bc6f ("drm: bridge: ldb: > Warn if LDB clock does not match requested link frequency") was added to > indicate something might be wrong. > The main problem here is that both media_ldb and crct clock are not in a > parent<->child relationship, but are siblings, configurable individually. Yes, this already happens. First, the mode is set (which sets the CRTC rate). Next, LDB sets the LVDS rate. Both do not have "access" to the PLL, because the clocks haven't configured CLK_SET_RATE_PARENT. What might be a working (but IMHO dirty) hack, is to give the LDB the PLL clock as input too. Then it could set the PLL, LDB, CRTC rate (CRTC rate must be set again after PLL is set!). > > I still have concerns that the CLK_SET_RATE_PARENT may break the > > media_disp1_pix if media_disp2_pix is changing it. > > I think we should consider adding some sort of configurable flag to > > the CCM that lets people choose if CLK_SET_RATE_PARENT should be set > > or not in the device tree instead of hard-coding it either on or off. > > This would give people the flexibility of stating whether > > media_disp1_pix, media_disp2_pix, both or neither could set > > CLK_SET_RATE_PARENT. Probably we could do that (for now) by adding a second (optional) clock to LDB. If it is set, the LDB driver should also set the LVDS rate on this clock. This would then be set to the parent PLL. > > I believe the imx8mp-evk can support both LVDS-> HDMI and DSI->HDMI > > bridges, and I fear that if they are trying to both set different > > clock rates, this may break something and the clocks need to be > > selected in advance to give people a bunch of HDMI options as well as > > being able to divide down to support the LVDS. > > > > I think some of the displays could be tied to one of the Audio PLL's, > > so I might experiment with splitting the media_disp1_pix and > > media_disp2_pix from each other to see how well . Yes, you probably could also tie them to one of the other available PLLs. We "could" also do that automatically, by not setting CLK_SET_RATE_REPARENT and adapting the clk-divider driver to look for a better suitable parent. However, I guess the outcome is currently quite unpredictable, so this would require a lot of additional work. Just to mention it here too: I created a small spin-off of this series[1] with the changes of this series which affect the core. Probably using the optional clock for LDB is a suitable short-term solution? Regards Benjamin 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 93873E8FDDB for ; Wed, 4 Oct 2023 08:28:44 +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:References:In-Reply-To: Message-Id:Date: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=c/4a1VbH9WcZ0WzwRgHM4K6MJgeGlQ5nyUwWav4W01I=; b=i64nzsiTO3AXYW WqiFbnkb4xQD1z3ht2oTE3CCXAHs08nnkyNvmS3onGjDLIGnTGo9R7hBxZoXP7Rx7deiiFARE5EyP 8hr4yN7Um3QRQF7tSD6JufsKMT0kADoAJwiuHxTI4gm08eTKcfkrsy07k3T4yBDpx6qsmT56+0INL sjLa3Q9qpV2mM35CWXgp4DlLcnDyn+CnMYgzQyCtTsX8Fn4Nu03fTRIY5u7QAc3CWYGggHujaNY7m OND0k4PGWwZASzGYGaBIlBEYBmqFpXFaG1JWC3tvUwT6g94lLE86k21cvf0Imk899UN5LJ2+5Jtu1 rLz6/Z6op9LVvIZLVetA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qnxEy-00Goqd-35; Wed, 04 Oct 2023 08:28:20 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qnxEv-00Goox-2k for linux-arm-kernel@lists.infradead.org; Wed, 04 Oct 2023 08:28:19 +0000 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-32157c8e4c7so1811894f8f.1 for ; Wed, 04 Oct 2023 01:28:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696408094; x=1697012894; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R2yRwJ/7iREzqBe4BdcV/tJQGnF/hrf8riPhHgSOhEw=; b=Sbz4ty4PAEWhFFjT45anPbTHyG/7vbC+TPnqrTL4ieST6o8XSjoEBRMsTjQcijCaBf ny+uGlKMTJ4ORYXqeJCNmE7CbiIp+lufjRGhiegG8BrnQxIzG0hvNa1ZVJfe2vgj3BhS R3fhnc0KxdirAIcHZg73TjaJNZlkX4Zbsz+6PdntvpbRcexnIfEWKXLCbDSogTdLMvjL kvgUrtY1jhpjA9X5jITNrR24ttgkzYVbSoAfpzndIKcBVHxRFab61GLU8lPBVmEUN0Vu GAjoYU+/69VrBO5FpAvxdkJ7w/Urtl0Uz/vDNrJrF0YSemJ2cHCc8KJkQjVlCbIWlORc Rrzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696408094; x=1697012894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R2yRwJ/7iREzqBe4BdcV/tJQGnF/hrf8riPhHgSOhEw=; b=sgqqfs571olcpsBFVbp7KkgHzgLqJK2i+I75f1BPsFtjIrAwnO+sXEZsSiwphKrQwk eFo2ajpf13mvJFmFBfAiOn3iRH7iRw4vk5cORG9j0nqoA7ngELIrBHH+MtOIoEoku3/L S8tLmvjgb4hJJr9iAvUn88s/0M+S8UsOpYLG/Lux+UWyIIUeak7IE5xzbCGvzjgzM8my o7cY+aZIF6yKX8P/MgGtC9sFBKNTmV8B0rv9N26eY5m4Ur0uQ9JzcFgzBVOkxC+n/GPS jsTPq5L3GGJ4Fc9tFZFKmGWTGV6cx0CV+qzPqVJEO3kWXtPO3j1+ck2oYA5CnmVHsgYh FkOw== X-Gm-Message-State: AOJu0Ywb94sFeYR13He4a7oBM7eBg9igN1z/Oa0saa58cJBjMSwADJN5 kTjQJjNiwMXUsoy9P6HnimI= X-Google-Smtp-Source: AGHT+IFxQd2U1GXGAXigVpqGDqbCkb54Gqt1CaOxUHcHY0qZp3vpcOLh5uMbRNt0Tm7+Xvt6dWYbcg== X-Received: by 2002:a5d:61ce:0:b0:31a:d8c0:cb8b with SMTP id q14-20020a5d61ce000000b0031ad8c0cb8bmr1522942wrv.25.1696408093617; Wed, 04 Oct 2023 01:28:13 -0700 (PDT) Received: from PCBABN.skidata.net ([91.230.2.244]) by smtp.gmail.com with ESMTPSA id r2-20020a5d4982000000b00323330edbc7sm3432701wrq.20.2023.10.04.01.28.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Oct 2023 01:28:13 -0700 (PDT) From: Benjamin Bara To: alexander.stein@ew.tq-group.com Cc: abelvesa@kernel.org, aford173@gmail.com, bbara93@gmail.com, benjamin.bara@skidata.com, conor+dt@kernel.org, devicetree@vger.kernel.org, festevam@gmail.com, frank@oltmanns.dev, kernel@pengutronix.de, krzysztof.kozlowski+dt@linaro.org, l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux@armlinux.org.uk, mripard@kernel.org, mturquette@baylibre.com, peng.fan@nxp.com, robh+dt@kernel.org, s.hauer@pengutronix.de, sboyd@kernel.org, shawnguo@kernel.org Subject: Re: [PATCH 00/13] imx8mp: first clock propagation attempt (for LVDS) Date: Wed, 4 Oct 2023 10:28:06 +0200 Message-Id: <20231004082806.2895789-1-bbara93@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <12810050.O9o76ZdvQC@steina-w> References: <12810050.O9o76ZdvQC@steina-w> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231004_012817_909335_4B20C6B7 X-CRM114-Status: GOOD ( 39.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 SGkgQWRhbSwgQWxleGFuZGVyIQoKT24gV2VkLCA0IE9jdCAyMDIzIGF0IDEwOjA0LCBBbGV4YW5k ZXIgU3RlaW4gPGFsZXhhbmRlci5zdGVpbkBldy50cS1ncm91cC5jb20+IHdyb3RlOgo+IEFtIERp ZW5zdGFnLCAzLiBPa3RvYmVyIDIwMjMsIDE1OjI4OjA1IENFU1Qgc2NocmllYiBBZGFtIEZvcmQ6 Cj4gPiBPbiBTdW4sIFNlcCAxNywgMjAyMyBhdCA1OjQw4oCvUE0gQmVuamFtaW4gQmFyYSA8YmJh cmE5M0BnbWFpbC5jb20+IHdyb3RlOgo+ID4gPiBIaSEKPiA+ID4KPiA+ID4gVGFyZ2V0IG9mIHRo aXMgc2VyaWVzIGlzIHRvIGR5bmFtaWNhbGx5IHNldCB0aGUgcmF0ZSBvZiB2aWRlb19wbGwxIHRv Cj4gPiA+IHRoZSByZXF1aXJlZCBMVkRTIGNsb2NrIHJhdGUocyksIHdoaWNoIGFyZSBjb25maWd1 cmVkIGJ5IHRoZSBwYW5lbCwgYW5kCj4gPiA+IHRoZSBsdmRzLWJyaWRnZSByZXNwZWN0aXZlbHku Cj4gPiA+Cj4gPiA+IFNvbWUgYmFja2dyb3VuZDoKPiA+ID4gVGhlIExWRFMgcGFuZWwgcmVxdWly ZXMgdHdvIGNsb2NrczogdGhlIGNydGMgY2xvY2sgYW5kIHRoZSBsdmRzIGNsb2NrLgo+ID4gPiBU aGUgbHZkcyByYXRlIGlzIGFsd2F5cyA3eCB0aGUgY3J0YyByYXRlLiBPbiB0aGUgaW14OG1wLCB0 aGVzZSBhcmUKPiA+ID4gYXNzaWduZWQgdG8gbWVkaWFfZGlzcDJfcGl4IGFuZCBtZWRpYV9sZGIs IHdoaWNoIGFyZSBib3RoCj4gPgo+ID4gQ291bGQgdGhlIExEQiBkcml2ZXIgYmUgdXBkYXRlZCB0 byB0YWtlIGluIHRoZSBjcnRjIGNsb2NrIGFzIGEKPiA+IHBhcmFtZXRlciwgdGhlbiBzZXQgdGhl IG1lZGlhX2xkYiB0byA3eCBjcmN0IGNsb2NrLiAgSSB3b25kZXIgaWYgdGhhdAo+ID4gbWlnaHQg c2ltcGxpZnkgdGhlIHRhc2sgYSBiaXQuCj4KPiBJJ20gbm90IHN1cmUgaWYgeW91IGhhZCBzb21l dGhpbmcgZGlmZmVyZW50IGluIG1pbmQsIGJ1dCBJIGd1ZXNzIHRoaXMgaGFwcGVucwo+IGFscmVh ZHkgaW4gZnNsX2xkYl9hdG9taWNfZW5hYmxlKCksIGFsdGhvdWdoIHVzaW5nIHRoZSBtb2RlIGNs b2NrLgo+IEFzIHRoaXMgbWlnaHQgbm90IGFsd2F5cyBiZSBwb3NzaWJsZSwgY29tbWl0IGJkNDNh OTg0NGJjNmYgKCJkcm06IGJyaWRnZTogbGRiOgo+IFdhcm4gaWYgTERCIGNsb2NrIGRvZXMgbm90 IG1hdGNoIHJlcXVlc3RlZCBsaW5rIGZyZXF1ZW5jeSIpIHdhcyBhZGRlZCB0bwo+IGluZGljYXRl IHNvbWV0aGluZyBtaWdodCBiZSB3cm9uZy4KPiBUaGUgbWFpbiBwcm9ibGVtIGhlcmUgaXMgdGhh dCBib3RoIG1lZGlhX2xkYiBhbmQgY3JjdCBjbG9jayBhcmUgbm90IGluIGEKPiBwYXJlbnQ8LT5j aGlsZCByZWxhdGlvbnNoaXAsIGJ1dCBhcmUgc2libGluZ3MsIGNvbmZpZ3VyYWJsZSBpbmRpdmlk dWFsbHkuCgpZZXMsIHRoaXMgYWxyZWFkeSBoYXBwZW5zLiBGaXJzdCwgdGhlIG1vZGUgaXMgc2V0 ICh3aGljaCBzZXRzIHRoZSBDUlRDCnJhdGUpLiBOZXh0LCBMREIgc2V0cyB0aGUgTFZEUyByYXRl LiBCb3RoIGRvIG5vdCBoYXZlICJhY2Nlc3MiIHRvIHRoZQpQTEwsIGJlY2F1c2UgdGhlIGNsb2Nr cyBoYXZlbid0IGNvbmZpZ3VyZWQgQ0xLX1NFVF9SQVRFX1BBUkVOVC4gV2hhdAptaWdodCBiZSBh IHdvcmtpbmcgKGJ1dCBJTUhPIGRpcnR5KSBoYWNrLCBpcyB0byBnaXZlIHRoZSBMREIgdGhlIFBM TApjbG9jayBhcyBpbnB1dCB0b28uIFRoZW4gaXQgY291bGQgc2V0IHRoZSBQTEwsIExEQiwgQ1JU QyByYXRlIChDUlRDIHJhdGUKbXVzdCBiZSBzZXQgYWdhaW4gYWZ0ZXIgUExMIGlzIHNldCEpLgoK PiA+IEkgc3RpbGwgaGF2ZSBjb25jZXJucyB0aGF0IHRoZSBDTEtfU0VUX1JBVEVfUEFSRU5UIG1h eSBicmVhayB0aGUKPiA+IG1lZGlhX2Rpc3AxX3BpeCBpZiBtZWRpYV9kaXNwMl9waXggaXMgY2hh bmdpbmcgaXQuCj4gPiBJIHRoaW5rIHdlIHNob3VsZCBjb25zaWRlciBhZGRpbmcgc29tZSBzb3J0 IG9mIGNvbmZpZ3VyYWJsZSBmbGFnIHRvCj4gPiB0aGUgQ0NNIHRoYXQgbGV0cyBwZW9wbGUgY2hv b3NlICBpZiBDTEtfU0VUX1JBVEVfUEFSRU5UIHNob3VsZCBiZSBzZXQKPiA+IG9yIG5vdCBpbiB0 aGUgZGV2aWNlIHRyZWUgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyBpdCBlaXRoZXIgb24gb3Igb2Zm Lgo+ID4gVGhpcyB3b3VsZCBnaXZlIHBlb3BsZSB0aGUgZmxleGliaWxpdHkgb2Ygc3RhdGluZyB3 aGV0aGVyCj4gPiBtZWRpYV9kaXNwMV9waXgsIG1lZGlhX2Rpc3AyX3BpeCwgYm90aCBvciBuZWl0 aGVyIGNvdWxkIHNldAo+ID4gQ0xLX1NFVF9SQVRFX1BBUkVOVC4KClByb2JhYmx5IHdlIGNvdWxk IGRvIHRoYXQgKGZvciBub3cpIGJ5IGFkZGluZyBhIHNlY29uZCAob3B0aW9uYWwpIGNsb2NrCnRv IExEQi4gSWYgaXQgaXMgc2V0LCB0aGUgTERCIGRyaXZlciBzaG91bGQgYWxzbyBzZXQgdGhlIExW RFMgcmF0ZSBvbgp0aGlzIGNsb2NrLiBUaGlzIHdvdWxkIHRoZW4gYmUgc2V0IHRvIHRoZSBwYXJl bnQgUExMLgoKPiA+IEkgYmVsaWV2ZSB0aGUgaW14OG1wLWV2ayBjYW4gc3VwcG9ydCBib3RoIExW RFMtPiBIRE1JIGFuZCBEU0ktPkhETUkKPiA+IGJyaWRnZXMsIGFuZCBJIGZlYXIgdGhhdCBpZiB0 aGV5IGFyZSB0cnlpbmcgdG8gYm90aCBzZXQgZGlmZmVyZW50Cj4gPiBjbG9jayByYXRlcywgdGhp cyBtYXkgYnJlYWsgc29tZXRoaW5nIGFuZCB0aGUgY2xvY2tzIG5lZWQgdG8gYmUKPiA+IHNlbGVj dGVkIGluIGFkdmFuY2UgdG8gZ2l2ZSBwZW9wbGUgYSBidW5jaCBvZiBIRE1JIG9wdGlvbnMgYXMg d2VsbCBhcwo+ID4gYmVpbmcgYWJsZSB0byBkaXZpZGUgZG93biB0byBzdXBwb3J0IHRoZSBMVkRT Lgo+ID4KPiA+IEkgdGhpbmsgc29tZSBvZiB0aGUgZGlzcGxheXMgY291bGQgYmUgdGllZCB0byBv bmUgb2YgdGhlIEF1ZGlvIFBMTCdzLAo+ID4gc28gSSBtaWdodCBleHBlcmltZW50IHdpdGggc3Bs aXR0aW5nIHRoZSBtZWRpYV9kaXNwMV9waXggYW5kCj4gPiBtZWRpYV9kaXNwMl9waXggZnJvbSBl YWNoIG90aGVyIHRvIHNlZSBob3cgd2VsbCAuCgpZZXMsIHlvdSBwcm9iYWJseSBjb3VsZCBhbHNv IHRpZSB0aGVtIHRvIG9uZSBvZiB0aGUgb3RoZXIgYXZhaWxhYmxlClBMTHMuIFdlICJjb3VsZCIg YWxzbyBkbyB0aGF0IGF1dG9tYXRpY2FsbHksIGJ5IG5vdCBzZXR0aW5nCkNMS19TRVRfUkFURV9S RVBBUkVOVCBhbmQgYWRhcHRpbmcgdGhlIGNsay1kaXZpZGVyIGRyaXZlciB0byBsb29rIGZvciBh CmJldHRlciBzdWl0YWJsZSBwYXJlbnQuIEhvd2V2ZXIsIEkgZ3Vlc3MgdGhlIG91dGNvbWUgaXMg Y3VycmVudGx5IHF1aXRlCnVucHJlZGljdGFibGUsIHNvIHRoaXMgd291bGQgcmVxdWlyZSBhIGxv dCBvZiBhZGRpdGlvbmFsIHdvcmsuIEp1c3QgdG8KbWVudGlvbiBpdCBoZXJlIHRvbzogSSBjcmVh dGVkIGEgc21hbGwgc3Bpbi1vZmYgb2YgdGhpcyBzZXJpZXNbMV0gd2l0aAp0aGUgY2hhbmdlcyBv ZiB0aGlzIHNlcmllcyB3aGljaCBhZmZlY3QgdGhlIGNvcmUuCgpQcm9iYWJseSB1c2luZyB0aGUg b3B0aW9uYWwgY2xvY2sgZm9yIExEQiBpcyBhIHN1aXRhYmxlIHNob3J0LXRlcm0Kc29sdXRpb24/ CgpSZWdhcmRzCkJlbmphbWluCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==