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 X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5A5EC4743C for ; Wed, 23 Jun 2021 09:42:22 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 CC47260724 for ; Wed, 23 Jun 2021 09:42:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CC47260724 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=csgroup.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4G8ywY0RQNz3bvc for ; Wed, 23 Jun 2021 19:42:21 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=csgroup.eu (client-ip=93.17.236.30; helo=pegase1.c-s.fr; envelope-from=christophe.leroy@csgroup.eu; receiver=) Received: from pegase1.c-s.fr (pegase1.c-s.fr [93.17.236.30]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4G8yw85y9tz2yXZ for ; Wed, 23 Jun 2021 19:41:57 +1000 (AEST) Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4G8yw119tfz9xPS; Wed, 23 Jun 2021 11:41:53 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PDR_xenBtm_C; Wed, 23 Jun 2021 11:41:53 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4G8yw02Y0jz9tTS; Wed, 23 Jun 2021 11:41:52 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id F146D8B7CC; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id VRZeKfM3XHFy; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 594E58B7CB; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) Subject: Re: nand: WARNING: a0000000.nand: the ECC used on your system (1b/256B) is too weak compared to the one required by the NAND chip (4b/512B) To: Miquel Raynal References: <817e89d4-790d-41a4-2a8e-9e119597e459@csgroup.eu> <20210618084326.0a074fb7@xps13> <20210618225032.69cdc30c@xps13> From: Christophe Leroy Message-ID: <6eb7f394-7e0e-8ecf-e741-f6e6cc322689@csgroup.eu> Date: Wed, 23 Jun 2021 11:41:46 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210618225032.69cdc30c@xps13> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linuxppc-dev@lists.ozlabs.org" , linux-mtd Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Le 19/06/2021 à 20:40, Miquel Raynal a écrit : > Hi Christophe, > >>>> Now and then I'm using one of the latest kernels (Today is 5.13-rc6), and sometime in one of the 5.x releases, I started to get errors like: >>>> >>>> [ 5.098265] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.103859] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 60 >>>> bytes from PEB 99:59824, read only 60 bytes, retry >>>> [ 5.525843] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.531571] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.537490] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 30 >>>> 73 bytes from PEB 107:108976, read only 3073 bytes, retry >>>> [ 5.691121] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.696709] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.702426] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.708141] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 5.714103] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 30 >>>> 35 bytes from PEB 107:25144, read only 3035 bytes, retry >>>> [ 20.523689] random: crng init done >>>> [ 21.892130] ecc_sw_hamming_correct: uncorrectable ECC error >>>> [ 21.897730] ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 13 >>>> 94 bytes from PEB 116:75776, read only 1394 bytes, retry >>>> >>>> Most of the time, when the reading of the file fails, I just have to read it once more and it gets read without that error. >>> >>> It really looks like a regular bitflip happening "sometimes". Is this a >>> board which already had a life? What are the usage counters (UBI should >>> tell you this) compared to the official endurance of your chip (see the >>> datasheet)? >> >> The board had a peacefull life: >> >> UBI reports "ubi0: max/mean erase counter: 49/20, WL threshold: 4096" > > Mmmh. Indeed. > >> >> I have tried with half a dozen of boards and all have the issue. >> >>> >>>> What am I supposed to do to avoid the ECC weakness warning at startup and to fix that ECC error issue ? >>> >>> I honestly don't think the errors come from the 5.1x kernels given the >>> above logs. If you flash back your old 4.14 I am pretty sure you'll >>> have the same errors at some point. >> >> I don't have any problem like that with 4.14 with any of the board. >> >> When booting a 4.14 kernel I don't get any problem on the same board. >> > > If you can reliably show that when returning to a 4.14 kernel the ECC > weakness disappears, then there is certainly something new. What driver > are you using? Maybe you can do a bisection? Using the GPIO driver, and the NAND chip is a HYNIX. I can say that the ECC weakness doesn't exist until v5.5 included. The weakness appears with v5.6. I have tried bisection between those two versions and I couldn't end up to a reliable result. The closer the v5.5 you go, the more difficult it is to reproduce the issue. So I looked at what was done around the places, and in fact that's mainly optimisation in the powerpc code. It seems that the more powerpc is optimised, the more the problem occurs. Looking at the GPIO nand driver, I saw that no-op gpio_nand_dosync() function. By adding a memory barrier in that function, the ECC weakness disappeared completely. Not sure what the final solution has to be. Christophe 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 X-Spam-Level: X-Spam-Status: No, score=-5.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1367C48BE5 for ; Wed, 23 Jun 2021 09:42:56 +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 C6B54611AD for ; Wed, 23 Jun 2021 09:42:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6B54611AD Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=csgroup.eu Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nh6te4o9I+QRiTXQVQSsMMv9eWSd/WVQOV9V/e+YgxY=; b=TF6htiQqfbFN4JAt+ZuAJA/sxQ 4mp3Simf4OJkO5+Zc00omAdCZWwEt20z2adXEtS3ftKL9LXwJUSdsDodUpI8f48Q0I2IS0XI80AaZ 8TSyQSLnczEujCm9mxpTwnPQlYQsqaBzchdcAXL1ySsC9QPZDY74Xc3vpjhSbCs6hltBeIdaGcTIz Uekak9FfgYt0f0xeMdbAg0s33zJfCr6M+rmLkXfxyA2/unJh/cuX2tdvWXtTcuSliA3oDHV20LR/i KWO21w5XuL9v2Q/81hlNKkGj1tovmtCINkzwRzc3LeZFSnMSGz2vZoVV4+YBCeavyrZZsESnmpASL U3FDtbRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvzOe-00A9mK-UB; Wed, 23 Jun 2021 09:42:12 +0000 Received: from pegase1.c-s.fr ([93.17.236.30]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvzOa-00A9kr-DG for linux-mtd@lists.infradead.org; Wed, 23 Jun 2021 09:42:10 +0000 Received: from localhost (mailhub3.si.c-s.fr [192.168.12.233]) by localhost (Postfix) with ESMTP id 4G8yw119tfz9xPS; Wed, 23 Jun 2021 11:41:53 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PDR_xenBtm_C; Wed, 23 Jun 2021 11:41:53 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4G8yw02Y0jz9tTS; Wed, 23 Jun 2021 11:41:52 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id F146D8B7CC; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id VRZeKfM3XHFy; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 594E58B7CB; Wed, 23 Jun 2021 11:41:51 +0200 (CEST) Subject: Re: nand: WARNING: a0000000.nand: the ECC used on your system (1b/256B) is too weak compared to the one required by the NAND chip (4b/512B) To: Miquel Raynal Cc: linux-mtd , "linuxppc-dev@lists.ozlabs.org" References: <817e89d4-790d-41a4-2a8e-9e119597e459@csgroup.eu> <20210618084326.0a074fb7@xps13> <20210618225032.69cdc30c@xps13> From: Christophe Leroy Message-ID: <6eb7f394-7e0e-8ecf-e741-f6e6cc322689@csgroup.eu> Date: Wed, 23 Jun 2021 11:41:46 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210618225032.69cdc30c@xps13> Content-Language: fr X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210623_024208_650810_A3CE0FA7 X-CRM114-Status: GOOD ( 20.73 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org CgpMZSAxOS8wNi8yMDIxIMOgIDIwOjQwLCBNaXF1ZWwgUmF5bmFsIGEgw6ljcml0wqA6Cj4gSGkg Q2hyaXN0b3BoZSwKPiAKPj4+PiBOb3cgYW5kIHRoZW4gSSdtIHVzaW5nIG9uZSBvZiB0aGUgbGF0 ZXN0IGtlcm5lbHMgKFRvZGF5IGlzIDUuMTMtcmM2KSwgYW5kIHNvbWV0aW1lIGluIG9uZSBvZiB0 aGUgNS54IHJlbGVhc2VzLCBJIHN0YXJ0ZWQgdG8gZ2V0IGVycm9ycyBsaWtlOgo+Pj4+Cj4+Pj4g WyAgICA1LjA5ODI2NV0gZWNjX3N3X2hhbW1pbmdfY29ycmVjdDogdW5jb3JyZWN0YWJsZSBFQ0Mg ZXJyb3IKPj4+PiBbICAgIDUuMTAzODU5XSB1YmkwIHdhcm5pbmc6IHViaV9pb19yZWFkOiBlcnJv ciAtNzQgKEVDQyBlcnJvcikgd2hpbGUgcmVhZGluZyA2MAo+Pj4+ICAgICBieXRlcyBmcm9tIFBF QiA5OTo1OTgyNCwgcmVhZCBvbmx5IDYwIGJ5dGVzLCByZXRyeQo+Pj4+IFsgICAgNS41MjU4NDNd IGVjY19zd19oYW1taW5nX2NvcnJlY3Q6IHVuY29ycmVjdGFibGUgRUNDIGVycm9yCj4+Pj4gWyAg ICA1LjUzMTU3MV0gZWNjX3N3X2hhbW1pbmdfY29ycmVjdDogdW5jb3JyZWN0YWJsZSBFQ0MgZXJy b3IKPj4+PiBbICAgIDUuNTM3NDkwXSB1YmkwIHdhcm5pbmc6IHViaV9pb19yZWFkOiBlcnJvciAt NzQgKEVDQyBlcnJvcikgd2hpbGUgcmVhZGluZyAzMAo+Pj4+IDczIGJ5dGVzIGZyb20gUEVCIDEw NzoxMDg5NzYsIHJlYWQgb25seSAzMDczIGJ5dGVzLCByZXRyeQo+Pj4+IFsgICAgNS42OTExMjFd IGVjY19zd19oYW1taW5nX2NvcnJlY3Q6IHVuY29ycmVjdGFibGUgRUNDIGVycm9yCj4+Pj4gWyAg ICA1LjY5NjcwOV0gZWNjX3N3X2hhbW1pbmdfY29ycmVjdDogdW5jb3JyZWN0YWJsZSBFQ0MgZXJy b3IKPj4+PiBbICAgIDUuNzAyNDI2XSBlY2Nfc3dfaGFtbWluZ19jb3JyZWN0OiB1bmNvcnJlY3Rh YmxlIEVDQyBlcnJvcgo+Pj4+IFsgICAgNS43MDgxNDFdIGVjY19zd19oYW1taW5nX2NvcnJlY3Q6 IHVuY29ycmVjdGFibGUgRUNDIGVycm9yCj4+Pj4gWyAgICA1LjcxNDEwM10gdWJpMCB3YXJuaW5n OiB1YmlfaW9fcmVhZDogZXJyb3IgLTc0IChFQ0MgZXJyb3IpIHdoaWxlIHJlYWRpbmcgMzAKPj4+ PiAzNSBieXRlcyBmcm9tIFBFQiAxMDc6MjUxNDQsIHJlYWQgb25seSAzMDM1IGJ5dGVzLCByZXRy eQo+Pj4+IFsgICAyMC41MjM2ODldIHJhbmRvbTogY3JuZyBpbml0IGRvbmUKPj4+PiBbICAgMjEu ODkyMTMwXSBlY2Nfc3dfaGFtbWluZ19jb3JyZWN0OiB1bmNvcnJlY3RhYmxlIEVDQyBlcnJvcgo+ Pj4+IFsgICAyMS44OTc3MzBdIHViaTAgd2FybmluZzogdWJpX2lvX3JlYWQ6IGVycm9yIC03NCAo RUNDIGVycm9yKSB3aGlsZSByZWFkaW5nIDEzCj4+Pj4gOTQgYnl0ZXMgZnJvbSBQRUIgMTE2Ojc1 Nzc2LCByZWFkIG9ubHkgMTM5NCBieXRlcywgcmV0cnkKPj4+Pgo+Pj4+IE1vc3Qgb2YgdGhlIHRp bWUsIHdoZW4gdGhlIHJlYWRpbmcgb2YgdGhlIGZpbGUgZmFpbHMsIEkganVzdCBoYXZlIHRvIHJl YWQgaXQgb25jZSBtb3JlIGFuZCBpdCBnZXRzIHJlYWQgd2l0aG91dCB0aGF0IGVycm9yLgo+Pj4K Pj4+IEl0IHJlYWxseSBsb29rcyBsaWtlIGEgcmVndWxhciBiaXRmbGlwIGhhcHBlbmluZyAic29t ZXRpbWVzIi4gSXMgdGhpcyBhCj4+PiBib2FyZCB3aGljaCBhbHJlYWR5IGhhZCBhIGxpZmU/IFdo YXQgYXJlIHRoZSB1c2FnZSBjb3VudGVycyAoVUJJIHNob3VsZAo+Pj4gdGVsbCB5b3UgdGhpcykg Y29tcGFyZWQgdG8gdGhlIG9mZmljaWFsIGVuZHVyYW5jZSBvZiB5b3VyIGNoaXAgKHNlZSB0aGUK Pj4+IGRhdGFzaGVldCk/Cj4+Cj4+IFRoZSBib2FyZCBoYWQgYSBwZWFjZWZ1bGwgbGlmZToKPj4K Pj4gVUJJIHJlcG9ydHMgInViaTA6IG1heC9tZWFuIGVyYXNlIGNvdW50ZXI6IDQ5LzIwLCBXTCB0 aHJlc2hvbGQ6IDQwOTYiCj4gCj4gTW1taC4gSW5kZWVkLgo+IAo+Pgo+PiBJIGhhdmUgdHJpZWQg d2l0aCBoYWxmIGEgZG96ZW4gb2YgYm9hcmRzIGFuZCBhbGwgaGF2ZSB0aGUgaXNzdWUuCj4+Cj4+ PiAgICAKPj4+PiBXaGF0IGFtIEkgc3VwcG9zZWQgdG8gZG8gdG8gYXZvaWQgdGhlIEVDQyB3ZWFr bmVzcyB3YXJuaW5nIGF0IHN0YXJ0dXAgYW5kIHRvIGZpeCB0aGF0IEVDQyBlcnJvciBpc3N1ZSA/ Cj4+Pgo+Pj4gSSBob25lc3RseSBkb24ndCB0aGluayB0aGUgZXJyb3JzIGNvbWUgZnJvbSB0aGUg NS4xeCBrZXJuZWxzIGdpdmVuIHRoZQo+Pj4gYWJvdmUgbG9ncy4gSWYgeW91IGZsYXNoIGJhY2sg eW91ciBvbGQgNC4xNCBJIGFtIHByZXR0eSBzdXJlIHlvdSdsbAo+Pj4gaGF2ZSB0aGUgc2FtZSBl cnJvcnMgYXQgc29tZSBwb2ludC4KPj4KPj4gSSBkb24ndCBoYXZlIGFueSBwcm9ibGVtIGxpa2Ug dGhhdCB3aXRoIDQuMTQgd2l0aCBhbnkgb2YgdGhlIGJvYXJkLgo+Pgo+PiBXaGVuIGJvb3Rpbmcg YSA0LjE0IGtlcm5lbCBJIGRvbid0IGdldCBhbnkgcHJvYmxlbSBvbiB0aGUgc2FtZSBib2FyZC4K Pj4KPiAKPiBJZiB5b3UgY2FuIHJlbGlhYmx5IHNob3cgdGhhdCB3aGVuIHJldHVybmluZyB0byBh IDQuMTQga2VybmVsIHRoZSBFQ0MKPiB3ZWFrbmVzcyBkaXNhcHBlYXJzLCB0aGVuIHRoZXJlIGlz IGNlcnRhaW5seSBzb21ldGhpbmcgbmV3LiBXaGF0IGRyaXZlcgo+IGFyZSB5b3UgdXNpbmc/IE1h eWJlIHlvdSBjYW4gZG8gYSBiaXNlY3Rpb24/CgpVc2luZyB0aGUgR1BJTyBkcml2ZXIsIGFuZCB0 aGUgTkFORCBjaGlwIGlzIGEgSFlOSVguCgpJIGNhbiBzYXkgdGhhdCB0aGUgRUNDIHdlYWtuZXNz IGRvZXNuJ3QgZXhpc3QgdW50aWwgdjUuNSBpbmNsdWRlZC4gVGhlIHdlYWtuZXNzIGFwcGVhcnMg d2l0aCB2NS42LgoKSSBoYXZlIHRyaWVkIGJpc2VjdGlvbiBiZXR3ZWVuIHRob3NlIHR3byB2ZXJz aW9ucyBhbmQgSSBjb3VsZG4ndCBlbmQgdXAgdG8gYSByZWxpYWJsZSByZXN1bHQuIFRoZSAKY2xv c2VyIHRoZSB2NS41IHlvdSBnbywgdGhlIG1vcmUgZGlmZmljdWx0IGl0IGlzIHRvIHJlcHJvZHVj ZSB0aGUgaXNzdWUuCgpTbyBJIGxvb2tlZCBhdCB3aGF0IHdhcyBkb25lIGFyb3VuZCB0aGUgcGxh Y2VzLCBhbmQgaW4gZmFjdCB0aGF0J3MgbWFpbmx5IG9wdGltaXNhdGlvbiBpbiB0aGUgCnBvd2Vy cGMgY29kZS4gSXQgc2VlbXMgdGhhdCB0aGUgbW9yZSBwb3dlcnBjIGlzIG9wdGltaXNlZCwgdGhl IG1vcmUgdGhlIHByb2JsZW0gb2NjdXJzLgoKTG9va2luZyBhdCB0aGUgR1BJTyBuYW5kIGRyaXZl ciwgSSBzYXcgdGhhdCBuby1vcCBncGlvX25hbmRfZG9zeW5jKCkgZnVuY3Rpb24uIEJ5IGFkZGlu ZyBhIG1lbW9yeSAKYmFycmllciBpbiB0aGF0IGZ1bmN0aW9uLCB0aGUgRUNDIHdlYWtuZXNzIGRp c2FwcGVhcmVkIGNvbXBsZXRlbHkuCgpOb3Qgc3VyZSB3aGF0IHRoZSBmaW5hbCBzb2x1dGlvbiBo YXMgdG8gYmUuCgpDaHJpc3RvcGhlCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=