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 564C2C19F2A for ; Thu, 4 Aug 2022 13:17:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239773AbiHDNRR (ORCPT ); Thu, 4 Aug 2022 09:17:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231807AbiHDNRP (ORCPT ); Thu, 4 Aug 2022 09:17:15 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E7CC1D329 for ; Thu, 4 Aug 2022 06:17:13 -0700 (PDT) Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJaii-0005to-S6; Thu, 04 Aug 2022 15:17:00 +0200 Received: from mfe by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1oJaig-0003Yp-IU; Thu, 04 Aug 2022 15:16:58 +0200 Date: Thu, 4 Aug 2022 15:16:58 +0200 From: Marco Felsch To: Dave Stevenson Cc: Adam Ford , Neil Armstrong , David Airlie , dri-devel , Laurent Pinchart , Andrzej Hajda , Marek Szyprowski , Marek Vasut , Jernej Skrabec , Jagan Teki , robert.chiras@nxp.com, laurentiu.palcu@nxp.com, NXP Linux Team , Jonas Karlman , Sascha Hauer , arm-soc , Linux Kernel Mailing List , Robert Foss , Pengutronix Kernel Team , Shawn Guo Subject: Re: imx8mm lcdif->dsi->adv7535 no video, no errors Message-ID: <20220804131658.7iynxxvajqjtgh5k@pengutronix.de> References: <20220803062024.vn7awasmifkp5xow@pengutronix.de> <20220804102757.pc7hljonea43ytwg@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180716 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: mfe@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dave, On 22-08-04, Dave Stevenson wrote: > Hi Marco > > On Thu, 4 Aug 2022 at 11:28, Marco Felsch wrote: > > > > On 22-08-03, Dave Stevenson wrote: > > > On Wed, 3 Aug 2022 at 13:31, Adam Ford wrote: > > > > ... > > > > > > Mine also states the DSI source needs to provide correct video timing > > > > with start and stop sync packets. > > > > > > > > If I remember correctly, it seemed like Marek V wanted the hard coded > > > > samsung,burst-clock-frequency to go away so the clock frequency could > > > > be set dynamically. > > > > > > I've never worked with Exynos or imx8, but my view would be that > > > samsung,burst-clock-frequency should only be used if > > > MIPI_DSI_MODE_VIDEO_BURST is set in the mode_flags (it isn't for > > > adv7533/5). > > > > Some notes on that. The samsung,burst-clock-frequency is the > > hs-bit-clock-rate which is twice the dsi-clock-rate. This has nothing to > > do with the MIPI_DSI_MODE_VIDEO_BURST. > > > > > Without that flag the DSI link frequency should be running at the rate > > > defined by the mode clock, number of lanes, bpp, etc. > > > > IMHO the DSI link have only to guarantee the bandwidth is sufficient for > > the mode. > > DSI spec 8.11.3 Non-Burst Mode with Sync Events > "This mode is a simplification of the format described in Section > 8.11.2 (Non-Burst Mode with Sync Pulses) > ... > Pixels are transmitted at the same rate as they would in a > corresponding parallel display interface such as DPI-2." > > If you are running the DSI clock at anything other than that rate, > then AIUI you are in a burst mode (although you may choose not to drop > into LP mode). Yes, that makes sense to me. The bandwidth on the DSI side should match the one required on the other side (HDMI). Apart the fact that the ADV is working in mode 8.11.2 (Non-Burst Mode with Sync Pulses). > (One of my pet peeves that there is no documentation as to exactly > what MIPI_DSI_MODE_VIDEO_BURST is meant to mean. Seeing as in the DSI > spec all modes of 8.11 say that the host can drop to LP during > blanking if time allows, it surely has to be the time compression > element of 8.11.4 Burst Mode). Hm.. I don't have the DSI spec either but I thought that BURST mode allows the host to send the data as fast as possible and enter LP afterwards. > > > From the DSI spec (v 1.1 section 8.11.1): > > > "Non-Burst Mode with Sync Pulses – enables the peripheral to > > > accurately reconstruct original video timing, including sync pulse > > > widths." > > > "RGB pixel packets are time-compressed, leaving more time during a > > > scan line for LP mode (saving power) or for multiplexing other > > > transmissions onto the DSI link." > > > How can the peripheral reconstruct the video timing off a quirky link frequency? > > > > If the ADV couldn't reconstruct the sync signals, then we should not get > > any mode working but we get the 1080P mode working. > > > > > Unless the Exynos DSIM_CONFIG_REG register bit DSIM_BURST_MODE [1] > > > reconfigures the clock setup of the DSI block, then I don't see how > > > the Exynos driver can follow the DSI spec in that regard. > > > > Why do you think that the Exynos driver isn't following the spec? We > > configure the host into video mode with sync signals which is working > > for the 1080P mode. > > 1080p is working with samsung,burst-clock-frequency setting? Yes. > As I say, I've not worked with this IP, I'm only looking at it from > the outside having spent far too much time recently on the Pi DSI > interface. Good to know :) > exynos_drm_dsi.c seems to be doing a lot of PLL computation around > burst-clock-frequency, and nothing with the pixel clock rate. Yes currently there is just this setting for setting the PLL freq. but as you said for the "Non-Burst Mode with Sync Pulses" we need to reconfigure it according the required bandwidth or the dsi-device tells us about which dsi-link settings should be applied. > Without knowledge of what that DSIM_BURST_MODE bit in DSIM_CONFIG_REG > actually does in the hardware, I can only make guesses. 8<---------------------------------------------- Selects Burst mode in Video mode In Non-burst mode, RGB data area is filled with RGB data and Null packets, according to input bandwidth of RGB interface. In Burst mode, RGB data area is filled with RGB data only. 0 = Non-burst mode 1 = Burst mode 8<---------------------------------------------- According the current implementation we are in Non-burst mode. Regards, Marco > Perhaps it does ditch the burst clock and switch the bit clock to be > derived from the pixel clock of the upstream block, but that seems > unlikely. > > Dave > 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 B6C34C19F2A for ; Thu, 4 Aug 2022 13:17:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A49D98814; Thu, 4 Aug 2022 13:17:16 +0000 (UTC) Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2F58F987F7 for ; Thu, 4 Aug 2022 13:17:03 +0000 (UTC) Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJaii-0005to-S6; Thu, 04 Aug 2022 15:17:00 +0200 Received: from mfe by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1oJaig-0003Yp-IU; Thu, 04 Aug 2022 15:16:58 +0200 Date: Thu, 4 Aug 2022 15:16:58 +0200 From: Marco Felsch To: Dave Stevenson Subject: Re: imx8mm lcdif->dsi->adv7535 no video, no errors Message-ID: <20220804131658.7iynxxvajqjtgh5k@pengutronix.de> References: <20220803062024.vn7awasmifkp5xow@pengutronix.de> <20220804102757.pc7hljonea43ytwg@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180716 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: mfe@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marek Vasut , Jagan Teki , Jernej Skrabec , Pengutronix Kernel Team , Neil Armstrong , David Airlie , laurentiu.palcu@nxp.com, Sascha Hauer , Jonas Karlman , NXP Linux Team , dri-devel , Linux Kernel Mailing List , Laurent Pinchart , Andrzej Hajda , robert.chiras@nxp.com, Robert Foss , Adam Ford , Shawn Guo , arm-soc , Marek Szyprowski Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Dave, On 22-08-04, Dave Stevenson wrote: > Hi Marco > > On Thu, 4 Aug 2022 at 11:28, Marco Felsch wrote: > > > > On 22-08-03, Dave Stevenson wrote: > > > On Wed, 3 Aug 2022 at 13:31, Adam Ford wrote: > > > > ... > > > > > > Mine also states the DSI source needs to provide correct video timing > > > > with start and stop sync packets. > > > > > > > > If I remember correctly, it seemed like Marek V wanted the hard coded > > > > samsung,burst-clock-frequency to go away so the clock frequency could > > > > be set dynamically. > > > > > > I've never worked with Exynos or imx8, but my view would be that > > > samsung,burst-clock-frequency should only be used if > > > MIPI_DSI_MODE_VIDEO_BURST is set in the mode_flags (it isn't for > > > adv7533/5). > > > > Some notes on that. The samsung,burst-clock-frequency is the > > hs-bit-clock-rate which is twice the dsi-clock-rate. This has nothing to > > do with the MIPI_DSI_MODE_VIDEO_BURST. > > > > > Without that flag the DSI link frequency should be running at the rate > > > defined by the mode clock, number of lanes, bpp, etc. > > > > IMHO the DSI link have only to guarantee the bandwidth is sufficient for > > the mode. > > DSI spec 8.11.3 Non-Burst Mode with Sync Events > "This mode is a simplification of the format described in Section > 8.11.2 (Non-Burst Mode with Sync Pulses) > ... > Pixels are transmitted at the same rate as they would in a > corresponding parallel display interface such as DPI-2." > > If you are running the DSI clock at anything other than that rate, > then AIUI you are in a burst mode (although you may choose not to drop > into LP mode). Yes, that makes sense to me. The bandwidth on the DSI side should match the one required on the other side (HDMI). Apart the fact that the ADV is working in mode 8.11.2 (Non-Burst Mode with Sync Pulses). > (One of my pet peeves that there is no documentation as to exactly > what MIPI_DSI_MODE_VIDEO_BURST is meant to mean. Seeing as in the DSI > spec all modes of 8.11 say that the host can drop to LP during > blanking if time allows, it surely has to be the time compression > element of 8.11.4 Burst Mode). Hm.. I don't have the DSI spec either but I thought that BURST mode allows the host to send the data as fast as possible and enter LP afterwards. > > > From the DSI spec (v 1.1 section 8.11.1): > > > "Non-Burst Mode with Sync Pulses – enables the peripheral to > > > accurately reconstruct original video timing, including sync pulse > > > widths." > > > "RGB pixel packets are time-compressed, leaving more time during a > > > scan line for LP mode (saving power) or for multiplexing other > > > transmissions onto the DSI link." > > > How can the peripheral reconstruct the video timing off a quirky link frequency? > > > > If the ADV couldn't reconstruct the sync signals, then we should not get > > any mode working but we get the 1080P mode working. > > > > > Unless the Exynos DSIM_CONFIG_REG register bit DSIM_BURST_MODE [1] > > > reconfigures the clock setup of the DSI block, then I don't see how > > > the Exynos driver can follow the DSI spec in that regard. > > > > Why do you think that the Exynos driver isn't following the spec? We > > configure the host into video mode with sync signals which is working > > for the 1080P mode. > > 1080p is working with samsung,burst-clock-frequency setting? Yes. > As I say, I've not worked with this IP, I'm only looking at it from > the outside having spent far too much time recently on the Pi DSI > interface. Good to know :) > exynos_drm_dsi.c seems to be doing a lot of PLL computation around > burst-clock-frequency, and nothing with the pixel clock rate. Yes currently there is just this setting for setting the PLL freq. but as you said for the "Non-Burst Mode with Sync Pulses" we need to reconfigure it according the required bandwidth or the dsi-device tells us about which dsi-link settings should be applied. > Without knowledge of what that DSIM_BURST_MODE bit in DSIM_CONFIG_REG > actually does in the hardware, I can only make guesses. 8<---------------------------------------------- Selects Burst mode in Video mode In Non-burst mode, RGB data area is filled with RGB data and Null packets, according to input bandwidth of RGB interface. In Burst mode, RGB data area is filled with RGB data only. 0 = Non-burst mode 1 = Burst mode 8<---------------------------------------------- According the current implementation we are in Non-burst mode. Regards, Marco > Perhaps it does ditch the burst clock and switch the bit clock to be > derived from the pixel clock of the upstream block, but that seems > unlikely. > > Dave > 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 1A7C9C19F2A for ; Thu, 4 Aug 2022 13:18:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=x02pvg/zFVkNZMB0UHcj47y1o1lwUd1nWY+Q8+OaDYk=; b=t6o92PW1ViPS6L f83ph+dBt/3iYYsPq3uM1byI90uYq46OEDrRxqLjxpxwslFbM1IXNDGDNd99DA/m8gVilzD4A3E0J LYZS+Rq3JoJ0qyfpAa1JhyTPl3wfO63lfJ8EfiUQzMmt7p6Tvefp9g//pfreog+CDC6REpfrXdVnQ k1HyZ9rHEDi8Ayi1KxQG5jJx2TiRBG4Vt+5/nV+vzKhabWC1D6ogg8Zm6GJePvo5zg0JvjPENDQWo x25S/XKkAxuf3rCPC9tkr9jE/xbpogpwtDm/YemB75GUSiM57CFyeLhRM+sCQ0wjPBg2+VRXZQIGd +HvjNLwMMLv8jHnkqKBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oJaj1-006F4R-T8; Thu, 04 Aug 2022 13:17:21 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oJait-006F09-0S for linux-arm-kernel@lists.infradead.org; Thu, 04 Aug 2022 13:17:15 +0000 Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJaii-0005to-S6; Thu, 04 Aug 2022 15:17:00 +0200 Received: from mfe by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1oJaig-0003Yp-IU; Thu, 04 Aug 2022 15:16:58 +0200 Date: Thu, 4 Aug 2022 15:16:58 +0200 From: Marco Felsch To: Dave Stevenson Cc: Adam Ford , Neil Armstrong , David Airlie , dri-devel , Laurent Pinchart , Andrzej Hajda , Marek Szyprowski , Marek Vasut , Jernej Skrabec , Jagan Teki , robert.chiras@nxp.com, laurentiu.palcu@nxp.com, NXP Linux Team , Jonas Karlman , Sascha Hauer , arm-soc , Linux Kernel Mailing List , Robert Foss , Pengutronix Kernel Team , Shawn Guo Subject: Re: imx8mm lcdif->dsi->adv7535 no video, no errors Message-ID: <20220804131658.7iynxxvajqjtgh5k@pengutronix.de> References: <20220803062024.vn7awasmifkp5xow@pengutronix.de> <20220804102757.pc7hljonea43ytwg@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: mfe@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220804_061711_112716_E5AEAD99 X-CRM114-Status: GOOD ( 43.32 ) 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 SGkgRGF2ZSwKCk9uIDIyLTA4LTA0LCBEYXZlIFN0ZXZlbnNvbiB3cm90ZToKPiBIaSBNYXJjbwo+ IAo+IE9uIFRodSwgNCBBdWcgMjAyMiBhdCAxMToyOCwgTWFyY28gRmVsc2NoIDxtLmZlbHNjaEBw ZW5ndXRyb25peC5kZT4gd3JvdGU6Cj4gPgo+ID4gT24gMjItMDgtMDMsIERhdmUgU3RldmVuc29u IHdyb3RlOgo+ID4gPiBPbiBXZWQsIDMgQXVnIDIwMjIgYXQgMTM6MzEsIEFkYW0gRm9yZCA8YWZv cmQxNzNAZ21haWwuY29tPiB3cm90ZToKPiA+Cj4gPiAuLi4KPiA+Cj4gPiA+ID4gTWluZSBhbHNv IHN0YXRlcyB0aGUgRFNJIHNvdXJjZSBuZWVkcyB0byBwcm92aWRlIGNvcnJlY3QgdmlkZW8gdGlt aW5nCj4gPiA+ID4gd2l0aCBzdGFydCBhbmQgc3RvcCBzeW5jIHBhY2tldHMuCj4gPiA+ID4KPiA+ ID4gPiBJZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgaXQgc2VlbWVkIGxpa2UgTWFyZWsgViB3YW50 ZWQgdGhlIGhhcmQgY29kZWQKPiA+ID4gPiBzYW1zdW5nLGJ1cnN0LWNsb2NrLWZyZXF1ZW5jeSB0 byBnbyBhd2F5IHNvIHRoZSBjbG9jayBmcmVxdWVuY3kgY291bGQKPiA+ID4gPiBiZSBzZXQgZHlu YW1pY2FsbHkuCj4gPiA+Cj4gPiA+IEkndmUgbmV2ZXIgd29ya2VkIHdpdGggRXh5bm9zIG9yIGlt eDgsIGJ1dCBteSB2aWV3IHdvdWxkIGJlIHRoYXQKPiA+ID4gc2Ftc3VuZyxidXJzdC1jbG9jay1m cmVxdWVuY3kgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZgo+ID4gPiBNSVBJX0RTSV9NT0RFX1ZJREVP X0JVUlNUIGlzIHNldCBpbiB0aGUgbW9kZV9mbGFncyAoaXQgaXNuJ3QgZm9yCj4gPiA+IGFkdjc1 MzMvNSkuCj4gPgo+ID4gU29tZSBub3RlcyBvbiB0aGF0LiBUaGUgc2Ftc3VuZyxidXJzdC1jbG9j ay1mcmVxdWVuY3kgaXMgdGhlCj4gPiBocy1iaXQtY2xvY2stcmF0ZSB3aGljaCBpcyB0d2ljZSB0 aGUgZHNpLWNsb2NrLXJhdGUuIFRoaXMgaGFzIG5vdGhpbmcgdG8KPiA+IGRvIHdpdGggdGhlIE1J UElfRFNJX01PREVfVklERU9fQlVSU1QuCj4gPgo+ID4gPiBXaXRob3V0IHRoYXQgZmxhZyB0aGUg RFNJIGxpbmsgZnJlcXVlbmN5IHNob3VsZCBiZSBydW5uaW5nIGF0IHRoZSByYXRlCj4gPiA+IGRl ZmluZWQgYnkgdGhlIG1vZGUgY2xvY2ssIG51bWJlciBvZiBsYW5lcywgYnBwLCBldGMuCj4gPgo+ ID4gSU1ITyB0aGUgRFNJIGxpbmsgaGF2ZSBvbmx5IHRvIGd1YXJhbnRlZSB0aGUgYmFuZHdpZHRo IGlzIHN1ZmZpY2llbnQgZm9yCj4gPiB0aGUgbW9kZS4KPiAKPiBEU0kgc3BlYyA4LjExLjMgTm9u LUJ1cnN0IE1vZGUgd2l0aCBTeW5jIEV2ZW50cwo+ICJUaGlzIG1vZGUgaXMgYSBzaW1wbGlmaWNh dGlvbiBvZiB0aGUgZm9ybWF0IGRlc2NyaWJlZCBpbiBTZWN0aW9uCj4gOC4xMS4yIChOb24tQnVy c3QgTW9kZSB3aXRoIFN5bmMgUHVsc2VzKQo+IC4uLgo+IFBpeGVscyBhcmUgdHJhbnNtaXR0ZWQg YXQgdGhlIHNhbWUgcmF0ZSBhcyB0aGV5IHdvdWxkIGluIGEKPiBjb3JyZXNwb25kaW5nIHBhcmFs bGVsIGRpc3BsYXkgaW50ZXJmYWNlIHN1Y2ggYXMgRFBJLTIuIgo+IAo+IElmIHlvdSBhcmUgcnVu bmluZyB0aGUgRFNJIGNsb2NrIGF0IGFueXRoaW5nIG90aGVyIHRoYW4gdGhhdCByYXRlLAo+IHRo ZW4gQUlVSSB5b3UgYXJlIGluIGEgYnVyc3QgbW9kZSAoYWx0aG91Z2ggeW91IG1heSBjaG9vc2Ug bm90IHRvIGRyb3AKPiBpbnRvIExQIG1vZGUpLgoKWWVzLCB0aGF0IG1ha2VzIHNlbnNlIHRvIG1l LiBUaGUgYmFuZHdpZHRoIG9uIHRoZSBEU0kgc2lkZSBzaG91bGQgbWF0Y2gKdGhlIG9uZSByZXF1 aXJlZCBvbiB0aGUgb3RoZXIgc2lkZSAoSERNSSkuIEFwYXJ0IHRoZSBmYWN0IHRoYXQgdGhlIEFE VgppcyB3b3JraW5nIGluIG1vZGUgOC4xMS4yIChOb24tQnVyc3QgTW9kZSB3aXRoIFN5bmMgUHVs c2VzKS4KCj4gKE9uZSBvZiBteSBwZXQgcGVldmVzIHRoYXQgdGhlcmUgaXMgbm8gZG9jdW1lbnRh dGlvbiBhcyB0byBleGFjdGx5Cj4gd2hhdCBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUIGlzIG1l YW50IHRvIG1lYW4uIFNlZWluZyBhcyBpbiB0aGUgRFNJCj4gc3BlYyBhbGwgbW9kZXMgb2YgOC4x MSBzYXkgdGhhdCB0aGUgaG9zdCBjYW4gZHJvcCB0byBMUCBkdXJpbmcKPiBibGFua2luZyBpZiB0 aW1lIGFsbG93cywgaXQgc3VyZWx5IGhhcyB0byBiZSB0aGUgdGltZSBjb21wcmVzc2lvbgo+IGVs ZW1lbnQgb2YgOC4xMS40IEJ1cnN0IE1vZGUpLgoKSG0uLiBJIGRvbid0IGhhdmUgdGhlIERTSSBz cGVjIGVpdGhlciBidXQgSSB0aG91Z2h0IHRoYXQgQlVSU1QgbW9kZQphbGxvd3MgdGhlIGhvc3Qg dG8gc2VuZCB0aGUgZGF0YSBhcyBmYXN0IGFzIHBvc3NpYmxlIGFuZCBlbnRlciBMUAphZnRlcndh cmRzLgoKPiA+ID4gRnJvbSB0aGUgRFNJIHNwZWMgKHYgMS4xIHNlY3Rpb24gOC4xMS4xKToKPiA+ ID4gIk5vbi1CdXJzdCBNb2RlIHdpdGggU3luYyBQdWxzZXMg4oCTIGVuYWJsZXMgdGhlIHBlcmlw aGVyYWwgdG8KPiA+ID4gYWNjdXJhdGVseSByZWNvbnN0cnVjdCBvcmlnaW5hbCB2aWRlbyB0aW1p bmcsIGluY2x1ZGluZyBzeW5jIHB1bHNlCj4gPiA+IHdpZHRocy4iCj4gPiA+ICJSR0IgcGl4ZWwg cGFja2V0cyBhcmUgdGltZS1jb21wcmVzc2VkLCBsZWF2aW5nIG1vcmUgdGltZSBkdXJpbmcgYQo+ ID4gPiBzY2FuIGxpbmUgZm9yIExQIG1vZGUgKHNhdmluZyBwb3dlcikgb3IgZm9yIG11bHRpcGxl eGluZyBvdGhlcgo+ID4gPiB0cmFuc21pc3Npb25zIG9udG8gdGhlIERTSSBsaW5rLiIKPiA+ID4g SG93IGNhbiB0aGUgcGVyaXBoZXJhbCByZWNvbnN0cnVjdCB0aGUgdmlkZW8gdGltaW5nIG9mZiBh IHF1aXJreSBsaW5rIGZyZXF1ZW5jeT8KPiA+Cj4gPiBJZiB0aGUgQURWIGNvdWxkbid0IHJlY29u c3RydWN0IHRoZSBzeW5jIHNpZ25hbHMsIHRoZW4gd2Ugc2hvdWxkIG5vdCBnZXQKPiA+IGFueSBt b2RlIHdvcmtpbmcgYnV0IHdlIGdldCB0aGUgMTA4MFAgbW9kZSB3b3JraW5nLgo+ID4KPiA+ID4g VW5sZXNzIHRoZSBFeHlub3MgRFNJTV9DT05GSUdfUkVHIHJlZ2lzdGVyIGJpdCBEU0lNX0JVUlNU X01PREUgWzFdCj4gPiA+IHJlY29uZmlndXJlcyB0aGUgY2xvY2sgc2V0dXAgb2YgdGhlIERTSSBi bG9jaywgdGhlbiBJIGRvbid0IHNlZSBob3cKPiA+ID4gdGhlIEV4eW5vcyBkcml2ZXIgY2FuIGZv bGxvdyB0aGUgRFNJIHNwZWMgaW4gdGhhdCByZWdhcmQuCj4gPgo+ID4gV2h5IGRvIHlvdSB0aGlu ayB0aGF0IHRoZSBFeHlub3MgZHJpdmVyIGlzbid0IGZvbGxvd2luZyB0aGUgc3BlYz8gV2UKPiA+ IGNvbmZpZ3VyZSB0aGUgaG9zdCBpbnRvIHZpZGVvIG1vZGUgd2l0aCBzeW5jIHNpZ25hbHMgd2hp Y2ggaXMgd29ya2luZwo+ID4gZm9yIHRoZSAxMDgwUCBtb2RlLgo+IAo+IDEwODBwIGlzIHdvcmtp bmcgd2l0aCBzYW1zdW5nLGJ1cnN0LWNsb2NrLWZyZXF1ZW5jeSBzZXR0aW5nPwoKWWVzLgoKPiBB cyBJIHNheSwgSSd2ZSBub3Qgd29ya2VkIHdpdGggdGhpcyBJUCwgSSdtIG9ubHkgbG9va2luZyBh dCBpdCBmcm9tCj4gdGhlIG91dHNpZGUgaGF2aW5nIHNwZW50IGZhciB0b28gbXVjaCB0aW1lIHJl Y2VudGx5IG9uIHRoZSBQaSBEU0kKPiBpbnRlcmZhY2UuCgpHb29kIHRvIGtub3cgOikKCj4gZXh5 bm9zX2RybV9kc2kuYyBzZWVtcyB0byBiZSBkb2luZyBhIGxvdCBvZiBQTEwgY29tcHV0YXRpb24g YXJvdW5kCj4gYnVyc3QtY2xvY2stZnJlcXVlbmN5LCBhbmQgbm90aGluZyB3aXRoIHRoZSBwaXhl bCBjbG9jayByYXRlLgoKWWVzIGN1cnJlbnRseSB0aGVyZSBpcyBqdXN0IHRoaXMgc2V0dGluZyBm b3Igc2V0dGluZyB0aGUgUExMIGZyZXEuIGJ1dAphcyB5b3Ugc2FpZCBmb3IgdGhlICJOb24tQnVy c3QgTW9kZSB3aXRoIFN5bmMgUHVsc2VzIiB3ZSBuZWVkIHRvCnJlY29uZmlndXJlIGl0IGFjY29y ZGluZyB0aGUgcmVxdWlyZWQgYmFuZHdpZHRoIG9yIHRoZSBkc2ktZGV2aWNlIHRlbGxzCnVzIGFi b3V0IHdoaWNoIGRzaS1saW5rIHNldHRpbmdzIHNob3VsZCBiZSBhcHBsaWVkLgoKPiBXaXRob3V0 IGtub3dsZWRnZSBvZiB3aGF0IHRoYXQgRFNJTV9CVVJTVF9NT0RFIGJpdCBpbiBEU0lNX0NPTkZJ R19SRUcKPiBhY3R1YWxseSBkb2VzIGluIHRoZSBoYXJkd2FyZSwgSSBjYW4gb25seSBtYWtlIGd1 ZXNzZXMuCgo4PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAgU2VsZWN0cyBCdXJzdCBtb2RlIGluIFZpZGVvIG1vZGUKCiAgIEluIE5vbi1idXJzdCBtb2Rl LCBSR0IgZGF0YSBhcmVhIGlzIGZpbGxlZCB3aXRoIFJHQiBkYXRhIGFuZCBOdWxsCiAgIHBhY2tl dHMsIGFjY29yZGluZyB0byBpbnB1dCBiYW5kd2lkdGggb2YgUkdCIGludGVyZmFjZS4KICAgCiAg IEluIEJ1cnN0IG1vZGUsIFJHQiBkYXRhIGFyZWEgaXMgZmlsbGVkIHdpdGggUkdCIGRhdGEgb25s eS4KCiAgIDAgPSBOb24tYnVyc3QgbW9kZQogICAxID0gQnVyc3QgbW9kZQo4PC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkFjY29yZGluZyB0aGUgY3VycmVu dCBpbXBsZW1lbnRhdGlvbiB3ZSBhcmUgaW4gTm9uLWJ1cnN0IG1vZGUuCgpSZWdhcmRzLAogIE1h cmNvCgo+IFBlcmhhcHMgaXQgZG9lcyBkaXRjaCB0aGUgYnVyc3QgY2xvY2sgYW5kIHN3aXRjaCB0 aGUgYml0IGNsb2NrIHRvIGJlCj4gZGVyaXZlZCBmcm9tIHRoZSBwaXhlbCBjbG9jayBvZiB0aGUg dXBzdHJlYW0gYmxvY2ssIGJ1dCB0aGF0IHNlZW1zCj4gdW5saWtlbHkuCj4gCj4gICBEYXZlCj4g CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==