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 B5BD1C6FD1C for ; Sat, 25 Mar 2023 19:00:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229582AbjCYTAa (ORCPT ); Sat, 25 Mar 2023 15:00:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229564AbjCYTA3 (ORCPT ); Sat, 25 Mar 2023 15:00:29 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 128E6CC04 for ; Sat, 25 Mar 2023 12:00:28 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id s8so6326919lfr.8 for ; Sat, 25 Mar 2023 12:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679770826; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=yNSNQHiJruuk+O1hCrFKL1wyio5CYnytaf4dbpeDgFY=; b=EWIyx3YM6vIJ9ONLKTJykSnsWgvaTzHsvXW41cV5YZHzTr/BbPuDLZhUHjFPQKLhFU tmwK5HhT/Ex3gF/67nMI1fM/0NtjO0mitDDEAik7xDLwl7RPC84/77KC9m22qVVbwHgJ ncgXAZeqPAD3omhzZh/L7JRT+NII+RaP7mEik7/Mfva4ZxN4Sn5lTWA3KL0iE2RFvHhh sjhSC5G9AWSrkrSIIX0YZ32qEPIdRc6HqQLy1ZxsYNxCntPJMml9M8YQSaiCTf0tMZj2 +cENYXchea7Cu/ZWjubMHsDxJtMoTDF+5ya7z8dgcjRi/IWYH81tEaVj74JjvCKWHCR/ BAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679770826; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=yNSNQHiJruuk+O1hCrFKL1wyio5CYnytaf4dbpeDgFY=; b=PYWB56mG1pIzw+AJITJnqwkviBj8HRhu56ZcTz215NudbUAL8OCrZLYNt8XUECfUu5 pNqIVayxmD7z4FWxIzNFIs29pEEs2ENO5buoKm5rTat5QpYDGuKmptulrhCnZ34ShR41 xVA1UMipFTUY/5jVmXITnlYjymMl1RhzEtOzI8G6J++9EfO3L+Bq+zCu7h6fjGkfpuE1 wYFQ41CjsKkcIFKJiICqxONFUyp1zlLGrR2kWTXX9hrqC3UmHn8CKjVupxN3ygFX0T9x u/IBAbRCgmvuYoAZWg9MrhS76a2ag6sbV6s/lqAmuuCTj4SBxVLtTnSSzeLjvebXheA5 rRPg== X-Gm-Message-State: AAQBX9dv5pumk34ibaNS1TLXKSxWFfLbWJxs6ltyZKqfInoP4F29srJv 6zKxCmL+yFYytuIHAY7xsek= X-Google-Smtp-Source: AKy350YngVFUxD7u09eEZEJfOPCWgh0ZtJzsky3j1HfF2NZO07bL1q48DZDxI+9PY9ZPQtDBSR69nQ== X-Received: by 2002:ac2:446f:0:b0:4dd:a61c:8f74 with SMTP id y15-20020ac2446f000000b004dda61c8f74mr2262939lfl.51.1679770826063; Sat, 25 Mar 2023 12:00:26 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id t18-20020ac243b2000000b004e92c0ed7a0sm3907519lfl.100.2023.03.25.12.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 12:00:25 -0700 (PDT) From: Sergey Organov To: Stefan Wahren Cc: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= , Fabio Estevam , Ilpo =?utf-8?Q?J=C3=A4rvinen?= , Stefan Wahren , linux-serial@vger.kernel.org, Greg Kroah-Hartman , Sascha Hauer , NXP Linux Team , Pengutronix Kernel Team , Shawn Guo , Jiri Slaby , Tomasz =?utf-8?Q?Mo=C5=84?= , Linux ARM Subject: Re: Regression: serial: imx: overrun errors on debug UART References: <2c29454b-9369-4360-8eb4-c151f59460cb@i2se.com> <9e22f237-f3ee-0415-9e6b-89a137769b8f@i2se.com> <5d59dec6-9f6f-7b20-1221-f57c94b29cca@i2se.com> <20230325151100.mskydt3hwbnspqp4@pengutronix.de> <07d37e3e-dfe2-9e6e-a981-8d3c6a9fc5f5@i2se.com> Date: Sat, 25 Mar 2023 22:00:24 +0300 In-Reply-To: <07d37e3e-dfe2-9e6e-a981-8d3c6a9fc5f5@i2se.com> (Stefan Wahren's message of "Sat, 25 Mar 2023 18:05:10 +0100") Message-ID: <878rfk64hj.fsf@osv.gnss.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-serial@vger.kernel.org Hello, Stefan Wahren writes: > Hi Uwe, > > Am 25.03.23 um 16:11 schrieb Uwe Kleine-König: >> Hello, >> On Sat, Mar 25, 2023 at 12:31:01PM +0100, Stefan Wahren wrote: >>> Am 24.03.23 um 16:00 schrieb Stefan Wahren: >>>> Am 24.03.23 um 13:57 schrieb Fabio Estevam: >>>>> On Fri, Mar 24, 2023 at 8:48 AM Ilpo Järvinen >>>>> wrote: >>>>> >>>>>> This has come up earlier, see e.g.: >>>>>> >>>>>> https://lore.kernel.org/linux-serial/20221003110850.GA28338@francesco-nb.int.toradex.com/ >>>>>> >>>>>> My somewhat uninformed suggestion: if the overrun problems >>>>>> mostly show up >>>>>> with console ports, maybe the trigger level could depend on the port >>>>>> being a console or not? >>>>> Does the change below help? Taking Ilpo's suggestion into account: >>>> this breaks the boot / debug console completely, but i got the idea. >>>>> >>> >>> based on your patch, i successfully tested this: >>> >>> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c >>> index f07c4f9ff13c..1aacaa637ede 100644 >>> --- a/drivers/tty/serial/imx.c >>> +++ b/drivers/tty/serial/imx.c >>> @@ -1277,6 +1277,7 @@ static void imx_uart_clear_rx_errors(struct imx_port >>> *sport) >>> } >>> >>> #define TXTL_DEFAULT 2 /* reset default */ >>> +#define RXTL_DEFAULT_CONSOLE 1 /* reset default */ >>> #define RXTL_DEFAULT 8 /* 8 characters or aging timer */ >>> #define TXTL_DMA 8 /* DMA burst setting */ >>> #define RXTL_DMA 9 /* DMA burst setting */ >>> @@ -1286,6 +1287,9 @@ static void imx_uart_setup_ufcr(struct imx_port >>> *sport, >>> { >>> unsigned int val; >>> >>> + if (uart_console(&sport->port)) >>> + rxwl = RXTL_DEFAULT_CONSOLE; // fallback >>> + >>> /* set receiver / transmitter trigger level */ >>> val = imx_uart_readl(sport, UFCR) & (UFCR_RFDIV | UFCR_DCEDTE); >>> val |= txwl << UFCR_TXTL_SHF | rxwl; >> So the current theory that the issue occurs because of a combination of: >> - With a higher watermark value the irq triggers later and so there is >> less time the until the ISR must run before an overflow happens; and >> - serial console activity disables irqs for a (relative) long time >> right? >> So on an UP system the problem should occur also on a non-console port? > > This is less likely, because UART applications usually need some kind > of flow control (either from hardware or protocol side). For a > non-console application the receiver usually wait until the end and > then starts to transmit. Only CTS/RTS hardware handshake could help, as otherwise printk() output is typically entirely async with respect to transmissions on another port, and software protocol(s) then are irrelevant, unless they enforce extremely short chunks of data (less than FIFO size). > Sure you can flood the UART with characters and it's only a question > of time until the RX FIFO is full and data get lost. In correctly working RT system this doesn't typically happen, as CPUs are way faster than typical UART speeds, and are able to handle the loads easily, provided UART has decent FIFO. It's disabling IRQs for prolonged times that makes shit happen. [...] > > According to these lines in imx.c DMA is never used for console: > > /* Can we enable the DMA support? */ > if (!uart_console(port) && imx_uart_dma_init(sport) == 0) > dma_is_inited = 1; > > At the end the patch above only restores the old console behavior, but > keep Tomasz Moń's optimization for non-console (which was indented > for). So this will likely only be of help for this particular case, and will leave the problem there on other DMA-disabled ports. To "fix" this, the old threshold is to be returned on all DMA-disabled ports, and then the Tomasz original patch would be entirely reverted, it seems. Disclaimer: all the above is said on the assumption that it's printk that is core cause of the problem in this case, that has not yet been shown in testing, as far as I know. Best regards, -- Sergey 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 18FCAC6FD1F for ; Sat, 25 Mar 2023 19:01:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:In-Reply-To: Date:References: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=Uf5TXKuwt3MJrjZMYOWrIF2//hK+lnOY5WqTeSZY9+Q=; b=FJWYRJ1LmV+Tb9 jtq51lQH4WMcT4GencK7xeXk75JMkYhQYvOCRzbRTyZrxxP2Ulj5WO60yVAmuoAP4W1WCF/XRMFar 1M0aLLXAEIErK//CWVC5NAAXixJCkRDnWk37NvwWKAhtoUhxteaPI/VwTNeaj3gYOT4GWo1zj6qAh ToHXZYYDEWESO40aMMlX8Xiss7NMACb+gU65tveCiZnvwNZn2rfw9vKIi+aH/kQBy1x19dZxqDmXV 2catQ/LjJAk5NXrwE0bjTFOrgFybzeTVf0Xm1HEVYqf3cWmrHEflhD6JNBpe6/6MgtWw5hIINnnRK z9xOVUfNEb4N68Nya+cA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pg97x-007BCQ-1N; Sat, 25 Mar 2023 19:00:33 +0000 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pg97u-007BAw-0U for linux-arm-kernel@lists.infradead.org; Sat, 25 Mar 2023 19:00:31 +0000 Received: by mail-lf1-x136.google.com with SMTP id s8so6326932lfr.8 for ; Sat, 25 Mar 2023 12:00:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679770826; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=yNSNQHiJruuk+O1hCrFKL1wyio5CYnytaf4dbpeDgFY=; b=EWIyx3YM6vIJ9ONLKTJykSnsWgvaTzHsvXW41cV5YZHzTr/BbPuDLZhUHjFPQKLhFU tmwK5HhT/Ex3gF/67nMI1fM/0NtjO0mitDDEAik7xDLwl7RPC84/77KC9m22qVVbwHgJ ncgXAZeqPAD3omhzZh/L7JRT+NII+RaP7mEik7/Mfva4ZxN4Sn5lTWA3KL0iE2RFvHhh sjhSC5G9AWSrkrSIIX0YZ32qEPIdRc6HqQLy1ZxsYNxCntPJMml9M8YQSaiCTf0tMZj2 +cENYXchea7Cu/ZWjubMHsDxJtMoTDF+5ya7z8dgcjRi/IWYH81tEaVj74JjvCKWHCR/ BAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679770826; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=yNSNQHiJruuk+O1hCrFKL1wyio5CYnytaf4dbpeDgFY=; b=g+jFiLBwrqv/073y7n8we7yBYSJAAp6Kdz62FVy55v7p9AySz6zehO9kESphBvOlfP xHtw5ozcL14Z14o+5Hq9sZcsRl0RGEG2/iakLFtoCXlRGw/9UyjPf5NLLuEiBdRvcr1+ +zHUykGVRcmlUtisuSrUg45wXvDQuUK7/4OiM3OEjOep5mCyrBFyFnaWaSn8wxj0M0Mk a39SyWEg20Ny+Ox1ksCcdmoUPNIZLRxSWr/ikbT15pDhLNdhmZK8rWDn5/50K+6On5su Is49iJnu6LyF7tF21F79Qk7xxYv4NR31VRXoHb6C9qu11lDJRilO9UFDBS4vBTRz+3hF WWgA== X-Gm-Message-State: AAQBX9eKamH0EHEFae/X1KC7q8/g+ZGN0AxdvnB3UADsTjBGEq0QWchR QoPXyXSbiV2hYO844HjEQsoeBKNVl9c= X-Google-Smtp-Source: AKy350YngVFUxD7u09eEZEJfOPCWgh0ZtJzsky3j1HfF2NZO07bL1q48DZDxI+9PY9ZPQtDBSR69nQ== X-Received: by 2002:ac2:446f:0:b0:4dd:a61c:8f74 with SMTP id y15-20020ac2446f000000b004dda61c8f74mr2262939lfl.51.1679770826063; Sat, 25 Mar 2023 12:00:26 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id t18-20020ac243b2000000b004e92c0ed7a0sm3907519lfl.100.2023.03.25.12.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Mar 2023 12:00:25 -0700 (PDT) From: Sergey Organov To: Stefan Wahren Cc: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= , Fabio Estevam , Ilpo =?utf-8?Q?J=C3=A4rvinen?= , Stefan Wahren , linux-serial@vger.kernel.org, Greg Kroah-Hartman , Sascha Hauer , NXP Linux Team , Pengutronix Kernel Team , Shawn Guo , Jiri Slaby , Tomasz =?utf-8?Q?Mo=C5=84?= , Linux ARM Subject: Re: Regression: serial: imx: overrun errors on debug UART References: <2c29454b-9369-4360-8eb4-c151f59460cb@i2se.com> <9e22f237-f3ee-0415-9e6b-89a137769b8f@i2se.com> <5d59dec6-9f6f-7b20-1221-f57c94b29cca@i2se.com> <20230325151100.mskydt3hwbnspqp4@pengutronix.de> <07d37e3e-dfe2-9e6e-a981-8d3c6a9fc5f5@i2se.com> Date: Sat, 25 Mar 2023 22:00:24 +0300 In-Reply-To: <07d37e3e-dfe2-9e6e-a981-8d3c6a9fc5f5@i2se.com> (Stefan Wahren's message of "Sat, 25 Mar 2023 18:05:10 +0100") Message-ID: <878rfk64hj.fsf@osv.gnss.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230325_120030_206005_09151F01 X-CRM114-Status: GOOD ( 25.40 ) 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 SGVsbG8sCgpTdGVmYW4gV2FocmVuIDxzdGVmYW4ud2FocmVuQGkyc2UuY29tPiB3cml0ZXM6Cgo+ IEhpIFV3ZSwKPgo+IEFtIDI1LjAzLjIzIHVtIDE2OjExIHNjaHJpZWIgVXdlIEtsZWluZS1Lw7Zu aWc6Cj4+IEhlbGxvLAo+PiBPbiBTYXQsIE1hciAyNSwgMjAyMyBhdCAxMjozMTowMVBNICswMTAw LCBTdGVmYW4gV2FocmVuIHdyb3RlOgo+Pj4gQW0gMjQuMDMuMjMgdW0gMTY6MDAgc2NocmllYiBT dGVmYW4gV2FocmVuOgo+Pj4+IEFtIDI0LjAzLjIzIHVtIDEzOjU3IHNjaHJpZWIgRmFiaW8gRXN0 ZXZhbToKPj4+Pj4gT24gRnJpLCBNYXIgMjQsIDIwMjMgYXQgODo0OOKAr0FNIElscG8gSsOkcnZp bmVuCj4+Pj4+IDxpbHBvLmphcnZpbmVuQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+Pj4+Cj4+ Pj4+PiBUaGlzIGhhcyBjb21lIHVwIGVhcmxpZXIsIHNlZSBlLmcuOgo+Pj4+Pj4KPj4+Pj4+IGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXNlcmlhbC8yMDIyMTAwMzExMDg1MC5HQTI4MzM4 QGZyYW5jZXNjby1uYi5pbnQudG9yYWRleC5jb20vCj4+Pj4+Pgo+Pj4+Pj4gTXkgc29tZXdoYXQg dW5pbmZvcm1lZCBzdWdnZXN0aW9uOiBpZiB0aGUgb3ZlcnJ1biBwcm9ibGVtcwo+Pj4+Pj4gbW9z dGx5IHNob3cgdXAKPj4+Pj4+IHdpdGggY29uc29sZSBwb3J0cywgbWF5YmUgdGhlIHRyaWdnZXIg bGV2ZWwgY291bGQgZGVwZW5kIG9uIHRoZSBwb3J0Cj4+Pj4+PiBiZWluZyBhIGNvbnNvbGUgb3Ig bm90Pwo+Pj4+PiBEb2VzIHRoZSBjaGFuZ2UgYmVsb3cgaGVscD8gVGFraW5nIElscG8ncyBzdWdn ZXN0aW9uIGludG8gYWNjb3VudDoKPj4+PiB0aGlzIGJyZWFrcyB0aGUgYm9vdCAvIGRlYnVnIGNv bnNvbGUgY29tcGxldGVseSwgYnV0IGkgZ290IHRoZSBpZGVhLgo+Pj4+Pgo+Pj4KPj4+IGJhc2Vk IG9uIHlvdXIgcGF0Y2gsIGkgc3VjY2Vzc2Z1bGx5IHRlc3RlZCB0aGlzOgo+Pj4KPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaW14 LmMKPj4+IGluZGV4IGYwN2M0ZjlmZjEzYy4uMWFhY2FhNjM3ZWRlIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCj4+PiArKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaW14 LmMKPj4+IEBAIC0xMjc3LDYgKzEyNzcsNyBAQCBzdGF0aWMgdm9pZCBpbXhfdWFydF9jbGVhcl9y eF9lcnJvcnMoc3RydWN0IGlteF9wb3J0Cj4+PiAqc3BvcnQpCj4+PiAgIH0KPj4+Cj4+PiAgICNk ZWZpbmUgVFhUTF9ERUZBVUxUIDIgLyogcmVzZXQgZGVmYXVsdCAqLwo+Pj4gKyNkZWZpbmUgUlhU TF9ERUZBVUxUX0NPTlNPTEUgMSAvKiByZXNldCBkZWZhdWx0ICovCj4+PiAgICNkZWZpbmUgUlhU TF9ERUZBVUxUIDggLyogOCBjaGFyYWN0ZXJzIG9yIGFnaW5nIHRpbWVyICovCj4+PiAgICNkZWZp bmUgVFhUTF9ETUEgOCAvKiBETUEgYnVyc3Qgc2V0dGluZyAqLwo+Pj4gICAjZGVmaW5lIFJYVExf RE1BIDkgLyogRE1BIGJ1cnN0IHNldHRpbmcgKi8KPj4+IEBAIC0xMjg2LDYgKzEyODcsOSBAQCBz dGF0aWMgdm9pZCBpbXhfdWFydF9zZXR1cF91ZmNyKHN0cnVjdCBpbXhfcG9ydAo+Pj4gKnNwb3J0 LAo+Pj4gICB7Cj4+PiAgIAl1bnNpZ25lZCBpbnQgdmFsOwo+Pj4KPj4+ICsJaWYgKHVhcnRfY29u c29sZSgmc3BvcnQtPnBvcnQpKQo+Pj4gKwkJcnh3bCA9IFJYVExfREVGQVVMVF9DT05TT0xFOyAv LyBmYWxsYmFjawo+Pj4gKwo+Pj4gICAJLyogc2V0IHJlY2VpdmVyIC8gdHJhbnNtaXR0ZXIgdHJp Z2dlciBsZXZlbCAqLwo+Pj4gICAJdmFsID0gaW14X3VhcnRfcmVhZGwoc3BvcnQsIFVGQ1IpICYg KFVGQ1JfUkZESVYgfCBVRkNSX0RDRURURSk7Cj4+PiAgIAl2YWwgfD0gdHh3bCA8PCBVRkNSX1RY VExfU0hGIHwgcnh3bDsKPj4gU28gdGhlIGN1cnJlbnQgdGhlb3J5IHRoYXQgdGhlIGlzc3VlIG9j Y3VycyBiZWNhdXNlIG9mIGEgY29tYmluYXRpb24gb2Y6Cj4+ICAgLSBXaXRoIGEgaGlnaGVyIHdh dGVybWFyayB2YWx1ZSB0aGUgaXJxIHRyaWdnZXJzIGxhdGVyIGFuZCBzbyB0aGVyZSBpcwo+PiAg ICAgbGVzcyB0aW1lIHRoZSB1bnRpbCB0aGUgSVNSIG11c3QgcnVuIGJlZm9yZSBhbiBvdmVyZmxv dyBoYXBwZW5zOyBhbmQKPj4gICAtIHNlcmlhbCBjb25zb2xlIGFjdGl2aXR5IGRpc2FibGVzIGly cXMgZm9yIGEgKHJlbGF0aXZlKSBsb25nIHRpbWUKPj4gcmlnaHQ/Cj4+IFNvIG9uIGFuIFVQIHN5 c3RlbSB0aGUgcHJvYmxlbSBzaG91bGQgb2NjdXIgYWxzbyBvbiBhIG5vbi1jb25zb2xlIHBvcnQ/ Cj4KPiBUaGlzIGlzIGxlc3MgbGlrZWx5LCBiZWNhdXNlIFVBUlQgYXBwbGljYXRpb25zIHVzdWFs bHkgbmVlZCBzb21lIGtpbmQKPiBvZiBmbG93IGNvbnRyb2wgKGVpdGhlciBmcm9tIGhhcmR3YXJl IG9yIHByb3RvY29sIHNpZGUpLiBGb3IgYQo+IG5vbi1jb25zb2xlIGFwcGxpY2F0aW9uIHRoZSBy ZWNlaXZlciB1c3VhbGx5IHdhaXQgdW50aWwgdGhlIGVuZCBhbmQKPiB0aGVuIHN0YXJ0cyB0byB0 cmFuc21pdC4KCk9ubHkgQ1RTL1JUUyBoYXJkd2FyZSBoYW5kc2hha2UgY291bGQgaGVscCwgYXMg b3RoZXJ3aXNlIHByaW50aygpIG91dHB1dAppcyB0eXBpY2FsbHkgZW50aXJlbHkgYXN5bmMgd2l0 aCByZXNwZWN0IHRvIHRyYW5zbWlzc2lvbnMgb24gYW5vdGhlcgpwb3J0LCBhbmQgc29mdHdhcmUg cHJvdG9jb2wocykgdGhlbiBhcmUgaXJyZWxldmFudCwgdW5sZXNzIHRoZXkgZW5mb3JjZQpleHRy ZW1lbHkgc2hvcnQgY2h1bmtzIG9mIGRhdGEgKGxlc3MgdGhhbiBGSUZPIHNpemUpLgoKPiBTdXJl IHlvdSBjYW4gZmxvb2QgdGhlIFVBUlQgd2l0aCBjaGFyYWN0ZXJzIGFuZCBpdCdzIG9ubHkgYSBx dWVzdGlvbgo+IG9mIHRpbWUgdW50aWwgdGhlIFJYIEZJRk8gaXMgZnVsbCBhbmQgZGF0YSBnZXQg bG9zdC4KCkluIGNvcnJlY3RseSB3b3JraW5nIFJUIHN5c3RlbSB0aGlzIGRvZXNuJ3QgdHlwaWNh bGx5IGhhcHBlbiwgYXMgQ1BVcwphcmUgd2F5IGZhc3RlciB0aGFuIHR5cGljYWwgVUFSVCBzcGVl ZHMsIGFuZCBhcmUgYWJsZSB0byBoYW5kbGUgdGhlCmxvYWRzIGVhc2lseSwgcHJvdmlkZWQgVUFS VCBoYXMgZGVjZW50IEZJRk8uIEl0J3MgZGlzYWJsaW5nIElSUXMgZm9yCnByb2xvbmdlZCB0aW1l cyB0aGF0IG1ha2VzIHNoaXQgaGFwcGVuLgoKWy4uLl0KCj4KPiBBY2NvcmRpbmcgdG8gdGhlc2Ug bGluZXMgaW4gaW14LmMgRE1BIGlzIG5ldmVyIHVzZWQgZm9yIGNvbnNvbGU6Cj4KPiAgIC8qIENh biB3ZSBlbmFibGUgdGhlIERNQSBzdXBwb3J0PyAqLwo+ICAgaWYgKCF1YXJ0X2NvbnNvbGUocG9y dCkgJiYgaW14X3VhcnRfZG1hX2luaXQoc3BvcnQpID09IDApCj4gICAgIGRtYV9pc19pbml0ZWQg PSAxOwo+Cj4gQXQgdGhlIGVuZCB0aGUgcGF0Y2ggYWJvdmUgb25seSByZXN0b3JlcyB0aGUgb2xk IGNvbnNvbGUgYmVoYXZpb3IsIGJ1dAo+IGtlZXAgVG9tYXN6IE1vxYQncyBvcHRpbWl6YXRpb24g Zm9yIG5vbi1jb25zb2xlICh3aGljaCB3YXMgaW5kZW50ZWQKPiBmb3IpLgoKU28gdGhpcyB3aWxs IGxpa2VseSBvbmx5IGJlIG9mIGhlbHAgZm9yIHRoaXMgcGFydGljdWxhciBjYXNlLCBhbmQgd2ls bApsZWF2ZSB0aGUgcHJvYmxlbSB0aGVyZSBvbiBvdGhlciBETUEtZGlzYWJsZWQgcG9ydHMuIFRv ICJmaXgiIHRoaXMsIHRoZQpvbGQgdGhyZXNob2xkIGlzIHRvIGJlIHJldHVybmVkIG9uIGFsbCBE TUEtZGlzYWJsZWQgcG9ydHMsIGFuZCB0aGVuIHRoZQpUb21hc3ogb3JpZ2luYWwgcGF0Y2ggd291 bGQgYmUgZW50aXJlbHkgcmV2ZXJ0ZWQsIGl0IHNlZW1zLgoKRGlzY2xhaW1lcjogYWxsIHRoZSBh Ym92ZSBpcyBzYWlkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgaXQncyBwcmludGsKdGhhdCBpcyBj b3JlIGNhdXNlIG9mIHRoZSBwcm9ibGVtIGluIHRoaXMgY2FzZSwgdGhhdCBoYXMgbm90IHlldCBi ZWVuCnNob3duIGluIHRlc3RpbmcsIGFzIGZhciBhcyBJIGtub3cuCgpCZXN0IHJlZ2FyZHMsCi0t IFNlcmdleQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=