From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 24 Sep 2021 05:16:56 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1mTbho-0005FW-8e for lore@lore.pengutronix.de; Fri, 24 Sep 2021 05:16:56 +0200 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mTbhm-0003ka-IH for lore@pengutronix.de; Fri, 24 Sep 2021 05:16:56 +0200 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:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=67zAwE7BrhXO//Cu2OlVmLpJnnRwHY/zlLjG3M9g/xg=; b=iyHxj5HsxptP2G FuwBuHdWORnZmwW/rkdMl2HMMCrLeEruoZgDPMRdGu+XJQaYrZnZHb2Uo34BCBaxNGmh8/VfXxtw6 t+FdPRIqT4oIt9v1s3dUoVZvDZMI0IgIb6C0JUn0DSC6sTgVqlT3CdsKomU04MCX+puLLCIaeZz9V 5LyJU9h7MEF+11pUSpKlLAUPRmZPstD0V+n3EyYvWXPgzDyc0vywQ7zeTGnoDbEt2YcfjxDmiWGFk rD9MKTssMMstEzMlVIWydZ0bSGrtBevL4z0EKpdmq2w+9FxS7MAgLkUtWW0IYNtiCPXi/XmZ7NrYe K4JF7+B06kMJgGxqM6PA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTbgQ-00CydI-K6; Fri, 24 Sep 2021 03:15:30 +0000 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTbgK-00CycA-Pn for barebox@lists.infradead.org; Fri, 24 Sep 2021 03:15:27 +0000 Received: by mail-pg1-x535.google.com with SMTP id t1so8578103pgv.3 for ; Thu, 23 Sep 2021 20:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5YwwUtu8AnbLiKnGCAID4YaRLcxK6uFF44vFSAbBVf8=; b=VfCXjsODkuzz6PcLeK3MbkQkjGxSvJQiSK/EfAbqVTrbhEvaJvykv3gQ+uzUU0q4tk 5Kp8iyaqSyRmuGsoU6m6b/0G7Q9ii0mRXSoANSNmzHtt2Y0x9SLGQiNpIkuQXg1EhL7k 1ILPQSfN4pS2LHWuDy4NakS5DZQsWdsCPckILKCjsNR/9DveNaXksehzkGb79n8liCDq wc4n8QzoMhkRLCULe8UvqzIRdRWNMhf30IMploGybi713LvM2q/rL6lEwi5zQw+WIba4 g6p/KVpO6ZUwfRXt4E88zOWCbAEQaJ7QOHGJCv0xuuErWIWYHlBW18+W1HlpmHg2MJtl Ln5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5YwwUtu8AnbLiKnGCAID4YaRLcxK6uFF44vFSAbBVf8=; b=32G1RvQTtHzdiwrVJyxGOnigCg5mt3Z1dIhIQBTw/lIhxYCDUDkdhITgRK1ps+GKkX Ngac4e7auyds1CeUmdNKvjgDfXpLOSWFXpM0FXbCy9XrrNK5QJvX1df64WORZTllYzp7 GgIFsGXgqhiADqh1LDSwQTaUJvte//ZxARB+Evl1yfYAogjrnSRjCW9BU150N+6FoIrA FTl7a9zcociYZEBf4ANCv756HZgyB1QLcdpINEDS9/ZX3yRq9jqt+XmIQcLbpcj3uoFj pCw+6R7Sg7rge/W3lNoxVnVpkmi9WrCHjN/5ir6KV9owSUPnm72FAVhJkNiJfLWtuxtP BdYA== X-Gm-Message-State: AOAM532leLi68tjsn5Jb3hTJJVERrEFz0QK5kV+kAkYPkEXLjtQ7Knj7 WAXaCKBDz7OM8/sdRFMcSB1pRHubGBo= X-Google-Smtp-Source: ABdhPJy3Y/tD5Pjj2pvAtmOI5JYSM2iKgrOSJ0zfYCIB+0ILfw936rKIiBFQFiWryOptABU0QVzlGA== X-Received: by 2002:a62:7dd3:0:b0:447:dd44:1580 with SMTP id y202-20020a627dd3000000b00447dd441580mr7392580pfc.19.1632453322291; Thu, 23 Sep 2021 20:15:22 -0700 (PDT) Received: from zen.local (97-113-90-42.tukw.qwest.net. [97.113.90.42]) by smtp.gmail.com with ESMTPSA id h10sm9797133pjs.51.2021.09.23.20.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 20:15:21 -0700 (PDT) From: Trent Piepho To: barebox@lists.infradead.org Cc: Trent Piepho Date: Thu, 23 Sep 2021 20:14:46 -0700 Message-Id: <20210924031446.1515172-1-tpiepho@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_201524_892896_45419204 X-CRM114-Status: GOOD ( 22.66 ) X-BeenThere: barebox@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: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:e::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-4.5 required=4.0 tests=AWL,BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH 1/1] ddr: imx8m: Rework ddrphy code and fix DDR-1067 on iMX8MM X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) VGhpcyBjb2RlIGNvdWxkIG5vdCBkZWNpZGUgaWYgaXQgd2FzIHVzaW5nIHNwZWVkcyBpbiBIeiwg b3IgTUh6LCBvciBqdXN0CmNvbnN0YW50cyB0aGF0IGlkZW50aWZ5IHNwZWNpZmljIHNwZWVkcy4K ClJld29yayBpdCB0byB1c2Ugc3ltYm9saWMgY29uc3RhbnRzIGZvciBhbGwgc3BlZWRzLiAgVXNl IGFycmF5cwpmb3IgY29uZmlndXJhdGlvbnMgdmFsdWVzIGZvciBhbGwgY2FzZXMuICBUaGUgRERS IERSQU0gc3BlZWQgY29uc3RhbnRzCndpbGwgYmUgdGhlIGFycmF5IGluZGV4LCBzbyB0aGUgbGlu ZWFyIHNlYXJjaCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gaXMKZWxpbWluYXRlZC4KCkZvciBpTVg4 TU0gdHlwZSBTb0NzIHVzaW5nIHRoZSBpbnRlZ3IgUExMIHRoZSBzcGVlZCBERFItMTA2NyB3aXRo IGEgMjY24oWUCk1IeiBjbG9jayB3aWxsIG5vdyB3b3JrLgoKVGhlIGlNOE1RIHR5cGUgU1NDRyBQ TEwgU29DcyB3b3VsZCBwcmV2aW91c2x5IHNpbGVudGx5IHByb2dyYW0gdGhlIFBMTAp3aWxsIHpl cm8gdmFsdWVzIGlmIGEgbm9uLXN1cHBvcnRlZCBERFIgcmF0ZSB3YXMgdXNlZC4gIE5vdyB0aGV5 IHdpbGwKZ2VuZXJhdGUgYW4gZXJyb3IuCgpOb3RlIHRoYXQgc29tZSBQTEwgdGFibGVzIGhhdmUg ZW50cmllcyBmb3Igc3BlZWRzIHRoYXQgdGhlIG1haW4gZW50cnkKcG9pbnQgZm9yIHRoZSBjb2Rl IGRvZXMgbm90IHN1cHBvcnQsIHNvIHRoZXkgY2FuJ3QgYWN0dWFsbHkgZXZlciBiZQp1c2VkLiAg VGhpcyBpcyBub3QgZml4ZWQuCgpTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9A Z21haWwuY29tPgotLS0KIGRyaXZlcnMvZGRyL2lteDhtL2RkcnBoeV91dGlscy5jIHwgMzMyICsr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNDcgaW5zZXJ0 aW9ucygrKSwgMTg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGRyL2lteDht L2RkcnBoeV91dGlscy5jIGIvZHJpdmVycy9kZHIvaW14OG0vZGRycGh5X3V0aWxzLmMKaW5kZXgg OWE0ZTFhMjJlLi5hNTYwMzNmNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZGRyL2lteDhtL2RkcnBo eV91dGlscy5jCisrKyBiL2RyaXZlcnMvZGRyL2lteDhtL2RkcnBoeV91dGlscy5jCkBAIC0xMyw2 ICsxMywxMDkgQEAKICNpbmNsdWRlIDxtYWNoL2lteDhtLXJlZ3MuaD4KICNpbmNsdWRlIDxtYWNo L2lteDhtLWNjbS1yZWdzLmg+CiAKKy8qIEREUiBUcmFuc2ZlciByYXRlLCBidXMgY2xvY2sgaXMg dHJhbnNmZXIgcmF0ZSAvIDIsIGFuZCB0aGUgRERSQyBydW5zIGF0IGJ1cworICogY2xvY2sgLyAy LCB3aGljaCBpcyB0aGVyZWZvciB0cmFuc2ZlciByYXRlIC8gNC4gICovCitlbnVtIGRkcl9yYXRl IHsKKwlERFJfNDAwMCwKKwlERFJfMzIwMCwKKwlERFJfMzAwMCwKKwlERFJfMjYwMCwgLyogVW51 c2VkICovCisJRERSXzI0MDAsCisJRERSXzIzNzYsIC8qIFVudXNlZCAqLworCUREUl8xNjAwLAor CUREUl8xMDAwLCAvKiBVbnVzZWQgKi8KKwlERFJfMTA2NiwKKwlERFJfNjY3LAorCUREUl80MDAs CisJRERSXzI1MCwgLyogVW51c2VkICovCisJRERSXzEwMCwKKwlERFJfTlVNX1JBVEVTCit9Owor CisvKiBQTEwgY29uZmlnIGZvciBJTVg4TU0gdHlwZSBEUkFNIFBMTC4gIFRoaXMgUExMIHR5cGUg aXNuJ3QgZG9jdW1lbnRlZCwgYnV0CisgKiBpdCBsb29rcyBsaWtlIGl0IGlzIGEgYmFzaWNhbGx5 IGEgZnJhY3Rpb25hbCBQTEw6CisgKiBGcmVxdWVuY3kgPSBSZWYgKDI0IE1IeikgLyBQICogTSAv IDJeUworICogTm90ZTogRGl2aWRlciBpcyBlcXVhbCB0byByZWdpc3RlciB2YWx1ZQorICovCisj ZGVmaW5lIE1ESVYoeCkgKCh4KSA8PCAxMikKKyNkZWZpbmUgUERJVih4KSAoKHgpIDw8IDQpCisj ZGVmaW5lIFNESVYoeCkgKCh4KSA8PCAwKQorCisjZGVmaW5lIExPQ0tfU1RBVFVTICAgICBCSVQo MzEpCisjZGVmaW5lIExPQ0tfU0VMX01BU0sgICBCSVQoMjkpCisjZGVmaW5lIENMS0VfTUFTSyAg ICAgICBCSVQoMTEpCisjZGVmaW5lIFJTVF9NQVNLICAgICAgICBCSVQoOSkKKyNkZWZpbmUgQllQ QVNTX01BU0sgICAgIEJJVCg0KQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGlteDhtbV9mcmFjcGxs X2NvbmZpZyB7CisJdWludDMyX3QgcjEsIHIyOworCWJvb2wgdmFsaWQ7Cit9IGlteDhtbV9mcmFj cGxsX3RhYmxlW0REUl9OVU1fUkFURVNdID0geworCVtERFJfNDAwMF0gPSB7IC52YWxpZCA9IHRy dWUsIC5yMSA9IE1ESVYoMjUwKSB8IFBESVYoMykgfCBTRElWKDEpLCAucjIgPSAwIH0sCisJW0RE Ul8zMjAwXSA9IHsgLnZhbGlkID0gdHJ1ZSwgLnIxID0gTURJVigzMDApIHwgUERJVig5KSB8IFNE SVYoMCksIC5yMiA9IDAgfSwKKwlbRERSXzMwMDBdID0geyAudmFsaWQgPSB0cnVlLCAucjEgPSBN RElWKDI1MCkgfCBQRElWKDgpIHwgU0RJVigwKSwgLnIyID0gMCB9LAorCVtERFJfMjYwMF0gPSB7 IC52YWxpZCA9IHRydWUsIC5yMSA9IE1ESVYoMzI1KSB8IFBESVYoMykgfCBTRElWKDIpLCAucjIg PSAwIH0sCisJW0REUl8yNDAwXSA9IHsgLnZhbGlkID0gdHJ1ZSwgLnIxID0gTURJVigzMDApIHwg UERJVigzKSB8IFNESVYoMiksIC5yMiA9IDAgfSwKKwlbRERSXzIzNzZdID0geyAudmFsaWQgPSB0 cnVlLCAucjEgPSBNRElWKCA5OSkgfCBQRElWKDEpIHwgU0RJVigyKSwgLnIyID0gMCB9LAorCVtE RFJfMTYwMF0gPSB7IC52YWxpZCA9IHRydWUsIC5yMSA9IE1ESVYoMzAwKSB8IFBESVYoOSkgfCBT RElWKDEpLCAucjIgPSAwIH0sCisJW0REUl8xMDY2XSA9IHsgLnZhbGlkID0gdHJ1ZSwgLnIxID0g TURJVig0MDApIHwgUERJVig5KSB8IFNESVYoMiksIC5yMiA9IDAgfSwKKwlbRERSXzY2N10gID0g eyAudmFsaWQgPSB0cnVlLCAucjEgPSBNRElWKDMzNCkgfCBQRElWKDMpIHwgU0RJVig0KSwgLnIy ID0gMCB9LAorCVtERFJfNDAwXSAgPSB7IC52YWxpZCA9IHRydWUsIC5yMSA9IE1ESVYoMzAwKSB8 IFBESVYoOSkgfCBTRElWKDMpLCAucjIgPSAwIH0sCit9OworCisvKiBQTEwgY29uZmlnIGZvciBJ TVg4TVEgdHlwZSBEUkFNIFBMTC4gIFRoaXMgaXMgU1NDR19QTEw6CisgKiBGcmVxdWVuY3kgPSBS ZWYgKDI1IE1IeikgLyBkaXZyMSAqICgyKmRpdmYxKSAvIGRpdnIyICogZGl2ZjIgLyBkaXZxCisg KiBOb3RlOiBJTVg4TVEgUk0sIMKnNS4xLjUuNC40IEZpZy4gNS04IHNob3dzIMO3MiBvbiBkaXZm MiwgYnV0IHRoaXMgaXMgbm90IHRydWUuCisgKiBOb3RlOiBkaXZpZGVyIGlzIHJlZ2lzdGVyIHZh bHVlICsgMQorICovCisjZGVmaW5lIFNTQ0dfUExMX0xPQ0sJCQlCSVQoMzEpCisjZGVmaW5lIFNT Q0dfUExMX0RSQU1fUExMX0NMS0UJCUJJVCg5KQorI2RlZmluZSBTU0NHX1BMTF9QRAkJCUJJVCg3 KQorI2RlZmluZSBTU0NHX1BMTF9CWVBBU1MxCQlCSVQoNSkKKyNkZWZpbmUgU1NDR19QTExfQllQ QVNTMgkJQklUKDQpCisKKyNkZWZpbmUgU1NDR19QTExfUkVGX0RJVlIyX01BU0sJCSgweDNmIDw8 IDE5KQorI2RlZmluZSBTU0NHX1BMTF9SRUZfRElWUjJfVkFMKG4pCSgoKG4pIDw8IDE5KSAmIFNT Q0dfUExMX1JFRl9ESVZSMl9NQVNLKQorI2RlZmluZSBTU0NHX1BMTF9GRUVEQkFDS19ESVZfRjFf TUFTSwkoMHgzZiA8PCAxMykKKyNkZWZpbmUgU1NDR19QTExfRkVFREJBQ0tfRElWX0YxX1ZBTChu KQkoKChuKSA8PCAxMykgJiBTU0NHX1BMTF9GRUVEQkFDS19ESVZfRjFfTUFTSykKKyNkZWZpbmUg U1NDR19QTExfRkVFREJBQ0tfRElWX0YyX01BU0sJKDB4M2YgPDwgNykKKyNkZWZpbmUgU1NDR19Q TExfRkVFREJBQ0tfRElWX0YyX1ZBTChuKQkoKChuKSA8PCA3KSAmIFNTQ0dfUExMX0ZFRURCQUNL X0RJVl9GMl9NQVNLKQorI2RlZmluZSBTU0NHX1BMTF9PVVRQVVRfRElWX1ZBTF9NQVNLCSgweDNm IDw8IDEpCisjZGVmaW5lIFNTQ0dfUExMX09VVFBVVF9ESVZfVkFMKG4pCSgoKG4pIDw8IDEpICYg U1NDR19QTExfT1VUUFVUX0RJVl9WQUxfTUFTSykKKworI2RlZmluZSBTU0NHX1BMTF9DRkcyKGRp dmYxLCBkaXZyMiwgZGl2ZjIsIGRpdnEpIFwKKwkoU1NDR19QTExfRkVFREJBQ0tfRElWX0YxX1ZB TChkaXZmMSkgfCBTU0NHX1BMTF9GRUVEQkFDS19ESVZfRjJfVkFMKGRpdmYyKSB8IFwKKwlTU0NH X1BMTF9SRUZfRElWUjJfVkFMKGRpdnIyKSB8IFNTQ0dfUExMX09VVFBVVF9ESVZfVkFMKGRpdnEp KQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGlteDhtcV9zc2djcGxsX2NvbmZpZyB7CisJdWludDMy X3QgdmFsOworCWJvb2wgdmFsaWQ7Cit9IGlteDhtcV9zc2djcGxsX3RhYmxlW0REUl9OVU1fUkFU RVNdID0geworCVtERFJfMzIwMF0gPSB7IC52YWxpZCA9IHRydWUsIC52YWwgPSBTU0NHX1BMTF9D RkcyKDM5LCAyOSwgMTEsIDApIH0sCisJW0REUl8yNDAwXSA9IHsgLnZhbGlkID0gdHJ1ZSwgLnZh bCA9IFNTQ0dfUExMX0NGRzIoMzksIDI5LCAxNywgMSkgfSwKKwlbRERSXzE2MDBdID0geyAudmFs aWQgPSB0cnVlLCAudmFsID0gU1NDR19QTExfQ0ZHMigzOSwgMjksIDExLCAxKSB9LAorCVtERFJf NjY3XSAgPSB7IC52YWxpZCA9IHRydWUsIC52YWwgPSBTU0NHX1BMTF9DRkcyKDQ1LCAzMCwgOCwg MykgfSwgLyogfjE2Ni45MzUgTUh6ID0gNjY3Ljc0ICovCit9OworCisvKiBJTVg4TSBCeXBhc3Mg Y2xvY2sgY29uZmlnLiAgVGhlc2UgY29uZmlndXJlIGRyYW1fYWx0MV9jbGsgYW5kIHRoZSBkcmFt IGFwYgorICogY2xvY2suICBGb3IgdGhlIGJ5cGFzcyBjb25maWcsIGNsb2NrIHJhdGUgPSBEUkFN IHRyYW5mZXIgcmF0ZSwgcmF0aGVyIHRoYW4KKyAqIGNsb2NrID0gZHJhbSAvIDQKKyAqLworCisv KiBwcmVkaXYgaXMgYWN0dWFsIGRpdmlkZXIsIHJlZ2lzdGVyIHdpbGwgYmUgc2V0IHRvIGRpdmlk ZXIgLSAxICovCisjZGVmaW5lIENDTV9ST09UX0NGRyhtdXgsIHByZWRpdikgKElNWDhNX0NDTV9U QVJHRVRfUk9PVG5fRU5BQkxFIHwgXAorCUlNWDhNX0NDTV9UQVJHRVRfUk9PVG5fTVVYKG11eCkg fCBJTVg4TV9DQ01fVEFSR0VUX1JPT1RuX1BSRV9ESVYocHJlZGl2LTEpKQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGlteDhtX2J5cGFzc19jb25maWcgeworCXVpbnQzMl90IGFsdF9jbGs7CisJdWlu dDMyX3QgYXBiX2NsazsKKwlib29sIHZhbGlkOworfSBpbXg4bV9ieXBhc3NfdGFibGVbRERSX05V TV9SQVRFU10gPSB7CisJW0REUl80MDBdID0geyAudmFsaWQgPSB0cnVlLCAuYWx0X2NsayA9IEND TV9ST09UX0NGRygxLCAyKSwgLmFwYl9jbGsgPSBDQ01fUk9PVF9DRkcoMywgMikgfSwKKwlbRERS XzI1MF0gPSB7IC52YWxpZCA9IHRydWUsIC5hbHRfY2xrID0gQ0NNX1JPT1RfQ0ZHKDMsIDIpLCAu YXBiX2NsayA9IENDTV9ST09UX0NGRygyLCAyKSB9LAorCVtERFJfMTAwXSA9IHsgLnZhbGlkID0g dHJ1ZSwgLmFsdF9jbGsgPSBDQ01fUk9PVF9DRkcoMiwgMSksIC5hcGJfY2xrID0gQ0NNX1JPT1Rf Q0ZHKDIsIDIpIH0sCit9OworCiB2b2lkIGRkcmNfcGh5X2xvYWRfZmlybXdhcmUodm9pZCBfX2lv bWVtICpwaHksCiAJCQkgICAgZW51bSBkZHJjX3BoeV9maXJtd2FyZV9vZmZzZXQgb2Zmc2V0LAog CQkJICAgIGNvbnN0IHUxNiAqYmxvYiwgc2l6ZV90IHNpemUpCkBAIC0xMDIsNjQgKzIwNSwxOCBA QCBpbnQgd2FpdF9kZHJwaHlfdHJhaW5pbmdfY29tcGxldGUodm9pZCkKIAl9CiB9CiAKLXN0cnVj dCBkcmFtX2J5cGFzc19jbGtfc2V0dGluZyB7Ci0JdWxvbmcgY2xrOwotCWludCBhbHRfcm9vdF9z ZWw7Ci0JaW50IGFsdF9wcmVfZGl2OwotCWludCBhcGJfcm9vdF9zZWw7Ci0JaW50IGFwYl9wcmVf ZGl2OwotfTsKLQotI2RlZmluZSBNSFooeCkJKDEwMDAwMDBVTCAqICh4KSkKLQotc3RhdGljIHN0 cnVjdCBkcmFtX2J5cGFzc19jbGtfc2V0dGluZyBpbXg4bXFfZHJhbV9ieXBhc3NfdGJsW10gPSB7 Ci0JewotCQkuY2xrID0gTUhaKDEwMCksCi0JCS5hbHRfcm9vdF9zZWwgPSAyLAotCQkuYWx0X3By ZV9kaXYgPSAxIC0gMSwKLQkJLmFwYl9yb290X3NlbCA9IDIsCi0JCS5hcGJfcHJlX2RpdiA9IDIg LSAxLAotCX0gLCB7Ci0JCS5jbGsgPSBNSFooMjUwKSwKLQkJLmFsdF9yb290X3NlbCA9IDMsCi0J CS5hbHRfcHJlX2RpdiA9IDIgLSAxLAotCQkuYXBiX3Jvb3Rfc2VsID0gMiwKLQkJLmFwYl9wcmVf ZGl2ID0gMiAtIDEsCi0JfSwgewotCQkuY2xrID0gTUhaKDQwMCksCi0JCS5hbHRfcm9vdF9zZWwg PSAxLAotCQkuYWx0X3ByZV9kaXYgPSAyIC0gMSwKLQkJLmFwYl9yb290X3NlbCA9IDMsCi0JCS5h cGJfcHJlX2RpdiA9IDIgLSAxLAotCX0sCi19OwotCi1zdGF0aWMgdm9pZCBkcmFtX2VuYWJsZV9i eXBhc3ModWxvbmcgY2xrX3ZhbCkKK3N0YXRpYyB2b2lkIGRyYW1fZW5hYmxlX2J5cGFzcyhlbnVt IGRkcl9yYXRlIGRyYXRlKQogewotCWludCBpOwotCXN0cnVjdCBkcmFtX2J5cGFzc19jbGtfc2V0 dGluZyAqY29uZmlnOworCWNvbnN0IHN0cnVjdCBpbXg4bV9ieXBhc3NfY29uZmlnICpjb25maWcg PSAmaW14OG1fYnlwYXNzX3RhYmxlW2RyYXRlXTsKIAotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGlteDhtcV9kcmFtX2J5cGFzc190YmwpOyBpKyspIHsKLQkJaWYgKGNsa192YWwgPT0gaW14 OG1xX2RyYW1fYnlwYXNzX3RibFtpXS5jbGspCi0JCQlicmVhazsKLQl9Ci0KLQlpZiAoaSA9PSBB UlJBWV9TSVpFKGlteDhtcV9kcmFtX2J5cGFzc190YmwpKSB7Ci0JCXByaW50ZigiTm8gbWF0Y2hl ZCBmcmVxIHRhYmxlICVsdVxuIiwgY2xrX3ZhbCk7CisJaWYgKCFjb25maWctPnZhbGlkKSB7CisJ CXByaW50ZigiTm8gbWF0Y2hlZCBmcmVxIHRhYmxlIGVudHJ5ICV1XG4iLCBkcmF0ZSk7CiAJCXJl dHVybjsKIAl9CiAKLQljb25maWcgPSAmaW14OG1xX2RyYW1fYnlwYXNzX3RibFtpXTsKLQotCWlt eDhtX2Nsb2NrX3NldF90YXJnZXRfdmFsKElNWDhNX0RSQU1fQUxUX0NMS19ST09ULAotCQkJCSAg IElNWDhNX0NDTV9UQVJHRVRfUk9PVG5fRU5BQkxFIHwKLQkJCQkgICBJTVg4TV9DQ01fVEFSR0VU X1JPT1RuX01VWChjb25maWctPmFsdF9yb290X3NlbCkgfAotCQkJCSAgIElNWDhNX0NDTV9UQVJH RVRfUk9PVG5fUFJFX0RJVihjb25maWctPmFsdF9wcmVfZGl2KSk7Ci0gICAgICAgIGlteDhtX2Ns b2NrX3NldF90YXJnZXRfdmFsKElNWDhNX0RSQU1fQVBCX0NMS19ST09ULAotCQkJCSAgIElNWDhN X0NDTV9UQVJHRVRfUk9PVG5fRU5BQkxFIHwKLQkJCQkgICBJTVg4TV9DQ01fVEFSR0VUX1JPT1Ru X01VWChjb25maWctPmFwYl9yb290X3NlbCkgfAotCQkJCSAgIElNWDhNX0NDTV9UQVJHRVRfUk9P VG5fUFJFX0RJVihjb25maWctPmFwYl9wcmVfZGl2KSk7Ci0gICAgICAgIGlteDhtX2Nsb2NrX3Nl dF90YXJnZXRfdmFsKElNWDhNX0RSQU1fU0VMX0NGRywgSU1YOE1fQ0NNX1RBUkdFVF9ST09Ubl9F TkFCTEUgfAorCWlteDhtX2Nsb2NrX3NldF90YXJnZXRfdmFsKElNWDhNX0RSQU1fQUxUX0NMS19S T09ULCBjb25maWctPmFsdF9jbGspOworCWlteDhtX2Nsb2NrX3NldF90YXJnZXRfdmFsKElNWDhN X0RSQU1fQVBCX0NMS19ST09ULCBjb25maWctPmFwYl9jbGspOworCWlteDhtX2Nsb2NrX3NldF90 YXJnZXRfdmFsKElNWDhNX0RSQU1fU0VMX0NGRywgSU1YOE1fQ0NNX1RBUkdFVF9ST09Ubl9FTkFC TEUgfAogCQkJCSAgIElNWDhNX0NDTV9UQVJHRVRfUk9PVG5fTVVYKDEpKTsKIH0KIApAQCAtMTc0 LDU2ICsyMzEsMTUgQEAgc3RhdGljIHZvaWQgZHJhbV9kaXNhYmxlX2J5cGFzcyh2b2lkKQogCQkJ CSAgIElNWDhNX0NDTV9UQVJHRVRfUk9PVG5fUFJFX0RJVig1IC0gMSkpOwogfQogCi1zdHJ1Y3Qg aW14X2ludF9wbGxfcmF0ZV90YWJsZSB7Ci0JdTMyIHJhdGU7Ci0JdTMyIHIxOwotCXUzMiByMjsK LX07Ci0KLSNkZWZpbmUgTURJVih4KSAoKHgpIDw8IDEyKQotI2RlZmluZSBQRElWKHgpICgoeCkg PDwgNCkKLSNkZWZpbmUgU0RJVih4KSAoKHgpIDw8IDApCi0KLSNkZWZpbmUgTE9DS19TVEFUVVMg ICAgIEJJVCgzMSkKLSNkZWZpbmUgTE9DS19TRUxfTUFTSyAgIEJJVCgyOSkKLSNkZWZpbmUgQ0xL RV9NQVNLICAgICAgIEJJVCgxMSkKLSNkZWZpbmUgUlNUX01BU0sgICAgICAgIEJJVCg5KQotI2Rl ZmluZSBCWVBBU1NfTUFTSyAgICAgQklUKDQpCi0KLXN0YXRpYyBzdHJ1Y3QgaW14X2ludF9wbGxf cmF0ZV90YWJsZSBpbXg4bW1fZnJhY3BsbF90YmxbXSA9IHsKLQl7IC5yYXRlID0gMTAwMDAwMDAw MFUsIC5yMSA9IE1ESVYoMjUwKSB8IFBESVYoMykgfCBTRElWKDEpLCAucjIgPSAwIH0sCi0JeyAu cmF0ZSA9IDgwMDAwMDAwMFUsICAucjEgPSBNRElWKDMwMCkgfCBQRElWKDkpIHwgU0RJVigwKSwg LnIyID0gMCB9LAotCXsgLnJhdGUgPSA3NTAwMDAwMDBVLCAgLnIxID0gTURJVigyNTApIHwgUERJ Vig4KSB8IFNESVYoMCksIC5yMiA9IDAgfSwKLQl7IC5yYXRlID0gNjUwMDAwMDAwVSwgIC5yMSA9 IE1ESVYoMzI1KSB8IFBESVYoMykgfCBTRElWKDIpLCAucjIgPSAwIH0sCi0JeyAucmF0ZSA9IDYw MDAwMDAwMFUsICAucjEgPSBNRElWKDMwMCkgfCBQRElWKDMpIHwgU0RJVigyKSwgLnIyID0gMCB9 LAotCXsgLnJhdGUgPSA1OTQwMDAwMDBVLCAgLnIxID0gTURJViggOTkpIHwgUERJVigxKSB8IFNE SVYoMiksIC5yMiA9IDAgfSwKLQl7IC5yYXRlID0gNDAwMDAwMDAwVSwgIC5yMSA9IE1ESVYoMzAw KSB8IFBESVYoOSkgfCBTRElWKDEpLCAucjIgPSAwIH0sCi0JeyAucmF0ZSA9IDI2NjY2NjY2N1Us ICAucjEgPSBNRElWKDQwMCkgfCBQRElWKDkpIHwgU0RJVigyKSwgLnIyID0gMCB9LAotCXsgLnJh dGUgPSAxNjcwMDAwMDBVLCAgLnIxID0gTURJVigzMzQpIHwgUERJVigzKSB8IFNESVYoNCksIC5y MiA9IDAgfSwKLQl7IC5yYXRlID0gMTAwMDAwMDAwVSwgIC5yMSA9IE1ESVYoMzAwKSB8IFBESVYo OSkgfCBTRElWKDMpLCAucjIgPSAwIH0sCi19OwotCi1zdGF0aWMgc3RydWN0IGlteF9pbnRfcGxs X3JhdGVfdGFibGUgKmZyYWNwbGwodTMyIGZyZXEpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShpbXg4bW1fZnJhY3BsbF90YmwpOyBpKyspCi0JCWlmIChmcmVxID09 IGlteDhtbV9mcmFjcGxsX3RibFtpXS5yYXRlKQotCQkJcmV0dXJuICZpbXg4bW1fZnJhY3BsbF90 YmxbaV07Ci0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGludCBkcmFtX2ZyYWNfcGxsX2lu aXQodTMyIGZyZXEpCitzdGF0aWMgaW50IGRyYW1fZnJhY19wbGxfaW5pdChlbnVtIGRkcl9yYXRl IGRyYXRlKQogewogCXZvbGF0aWxlIGludCBpOwogCXUzMiB0bXA7CiAJdm9pZCAqcGxsX2Jhc2U7 Ci0Jc3RydWN0IGlteF9pbnRfcGxsX3JhdGVfdGFibGUgKnJhdGU7CisJY29uc3Qgc3RydWN0IGlt eDhtbV9mcmFjcGxsX2NvbmZpZyAqY29uZmlnID0gJmlteDhtbV9mcmFjcGxsX3RhYmxlW2RyYXRl XTsKIAotCXJhdGUgPSBmcmFjcGxsKGZyZXEpOwotCWlmICghcmF0ZSkgewotCQlwcmludGYoIk5v IG1hdGNoZWQgZnJlcSB0YWJsZSAldVxuIiwgZnJlcSk7CisJaWYgKCFjb25maWctPnZhbGlkKSB7 CisJCXByaW50ZigiTm8gbWF0Y2hlZCBmcmVxIHRhYmxlIGVudHJ5ICV1XG4iLCBkcmF0ZSk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMjQyLDggKzI1OCw4IEBAIHN0YXRpYyBpbnQgZHJh bV9mcmFjX3BsbF9pbml0KHUzMiBmcmVxKQogCXRtcCAmPSB+UlNUX01BU0s7CiAJd3JpdGVsKHRt cCwgcGxsX2Jhc2UpOwogCi0Jd3JpdGVsKHJhdGUtPnIxLCBwbGxfYmFzZSArIDQpOwotCXdyaXRl bChyYXRlLT5yMiwgcGxsX2Jhc2UgKyA4KTsKKwl3cml0ZWwoY29uZmlnLT5yMSwgcGxsX2Jhc2Ug KyA0KTsKKwl3cml0ZWwoY29uZmlnLT5yMiwgcGxsX2Jhc2UgKyA4KTsKIAogCWZvciAoaSA9IDA7 IGkgPCAxMDAwOyBpKyspOwogCkBAIC0yNjEsMjUgKzI3NywxNiBAQCBzdGF0aWMgaW50IGRyYW1f ZnJhY19wbGxfaW5pdCh1MzIgZnJlcSkKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBTU0NHX1BM TF9MT0NLCQkJQklUKDMxKQotI2RlZmluZSBTU0NHX1BMTF9EUkFNX1BMTF9DTEtFCQlCSVQoOSkK LSNkZWZpbmUgU1NDR19QTExfUEQJCQlCSVQoNykKLSNkZWZpbmUgU1NDR19QTExfQllQQVNTMQkJ QklUKDUpCi0jZGVmaW5lIFNTQ0dfUExMX0JZUEFTUzIJCUJJVCg0KQotCi0jZGVmaW5lIFNTQ0df UExMX1JFRl9ESVZSMl9NQVNLCQkoMHgzZiA8PCAxOSkKLSNkZWZpbmUgU1NDR19QTExfUkVGX0RJ VlIyX1ZBTChuKQkoKChuKSA8PCAxOSkgJiBTU0NHX1BMTF9SRUZfRElWUjJfTUFTSykKLSNkZWZp bmUgU1NDR19QTExfRkVFREJBQ0tfRElWX0YxX01BU0sJKDB4M2YgPDwgMTMpCi0jZGVmaW5lIFNT Q0dfUExMX0ZFRURCQUNLX0RJVl9GMV9WQUwobikJKCgobikgPDwgMTMpICYgU1NDR19QTExfRkVF REJBQ0tfRElWX0YxX01BU0spCi0jZGVmaW5lIFNTQ0dfUExMX0ZFRURCQUNLX0RJVl9GMl9NQVNL CSgweDNmIDw8IDcpCi0jZGVmaW5lIFNTQ0dfUExMX0ZFRURCQUNLX0RJVl9GMl9WQUwobikJKCgo bikgPDwgNykgJiBTU0NHX1BMTF9GRUVEQkFDS19ESVZfRjJfTUFTSykKLSNkZWZpbmUgU1NDR19Q TExfT1VUUFVUX0RJVl9WQUxfTUFTSwkoMHgzZiA8PCAxKQotI2RlZmluZSBTU0NHX1BMTF9PVVRQ VVRfRElWX1ZBTChuKQkoKChuKSA8PCAxKSAmIFNTQ0dfUExMX09VVFBVVF9ESVZfVkFMX01BU0sp Ci0KLXN0YXRpYyBpbnQgZHJhbV9zc2NnX3BsbF9pbml0KHUzMiBmcmVxKQorc3RhdGljIGludCBk cmFtX3NzY2dfcGxsX2luaXQoZW51bSBkZHJfcmF0ZSBkcmF0ZSkKIHsKIAl1MzIgdmFsOwogCXZv aWQgX19pb21lbSAqcGxsX2Jhc2UgPSBJT01FTShNWDhNX0FOQVRPUF9CQVNFX0FERFIpICsgMHg2 MDsKKwljb25zdCBzdHJ1Y3QgaW14OG1xX3NzZ2NwbGxfY29uZmlnICpjb25maWcgPSAmaW14OG1x X3NzZ2NwbGxfdGFibGVbZHJhdGVdOworCisJaWYgKCFjb25maWctPnZhbGlkKSB7CisJCXByaW50 ZigiTm8gbWF0Y2hlZCBmcmVxIHRhYmxlIGVudHJ5ICV1XG4iLCBkcmF0ZSk7CisJCXJldHVybiAt RUlOVkFMOworCX0KIAogCS8qIEJ5cGFzcyAqLwogCXNldGJpdHNfbGUzMihwbGxfYmFzZSwgU1ND R19QTExfQllQQVNTMSB8IFNTQ0dfUExMX0JZUEFTUzIpOwpAQCAtMjg5LDM2ICsyOTYsNyBAQCBz dGF0aWMgaW50IGRyYW1fc3NjZ19wbGxfaW5pdCh1MzIgZnJlcSkKIAkJIFNTQ0dfUExMX0ZFRURC QUNLX0RJVl9GMl9NQVNLIHwKIAkJIFNTQ0dfUExMX0ZFRURCQUNLX0RJVl9GMV9NQVNLIHwKIAkJ IFNTQ0dfUExMX1JFRl9ESVZSMl9NQVNLKTsKLQotCXN3aXRjaCAoZnJlcSkgewotCWNhc2UgTUha KDgwMCk6Ci0JCXZhbCB8PSBTU0NHX1BMTF9PVVRQVVRfRElWX1ZBTCgwKTsKLQkJdmFsIHw9IFNT Q0dfUExMX0ZFRURCQUNLX0RJVl9GMl9WQUwoMTEpOwotCQl2YWwgfD0gU1NDR19QTExfRkVFREJB Q0tfRElWX0YxX1ZBTCgzOSk7Ci0JCXZhbCB8PSBTU0NHX1BMTF9SRUZfRElWUjJfVkFMKDI5KTsK LQkJYnJlYWs7Ci0JY2FzZSBNSFooNjAwKToKLQkJdmFsIHw9IFNTQ0dfUExMX09VVFBVVF9ESVZf VkFMKDEpOwotCQl2YWwgfD0gU1NDR19QTExfRkVFREJBQ0tfRElWX0YyX1ZBTCgxNyk7Ci0JCXZh bCB8PSBTU0NHX1BMTF9GRUVEQkFDS19ESVZfRjFfVkFMKDM5KTsKLQkJdmFsIHw9IFNTQ0dfUExM X1JFRl9ESVZSMl9WQUwoMjkpOwotCQlicmVhazsKLQljYXNlIE1IWig0MDApOgotCQl2YWwgfD0g U1NDR19QTExfT1VUUFVUX0RJVl9WQUwoMSk7Ci0JCXZhbCB8PSBTU0NHX1BMTF9GRUVEQkFDS19E SVZfRjJfVkFMKDExKTsKLQkJdmFsIHw9IFNTQ0dfUExMX0ZFRURCQUNLX0RJVl9GMV9WQUwoMzkp OwotCQl2YWwgfD0gU1NDR19QTExfUkVGX0RJVlIyX1ZBTCgyOSk7Ci0JCWJyZWFrOwotCWNhc2Ug TUhaKDE2Nyk6Ci0JCXZhbCB8PSBTU0NHX1BMTF9PVVRQVVRfRElWX1ZBTCgzKTsKLQkJdmFsIHw9 IFNTQ0dfUExMX0ZFRURCQUNLX0RJVl9GMl9WQUwoOCk7Ci0JCXZhbCB8PSBTU0NHX1BMTF9GRUVE QkFDS19ESVZfRjFfVkFMKDQ1KTsKLQkJdmFsIHw9IFNTQ0dfUExMX1JFRl9ESVZSMl9WQUwoMzAp OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci0KKwl2YWwgfD0gY29uZmlnLT52 YWw7CiAJd3JpdGVsKHZhbCwgcGxsX2Jhc2UgKyAweDgpOwogCiAJLyogQ2xlYXIgcG93ZXIgZG93 biBiaXQgKi8KQEAgLTMzNyw1OSArMzE1LDQzIEBAIHN0YXRpYyBpbnQgZHJhbV9zc2NnX3BsbF9p bml0KHUzMiBmcmVxKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGRyYW1fcGxsX2luaXQo dTMyIGZyZXEsIGVudW0gZGRyY190eXBlIHR5cGUpCitzdGF0aWMgaW50IGRyYW1fcGxsX2luaXQo ZW51bSBkZHJfcmF0ZSBkcmF0ZSwgZW51bSBkZHJjX3R5cGUgdHlwZSkKIHsKIAlzd2l0Y2ggKHR5 cGUpIHsKIAljYXNlIEREUkNfVFlQRV9NUToKLQkJcmV0dXJuIGRyYW1fc3NjZ19wbGxfaW5pdChm cmVxKTsKKwkJcmV0dXJuIGRyYW1fc3NjZ19wbGxfaW5pdChkcmF0ZSk7CiAJY2FzZSBERFJDX1RZ UEVfTU06CiAJY2FzZSBERFJDX1RZUEVfTVA6Ci0JCXJldHVybiBkcmFtX2ZyYWNfcGxsX2luaXQo ZnJlcSk7CisJCXJldHVybiBkcmFtX2ZyYWNfcGxsX2luaXQoZHJhdGUpOwogCWRlZmF1bHQ6CiAJ CXJldHVybiAtRU5PREVWOwogCX0KIH0KIAotdm9pZCBkZHJwaHlfaW5pdF9zZXRfZGZpX2Nsayh1 bnNpZ25lZCBpbnQgZHJhdGUsIGVudW0gZGRyY190eXBlIHR5cGUpCit2b2lkIGRkcnBoeV9pbml0 X3NldF9kZmlfY2xrKHVuc2lnbmVkIGludCBkcmF0ZV9taHosIGVudW0gZGRyY190eXBlIHR5cGUp CiB7Ci0Jc3dpdGNoIChkcmF0ZSkgewotCWNhc2UgNDAwMDoKLQkJZHJhbV9wbGxfaW5pdChNSFoo MTAwMCksIHR5cGUpOwotCQlkcmFtX2Rpc2FibGVfYnlwYXNzKCk7Ci0JCWJyZWFrOwotCWNhc2Ug MzIwMDoKLQkJZHJhbV9wbGxfaW5pdChNSFooODAwKSwgdHlwZSk7Ci0JCWRyYW1fZGlzYWJsZV9i eXBhc3MoKTsKLQkJYnJlYWs7Ci0JY2FzZSAzMDAwOgotCQlkcmFtX3BsbF9pbml0KE1IWig3NTAp LCB0eXBlKTsKLQkJZHJhbV9kaXNhYmxlX2J5cGFzcygpOwotCQlicmVhazsKLQljYXNlIDI0MDA6 Ci0JCWRyYW1fcGxsX2luaXQoTUhaKDYwMCksIHR5cGUpOwotCQlkcmFtX2Rpc2FibGVfYnlwYXNz KCk7Ci0JCWJyZWFrOwotCWNhc2UgMTYwMDoKLQkJZHJhbV9wbGxfaW5pdChNSFooNDAwKSwgdHlw ZSk7Ci0JCWRyYW1fZGlzYWJsZV9ieXBhc3MoKTsKLQkJYnJlYWs7Ci0JY2FzZSAxMDY2OgotCQlk cmFtX3BsbF9pbml0KE1IWigyNjYpLHR5cGUpOwotCQlkcmFtX2Rpc2FibGVfYnlwYXNzKCk7Ci0J CWJyZWFrOwotCWNhc2UgNjY3OgotCQlkcmFtX3BsbF9pbml0KE1IWigxNjcpLCB0eXBlKTsKLQkJ ZHJhbV9kaXNhYmxlX2J5cGFzcygpOwotCQlicmVhazsKLQljYXNlIDQwMDoKLQkJZHJhbV9lbmFi bGVfYnlwYXNzKE1IWig0MDApKTsKLQkJYnJlYWs7Ci0JY2FzZSAxMDA6Ci0JCWRyYW1fZW5hYmxl X2J5cGFzcyhNSFooMTAwKSk7Ci0JCWJyZWFrOworCWVudW0gZGRyX3JhdGUgZHJhdGU7CisKKwlz d2l0Y2ggKGRyYXRlX21oeikgeworCWNhc2UgNDAwMDogZHJhdGUgPSBERFJfNDAwMDsgYnJlYWs7 CisJY2FzZSAzMjAwOiBkcmF0ZSA9IEREUl8zMjAwOyBicmVhazsKKwljYXNlIDMwMDA6IGRyYXRl ID0gRERSXzMwMDA7IGJyZWFrOworCWNhc2UgMjQwMDogZHJhdGUgPSBERFJfMjQwMDsgYnJlYWs7 CisJY2FzZSAxNjAwOiBkcmF0ZSA9IEREUl8xNjAwOyBicmVhazsKKwljYXNlIDEwNjY6IGRyYXRl ID0gRERSXzEwNjY7IGJyZWFrOworCWNhc2UgNjY3OiBkcmF0ZSA9IEREUl82Njc7IGJyZWFrOwor CWNhc2UgNDAwOiBkcmF0ZSA9IEREUl80MDA7IGJyZWFrOworCWNhc2UgMTAwOiBkcmF0ZSA9IERE Ul8xMDA7IGJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybjsKIAl9CisKKwlpZiAoZHJhdGVfbWh6 ID4gNDAwKSB7CisJCWRyYW1fcGxsX2luaXQoZHJhdGUsIHR5cGUpOworCQlkcmFtX2Rpc2FibGVf YnlwYXNzKCk7CisJfSBlbHNlIHsKKwkJZHJhbV9lbmFibGVfYnlwYXNzKGRyYXRlKTsKKwl9CiB9 CiAKIHZvaWQgZGRycGh5X2luaXRfcmVhZF9tc2dfYmxvY2soZW51bSBmd190eXBlIHR5cGUpCi0t IAoyLjMxLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpiYXJlYm94IG1haWxpbmcgbGlzdApiYXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9iYXJlYm94Cg==