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 CD3A4C63797 for ; Tue, 17 Jan 2023 13:22:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236837AbjAQNW6 (ORCPT ); Tue, 17 Jan 2023 08:22:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234198AbjAQNW5 (ORCPT ); Tue, 17 Jan 2023 08:22:57 -0500 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2EA8E17CD3 for ; Tue, 17 Jan 2023 05:22:56 -0800 (PST) Received: by mail-ej1-x62c.google.com with SMTP id vw16so12162125ejc.12 for ; Tue, 17 Jan 2023 05:22:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=Blsf+gRJg9gUo6XZ6jKH4G1dD07rXbT7Kers4IPVu38=; b=i1i76At8CN1o+y5VDIMjAKt8L+TVKWExJqf5+xRoSdMYPcxUhduHZsERMp+sUyBwxb IgdXIzDMyNX//Dk1ru9Wfxu0yMb9cRTrKgxxYBqR2AF+Vx6aTLfAgDEQNBU2hkuR4hdu eCF7gRuebgFcvIFYPmKtY+rDJDgBmae+mtYoM3cRAcU33EL07X+9PPOdUw/jIOTQfppp ygd7961AvsFoQYEhWSvV38f7AZJ8VTvdgyE2LxzeSYzw9f98JV1SUmPCcNGOYr2sjAbC 999qglqf21EkIz+NhTjnP2+VxeeHN03ejLVzHs0mKqqGcUOxw4nnoAVH4vvm7MVa+NEb 3hyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=Blsf+gRJg9gUo6XZ6jKH4G1dD07rXbT7Kers4IPVu38=; b=GyGXqZDCcvy1NEzBQQiKePB8c3WSw+BneqhqtJ9CCc4Lv1odkUDN3MbQkTSBt0P49v 9Shc0EHpyuJdhjxjsvU7xh7kmUo03RZXq2RK6W9ihweZ7kRawGqYonVR2AYSLd+qvmVK TialmVBxHIaW8ep7r9TsVcrjiH4RpwLxX5WTD5djUHRQyliCFsw01vCtkJgVTvgopgcx gqpSpcP7WkHufVLujLvSqW0/qknLDapF/sLzuOnMaXu6prX7K6NyYesX3DXX96k035KB yHX8OtSCn6tHyd+kTUFawaDnrGfHIL7Ch8/k8uks0y5A9Hw10V/Q2TQ2ScU4A9075ZVY a+2w== X-Gm-Message-State: AFqh2krKyGSeeuNMzCFEDLQAL/ERUT4FsQ3HYnG8NMEXKdccHBY5Q+nT pBvsqwYoly3Fe2ZnK5nsnD0= X-Google-Smtp-Source: AMrXdXs6GncVHH2THrAn4VgpKJPi53I7rngdKJfQ3n/QlgOAtWxBDqQLJmf4t7aXjSyRynPTiw9MRw== X-Received: by 2002:a17:907:2587:b0:847:410:ecf0 with SMTP id ad7-20020a170907258700b008470410ecf0mr2730163ejc.20.1673961774554; Tue, 17 Jan 2023 05:22:54 -0800 (PST) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id hp24-20020a1709073e1800b008720c458bd4sm1476682ejc.3.2023.01.17.05.22.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 05:22:53 -0800 (PST) From: Sergey Organov To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: linux-serial@vger.kernel.org, Jiri Slaby , Richard Genoud , Greg Kroah-Hartman , Sascha Hauer , Tomasz =?utf-8?Q?Mo=C5=84?= , NXP Linux Team , Pengutronix Kernel Team , Shawn Guo , Fabio Estevam , Tim Harvey , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 7/8] serial: imx: use readl() to optimize FIFO reading loop References: <87bko4e65y.fsf@osv.gnss.ru> <20230113184334.287130-1-sorganov@gmail.com> <20230113184334.287130-8-sorganov@gmail.com> <20230117113205.l5byaz3srzpagzhz@pengutronix.de> Date: Tue, 17 Jan 2023 16:22:51 +0300 In-Reply-To: <20230117113205.l5byaz3srzpagzhz@pengutronix.de> ("Uwe =?utf-8?Q?Kleine-K=C3=B6nig=22's?= message of "Tue, 17 Jan 2023 12:32:05 +0100") Message-ID: <87bkmx47o4.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 Uwe Kleine-König writes: > On Fri, Jan 13, 2023 at 09:43:33PM +0300, Sergey Organov wrote: >> Use readl() instead of heavier imx_uart_readl() in the Rx ISR, as we know >> we read registers that must not be cached. >> >> Signed-off-by: Sergey Organov >> --- >> drivers/tty/serial/imx.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c >> index be00362b8b67..f4236e8995fa 100644 >> --- a/drivers/tty/serial/imx.c >> +++ b/drivers/tty/serial/imx.c >> @@ -890,14 +890,15 @@ static irqreturn_t __imx_uart_rxint(int irq, void *dev_id) >> struct imx_port *sport = dev_id; >> unsigned int rx, flg; >> struct tty_port *port = &sport->port.state->port; >> + typeof(sport->port.membase) membase = sport->port.membase; >> u32 usr2; >> >> /* If we received something, check for 0xff flood */ >> - usr2 = imx_uart_readl(sport, USR2); >> + usr2 = readl(membase + USR2); >> if (usr2 & USR2_RDR) >> imx_uart_check_flood(sport, usr2); >> >> - while ((rx = imx_uart_readl(sport, URXD0)) & URXD_CHARRDY) { >> + while ((rx = readl(membase + URXD0)) & URXD_CHARRDY) { >> flg = TTY_NORMAL; >> sport->port.icount.rx++; > > One of the motivations to introduce imx_uart_readl was to have a single > place to add a debug output to be able to inspect what the driver is > doing. > > I wonder where your need for higher speed comes from and if the compiler > really generates more effective code with your change. Mostly it's because I'm obviously slowing things down a bit with the patch to fight the flood, so I feel obliged to get things back on par with the origin. Then, higher speed, let alone the time spent with interrupts disabled and/or spinlocks taken, is always one of generic goals for me. As for the generated code, with this patch I don't aim to affect code generation, I rather avoid execution of part of existing code while being on the most critical path. It should be quite obvious that not executing some code is at least not slower than executing it. > > Please either drop the patch from your series or provide the differences > the compiler produces and a benchmark. If your only objection against this patch is the desire to keep a single place to add debug output, I'll be happy to tune the resulting code to still have one. That said, before we make a decision, could you please tell why register shadows that the imx_uart_readl/writel are dealing with are needed in the first place? It looks like all the registers that are shadowed are readable as well. What's going on here, and if it happens to be a speed-up, do we have any benchmarks? Thanks, -- Sergey Organov 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 08CBCC63797 for ; Tue, 17 Jan 2023 13:24:08 +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=SA0+TUeozbdQbnfzALqU03scgAo1u/YXGG9v3DCHvRU=; b=5CsvAOQcVcoBdC 2ojttn2DxOoY7ngdcQQ2wqc1SYcjl9f1K85z5uFI4tyWxPLLvtf0P4DCaC88O8HPVqk7Q9/yA1O5w SXtgktGhTR2/3YqmIffU1ov1594J5Da5fvgdN4nPQkW3R5d1eAfDdKR8JYnXfCB9J9axkpZubmA4N H2r4DK6JFjCRiT1fSzIqMR+icrncPrneVbZT/7GzoRJuqX3sYayn+NYNYiJJw3JToU/YKJOoEow5A Hob/yM7vu77z8akxVJosMwmyUKCRiEoNzZrU+dPzU6JnNOm9dSMm5Xe8Vu6o8kzvg0qZiug0RryKF DOcA9XLKb8Gy9xrWCv+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pHlvc-00ELSi-Sd; Tue, 17 Jan 2023 13:23:05 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pHlvZ-00ELRW-Lv for linux-arm-kernel@lists.infradead.org; Tue, 17 Jan 2023 13:23:03 +0000 Received: by mail-ej1-x636.google.com with SMTP id az20so56206985ejc.1 for ; Tue, 17 Jan 2023 05:22:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=Blsf+gRJg9gUo6XZ6jKH4G1dD07rXbT7Kers4IPVu38=; b=i1i76At8CN1o+y5VDIMjAKt8L+TVKWExJqf5+xRoSdMYPcxUhduHZsERMp+sUyBwxb IgdXIzDMyNX//Dk1ru9Wfxu0yMb9cRTrKgxxYBqR2AF+Vx6aTLfAgDEQNBU2hkuR4hdu eCF7gRuebgFcvIFYPmKtY+rDJDgBmae+mtYoM3cRAcU33EL07X+9PPOdUw/jIOTQfppp ygd7961AvsFoQYEhWSvV38f7AZJ8VTvdgyE2LxzeSYzw9f98JV1SUmPCcNGOYr2sjAbC 999qglqf21EkIz+NhTjnP2+VxeeHN03ejLVzHs0mKqqGcUOxw4nnoAVH4vvm7MVa+NEb 3hyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=Blsf+gRJg9gUo6XZ6jKH4G1dD07rXbT7Kers4IPVu38=; b=XOZXlRAZbHZknYXMVgU+tYb1S8k45mmoI3kUi4LrsVhedwGx6Gs3E6h4z2UNO/5eUH jqdRtO+zP5bcDlU+8hs/wuIp9h3v/N4wNqKYELpom6P+j1gdAEGSuLlvaokkRwDLaBAa DLbbx8imKaRZLuPgJXSTpSvh1cWw03UEFlQHTybzG1VvajGeMPvh7a3rOiLZYTvKzFGF a+tWrR1AUbzkF76IYmX8I5faBNIuixPQy12IZX2iXsSHaX6HYdNYEskDA3l+5D4pKAG7 RIXpzNx5ifRRdvjrxAD2Z2qLXxPFxxVyd9e9vnBZ3YReItrWzdqOvcDz0ko/UO9lVff6 hk5A== X-Gm-Message-State: AFqh2kowbZL2WsAszMQAXjny30lkDGOldm2der6z0+5wgCHqGRqUCfwj uF18KpGdtZiaHAnfiz7tFk1pkD3vyMg= X-Google-Smtp-Source: AMrXdXs6GncVHH2THrAn4VgpKJPi53I7rngdKJfQ3n/QlgOAtWxBDqQLJmf4t7aXjSyRynPTiw9MRw== X-Received: by 2002:a17:907:2587:b0:847:410:ecf0 with SMTP id ad7-20020a170907258700b008470410ecf0mr2730163ejc.20.1673961774554; Tue, 17 Jan 2023 05:22:54 -0800 (PST) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id hp24-20020a1709073e1800b008720c458bd4sm1476682ejc.3.2023.01.17.05.22.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 05:22:53 -0800 (PST) From: Sergey Organov To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: linux-serial@vger.kernel.org, Jiri Slaby , Richard Genoud , Greg Kroah-Hartman , Sascha Hauer , Tomasz =?utf-8?Q?Mo=C5=84?= , NXP Linux Team , Pengutronix Kernel Team , Shawn Guo , Fabio Estevam , Tim Harvey , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 7/8] serial: imx: use readl() to optimize FIFO reading loop References: <87bko4e65y.fsf@osv.gnss.ru> <20230113184334.287130-1-sorganov@gmail.com> <20230113184334.287130-8-sorganov@gmail.com> <20230117113205.l5byaz3srzpagzhz@pengutronix.de> Date: Tue, 17 Jan 2023 16:22:51 +0300 In-Reply-To: <20230117113205.l5byaz3srzpagzhz@pengutronix.de> ("Uwe =?utf-8?Q?Kleine-K=C3=B6nig=22's?= message of "Tue, 17 Jan 2023 12:32:05 +0100") Message-ID: <87bkmx47o4.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-20230117_052301_735422_2A591D63 X-CRM114-Status: GOOD ( 27.65 ) 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 VXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25peC5kZT4gd3JpdGVz OgoKPiBPbiBGcmksIEphbiAxMywgMjAyMyBhdCAwOTo0MzozM1BNICswMzAwLCBTZXJnZXkgT3Jn YW5vdiB3cm90ZToKPj4gVXNlIHJlYWRsKCkgaW5zdGVhZCBvZiBoZWF2aWVyIGlteF91YXJ0X3Jl YWRsKCkgaW4gdGhlIFJ4IElTUiwgYXMgd2Uga25vdwo+PiB3ZSByZWFkIHJlZ2lzdGVycyB0aGF0 IG11c3Qgbm90IGJlIGNhY2hlZC4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IFNlcmdleSBPcmdhbm92 IDxzb3JnYW5vdkBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy90dHkvc2VyaWFsL2lteC5j IHwgNSArKystLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMgYi9kcml2 ZXJzL3R0eS9zZXJpYWwvaW14LmMKPj4gaW5kZXggYmUwMDM2MmI4YjY3Li5mNDIzNmU4OTk1ZmEg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pbXguYwo+PiArKysgYi9kcml2ZXJz L3R0eS9zZXJpYWwvaW14LmMKPj4gQEAgLTg5MCwxNCArODkwLDE1IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBfX2lteF91YXJ0X3J4aW50KGludCBpcnEsIHZvaWQgKmRldl9pZCkKPj4gIAlzdHJ1Y3Qg aW14X3BvcnQgKnNwb3J0ID0gZGV2X2lkOwo+PiAgCXVuc2lnbmVkIGludCByeCwgZmxnOwo+PiAg CXN0cnVjdCB0dHlfcG9ydCAqcG9ydCA9ICZzcG9ydC0+cG9ydC5zdGF0ZS0+cG9ydDsKPj4gKwl0 eXBlb2Yoc3BvcnQtPnBvcnQubWVtYmFzZSkgbWVtYmFzZSA9IHNwb3J0LT5wb3J0Lm1lbWJhc2U7 Cj4+ICAJdTMyIHVzcjI7Cj4+ICAKPj4gIAkvKiBJZiB3ZSByZWNlaXZlZCBzb21ldGhpbmcsIGNo ZWNrIGZvciAweGZmIGZsb29kICovCj4+IC0JdXNyMiA9IGlteF91YXJ0X3JlYWRsKHNwb3J0LCBV U1IyKTsKPj4gKwl1c3IyID0gcmVhZGwobWVtYmFzZSArIFVTUjIpOwo+PiAgCWlmICh1c3IyICYg VVNSMl9SRFIpCj4+ICAJCWlteF91YXJ0X2NoZWNrX2Zsb29kKHNwb3J0LCB1c3IyKTsKPj4gIAo+ PiAtCXdoaWxlICgocnggPSBpbXhfdWFydF9yZWFkbChzcG9ydCwgVVJYRDApKSAmIFVSWERfQ0hB UlJEWSkgewo+PiArCXdoaWxlICgocnggPSByZWFkbChtZW1iYXNlICsgVVJYRDApKSAmIFVSWERf Q0hBUlJEWSkgewo+PiAgCQlmbGcgPSBUVFlfTk9STUFMOwo+PiAgCQlzcG9ydC0+cG9ydC5pY291 bnQucngrKzsKPgo+IE9uZSBvZiB0aGUgbW90aXZhdGlvbnMgdG8gaW50cm9kdWNlIGlteF91YXJ0 X3JlYWRsIHdhcyB0byBoYXZlIGEgc2luZ2xlCj4gcGxhY2UgdG8gYWRkIGEgZGVidWcgb3V0cHV0 IHRvIGJlIGFibGUgdG8gaW5zcGVjdCB3aGF0IHRoZSBkcml2ZXIgaXMKPiBkb2luZy4KPgo+IEkg d29uZGVyIHdoZXJlIHlvdXIgbmVlZCBmb3IgaGlnaGVyIHNwZWVkIGNvbWVzIGZyb20gYW5kIGlm IHRoZSBjb21waWxlcgo+IHJlYWxseSBnZW5lcmF0ZXMgbW9yZSBlZmZlY3RpdmUgY29kZSB3aXRo IHlvdXIgY2hhbmdlLgoKTW9zdGx5IGl0J3MgYmVjYXVzZSBJJ20gb2J2aW91c2x5IHNsb3dpbmcg dGhpbmdzIGRvd24gYSBiaXQgd2l0aCB0aGUKcGF0Y2ggdG8gZmlnaHQgdGhlIGZsb29kLCBzbyBJ IGZlZWwgb2JsaWdlZCB0byBnZXQgdGhpbmdzIGJhY2sgb24gcGFyCndpdGggdGhlIG9yaWdpbi4g VGhlbiwgaGlnaGVyIHNwZWVkLCBsZXQgYWxvbmUgdGhlIHRpbWUgc3BlbnQgd2l0aAppbnRlcnJ1 cHRzIGRpc2FibGVkIGFuZC9vciBzcGlubG9ja3MgdGFrZW4sIGlzIGFsd2F5cyBvbmUgb2YgZ2Vu ZXJpYwpnb2FscyBmb3IgbWUuCgpBcyBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlLCB3aXRoIHRoaXMg cGF0Y2ggSSBkb24ndCBhaW0gdG8gYWZmZWN0IGNvZGUKZ2VuZXJhdGlvbiwgSSByYXRoZXIgYXZv aWQgZXhlY3V0aW9uIG9mIHBhcnQgb2YgZXhpc3RpbmcgY29kZSB3aGlsZQpiZWluZyBvbiB0aGUg bW9zdCBjcml0aWNhbCBwYXRoLiBJdCBzaG91bGQgYmUgcXVpdGUgb2J2aW91cyB0aGF0IG5vdApl eGVjdXRpbmcgc29tZSBjb2RlIGlzIGF0IGxlYXN0IG5vdCBzbG93ZXIgdGhhbiBleGVjdXRpbmcg aXQuCgo+Cj4gUGxlYXNlIGVpdGhlciBkcm9wIHRoZSBwYXRjaCBmcm9tIHlvdXIgc2VyaWVzIG9y IHByb3ZpZGUgdGhlIGRpZmZlcmVuY2VzCj4gdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGFuZCBhIGJl bmNobWFyay4KCklmIHlvdXIgb25seSBvYmplY3Rpb24gYWdhaW5zdCB0aGlzIHBhdGNoIGlzIHRo ZSBkZXNpcmUgdG8ga2VlcCBhIHNpbmdsZQpwbGFjZSB0byBhZGQgZGVidWcgb3V0cHV0LCBJJ2xs IGJlIGhhcHB5IHRvIHR1bmUgdGhlIHJlc3VsdGluZyBjb2RlIHRvCnN0aWxsIGhhdmUgb25lLgoK VGhhdCBzYWlkLCBiZWZvcmUgd2UgbWFrZSBhIGRlY2lzaW9uLCBjb3VsZCB5b3UgcGxlYXNlIHRl bGwgd2h5IHJlZ2lzdGVyCnNoYWRvd3MgdGhhdCB0aGUgaW14X3VhcnRfcmVhZGwvd3JpdGVsIGFy ZSBkZWFsaW5nIHdpdGggYXJlIG5lZWRlZCBpbgp0aGUgZmlyc3QgcGxhY2U/IEl0IGxvb2tzIGxp a2UgYWxsIHRoZSByZWdpc3RlcnMgdGhhdCBhcmUgc2hhZG93ZWQgYXJlCnJlYWRhYmxlIGFzIHdl bGwuIFdoYXQncyBnb2luZyBvbiBoZXJlLCBhbmQgaWYgaXQgaGFwcGVucyB0byBiZSBhCnNwZWVk LXVwLCBkbyB3ZSBoYXZlIGFueSBiZW5jaG1hcmtzPwoKVGhhbmtzLAotLSBTZXJnZXkgT3JnYW5v dgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=