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=-7.4 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_HTML_MOSTLY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C3465C433B4 for ; Thu, 1 Apr 2021 01:20:33 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 2935860FED for ; Thu, 1 Apr 2021 01:20:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2935860FED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=163.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C49E6EBC4; Thu, 1 Apr 2021 01:20:32 +0000 (UTC) Received: from m1361.mail.163.com (m1361.mail.163.com [220.181.13.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6A4C26EBC4 for ; Thu, 1 Apr 2021 01:20:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=76LJB /lJV16Nd/Sh4M6B33SNIX6mBS5Id+4ujUMDVJA=; b=QYKItGyJ4Q9IiC32HOBib 7q7zOgCb91oW3l9HyO+uGlxp6kzofnP5iDIQ2a3BrG6oaigmOxf2zvEBbffqScRd WTCdahStsNQNgZENsxNeK/XST2c5wAfXawJ2wgp4Fj0FaSRb30JM8aqCP+fJXxHG ZvaQ5xv9weXGhJRDhymkI8= Received: from liplay$163.com ( [114.242.206.180] ) by ajax-webmail-wmsvr61 (Coremail) ; Thu, 1 Apr 2021 09:20:17 +0800 (CST) X-Originating-IP: [114.242.206.180] Date: Thu, 1 Apr 2021 09:20:17 +0800 (CST) From: lichenyang To: dri-devel@lists.freedesktop.org Subject: [PATCH v7] drm/loongson: Add DRM Driver for Loongson 7A1000 bridge chip X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.13 build 20210104(ab8c30b6) Copyright (c) 2002-2021 www.mailtech.cn 163com X-CM-CTRLDATA: L9fxUmZvb3Rlcl9odG09MzAxMjg6NTY= MIME-Version: 1.0 Message-ID: <6564f8fa.b69.1788b0448d2.Coremail.liplay@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: PcGowABHTx_RH2VgBLG5AA--.60774W X-CM-SenderInfo: xolsztr16rljoofrz/1tbiMh9aHFWBtUpi+QABsa X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== 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: , Content-Type: multipart/mixed; boundary="===============1228231563==" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" --===============1228231563== Content-Type: multipart/alternative; boundary="----=_Part_10603_1734786299.1617240017106" ------=_Part_10603_1734786299.1617240017106 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 VGhpcyBwYXRjaCBhZGRzIGFuIGluaXRpYWwgRFJNIGRyaXZlciBmb3IgdGhlIExvb25nc29uIExT N0ExMDAwCmJyaWRnZSBjaGlwKExTN0EpLiBUaGUgTFM3QSBicmlkZ2UgY2hpcCBjb250YWlucyB0 d28gZGlzcGxheQpjb250cm9sbGVycywgc3VwcG9ydCBkdWFsIGRpc3BsYXkgb3V0cHV0LiBUaGUg bWF4aW11bSBzdXBwb3J0IGZvcgplYWNoIGNoYW5uZWwgZGlzcGxheSBpcyB0byAxOTIweDEwODBA NjBIei4KQXQgcHJlc2VudCwgREMgZGV2aWNlIGRldGVjdGlvbiBhbmQgRFJNIGRyaXZlciByZWdp c3RyYXRpb24gYXJlCmNvbXBsZXRlZCwgdGhlIGNydGMvcGxhbmUvZW5jb2Rlci9jb25uZWN0b3Ig b2JqZWN0cyBoYXMgYmVlbgppbXBsZW1lbnRlZC4KT24gTG9vbmdzb24gM0E0MDAwIENQVSBhbmQg N0ExMDAwIHN5c3RlbSwgd2UgaGF2ZSBhY2hpZXZlZCB0aGUgdXNlCm9mIGR1YWwgc2NyZWVuLCBh bmQgc3VwcG9ydCBkdWFsIHNjcmVlbiBjbG9uZSBtb2RlIGFuZCBleHBhbnNpb24KbW9kZS4KCnY3 OgotIFRoZSBwaXhlbCBjbG9jayBpcyBsaW1pdGVkIHRvIGxlc3MgdGhhbiAxNzMwMDAuCgp2NjoK LSBSZW1vdmUgc3Bpbl9sb2NrIGluIG1taW8gcmVnIHJlYWQgYW5kIHdyaXRlLgotIFRPX1VOQ0FD IGlzIHJlcGxhYyB3aXRoIGlvcmVtYXAuCi0gRml4IGVycm9yIGFyZ3VtZW50cyBpbiBjcnRjX2F0 b21pY19lbmFibGUvZGlzYWJsZS9tb2RlX3ZhbGlkLgoKdjU6Ci0gQ2hhbmdlIHRoZSBuYW1lIG9m IHRoZSBjaGlwIHRvIExTN0EuCi0gQ2hhbmdlIG1hZ2ljIHZhbHVlIGluIGNydGMgdG8gbWFjcm9z LgotIENvcnJlY3QgbWlzdGFrZXMgd29yZHMuCi0gQ2hhbmdlIHRoZSByZWdpc3RlciBvcGVyYXRp b24gZnVuY3Rpb24gcHJlZml4IHRvIGxzN2EuCgp2NDoKLSBNb3ZlIHRoZSBtb2RlX3ZhbGlkIGZ1 bmN0aW9uIHRvIHRoZSBjcnRjLgoKdjM6Ci0gTW92ZSB0aGUgbW9kZV92YWxpZCBmdW5jdGlvbiB0 byB0aGUgY29ubmVjdG9yIGFuZCBvcHRpbWl6ZSBpdC4KLSBGaXggbnVtX2NydGMgY2FsY3VsYXRp b24gbWV0aG9kLgoKdjI6Ci0gQ29tcGxldGUgdGhlIGNhc2Ugb2YgMzItYml0IGNvbG9yIGluIENS VEMuCgpTaWduZWQtb2ZmLWJ5OiBDaGVueWFuZyBMaSA8bGljaGVueWFuZ0Bsb29uZ3Nvbi5jbj4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg KwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnICAgICAgICAgICAgICB8ICAxNCArCiBk cml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vTWFrZWZpbGUgICAgICAgICAgICAgfCAgMTQgKwogZHJp dmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Nvbm5lY3Rvci5jIHwgIDQ4ICsrKysKIGRy aXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9jcnRjLmMgICAgICB8IDI0MyArKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZGV2aWNlLmMgICAg fCAgNDcgKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZHJ2LmMgICAgICAg fCAyNzAgKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdz b25fZHJ2LmggICAgICAgfCAxMzkgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bG9vbmdzb25fZW5jb2Rlci5jICAgfCAgMzcgKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bG9vbmdzb25fcGxhbmUuYyAgICAgfCAxMDIgKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgOTE3 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9vbmdz b24vS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9N YWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29u Z3Nvbl9jb25uZWN0b3IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29u Z3Nvbi9sb29uZ3Nvbl9jcnRjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bG9vbmdzb24vbG9vbmdzb25fZGV2aWNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZW5jb2Rlci5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX3BsYW5lLmMKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4 IDA5NzNmNDA4ZDc1Zi4uNmVkMWI2ZGMyZjI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v S2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMzc0LDYgKzM3NCw4IEBA IHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMv Z3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbG9v bmdzb24vS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnIgog CiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9LY29uZmlnIgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4 IGZlZmFmZjRjODMyZC4uZjg3ZGE3MzBlYTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xMTksNiArMTE5LDcg QEAgb2JqLSQoQ09ORklHX0RSTV9QTDExMSkgKz0gcGwxMTEvCiBvYmotJChDT05GSUdfRFJNX1RW RTIwMCkgKz0gdHZlMjAwLwogb2JqLSQoQ09ORklHX0RSTV9YRU4pICs9IHhlbi8KIG9iai0kKENP TkZJR19EUk1fVkJPWFZJREVPKSArPSB2Ym94dmlkZW8vCitvYmotJChDT05GSUdfRFJNX0xPT05H U09OKSArPSBsb29uZ3Nvbi8KIG9iai0kKENPTkZJR19EUk1fTElNQSkgICs9IGxpbWEvCiBvYmot JChDT05GSUdfRFJNX1BBTkZST1NUKSArPSBwYW5mcm9zdC8KIG9iai0kKENPTkZJR19EUk1fQVNQ RUVEX0dGWCkgKz0gYXNwZWVkLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29u L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjZjQyYTRjY2EwOAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnCkBAIC0wLDAgKzEsMTQgQEAKKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorCitjb25maWcgRFJNX0xPT05H U09OCisJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBMUzdBIGJyaWRnZSBjaGlwc2V0IgorCWRl cGVuZHMgb24gRFJNICYmIFBDSQorCWRlcGVuZHMgb24gQ1BVX0xPT05HU09ONjQKKwlzZWxlY3Qg RFJNX0tNU19IRUxQRVIKKwlzZWxlY3QgRFJNX1ZSQU1fSEVMUEVSCisJc2VsZWN0IERSTV9UVE0K KwlzZWxlY3QgRFJNX1RUTV9IRUxQRVIKKwlkZWZhdWx0IG4KKwloZWxwCisJICBTdXBwb3J0IHRo ZSBkaXNwbGF5IGNvbnRyb2xsZXJzIGZvdW5kIG9uIHRoZSBMb29uZ3NvbiBMUzdBCisJICBicmlk Z2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4yMmQwNjM5NTNiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbG9vbmdzb24vTWFrZWZpbGUKQEAgLTAsMCArMSwxNCBAQAorIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjIE1ha2VmaWxlIGZvciBsb29uZ3NvbiBkcm0g ZHJpdmVycy4KKyMgVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlCisjIERpcmVj dCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkKKworY2NmbGFncy15IDo9IC1JaW5jbHVk ZS9kcm0KK2xvb25nc29uLXkgOj0gbG9vbmdzb25fZHJ2Lm8gXAorCWxvb25nc29uX2NydGMubyBc CisJbG9vbmdzb25fcGxhbmUubyBcCisJbG9vbmdzb25fZGV2aWNlLm8gXAorCWxvb25nc29uX2Nv bm5lY3Rvci5vIFwKKwlsb29uZ3Nvbl9lbmNvZGVyLm8KK29iai0kKENPTkZJR19EUk1fTE9PTkdT T04pICs9IGxvb25nc29uLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9s b29uZ3Nvbl9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9j b25uZWN0b3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZiMWYw ZmZhMzNiZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29u Z3Nvbl9jb25uZWN0b3IuYwpAQCAtMCwwICsxLDQ4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vci1sYXRlcgorCisjaW5jbHVkZSAibG9vbmdzb25fZHJ2LmgiCisKK3N0 YXRpYyBpbnQgbG9vbmdzb25fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpCit7CisJaW50IGNvdW50OworCisJY291bnQgPSBkcm1fYWRkX21vZGVzX25vZWRpZChjb25u ZWN0b3IsIDE5MjAsIDEwODApOworCWRybV9zZXRfcHJlZmVycmVkX21vZGUoY29ubmVjdG9yLCAx MDI0LCA3NjgpOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGxvb25nc29uX2Nvbm5lY3Rvcl9oZWxwZXIgPSB7CisJ LmdldF9tb2RlcyA9IGxvb25nc29uX2dldF9tb2RlcywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBsb29uZ3Nvbl9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmZp bGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRl c3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK2lu dCBsb29uZ3Nvbl9jb25uZWN0b3JfaW5pdChzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCBp bnQgaW5kZXgpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3Qg bG9vbmdzb25fY29ubmVjdG9yICpsY29ubmVjdG9yOworCisJbGNvbm5lY3RvciA9IGt6YWxsb2Mo c2l6ZW9mKHN0cnVjdCBsb29uZ3Nvbl9jb25uZWN0b3IpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWxj b25uZWN0b3IpIHsKKwkJRFJNX0lORk8oImxvb25nc29uIGNvbm5lY3RvciBremFsbG9jIGZhaWxl ZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlsY29ubmVjdG9yLT5sZGV2ID0gbGRldjsKKwls Y29ubmVjdG9yLT5pZCA9IGluZGV4OworCisJbGRldi0+bW9kZV9pbmZvW2luZGV4XS5jb25uZWN0 b3IgPSBsY29ubmVjdG9yOworCWNvbm5lY3RvciA9ICZsY29ubmVjdG9yLT5iYXNlOworCWRybV9j b25uZWN0b3JfaW5pdChsZGV2LT5kZXYsIGNvbm5lY3RvciwgJmxvb25nc29uX2Nvbm5lY3Rvcl9m dW5jcywKKwkJCSAgIERSTV9NT0RFX0NPTk5FQ1RPUl9Vbmtub3duKTsKKwlkcm1fY29ubmVjdG9y X2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmbG9vbmdzb25fY29ubmVjdG9yX2hlbHBlcik7CisKKwly ZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nv bl9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fY3J0Yy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGNiNjVmYTA4Nzc4Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2NydGMuYwpAQCAt MCwwICsxLDI0MyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXIKKworI2luY2x1ZGUgImxvb25nc29uX2Rydi5oIgorCitzdGF0aWMgdm9pZCB0cnlfZWFjaF9s b29wYyh1MzIgY2xrLCB1MzIgcHN0ZGl2LCB1MzIgZnJlZmMsCisJCQkgICBzdHJ1Y3QgcGl4X3Bs bCAqcGxsX2NvbmZpZykKK3sKKwl1MzIgbG9vcGM7CisJdTMyIGNsa19vdXQ7CisJdTMyIHByZWNp c2lvbjsKKwl1MzIgbWluID0gMTAwMDsKKwl1MzIgYmFzZV9jbGsgPSAxMDAwMDBMOworCisJZm9y IChsb29wYyA9IExPT1BDX01JTjsgbG9vcGMgPCBMT09QQ19NQVg7IGxvb3BjKyspIHsKKwkJaWYg KChsb29wYyA8IEZSRV9SRUZfTUlOICogZnJlZmMpIHx8CisJCSAgICAobG9vcGMgPiBGUkVfUkVG X01BWCAqIGZyZWZjKSkKKwkJCWNvbnRpbnVlOworCisJCWNsa19vdXQgPSBiYXNlX2NsayAqIGxv b3BjIC8gZnJlZmM7CisJCXByZWNpc2lvbiA9IChjbGsgPiBjbGtfb3V0KSA/IChjbGsgLSBjbGtf b3V0KSA6IChjbGtfb3V0IC0gY2xrKTsKKwkJaWYgKHByZWNpc2lvbiA8IG1pbikgeworCQkJcGxs X2NvbmZpZy0+bDJfZGl2ID0gcHN0ZGl2OworCQkJcGxsX2NvbmZpZy0+bDFfbG9vcGMgPSBsb29w YzsKKwkJCXBsbF9jb25maWctPmwxX2ZyZWZjID0gZnJlZmM7CisJCX0KKwl9Cit9CisKK3N0YXRp YyB2b2lkIGNhbF9mcmVxKHUzMiBwaXhjbG9jaywgc3RydWN0IHBpeF9wbGwgKnBsbF9jb25maWcp Cit7CisJdTMyIHBzdGRpdjsKKwl1MzIgZnJlZmM7CisJdTMyIGNsazsKKworCWZvciAocHN0ZGl2 ID0gMTsgcHN0ZGl2IDwgUFNUX0RJVl9NQVg7IHBzdGRpdisrKSB7CisJCWNsayA9IHBpeGNsb2Nr ICogcHN0ZGl2OworCQlmb3IgKGZyZWZjID0gRElWX1JFRl9NSU47IGZyZWZjIDw9IERJVl9SRUZf TUFYOyBmcmVmYysrKQorCQkJdHJ5X2VhY2hfbG9vcGMoY2xrLCBwc3RkaXYsIGZyZWZjLCBwbGxf Y29uZmlnKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNvbmZpZ19wbGwoc3RydWN0IGxvb25nc29u X2RldmljZSAqbGRldiwgdW5zaWduZWQgbG9uZyBwbGxfYmFzZSwKKwkJICAgICAgIHN0cnVjdCBw aXhfcGxsICpwbGxfY2ZnKQoreworCXUzMiB2YWw7CisJdTMyIGNvdW50ID0gMDsKKworCS8qIGNs ZWFyIHNlbF9wbGxfb3V0MCAqLworCXZhbCA9IGxzN2FfaW9fcnJlZyhsZGV2LCBwbGxfYmFzZSAr IDB4NCk7CisJdmFsICY9IH4oMVVMIDw8IDgpOworCWxzN2FfaW9fd3JlZyhsZGV2LCBwbGxfYmFz ZSArIDB4NCwgdmFsKTsKKworCS8qIHNldCBwbGxfcGQgKi8KKwl2YWwgPSBsczdhX2lvX3JyZWco bGRldiwgcGxsX2Jhc2UgKyAweDQpOworCXZhbCB8PSAoMVVMIDw8IDEzKTsKKwlsczdhX2lvX3dy ZWcobGRldiwgcGxsX2Jhc2UgKyAweDQsIHZhbCk7CisKKwkvKiBjbGVhciBzZXRfcGxsX3BhcmFt ICovCisJdmFsID0gbHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0KTsKKwl2YWwgJj0g figxVUwgPDwgMTEpOworCWxzN2FfaW9fd3JlZyhsZGV2LCBwbGxfYmFzZSArIDB4NCwgdmFsKTsK KworCS8qIGNsZWFyIG9sZCB2YWx1ZSAmIGNvbmZpZyBuZXcgdmFsdWUgKi8KKwl2YWwgPSBsczdh X2lvX3JyZWcobGRldiwgcGxsX2Jhc2UgKyAweDQpOworCXZhbCAmPSB+KDB4N2ZVTCA8PCAwKTsK Kwl2YWwgfD0gKHBsbF9jZmctPmwxX2ZyZWZjIDw8IDApOyAvKiByZWZjICovCisJbHM3YV9pb193 cmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0LCB2YWwpOworCXZhbCA9IGxzN2FfaW9fcnJlZyhsZGV2 LCBwbGxfYmFzZSArIDB4MCk7CisJdmFsICY9IH4oMHg3ZlVMIDw8IDApOworCXZhbCB8PSAocGxs X2NmZy0+bDJfZGl2IDw8IDApOyAvKiBkaXYgKi8KKwl2YWwgJj0gfigweDFmZlVMIDw8IDIxKTsK Kwl2YWwgfD0gKHBsbF9jZmctPmwxX2xvb3BjIDw8IDIxKTsgLyogbG9vcGMgKi8KKwlsczdhX2lv X3dyZWcobGRldiwgcGxsX2Jhc2UgKyAweDAsIHZhbCk7CisKKwkvKiBzZXQgc2V0X3BsbF9wYXJh bSAqLworCXZhbCA9IGxzN2FfaW9fcnJlZyhsZGV2LCBwbGxfYmFzZSArIDB4NCk7CisJdmFsIHw9 ICgxVUwgPDwgMTEpOworCWxzN2FfaW9fd3JlZyhsZGV2LCBwbGxfYmFzZSArIDB4NCwgdmFsKTsK KwkvKiBjbGVhciBwbGxfcGQgKi8KKwl2YWwgPSBsczdhX2lvX3JyZWcobGRldiwgcGxsX2Jhc2Ug KyAweDQpOworCXZhbCAmPSB+KDFVTCA8PCAxMyk7CisJbHM3YV9pb193cmVnKGxkZXYsIHBsbF9i YXNlICsgMHg0LCB2YWwpOworCisJd2hpbGUgKCEobHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNl ICsgMHg0KSAmIDB4ODApKSB7CisJCWNwdV9yZWxheCgpOworCQljb3VudCsrOworCQlpZiAoY291 bnQgPj0gMTAwMCkgeworCQkJRFJNX0VSUk9SKCJsb29uZ3Nvbi03QSBQTEwgbG9jayBmYWlsZWRc biIpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwl2YWwgPSBsczdhX2lvX3JyZWcobGRldiwgcGxs X2Jhc2UgKyAweDQpOworCXZhbCB8PSAoMVVMIDw8IDgpOworCWxzN2FfaW9fd3JlZyhsZGV2LCBw bGxfYmFzZSArIDB4NCwgdmFsKTsKK30KKworc3RhdGljIHZvaWQgbG9vbmdzb25fY3J0Y19tb2Rl X3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYgPSBkZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBsb29uZ3Nvbl9jcnRjICpsY3J0YyA9IHRvX2xvb25nc29uX2Ny dGMoY3J0Yyk7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUt PmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZm9ybWF0Owor CXN0cnVjdCBwaXhfcGxsIHBsbF9jZmc7CisJdTMyIGhyLCBoc3MsIGhzZSwgaGZsOworCXUzMiB2 ciwgdnNzLCB2c2UsIHZmbDsKKwl1MzIgcGl4X2ZyZXE7CisJdTMyIHJlZ19vZmZzZXQ7CisKKwlo ciA9IG1vZGUtPmhkaXNwbGF5OworCWhzcyA9IG1vZGUtPmhzeW5jX3N0YXJ0OworCWhzZSA9IG1v ZGUtPmhzeW5jX2VuZDsKKwloZmwgPSBtb2RlLT5odG90YWw7CisKKwl2ciA9IG1vZGUtPnZkaXNw bGF5OworCXZzcyA9IG1vZGUtPnZzeW5jX3N0YXJ0OworCXZzZSA9IG1vZGUtPnZzeW5jX2VuZDsK Kwl2ZmwgPSBtb2RlLT52dG90YWw7CisKKwlwaXhfZnJlcSA9IG1vZGUtPmNsb2NrOworCXJlZ19v ZmZzZXQgPSBsY3J0Yy0+cmVnX29mZnNldDsKKwlmb3JtYXQgPSBjcnRjLT5wcmltYXJ5LT5zdGF0 ZS0+ZmItPmZvcm1hdDsKKworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9ESVRDRkdfUkVHICsgcmVn X29mZnNldCwgMCk7CisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0RJVFRBQl9MT19SRUcgKyByZWdf b2Zmc2V0LCAwKTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfRElUVEFCX0hJX1JFRyArIHJlZ19v ZmZzZXQsIDApOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9QQU5DRkdfUkVHICsgcmVnX29mZnNl dCwgRkJfUEFOQ0ZHX0RFRik7CisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX1BBTlRJTV9SRUcgKyBy ZWdfb2Zmc2V0LCAwKTsKKworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9IRElTUExBWV9SRUcgKyBy ZWdfb2Zmc2V0LCAoaGZsIDw8IDE2KSB8IGhyKTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfSFNZ TkNfUkVHICsgcmVnX29mZnNldCwKKwkJICAgICBGQl9IU1lOQ19QVUxTRSB8IChoc2UgPDwgMTYp IHwgaHNzKTsKKworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9WRElTUExBWV9SRUcgKyByZWdfb2Zm c2V0LCAodmZsIDw8IDE2KSB8IHZyKTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfVlNZTkNfUkVH ICsgcmVnX29mZnNldCwKKwkJICAgICBGQl9WU1lOQ19QVUxTRSB8ICh2c2UgPDwgMTYpIHwgdnNz KTsKKworCXN3aXRjaCAoZm9ybWF0LT5mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1 OgorCQlsY3J0Yy0+Y2ZnX3JlZyB8PSAweDM7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9S R0I4ODg6CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdC ODg4ODoKKwlkZWZhdWx0OgorCQlsY3J0Yy0+Y2ZnX3JlZyB8PSAweDQ7CisJCWJyZWFrOworCX0K KwlsczdhX21tX3dyZWcobGRldiwgRkJfQ0ZHX1JFRyArIHJlZ19vZmZzZXQsIGxjcnRjLT5jZmdf cmVnKTsKKworCWNhbF9mcmVxKHBpeF9mcmVxLCAmcGxsX2NmZyk7CisJY29uZmlnX3BsbChsZGV2 LCBMUzdBX1BJWF9QTEwgKyByZWdfb2Zmc2V0LCAmcGxsX2NmZyk7Cit9CisKK3N0YXRpYyB2b2lk IGxvb25nc29uX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJ CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgbG9vbmdzb25fY3J0YyAqbGNydGMgPSB0b19sb29uZ3Nv bl9jcnRjKGNydGMpOworCXUzMiByZWdfb2Zmc2V0ID0gbGNydGMtPnJlZ19vZmZzZXQ7CisKKwls Y3J0Yy0+Y2ZnX3JlZyB8PSBDRkdfRU5BQkxFOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9DRkdf UkVHICsgcmVnX29mZnNldCwgbGNydGMtPmNmZ19yZWcpOworfQorCitzdGF0aWMgdm9pZCBsb29u Z3Nvbl9jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkJIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgbG9vbmdzb25fY3J0YyAqbGNydGMgPSB0b19sb29uZ3Nvbl9j cnRjKGNydGMpOworCXUzMiByZWdfb2Zmc2V0ID0gbGNydGMtPnJlZ19vZmZzZXQ7CisKKwlsY3J0 Yy0+Y2ZnX3JlZyAmPSB+Q0ZHX0VOQUJMRTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfQ0ZHX1JF RyArIHJlZ19vZmZzZXQsIGxjcnRjLT5jZmdfcmVnKTsKK30KKworc3RhdGljIGVudW0gZHJtX21v ZGVfc3RhdHVzIGxvb25nc29uX21vZGVfdmFsaWQoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJ CQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJaWYgKG1vZGUtPmhk aXNwbGF5ID4gMTkyMCkKKwkJcmV0dXJuIE1PREVfQkFEOworCWlmIChtb2RlLT52ZGlzcGxheSA+ IDEwODApCisJCXJldHVybiBNT0RFX0JBRDsKKwlpZiAobW9kZS0+aGRpc3BsYXkgJSA2NCkKKwkJ cmV0dXJuIE1PREVfQkFEOworCWlmIChtb2RlLT5jbG9jayA+PSAxNzMwMDApCisJCXJldHVybiBN T0RFX0NMT0NLX0hJR0g7CisKKwlyZXR1cm4gTU9ERV9PSzsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgbG9vbmdzb25fY3J0Y19oZWxwZXJfZnVuY3MgPSB7 CisJLm1vZGVfdmFsaWQgPSBsb29uZ3Nvbl9tb2RlX3ZhbGlkLAorCS5hdG9taWNfZW5hYmxlID0g bG9vbmdzb25fY3J0Y19hdG9taWNfZW5hYmxlLAorCS5hdG9taWNfZGlzYWJsZSA9IGxvb25nc29u X2NydGNfYXRvbWljX2Rpc2FibGUsCisJLm1vZGVfc2V0X25vZmIgPSBsb29uZ3Nvbl9jcnRjX21v ZGVfc2V0X25vZmIsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGxv b25nc29uX2NydGNfZnVuY3MgPSB7CisJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnLAorCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCisJ LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwkuZGVzdHJveSA9IGRybV9j cnRjX2NsZWFudXAsCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRv bWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUsCit9OworCitpbnQgbG9vbmdzb25fY3J0Y19p bml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYsIGludCBpbmRleCkKK3sKKwlzdHJ1Y3Qg bG9vbmdzb25fY3J0YyAqbGNydGM7CisJdTMyIHJldDsKKworCWxjcnRjID0ga3phbGxvYyhzaXpl b2Yoc3RydWN0IGxvb25nc29uX2NydGMpLCBHRlBfS0VSTkVMKTsKKwlpZiAobGNydGMgPT0gTlVM TCkKKwkJcmV0dXJuIC0xOworCisJbGNydGMtPmxkZXYgPSBsZGV2OworCWxjcnRjLT5yZWdfb2Zm c2V0ID0gaW5kZXggKiBSRUdfT0ZGU0VUOworCWxjcnRjLT5jZmdfcmVnID0gQ0ZHX1JFU0VUOwor CWxjcnRjLT5jcnRjX2lkID0gaW5kZXg7CisKKwlyZXQgPSBsb29uZ3Nvbl9wbGFuZV9pbml0KGxj cnRjKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gZHJtX2NydGNfaW5pdF93 aXRoX3BsYW5lcyhsZGV2LT5kZXYsICZsY3J0Yy0+YmFzZSwgbGNydGMtPnBsYW5lLAorCQkJCQlO VUxMLCAmbG9vbmdzb25fY3J0Y19mdW5jcywgTlVMTCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJS T1IoImZhaWxlZCB0byBpbml0IGNydGMgJWRcbiIsIGluZGV4KTsKKwkJZHJtX3BsYW5lX2NsZWFu dXAobGNydGMtPnBsYW5lKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcm1fY3J0Y19oZWxwZXJf YWRkKCZsY3J0Yy0+YmFzZSwgJmxvb25nc29uX2NydGNfaGVscGVyX2Z1bmNzKTsKKworCWxkZXYt Pm1vZGVfaW5mb1tpbmRleF0uY3J0YyA9IGxjcnRjOworCisJcmV0dXJuIDA7Cit9CisKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kZXZpY2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kZXZpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1M2JkOGRlZDg5YgotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kZXZpY2UuYwpAQCAtMCwwICsxLDQ3IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorCisjaW5jbHVk ZSAibG9vbmdzb25fZHJ2LmgiCisKK3UzMiBsb29uZ3Nvbl9ncHVfb2Zmc2V0KHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87 CisJc3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRjOworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2Ug KmxkZXY7CisJdTMyIGdwdV9hZGRyOworCisJbGNydGMgPSB0b19sb29uZ3Nvbl9jcnRjKHN0YXRl LT5jcnRjKTsKKwlsZGV2ID0gbGNydGMtPmxkZXY7CisKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2Zf Z2VtKHN0YXRlLT5mYi0+b2JqWzBdKTsKKwlncHVfYWRkciA9IGxkZXYtPnZyYW1fc3RhcnQgKyBk cm1fZ2VtX3ZyYW1fb2Zmc2V0KGdibyk7CisKKwlyZXR1cm4gZ3B1X2FkZHI7Cit9CisKK3UzMiBs czdhX2lvX3JyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMyIG9mZnNldCkKK3sK Kwl1MzIgdmFsOworCisJdmFsID0gcmVhZGwobGRldi0+aW8gKyBvZmZzZXQpOworCisJcmV0dXJu IHZhbDsKK30KKwordm9pZCBsczdhX2lvX3dyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRl diwgdTMyIG9mZnNldCwgdTMyIHZhbCkKK3sKKwl3cml0ZWwodmFsLCBsZGV2LT5pbyArIG9mZnNl dCk7Cit9CisKK3UzMiBsczdhX21tX3JyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwg dTMyIG9mZnNldCkKK3sKKwl1MzIgdmFsOworCisJdmFsID0gcmVhZGwobGRldi0+bW1pbyArIG9m ZnNldCk7CisKKwlyZXR1cm4gdmFsOworfQorCit2b2lkIGxzN2FfbW1fd3JlZyhzdHJ1Y3QgbG9v bmdzb25fZGV2aWNlICpsZGV2LCB1MzIgb2Zmc2V0LCB1MzIgdmFsKQoreworCXdyaXRlbCh2YWws IGxkZXYtPm1taW8gKyBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xvb25nc29uX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29u X2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTQwNTE5OWEz ZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29u X2Rydi5jCkBAIC0wLDAgKzEsMjcwIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vci1sYXRlcgorLyoKKyAqIExvb25nc29uIExTN0ExMDAwIGJyaWRnZSBjaGlwc2V0IGRy bSBkcml2ZXIKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgorI2luY2x1ZGUgPGxp bnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPgorI2luY2x1ZGUgImxvb25nc29uX2Rydi5oIgorCisvKiBJbnRlcmZhY2UgaGlzdG9y eToKKyAqIDAuMSAtIG9yaWdpbmFsLgorICovCisjZGVmaW5lIERSSVZFUl9NQUpPUiAwCisjZGVm aW5lIERSSVZFUl9NSU5PUiAxCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmln X2Z1bmNzIGxvb25nc29uX21vZGVfZnVuY3MgPSB7CisJLmZiX2NyZWF0ZSA9IGRybV9nZW1fZmJf Y3JlYXRlLAorCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRv bWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKKwkub3V0cHV0X3BvbGxfY2hh bmdlZCA9IGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCwKKwkubW9kZV92YWxpZCA9 IGRybV92cmFtX2hlbHBlcl9tb2RlX3ZhbGlkCit9OworCitzdGF0aWMgaW50IGxvb25nc29uX2Rl dmljZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IGZsYWdzKQoreworCXN0 cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBw Y2lfZGV2ICpncHVfcGRldjsKKwlyZXNvdXJjZV9zaXplX3QgYXBlcl9iYXNlOworCXJlc291cmNl X3NpemVfdCBhcGVyX3NpemU7CisJcmVzb3VyY2Vfc2l6ZV90IG1taW9fYmFzZTsKKwlyZXNvdXJj ZV9zaXplX3QgbW1pb19zaXplOworCisJLyogR1BVIE1FTSAqLworCS8qIFdlIG5lZWQgZ2V0IDdB LWdwdSBwY2kgZGV2aWNlIGluZm9ybWF0aW9uIGZvciBsZGV2LT5ncHVfcGRldiAqLworCS8qIGRl di0+cGRldiBzYXZlIDdBLWRjIHBjaSBkZXZpY2UgaW5mb3JtYXRpb24gKi8KKwlncHVfcGRldiA9 IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfTE9PTkdTT04sCisJCQkJICBQQ0lfREVWSUNF X0lEX0xPT05HU09OX0dQVSwgTlVMTCk7CisJaWYgKElTX0VSUihncHVfcGRldikpCisJCXJldHVy biBQVFJfRVJSKGdwdV9wZGV2KTsKKworCWxkZXYtPmdwdV9wZGV2ID0gZ3B1X3BkZXY7CisJYXBl cl9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KGdwdV9wZGV2LCAyKTsKKwlhcGVyX3NpemUgPSBw Y2lfcmVzb3VyY2VfbGVuKGdwdV9wZGV2LCAyKTsKKwlsZGV2LT52cmFtX3N0YXJ0ID0gKHUzMilh cGVyX2Jhc2U7CisJbGRldi0+dnJhbV9zaXplID0gKHUzMilhcGVyX3NpemU7CisKKwlpZiAoIWRl dm1fcmVxdWVzdF9tZW1fcmVnaW9uKGxkZXYtPmRldi0+ZGV2LCBsZGV2LT52cmFtX3N0YXJ0LAor CQkJCSAgICAgbGRldi0+dnJhbV9zaXplLCAibG9vbmdzb25fdnJhbSIpKSB7CisJCURSTV9FUlJP UigiQ2FuJ3QgcmVzZXJ2ZSBWUkFNXG4iKTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisKKwkvKiBE QyBNRU0gKi8KKwltbWlvX2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQobGRldi0+ZGV2LT5wZGV2 LCAwKTsKKwltbWlvX3NpemUgPSBwY2lfcmVzb3VyY2VfbGVuKGxkZXYtPmRldi0+cGRldiwgMCk7 CisJbGRldi0+bW1pbyA9IGRldm1faW9yZW1hcChkZXYtPmRldiwgbW1pb19iYXNlLCBtbWlvX3Np emUpOworCWlmICghbGRldi0+bW1pbykgeworCQlkcm1fZXJyKGRldiwgIkNhbm5vdCBtYXAgbW1p byByZWdpb25cbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAoIWRldm1fcmVxdWVz dF9tZW1fcmVnaW9uKGxkZXYtPmRldi0+ZGV2LCBtbWlvX2Jhc2UsCisJCQkJICAgICBtbWlvX3Np emUsICJsb29uZ3Nvbl9tbWlvIikpIHsKKwkJRFJNX0VSUk9SKCJDYW4ndCByZXNlcnZlIG1taW8g cmVnaXN0ZXJzXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogREMgSU8gKi8KKwls ZGV2LT5pbyA9IGlvcmVtYXAoTFM3QV9DSElQQ0ZHX1JFR19CQVNFLCAweGYpOworCWlmIChsZGV2 LT5pbyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCURSTV9JTkZPKCJEQyBtbWlvIGJh c2UgMHglbGx4IHNpemUgMHglbGx4IGlvIDB4JWxseFxuIiwKKwkJIG1taW9fYmFzZSwgbW1pb19z aXplLCAqKHU2NCAqKWxkZXYtPmlvKTsKKwlEUk1fSU5GTygiR1BVIHZyYW0gc3RhcnQgPSAweCV4 IHNpemUgPSAweCV4XG4iLAorCQkgbGRldi0+dnJhbV9zdGFydCwgbGRldi0+dnJhbV9zaXplKTsK KworCXJldHVybiAwOworfQorCitpbnQgbG9vbmdzb25fbW9kZXNldF9pbml0KHN0cnVjdCBsb29u Z3Nvbl9kZXZpY2UgKmxkZXYpCit7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJaW50IGk7CisJdTMyIHJldDsKKworCWxk ZXYtPmRldi0+bW9kZV9jb25maWcuYWxsb3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKKworCWZvciAo aSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJcmV0ID0gbG9vbmdzb25fY3J0Y19pbml0KGxkZXYsIGkp OworCQlpZiAocmV0KSB7CisJCQlEUk1fV0FSTigibG9vbmdzb24gY3J0YyVkIGluaXQgZmFpbGVk XG4iLCBpKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcmV0ID0gbG9vbmdzb25fZW5jb2Rlcl9p bml0KGxkZXYsIGkpOworCQlpZiAocmV0KSB7CisJCQlEUk1fRVJST1IoImxvb25nc29uX2VuY29k ZXJfaW5pdCBmYWlsZWRcbiIpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJcmV0ID0gbG9vbmdz b25fY29ubmVjdG9yX2luaXQobGRldiwgaSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigi bG9vbmdzb25fY29ubmVjdG9yX2luaXQgZmFpbGVkXG4iKTsKKwkJCXJldHVybiAtMTsKKwkJfQor CisJCWVuY29kZXIgPSAmbGRldi0+bW9kZV9pbmZvW2ldLmVuY29kZXItPmJhc2U7CisJCWNvbm5l Y3RvciA9ICZsZGV2LT5tb2RlX2luZm9baV0uY29ubmVjdG9yLT5iYXNlOworCQlkcm1fY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7CisJCWxkZXYtPm51bV9jcnRj Kys7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbG9vbmdzb25fZHJtX2xvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlzdHJ1Y3Qg bG9vbmdzb25fZGV2aWNlICpsZGV2OworCWludCByZXQ7CisKKwlsZGV2ID0gZGV2bV9remFsbG9j KGRldi0+ZGV2LCBzaXplb2YoKmxkZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWxkZXYpCisJCXJl dHVybiAtRU5PTUVNOworCisJZGV2LT5kZXZfcHJpdmF0ZSA9IGxkZXY7CisJbGRldi0+ZGV2ID0g ZGV2OworCisJcmV0ID0gbG9vbmdzb25fZGV2aWNlX2luaXQoZGV2LCBmbGFncyk7CisJaWYgKHJl dCkKKwkJZ290byBlcnI7CisKKwlyZXQgPSBkcm1tX3ZyYW1faGVscGVyX2luaXQoZGV2LCBsZGV2 LT52cmFtX3N0YXJ0LCBsZGV2LT52cmFtX3NpemUpOworCWlmIChyZXQpCisJCWdvdG8gZXJyOwor CisJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsKKwlkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0g KHZvaWQgKikmbG9vbmdzb25fbW9kZV9mdW5jczsKKwlkZXYtPm1vZGVfY29uZmlnLm1pbl93aWR0 aCA9IDE7CisJZGV2LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMTsKKwlkZXYtPm1vZGVfY29u ZmlnLm1heF93aWR0aCA9IDQwOTY7CisJZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5 NjsKKwlkZXYtPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9IDMyOworCWRldi0+bW9kZV9j b25maWcucHJlZmVyX3NoYWRvdyA9IDE7CisJZGV2LT5tb2RlX2NvbmZpZy5mYl9iYXNlID0gbGRl di0+dnJhbV9zdGFydDsKKworCXBjaV9zZXRfZHJ2ZGF0YShkZXYtPnBkZXYsIGRldik7CisKKwly ZXQgPSBsb29uZ3Nvbl9tb2Rlc2V0X2luaXQobGRldik7CisJaWYgKHJldCkKKwkJZGV2X2Vycihk ZXYtPmRldiwgIkZhdGFsIGVycm9yIGR1cmluZyBtb2Rlc2V0IGluaXQ6ICVkXG4iLCByZXQpOwor CisJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRldik7CisJZHJtX21vZGVfY29uZmlnX3Jlc2V0 KGRldik7CisKKwlyZXR1cm4gMDsKKworZXJyOgorCWRybV9lcnIoZGV2LCAiZmFpbGVkIHRvIGlu aXRpYWxpemUgZHJtIGRyaXZlcjogJWRcbiIsIHJldCk7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHZvaWQgbG9vbmdzb25fZHJtX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorewor CWRybV92cmFtX2hlbHBlcl9yZWxlYXNlX21tKGRldik7CisJZHJtX21vZGVfY29uZmlnX2NsZWFu dXAoZGV2KTsKKwlkZXYtPmRldl9wcml2YXRlID0gTlVMTDsKKwlkZXZfc2V0X2RydmRhdGEoZGV2 LT5kZXYsIE5VTEwpOworfQorCitERUZJTkVfRFJNX0dFTV9GT1BTKGZvcHMpOworCitzdGF0aWMg c3RydWN0IGRybV9kcml2ZXIgbG9vbmdzb25fZHJtX2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1 cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FUT01JQywKKwkuZm9w cyA9ICZmb3BzLAorCURSTV9HRU1fVlJBTV9EUklWRVIsCisKKwkubmFtZSA9IERSSVZFUl9OQU1F LAorCS5kZXNjID0gRFJJVkVSX0RFU0MsCisJLmRhdGUgPSBEUklWRVJfREFURSwKKwkubWFqb3Ig PSBEUklWRVJfTUFKT1IsCisJLm1pbm9yID0gRFJJVkVSX01JTk9SLAorfTsKKworc3RhdGljIGlu dCBsb29uZ3Nvbl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCisJCQkgICAgICBjb25z dCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQoreworCWludCByZXQ7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldjsKKworCURSTV9JTkZPKCJTdGFydCBsb29uZ3NvbiBkcm0gcHJvYmVcbiIpOwor CWRldiA9IGRybV9kZXZfYWxsb2MoJmxvb25nc29uX2RybV9kcml2ZXIsICZwZGV2LT5kZXYpOwor CWlmIChJU19FUlIoZGV2KSkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBkcm1f ZGV2aWNlXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZGV2KTsKKwl9CisKKwlkZXYtPnBkZXYgPSBw ZGV2OworCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOworCisJcmV0ID0gcGNpX2VuYWJsZV9k ZXZpY2UocGRldik7CisJaWYgKHJldCkgeworCQlkcm1fZXJyKGRldiwgImZhaWxlZCB0byBlbmFi bGUgcGNpIGRldmljZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJcmV0 ID0gbG9vbmdzb25fZHJtX2xvYWQoZGV2LCAweDApOworCWlmIChyZXQpIHsKKwkJZHJtX2Vycihk ZXYsICJmYWlsZWQgdG8gbG9hZCBsb29uZ3NvbjogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3Bk ZXY7CisJfQorCisJcmV0ID0gZHJtX2Rldl9yZWdpc3RlcihkZXYsIDApOworCWlmIChyZXQpIHsK KwkJZHJtX2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJ2IGZvciB1c2Vyc3BhY2UgYWNj ZXNzOiAlZFxuIiwKKwkJCXJldCk7CisJCWdvdG8gZXJyX3BkZXY7CisJfQorCisJZHJtX2ZiZGV2 X2dlbmVyaWNfc2V0dXAoZGV2LCBkZXYtPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCk7CisK KwlyZXR1cm4gMDsKKworZXJyX3BkZXY6CisJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOworZXJy X2ZyZWU6CisJZHJtX2Rldl9wdXQoZGV2KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBsb29uZ3Nvbl9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CisKKwlkcm1fZGV2X3VucmVn aXN0ZXIoZGV2KTsKKwlsb29uZ3Nvbl9kcm1fdW5sb2FkKGRldik7CisJZHJtX2Rldl9wdXQoZGV2 KTsKK30KKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIGxvb25nc29uX3BjaV9kZXZpY2Vz W10gPSB7CisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTE9PTkdTT04sIFBDSV9ERVZJQ0Vf SURfTE9PTkdTT05fREMpIH0sCisJezAsfQorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVy IGxvb25nc29uX2RybV9wY2lfZHJpdmVyID0geworCS5uYW1lID0gRFJJVkVSX05BTUUsCisJLmlk X3RhYmxlID0gbG9vbmdzb25fcGNpX2RldmljZXMsCisJLnByb2JlID0gbG9vbmdzb25fcGNpX3By b2JlLAorCS5yZW1vdmUgPSBsb29uZ3Nvbl9wY2lfcmVtb3ZlLAorfTsKKworc3RhdGljIGludCBf X2luaXQgbG9vbmdzb25fZHJtX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gcGNpX3JlZ2lzdGVyX2Ry aXZlcigmbG9vbmdzb25fZHJtX3BjaV9kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQg bG9vbmdzb25fZHJtX2V4aXQodm9pZCkKK3sKKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmxvb25n c29uX2RybV9wY2lfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQobG9vbmdzb25fZHJtX2luaXQp OworbW9kdWxlX2V4aXQobG9vbmdzb25fZHJtX2V4aXQpOworCitNT0RVTEVfQVVUSE9SKERSSVZF Ul9BVVRIT1IpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9MSUNF TlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29u Z3Nvbl9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ5OGQxYjA4MmExOQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9kcnYuaApAQCAt MCwwICsxLDEzOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAq LworCisjaWZuZGVmIF9fTE9PTkdTT05fRFJWX0hfXworI2RlZmluZSBfX0xPT05HU09OX0RSVl9I X18KKworI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZm91cmNj Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X3ZyYW1faGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZS5oPgorI2luY2x1ZGUgPGRy bS9kcm1fcGxhbmVfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+CisKKy8qIEdlbmVyYWwgY3VzdG9taXphdGlv bjoKKyAqLworI2RlZmluZSBEUklWRVJfQVVUSE9SICJMb29uZ3NvbiBncmFwaGljcyBkcml2ZXIg dGVhbSIKKyNkZWZpbmUgRFJJVkVSX05BTUUgImxvb25nc29uLWRybSIKKyNkZWZpbmUgRFJJVkVS X0RFU0MgIkxvb25nc29uIExTN0EgRFJNIGRyaXZlciIKKyNkZWZpbmUgRFJJVkVSX0RBVEUgIjIw MjAwOTE1IgorCisjZGVmaW5lIHRvX2xvb25nc29uX2NydGMoeCkgY29udGFpbmVyX29mKHgsIHN0 cnVjdCBsb29uZ3Nvbl9jcnRjLCBiYXNlKQorI2RlZmluZSB0b19sb29uZ3Nvbl9lbmNvZGVyKHgp IGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgbG9vbmdzb25fZW5jb2RlciwgYmFzZSkKKworI2RlZmlu ZSBMUzdBX0NISVBDRkdfUkVHX0JBU0UgKDB4MTAwMTAwMDApCisjZGVmaW5lIFBDSV9ERVZJQ0Vf SURfTE9PTkdTT05fREMgMHg3YTA2CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTE9PTkdTT05fR1BV IDB4N2ExNQorI2RlZmluZSBMUzdBX1BJWF9QTEwgKDB4MDRiMCkKKyNkZWZpbmUgUkVHX09GRlNF VCAoMHgxMCkKKyNkZWZpbmUgRkJfQ0ZHX1JFRyAoMHgxMjQwKQorI2RlZmluZSBGQl9BRERSMF9S RUcgKDB4MTI2MCkKKyNkZWZpbmUgRkJfQUREUjFfUkVHICgweDE1ODApCisjZGVmaW5lIEZCX1NU UklfUkVHICgweDEyODApCisjZGVmaW5lIEZCX0RJVENGR19SRUcgKDB4MTM2MCkKKyNkZWZpbmUg RkJfRElUVEFCX0xPX1JFRyAoMHgxMzgwKQorI2RlZmluZSBGQl9ESVRUQUJfSElfUkVHICgweDEz YTApCisjZGVmaW5lIEZCX1BBTkNGR19SRUcgKDB4MTNjMCkKKyNkZWZpbmUgRkJfUEFOVElNX1JF RyAoMHgxM2UwKQorI2RlZmluZSBGQl9IRElTUExBWV9SRUcgKDB4MTQwMCkKKyNkZWZpbmUgRkJf SFNZTkNfUkVHICgweDE0MjApCisjZGVmaW5lIEZCX1ZESVNQTEFZX1JFRyAoMHgxNDgwKQorI2Rl ZmluZSBGQl9WU1lOQ19SRUcgKDB4MTRhMCkKKworI2RlZmluZSBDRkdfRk1UIEdFTk1BU0soMiwg MCkKKyNkZWZpbmUgQ0ZHX0ZCU1dJVENIIEJJVCg3KQorI2RlZmluZSBDRkdfRU5BQkxFIEJJVCg4 KQorI2RlZmluZSBDRkdfRkJOVU0gQklUKDExKQorI2RlZmluZSBDRkdfR0FNTUFSIEJJVCgxMikK KyNkZWZpbmUgQ0ZHX1JFU0VUIEJJVCgyMCkKKworI2RlZmluZSBGQl9QQU5DRkdfREVGIDB4ODAw MDEzMTEKKyNkZWZpbmUgRkJfSFNZTkNfUFVMU0UgKDEgPDwgMzApCisjZGVmaW5lIEZCX1ZTWU5D X1BVTFNFICgxIDw8IDMwKQorCisvKiBQSVggUExMICovCisjZGVmaW5lIExPT1BDX01JTiAyNAor I2RlZmluZSBMT09QQ19NQVggMTYxCisjZGVmaW5lIEZSRV9SRUZfTUlOIDEyCisjZGVmaW5lIEZS RV9SRUZfTUFYIDMyCisjZGVmaW5lIERJVl9SRUZfTUlOIDMKKyNkZWZpbmUgRElWX1JFRl9NQVgg NQorI2RlZmluZSBQU1RfRElWX01BWCA2NAorCitzdHJ1Y3QgcGl4X3BsbCB7CisJdTMyIGwyX2Rp djsKKwl1MzIgbDFfbG9vcGM7CisJdTMyIGwxX2ZyZWZjOworfTsKKworc3RydWN0IGxvb25nc29u X2NydGMgeworCXN0cnVjdCBkcm1fY3J0YyBiYXNlOworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2Ug KmxkZXY7CisJdTMyIGNydGNfaWQ7CisJdTMyIHJlZ19vZmZzZXQ7CisJdTMyIGNmZ19yZWc7CisJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cit9OworCitzdHJ1Y3QgbG9vbmdzb25fZW5jb2RlciB7 CisJc3RydWN0IGRybV9lbmNvZGVyIGJhc2U7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRl djsKKwlzdHJ1Y3QgbG9vbmdzb25fY3J0YyAqbGNydGM7Cit9OworCitzdHJ1Y3QgbG9vbmdzb25f Y29ubmVjdG9yIHsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBiYXNlOworCXN0cnVjdCBsb29uZ3Nv bl9kZXZpY2UgKmxkZXY7CisJdTE2IGlkOworCXUzMiB0eXBlOworfTsKKworc3RydWN0IGxvb25n c29uX21vZGVfaW5mbyB7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldjsKKwlzdHJ1Y3Qg bG9vbmdzb25fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgbG9vbmdzb25fZW5jb2RlciAqZW5jb2RlcjsK KwlzdHJ1Y3QgbG9vbmdzb25fY29ubmVjdG9yICpjb25uZWN0b3I7Cit9OworCitzdHJ1Y3QgbG9v bmdzb25fZGV2aWNlIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZTsKKworCXZvaWQgX19pb21lbSAqbW1pbzsKKwl2b2lkIF9faW9tZW0g KmlvOworCXUzMiB2cmFtX3N0YXJ0OworCXUzMiB2cmFtX3NpemU7CisKKwl1MzIgbnVtX2NydGM7 CisJc3RydWN0IGxvb25nc29uX21vZGVfaW5mbyBtb2RlX2luZm9bMl07CisJc3RydWN0IHBjaV9k ZXYgKmdwdV9wZGV2OyAvKiBMUzdBIGdwdSBkZXZpY2UgaW5mbyAqLworfTsKKworLyogY3J0YyAq LworaW50IGxvb25nc29uX2NydGNfaW5pdChzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCBp bnQgaW5kZXgpOworCisvKiBjb25uZWN0b3IgKi8KK2ludCBsb29uZ3Nvbl9jb25uZWN0b3JfaW5p dChzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCBpbnQgaW5kZXgpOworCisvKiBlbmNvZGVy ICovCitpbnQgbG9vbmdzb25fZW5jb2Rlcl9pbml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxk ZXYsIGludCBpbmRleCk7CisKKy8qIHBsYW5lICovCitpbnQgbG9vbmdzb25fcGxhbmVfaW5pdChz dHJ1Y3QgbG9vbmdzb25fY3J0YyAqbGNydGMpOworCisvKiBkZXZpY2UgKi8KK3UzMiBsb29uZ3Nv bl9ncHVfb2Zmc2V0KHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKK3UzMiBsczdhX21t X3JyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMyIG9mZnNldCk7Cit2b2lkIGxz N2FfbW1fd3JlZyhzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCB1MzIgb2Zmc2V0LCB1MzIg dmFsKTsKK3UzMiBsczdhX2lvX3JyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMy IG9mZnNldCk7Cit2b2lkIGxzN2FfaW9fd3JlZyhzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2 LCB1MzIgb2Zmc2V0LCB1MzIgdmFsKTsKKworI2VuZGlmIC8qIF9fTE9PTkdTT05fRFJWX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2VuY29kZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9lbmNvZGVyLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMDAyY2VlMDAzMDMKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZW5jb2Rlci5jCkBAIC0w LDAgKzEsMzcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVy CisKKyNpbmNsdWRlICJsb29uZ3Nvbl9kcnYuaCIKKworc3RhdGljIHZvaWQgbG9vbmdzb25fZW5j b2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbG9v bmdzb25fZW5jb2RlciAqbGVuY29kZXIgPSB0b19sb29uZ3Nvbl9lbmNvZGVyKGVuY29kZXIpOwor CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKKwlrZnJlZShsZW5jb2Rlcik7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgbG9vbmdzb25fZW5jb2Rlcl9m dW5jcyA9IHsKKwkuZGVzdHJveSA9IGxvb25nc29uX2VuY29kZXJfZGVzdHJveSwKK307CisKK2lu dCBsb29uZ3Nvbl9lbmNvZGVyX2luaXQoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgaW50 IGluZGV4KQoreworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgbG9vbmdz b25fZW5jb2RlciAqbGVuY29kZXI7CisKKwlsZW5jb2RlciA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVj dCBsb29uZ3Nvbl9lbmNvZGVyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFsZW5jb2RlcikKKwkJcmV0 dXJuIC0xOworCisJbGVuY29kZXItPmxjcnRjID0gbGRldi0+bW9kZV9pbmZvW2luZGV4XS5jcnRj OworCWxlbmNvZGVyLT5sZGV2ID0gbGRldjsKKwllbmNvZGVyID0gJmxlbmNvZGVyLT5iYXNlOwor CWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMSA8PCBpbmRleDsKKworCWRybV9lbmNvZGVyX2lu aXQobGRldi0+ZGV2LCBlbmNvZGVyLCAmbG9vbmdzb25fZW5jb2Rlcl9mdW5jcywKKwkJCSBEUk1f TU9ERV9FTkNPREVSX0RBQywgTlVMTCk7CisKKwlsZGV2LT5tb2RlX2luZm9baW5kZXhdLmVuY29k ZXIgPSBsZW5jb2RlcjsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2xvb25nc29uL2xvb25nc29uX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bG9vbmdzb25fcGxhbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmY0Njk0ZGNiZjEyMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sb29uZ3Nvbl9wbGFuZS5jCkBAIC0wLDAgKzEsMTAyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorCisjaW5jbHVkZSAibG9vbmdzb25fZHJ2LmgiCisK K3N0YXRpYyB2b2lkIGxvb25nc29uX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCisJCQkJCSBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJ c3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRjOworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxk ZXY7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJdTMy IGdwdV9hZGRyID0gMDsKKwl1MzIgZmJfYWRkciA9IDA7CisJdTMyIHJlZ192YWwgPSAwOworCXUz MiByZWdfb2Zmc2V0OworCXUzMiBwaXRjaDsKKwl1OCBkZXB0aDsKKwl1MzIgeCwgeTsKKworCWlm ICghc3RhdGUtPmNydGMgfHwgIXN0YXRlLT5mYikKKwkJcmV0dXJuOworCisJcGl0Y2ggPSBzdGF0 ZS0+ZmItPnBpdGNoZXNbMF07CisJbGNydGMgPSB0b19sb29uZ3Nvbl9jcnRjKHN0YXRlLT5jcnRj KTsKKwlsZGV2ID0gbGNydGMtPmxkZXY7CisJcmVnX29mZnNldCA9IGxjcnRjLT5yZWdfb2Zmc2V0 OworCXggPSBzdGF0ZS0+Y3J0Yy0+eDsKKwl5ID0gc3RhdGUtPmNydGMtPnk7CisJZGVwdGggPSBz dGF0ZS0+ZmItPmZvcm1hdC0+Y3BwWzBdIDw8IDM7CisKKwlncHVfYWRkciA9IGxvb25nc29uX2dw dV9vZmZzZXQoc3RhdGUpOworCXJlZ192YWwgPSAocGl0Y2ggKyAyNTUpICYgfjI1NTsKKwlsczdh X21tX3dyZWcobGRldiwgRkJfU1RSSV9SRUcgKyByZWdfb2Zmc2V0LCByZWdfdmFsKTsKKworCXN3 aXRjaCAoZGVwdGgpIHsKKwljYXNlIDEyIC4uLiAxNjoKKwkJZmJfYWRkciA9IGdwdV9hZGRyICsg eSAqIHBpdGNoICsgQUxJR04oeCwgNjQpICogMjsKKwkJYnJlYWs7CisJY2FzZSAyNCAuLi4gMzI6 CisJZGVmYXVsdDoKKwkJZmJfYWRkciA9IGdwdV9hZGRyICsgeSAqIHBpdGNoICsgQUxJR04oeCwg NjQpICogNDsKKwkJYnJlYWs7CisJfQorCisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0FERFIwX1JF RyArIHJlZ19vZmZzZXQsIGZiX2FkZHIpOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9BRERSMV9S RUcgKyByZWdfb2Zmc2V0LCBmYl9hZGRyKTsKKwlyZWdfdmFsID0gbGNydGMtPmNmZ19yZWcgfCBD RkdfRU5BQkxFOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9DRkdfUkVHICsgcmVnX29mZnNldCwg cmVnX3ZhbCk7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBsb29uZ3Nvbl9mb3JtYXRzW10g PSB7CisJRFJNX0ZPUk1BVF9SR0I1NjUsCisJRFJNX0ZPUk1BVF9SR0I4ODgsCisJRFJNX0ZPUk1B VF9YUkdCODg4OCwKKwlEUk1fRk9STUFUX0FSR0I4ODg4LAorfTsKKworc3RhdGljIGNvbnN0IHVp bnQ2NF90IGxvb25nc29uX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsgRFJNX0ZPUk1BVF9NT0RfTElO RUFSLAorCQkJCQkJICAgICAgRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCB9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBsb29uZ3Nvbl9wbGFuZV9mdW5jcyA9IHsKKwkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9z dGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9k ZXN0cm95X3N0YXRlLAorCS5kZXN0cm95ID0gZHJtX3BsYW5lX2NsZWFudXAsCisJLmRpc2FibGVf cGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAorCS5yZXNldCA9IGRybV9h dG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0LAorCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hl bHBlcl91cGRhdGVfcGxhbmUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9o ZWxwZXJfZnVuY3MgbG9vbmdzb25fcGxhbmVfaGVscGVyX2Z1bmNzID0geworCS5wcmVwYXJlX2Zi CT0gZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiLAorCS5jbGVhbnVwX2ZiCT0g ZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBlcl9jbGVhbnVwX2ZiLAorCS5hdG9taWNfdXBkYXRlID0g bG9vbmdzb25fcGxhbmVfYXRvbWljX3VwZGF0ZSwKK307CisKK2ludCBsb29uZ3Nvbl9wbGFuZV9p bml0KHN0cnVjdCBsb29uZ3Nvbl9jcnRjICpsY3J0YykKK3sKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2 aWNlICpsZGV2OworCWludCBjcnRjX2lkOworCWludCByZXQ7CisKKwlsZGV2ID0gbGNydGMtPmxk ZXY7CisJY3J0Y19pZCA9IGxjcnRjLT5jcnRjX2lkOworCisJbGNydGMtPnBsYW5lID0gZGV2bV9r emFsbG9jKGxkZXYtPmRldi0+ZGV2LCBzaXplb2YoKmxjcnRjLT5wbGFuZSksCisJCQkJICAgIEdG UF9LRVJORUwpOworCWlmICghbGNydGMtPnBsYW5lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJl dCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChsZGV2LT5kZXYsIGxjcnRjLT5wbGFuZSwgQklU KGNydGNfaWQpLAorCQkJCSAgICAgICAmbG9vbmdzb25fcGxhbmVfZnVuY3MsIGxvb25nc29uX2Zv cm1hdHMsCisJCQkJICAgICAgIEFSUkFZX1NJWkUobG9vbmdzb25fZm9ybWF0cyksCisJCQkJICAg ICAgIGxvb25nc29uX2Zvcm1hdF9tb2RpZmllcnMsCisJCQkJICAgICAgIERSTV9QTEFORV9UWVBF X1BSSU1BUlksIE5VTEwpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJmYWlsIHRvIGluaXQg cGxhbmVkIGNydGMgJWRcbiIsIGNydGNfaWQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRybV9w bGFuZV9oZWxwZXJfYWRkKGxjcnRjLT5wbGFuZSwgJmxvb25nc29uX3BsYW5lX2hlbHBlcl9mdW5j cyk7CisKKwlyZXR1cm4gMDsKK30KLS0gCjIuMzEuMA== ------=_Part_10603_1734786299.1617240017106 Content-Type: text/html; charset=GBK Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS43O2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7 Zm9udC1mYW1pbHk6QXJpYWwiPjxwcmUgd3JhcD0ic29mdCI+VGhpcyBwYXRjaCBhZGRzIGFuIGlu aXRpYWwgRFJNIGRyaXZlciBmb3IgdGhlIExvb25nc29uIExTN0ExMDAwCmJyaWRnZSBjaGlwKExT N0EpLiBUaGUgTFM3QSBicmlkZ2UgY2hpcCBjb250YWlucyB0d28gZGlzcGxheQpjb250cm9sbGVy cywgc3VwcG9ydCBkdWFsIGRpc3BsYXkgb3V0cHV0LiBUaGUgbWF4aW11bSBzdXBwb3J0IGZvcgpl YWNoIGNoYW5uZWwgZGlzcGxheSBpcyB0byAxOTIweDEwODBANjBIei4KQXQgcHJlc2VudCwgREMg ZGV2aWNlIGRldGVjdGlvbiBhbmQgRFJNIGRyaXZlciByZWdpc3RyYXRpb24gYXJlCmNvbXBsZXRl ZCwgdGhlIGNydGMvcGxhbmUvZW5jb2Rlci9jb25uZWN0b3Igb2JqZWN0cyBoYXMgYmVlbgppbXBs ZW1lbnRlZC4KT24gTG9vbmdzb24gM0E0MDAwIENQVSBhbmQgN0ExMDAwIHN5c3RlbSwgd2UgaGF2 ZSBhY2hpZXZlZCB0aGUgdXNlCm9mIGR1YWwgc2NyZWVuLCBhbmQgc3VwcG9ydCBkdWFsIHNjcmVl biBjbG9uZSBtb2RlIGFuZCBleHBhbnNpb24KbW9kZS4KCnY3OgotIFRoZSBwaXhlbCBjbG9jayBp cyBsaW1pdGVkIHRvIGxlc3MgdGhhbiAxNzMwMDAuCgp2NjoKLSBSZW1vdmUgc3Bpbl9sb2NrIGlu IG1taW8gcmVnIHJlYWQgYW5kIHdyaXRlLgotIFRPX1VOQ0FDIGlzIHJlcGxhYyB3aXRoIGlvcmVt YXAuCi0gRml4IGVycm9yIGFyZ3VtZW50cyBpbiBjcnRjX2F0b21pY19lbmFibGUvZGlzYWJsZS9t b2RlX3ZhbGlkLgoKdjU6Ci0gQ2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBjaGlwIHRvIExTN0EuCi0g Q2hhbmdlIG1hZ2ljIHZhbHVlIGluIGNydGMgdG8gbWFjcm9zLgotIENvcnJlY3QgbWlzdGFrZXMg d29yZHMuCi0gQ2hhbmdlIHRoZSByZWdpc3RlciBvcGVyYXRpb24gZnVuY3Rpb24gcHJlZml4IHRv IGxzN2EuCgp2NDoKLSBNb3ZlIHRoZSBtb2RlX3ZhbGlkIGZ1bmN0aW9uIHRvIHRoZSBjcnRjLgoK djM6Ci0gTW92ZSB0aGUgbW9kZV92YWxpZCBmdW5jdGlvbiB0byB0aGUgY29ubmVjdG9yIGFuZCBv cHRpbWl6ZSBpdC4KLSBGaXggbnVtX2NydGMgY2FsY3VsYXRpb24gbWV0aG9kLgoKdjI6Ci0gQ29t cGxldGUgdGhlIGNhc2Ugb2YgMzItYml0IGNvbG9yIGluIENSVEMuCgpTaWduZWQtb2ZmLWJ5OiBD aGVueWFuZyBMaSAmbHQ7bGljaGVueWFuZ0Bsb29uZ3Nvbi5jbiZndDsKLS0tCiBkcml2ZXJzL2dw dS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9sb29uZ3Nvbi9LY29uZmlnICAgICAgICAgICAgICB8ICAxNCArCiBkcml2ZXJzL2dwdS9kcm0v bG9vbmdzb24vTWFrZWZpbGUgICAgICAgICAgICAgfCAgMTQgKwogZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xvb25nc29uX2Nvbm5lY3Rvci5jIHwgIDQ4ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9s b29uZ3Nvbi9sb29uZ3Nvbl9jcnRjLmMgICAgICB8IDI0MyArKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZGV2aWNlLmMgICAgfCAgNDcgKysrCiBkcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZHJ2LmMgICAgICAgfCAyNzAgKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZHJ2LmggICAgICAg fCAxMzkgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fZW5jb2Rl ci5jICAgfCAgMzcgKysrCiBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdzb25fcGxhbmUu YyAgICAgfCAxMDIgKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgOTE3IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9NYWtlZmlsZQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9jb25uZWN0b3Iu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9j cnRjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbG9vbmdz b25fZGV2aWNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bG9vbmdzb25fZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9vbmdz b24vbG9vbmdzb25fZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbG9v bmdzb24vbG9vbmdzb25fZW5jb2Rlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2xvb25nc29uL2xvb25nc29uX3BsYW5lLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4IDA5NzNmNDA4ZDc1Zi4u NmVkMWI2ZGMyZjI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMzc0LDYgKzM3NCw4IEBAIHNvdXJjZSAiZHJpdmVy cy9ncHUvZHJtL3hlbi9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS92Ym94dmlk ZW8vS2NvbmZpZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZyIK Kwogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZl cnMvZ3B1L2RybS9wYW5mcm9zdC9LY29uZmlnIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGZlZmFmZjRjODMyZC4u Zjg3ZGE3MzBlYTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xMTksNiArMTE5LDcgQEAgb2JqLSQoQ09ORklH X0RSTV9QTDExMSkgKz0gcGwxMTEvCiBvYmotJChDT05GSUdfRFJNX1RWRTIwMCkgKz0gdHZlMjAw Lwogb2JqLSQoQ09ORklHX0RSTV9YRU4pICs9IHhlbi8KIG9iai0kKENPTkZJR19EUk1fVkJPWFZJ REVPKSArPSB2Ym94dmlkZW8vCitvYmotJChDT05GSUdfRFJNX0xPT05HU09OKSArPSBsb29uZ3Nv bi8KIG9iai0kKENPTkZJR19EUk1fTElNQSkgICs9IGxpbWEvCiBvYmotJChDT05GSUdfRFJNX1BB TkZST1NUKSArPSBwYW5mcm9zdC8KIG9iai0kKENPTkZJR19EUk1fQVNQRUVEX0dGWCkgKz0gYXNw ZWVkLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWcgYi9kcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjNjZjQyYTRjY2EwOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9sb29uZ3Nvbi9LY29uZmlnCkBAIC0wLDAgKzEsMTQgQEAKKyMgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb25seQorCitjb25maWcgRFJNX0xPT05HU09OCisJdHJpc3RhdGUg IkRSTSBzdXBwb3J0IGZvciBMUzdBIGJyaWRnZSBjaGlwc2V0IgorCWRlcGVuZHMgb24gRFJNICZh bXA7JmFtcDsgUENJCisJZGVwZW5kcyBvbiBDUFVfTE9PTkdTT042NAorCXNlbGVjdCBEUk1fS01T X0hFTFBFUgorCXNlbGVjdCBEUk1fVlJBTV9IRUxQRVIKKwlzZWxlY3QgRFJNX1RUTQorCXNlbGVj dCBEUk1fVFRNX0hFTFBFUgorCWRlZmF1bHQgbgorCWhlbHAKKwkgIFN1cHBvcnQgdGhlIGRpc3Bs YXkgY29udHJvbGxlcnMgZm91bmQgb24gdGhlIExvb25nc29uIExTN0EKKwkgIGJyaWRnZS4KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9sb29uZ3Nvbi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjIyZDA2Mzk1M2I3OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9s b29uZ3Nvbi9NYWtlZmlsZQpAQCAtMCwwICsxLDE0IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgTWFrZWZpbGUgZm9yIGxvb25nc29uIGRybSBkcml2ZXJz LgorIyBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUKKyMgRGlyZWN0IFJlbmRl cmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKQorCitjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQor bG9vbmdzb24teSA6PSBsb29uZ3Nvbl9kcnYubyBcCisJbG9vbmdzb25fY3J0Yy5vIFwKKwlsb29u Z3Nvbl9wbGFuZS5vIFwKKwlsb29uZ3Nvbl9kZXZpY2UubyBcCisJbG9vbmdzb25fY29ubmVjdG9y Lm8gXAorCWxvb25nc29uX2VuY29kZXIubworb2JqLSQoQ09ORklHX0RSTV9MT09OR1NPTikgKz0g bG9vbmdzb24ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29u X2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Nvbm5lY3Rv ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmIxZjBmZmEzM2Jk Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Nv bm5lY3Rvci5jCkBAIC0wLDAgKzEsNDggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9yLWxhdGVyCisKKyNpbmNsdWRlICJsb29uZ3Nvbl9kcnYuaCIKKworc3RhdGljIGlu dCBsb29uZ3Nvbl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlpbnQgY291bnQ7CisKKwljb3VudCA9IGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3Rvciwg MTkyMCwgMTA4MCk7CisJZHJtX3NldF9wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIDEwMjQsIDc2 OCk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgbG9vbmdzb25fY29ubmVjdG9yX2hlbHBlciA9IHsKKwkuZ2V0X21v ZGVzID0gbG9vbmdzb25fZ2V0X21vZGVzLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y29ubmVjdG9yX2Z1bmNzIGxvb25nc29uX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZmlsbF9tb2Rl cyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkuZGVzdHJveSA9 IGRybV9jb25uZWN0b3JfY2xlYW51cCwKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfcmVzZXQsCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorfTsKKworaW50IGxvb25n c29uX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYsIGludCBpbmRl eCkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVjdCBsb29uZ3Nv bl9jb25uZWN0b3IgKmxjb25uZWN0b3I7CisKKwlsY29ubmVjdG9yID0ga3phbGxvYyhzaXplb2Yo c3RydWN0IGxvb25nc29uX2Nvbm5lY3RvciksIEdGUF9LRVJORUwpOworCWlmICghbGNvbm5lY3Rv cikgeworCQlEUk1fSU5GTygibG9vbmdzb24gY29ubmVjdG9yIGt6YWxsb2MgZmFpbGVkXG4iKTsK KwkJcmV0dXJuIC0xOworCX0KKworCWxjb25uZWN0b3ItJmd0O2xkZXYgPSBsZGV2OworCWxjb25u ZWN0b3ItJmd0O2lkID0gaW5kZXg7CisKKwlsZGV2LSZndDttb2RlX2luZm9baW5kZXhdLmNvbm5l Y3RvciA9IGxjb25uZWN0b3I7CisJY29ubmVjdG9yID0gJmFtcDtsY29ubmVjdG9yLSZndDtiYXNl OworCWRybV9jb25uZWN0b3JfaW5pdChsZGV2LSZndDtkZXYsIGNvbm5lY3RvciwgJmFtcDtsb29u Z3Nvbl9jb25uZWN0b3JfZnVuY3MsCisJCQkgICBEUk1fTU9ERV9DT05ORUNUT1JfVW5rbm93bik7 CisJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmFtcDtsb29uZ3Nvbl9jb25u ZWN0b3JfaGVscGVyKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2xvb25nc29uL2xvb25nc29uX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9s b29uZ3Nvbl9jcnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40 Y2I2NWZhMDg3NzgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bG9vbmdzb25fY3J0Yy5jCkBAIC0wLDAgKzEsMjQzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vci1sYXRlcgorCisjaW5jbHVkZSAibG9vbmdzb25fZHJ2LmgiCisKK3N0 YXRpYyB2b2lkIHRyeV9lYWNoX2xvb3BjKHUzMiBjbGssIHUzMiBwc3RkaXYsIHUzMiBmcmVmYywK KwkJCSAgIHN0cnVjdCBwaXhfcGxsICpwbGxfY29uZmlnKQoreworCXUzMiBsb29wYzsKKwl1MzIg Y2xrX291dDsKKwl1MzIgcHJlY2lzaW9uOworCXUzMiBtaW4gPSAxMDAwOworCXUzMiBiYXNlX2Ns ayA9IDEwMDAwMEw7CisKKwlmb3IgKGxvb3BjID0gTE9PUENfTUlOOyBsb29wYyAmbHQ7IExPT1BD X01BWDsgbG9vcGMrKykgeworCQlpZiAoKGxvb3BjICZsdDsgRlJFX1JFRl9NSU4gKiBmcmVmYykg fHwKKwkJICAgIChsb29wYyAmZ3Q7IEZSRV9SRUZfTUFYICogZnJlZmMpKQorCQkJY29udGludWU7 CisKKwkJY2xrX291dCA9IGJhc2VfY2xrICogbG9vcGMgLyBmcmVmYzsKKwkJcHJlY2lzaW9uID0g KGNsayAmZ3Q7IGNsa19vdXQpID8gKGNsayAtIGNsa19vdXQpIDogKGNsa19vdXQgLSBjbGspOwor CQlpZiAocHJlY2lzaW9uICZsdDsgbWluKSB7CisJCQlwbGxfY29uZmlnLSZndDtsMl9kaXYgPSBw c3RkaXY7CisJCQlwbGxfY29uZmlnLSZndDtsMV9sb29wYyA9IGxvb3BjOworCQkJcGxsX2NvbmZp Zy0mZ3Q7bDFfZnJlZmMgPSBmcmVmYzsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgY2FsX2Zy ZXEodTMyIHBpeGNsb2NrLCBzdHJ1Y3QgcGl4X3BsbCAqcGxsX2NvbmZpZykKK3sKKwl1MzIgcHN0 ZGl2OworCXUzMiBmcmVmYzsKKwl1MzIgY2xrOworCisJZm9yIChwc3RkaXYgPSAxOyBwc3RkaXYg Jmx0OyBQU1RfRElWX01BWDsgcHN0ZGl2KyspIHsKKwkJY2xrID0gcGl4Y2xvY2sgKiBwc3RkaXY7 CisJCWZvciAoZnJlZmMgPSBESVZfUkVGX01JTjsgZnJlZmMgJmx0Oz0gRElWX1JFRl9NQVg7IGZy ZWZjKyspCisJCQl0cnlfZWFjaF9sb29wYyhjbGssIHBzdGRpdiwgZnJlZmMsIHBsbF9jb25maWcp OworCX0KK30KKworc3RhdGljIHZvaWQgY29uZmlnX3BsbChzdHJ1Y3QgbG9vbmdzb25fZGV2aWNl ICpsZGV2LCB1bnNpZ25lZCBsb25nIHBsbF9iYXNlLAorCQkgICAgICAgc3RydWN0IHBpeF9wbGwg KnBsbF9jZmcpCit7CisJdTMyIHZhbDsKKwl1MzIgY291bnQgPSAwOworCisJLyogY2xlYXIgc2Vs X3BsbF9vdXQwICovCisJdmFsID0gbHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0KTsK Kwl2YWwgJmFtcDs9IH4oMVVMICZsdDsmbHQ7IDgpOworCWxzN2FfaW9fd3JlZyhsZGV2LCBwbGxf YmFzZSArIDB4NCwgdmFsKTsKKworCS8qIHNldCBwbGxfcGQgKi8KKwl2YWwgPSBsczdhX2lvX3Jy ZWcobGRldiwgcGxsX2Jhc2UgKyAweDQpOworCXZhbCB8PSAoMVVMICZsdDsmbHQ7IDEzKTsKKwls czdhX2lvX3dyZWcobGRldiwgcGxsX2Jhc2UgKyAweDQsIHZhbCk7CisKKwkvKiBjbGVhciBzZXRf cGxsX3BhcmFtICovCisJdmFsID0gbHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0KTsK Kwl2YWwgJmFtcDs9IH4oMVVMICZsdDsmbHQ7IDExKTsKKwlsczdhX2lvX3dyZWcobGRldiwgcGxs X2Jhc2UgKyAweDQsIHZhbCk7CisKKwkvKiBjbGVhciBvbGQgdmFsdWUgJmFtcDsgY29uZmlnIG5l dyB2YWx1ZSAqLworCXZhbCA9IGxzN2FfaW9fcnJlZyhsZGV2LCBwbGxfYmFzZSArIDB4NCk7CisJ dmFsICZhbXA7PSB+KDB4N2ZVTCAmbHQ7Jmx0OyAwKTsKKwl2YWwgfD0gKHBsbF9jZmctJmd0O2wx X2ZyZWZjICZsdDsmbHQ7IDApOyAvKiByZWZjICovCisJbHM3YV9pb193cmVnKGxkZXYsIHBsbF9i YXNlICsgMHg0LCB2YWwpOworCXZhbCA9IGxzN2FfaW9fcnJlZyhsZGV2LCBwbGxfYmFzZSArIDB4 MCk7CisJdmFsICZhbXA7PSB+KDB4N2ZVTCAmbHQ7Jmx0OyAwKTsKKwl2YWwgfD0gKHBsbF9jZmct Jmd0O2wyX2RpdiAmbHQ7Jmx0OyAwKTsgLyogZGl2ICovCisJdmFsICZhbXA7PSB+KDB4MWZmVUwg Jmx0OyZsdDsgMjEpOworCXZhbCB8PSAocGxsX2NmZy0mZ3Q7bDFfbG9vcGMgJmx0OyZsdDsgMjEp OyAvKiBsb29wYyAqLworCWxzN2FfaW9fd3JlZyhsZGV2LCBwbGxfYmFzZSArIDB4MCwgdmFsKTsK KworCS8qIHNldCBzZXRfcGxsX3BhcmFtICovCisJdmFsID0gbHM3YV9pb19ycmVnKGxkZXYsIHBs bF9iYXNlICsgMHg0KTsKKwl2YWwgfD0gKDFVTCAmbHQ7Jmx0OyAxMSk7CisJbHM3YV9pb193cmVn KGxkZXYsIHBsbF9iYXNlICsgMHg0LCB2YWwpOworCS8qIGNsZWFyIHBsbF9wZCAqLworCXZhbCA9 IGxzN2FfaW9fcnJlZyhsZGV2LCBwbGxfYmFzZSArIDB4NCk7CisJdmFsICZhbXA7PSB+KDFVTCAm bHQ7Jmx0OyAxMyk7CisJbHM3YV9pb193cmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0LCB2YWwpOwor CisJd2hpbGUgKCEobHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0KSAmYW1wOyAweDgw KSkgeworCQljcHVfcmVsYXgoKTsKKwkJY291bnQrKzsKKwkJaWYgKGNvdW50ICZndDs9IDEwMDAp IHsKKwkJCURSTV9FUlJPUigibG9vbmdzb24tN0EgUExMIGxvY2sgZmFpbGVkXG4iKTsKKwkJCWJy ZWFrOworCQl9CisJfQorCisJdmFsID0gbHM3YV9pb19ycmVnKGxkZXYsIHBsbF9iYXNlICsgMHg0 KTsKKwl2YWwgfD0gKDFVTCAmbHQ7Jmx0OyA4KTsKKwlsczdhX2lvX3dyZWcobGRldiwgcGxsX2Jh c2UgKyAweDQsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIGxvb25nc29uX2NydGNfbW9kZV9zZXRf bm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtJmd0O2RldjsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2ID0gZGV2LSZndDtk ZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgbG9vbmdzb25fY3J0YyAqbGNydGMgPSB0b19sb29uZ3Nvbl9j cnRjKGNydGMpOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmFtcDtjcnRjLSZn dDtzdGF0ZS0mZ3Q7YWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZv ICpmb3JtYXQ7CisJc3RydWN0IHBpeF9wbGwgcGxsX2NmZzsKKwl1MzIgaHIsIGhzcywgaHNlLCBo Zmw7CisJdTMyIHZyLCB2c3MsIHZzZSwgdmZsOworCXUzMiBwaXhfZnJlcTsKKwl1MzIgcmVnX29m ZnNldDsKKworCWhyID0gbW9kZS0mZ3Q7aGRpc3BsYXk7CisJaHNzID0gbW9kZS0mZ3Q7aHN5bmNf c3RhcnQ7CisJaHNlID0gbW9kZS0mZ3Q7aHN5bmNfZW5kOworCWhmbCA9IG1vZGUtJmd0O2h0b3Rh bDsKKworCXZyID0gbW9kZS0mZ3Q7dmRpc3BsYXk7CisJdnNzID0gbW9kZS0mZ3Q7dnN5bmNfc3Rh cnQ7CisJdnNlID0gbW9kZS0mZ3Q7dnN5bmNfZW5kOworCXZmbCA9IG1vZGUtJmd0O3Z0b3RhbDsK KworCXBpeF9mcmVxID0gbW9kZS0mZ3Q7Y2xvY2s7CisJcmVnX29mZnNldCA9IGxjcnRjLSZndDty ZWdfb2Zmc2V0OworCWZvcm1hdCA9IGNydGMtJmd0O3ByaW1hcnktJmd0O3N0YXRlLSZndDtmYi0m Z3Q7Zm9ybWF0OworCisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0RJVENGR19SRUcgKyByZWdfb2Zm c2V0LCAwKTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfRElUVEFCX0xPX1JFRyArIHJlZ19vZmZz ZXQsIDApOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9ESVRUQUJfSElfUkVHICsgcmVnX29mZnNl dCwgMCk7CisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX1BBTkNGR19SRUcgKyByZWdfb2Zmc2V0LCBG Ql9QQU5DRkdfREVGKTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfUEFOVElNX1JFRyArIHJlZ19v ZmZzZXQsIDApOworCisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0hESVNQTEFZX1JFRyArIHJlZ19v ZmZzZXQsIChoZmwgJmx0OyZsdDsgMTYpIHwgaHIpOworCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9I U1lOQ19SRUcgKyByZWdfb2Zmc2V0LAorCQkgICAgIEZCX0hTWU5DX1BVTFNFIHwgKGhzZSAmbHQ7 Jmx0OyAxNikgfCBoc3MpOworCisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX1ZESVNQTEFZX1JFRyAr IHJlZ19vZmZzZXQsICh2ZmwgJmx0OyZsdDsgMTYpIHwgdnIpOworCWxzN2FfbW1fd3JlZyhsZGV2 LCBGQl9WU1lOQ19SRUcgKyByZWdfb2Zmc2V0LAorCQkgICAgIEZCX1ZTWU5DX1BVTFNFIHwgKHZz ZSAmbHQ7Jmx0OyAxNikgfCB2c3MpOworCisJc3dpdGNoIChmb3JtYXQtJmd0O2Zvcm1hdCkgewor CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CisJCWxjcnRjLSZndDtjZmdfcmVnIHw9IDB4MzsKKwkJ YnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4 ODg6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCWRlZmF1bHQ6CisJCWxjcnRjLSZndDtj ZmdfcmVnIHw9IDB4NDsKKwkJYnJlYWs7CisJfQorCWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9DRkdf UkVHICsgcmVnX29mZnNldCwgbGNydGMtJmd0O2NmZ19yZWcpOworCisJY2FsX2ZyZXEocGl4X2Zy ZXEsICZhbXA7cGxsX2NmZyk7CisJY29uZmlnX3BsbChsZGV2LCBMUzdBX1BJWF9QTEwgKyByZWdf b2Zmc2V0LCAmYW1wO3BsbF9jZmcpOworfQorCitzdGF0aWMgdm9pZCBsb29uZ3Nvbl9jcnRjX2F0 b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCQlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZn dDtkZXY7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiA9IGRldi0mZ3Q7ZGV2X3ByaXZh dGU7CisJc3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRjID0gdG9fbG9vbmdzb25fY3J0YyhjcnRj KTsKKwl1MzIgcmVnX29mZnNldCA9IGxjcnRjLSZndDtyZWdfb2Zmc2V0OworCisJbGNydGMtJmd0 O2NmZ19yZWcgfD0gQ0ZHX0VOQUJMRTsKKwlsczdhX21tX3dyZWcobGRldiwgRkJfQ0ZHX1JFRyAr IHJlZ19vZmZzZXQsIGxjcnRjLSZndDtjZmdfcmVnKTsKK30KKworc3RhdGljIHZvaWQgbG9vbmdz b25fY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJCSBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLSZndDtkZXY7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiA9IGRldi0m Z3Q7ZGV2X3ByaXZhdGU7CisJc3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRjID0gdG9fbG9vbmdz b25fY3J0YyhjcnRjKTsKKwl1MzIgcmVnX29mZnNldCA9IGxjcnRjLSZndDtyZWdfb2Zmc2V0Owor CisJbGNydGMtJmd0O2NmZ19yZWcgJmFtcDs9IH5DRkdfRU5BQkxFOworCWxzN2FfbW1fd3JlZyhs ZGV2LCBGQl9DRkdfUkVHICsgcmVnX29mZnNldCwgbGNydGMtJmd0O2NmZ19yZWcpOworfQorCitz dGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgbG9vbmdzb25fbW9kZV92YWxpZChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCisJCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkK K3sKKwlpZiAobW9kZS0mZ3Q7aGRpc3BsYXkgJmd0OyAxOTIwKQorCQlyZXR1cm4gTU9ERV9CQUQ7 CisJaWYgKG1vZGUtJmd0O3ZkaXNwbGF5ICZndDsgMTA4MCkKKwkJcmV0dXJuIE1PREVfQkFEOwor CWlmIChtb2RlLSZndDtoZGlzcGxheSAlIDY0KQorCQlyZXR1cm4gTU9ERV9CQUQ7CisJaWYgKG1v ZGUtJmd0O2Nsb2NrICZndDs9IDE3MzAwMCkKKwkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKKwor CXJldHVybiBNT0RFX09LOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBl cl9mdW5jcyBsb29uZ3Nvbl9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKKwkubW9kZV92YWxpZCA9IGxv b25nc29uX21vZGVfdmFsaWQsCisJLmF0b21pY19lbmFibGUgPSBsb29uZ3Nvbl9jcnRjX2F0b21p Y19lbmFibGUsCisJLmF0b21pY19kaXNhYmxlID0gbG9vbmdzb25fY3J0Y19hdG9taWNfZGlzYWJs ZSwKKwkubW9kZV9zZXRfbm9mYiA9IGxvb25nc29uX2NydGNfbW9kZV9zZXRfbm9mYiwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgbG9vbmdzb25fY3J0Y19mdW5jcyA9 IHsKKwkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCisJLnBhZ2Vf ZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKKwkucmVzZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jcnRjX3Jlc2V0LAorCS5kZXN0cm95ID0gZHJtX2NydGNfY2xlYW51cCwKKwkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0 YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVz dHJveV9zdGF0ZSwKK307CisKK2ludCBsb29uZ3Nvbl9jcnRjX2luaXQoc3RydWN0IGxvb25nc29u X2RldmljZSAqbGRldiwgaW50IGluZGV4KQoreworCXN0cnVjdCBsb29uZ3Nvbl9jcnRjICpsY3J0 YzsKKwl1MzIgcmV0OworCisJbGNydGMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbG9vbmdzb25f Y3J0YyksIEdGUF9LRVJORUwpOworCWlmIChsY3J0YyA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisK KwlsY3J0Yy0mZ3Q7bGRldiA9IGxkZXY7CisJbGNydGMtJmd0O3JlZ19vZmZzZXQgPSBpbmRleCAq IFJFR19PRkZTRVQ7CisJbGNydGMtJmd0O2NmZ19yZWcgPSBDRkdfUkVTRVQ7CisJbGNydGMtJmd0 O2NydGNfaWQgPSBpbmRleDsKKworCXJldCA9IGxvb25nc29uX3BsYW5lX2luaXQobGNydGMpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxh bmVzKGxkZXYtJmd0O2RldiwgJmFtcDtsY3J0Yy0mZ3Q7YmFzZSwgbGNydGMtJmd0O3BsYW5lLAor CQkJCQlOVUxMLCAmYW1wO2xvb25nc29uX2NydGNfZnVuY3MsIE5VTEwpOworCWlmIChyZXQpIHsK KwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBjcnRjICVkXG4iLCBpbmRleCk7CisJCWRybV9w bGFuZV9jbGVhbnVwKGxjcnRjLSZndDtwbGFuZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHJt X2NydGNfaGVscGVyX2FkZCgmYW1wO2xjcnRjLSZndDtiYXNlLCAmYW1wO2xvb25nc29uX2NydGNf aGVscGVyX2Z1bmNzKTsKKworCWxkZXYtJmd0O21vZGVfaW5mb1tpbmRleF0uY3J0YyA9IGxjcnRj OworCisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sb29uZ3Nvbl9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9k ZXZpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU1M2JkOGRl ZDg5YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nv bl9kZXZpY2UuYwpAQCAtMCwwICsxLDQ3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vci1sYXRlcgorCisjaW5jbHVkZSAibG9vbmdzb25fZHJ2LmgiCisKK3UzMiBsb29u Z3Nvbl9ncHVfb2Zmc2V0KHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVj dCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CisJc3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRj OworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXY7CisJdTMyIGdwdV9hZGRyOworCisJbGNy dGMgPSB0b19sb29uZ3Nvbl9jcnRjKHN0YXRlLSZndDtjcnRjKTsKKwlsZGV2ID0gbGNydGMtJmd0 O2xkZXY7CisKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKHN0YXRlLSZndDtmYi0mZ3Q7b2Jq WzBdKTsKKwlncHVfYWRkciA9IGxkZXYtJmd0O3ZyYW1fc3RhcnQgKyBkcm1fZ2VtX3ZyYW1fb2Zm c2V0KGdibyk7CisKKwlyZXR1cm4gZ3B1X2FkZHI7Cit9CisKK3UzMiBsczdhX2lvX3JyZWcoc3Ry dWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMyIG9mZnNldCkKK3sKKwl1MzIgdmFsOworCisJ dmFsID0gcmVhZGwobGRldi0mZ3Q7aW8gKyBvZmZzZXQpOworCisJcmV0dXJuIHZhbDsKK30KKwor dm9pZCBsczdhX2lvX3dyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMyIG9mZnNl dCwgdTMyIHZhbCkKK3sKKwl3cml0ZWwodmFsLCBsZGV2LSZndDtpbyArIG9mZnNldCk7Cit9CisK K3UzMiBsczdhX21tX3JyZWcoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgdTMyIG9mZnNl dCkKK3sKKwl1MzIgdmFsOworCisJdmFsID0gcmVhZGwobGRldi0mZ3Q7bW1pbyArIG9mZnNldCk7 CisKKwlyZXR1cm4gdmFsOworfQorCit2b2lkIGxzN2FfbW1fd3JlZyhzdHJ1Y3QgbG9vbmdzb25f ZGV2aWNlICpsZGV2LCB1MzIgb2Zmc2V0LCB1MzIgdmFsKQoreworCXdyaXRlbCh2YWwsIGxkZXYt Jmd0O21taW8gKyBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25n c29uL2xvb25nc29uX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Ry di5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTQwNTE5OWEzZGY2 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Ry di5jCkBAIC0wLDAgKzEsMjcwIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vci1sYXRlcgorLyoKKyAqIExvb25nc29uIExTN0ExMDAwIGJyaWRnZSBjaGlwc2V0IGRybSBk cml2ZXIKKyAqLworCisjaW5jbHVkZSAmbHQ7bGludXgvY29uc29sZS5oJmd0OworI2luY2x1ZGUg Jmx0O2xpbnV4L3BjaS5oJmd0OworI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OworI2lu Y2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OworI2luY2x1ZGUgImxvb25nc29uX2Rydi5oIgor CisvKiBJbnRlcmZhY2UgaGlzdG9yeToKKyAqIDAuMSAtIG9yaWdpbmFsLgorICovCisjZGVmaW5l IERSSVZFUl9NQUpPUiAwCisjZGVmaW5lIERSSVZFUl9NSU5PUiAxCisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGxvb25nc29uX21vZGVfZnVuY3MgPSB7CisJLmZi X2NyZWF0ZSA9IGRybV9nZW1fZmJfY3JlYXRlLAorCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWlj X2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1p dCwKKwkub3V0cHV0X3BvbGxfY2hhbmdlZCA9IGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hh bmdlZCwKKwkubW9kZV92YWxpZCA9IGRybV92cmFtX2hlbHBlcl9tb2RlX3ZhbGlkCit9OworCitz dGF0aWMgaW50IGxvb25nc29uX2RldmljZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVp bnQzMl90IGZsYWdzKQoreworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYgPSBkZXYtJmd0 O2Rldl9wcml2YXRlOworCXN0cnVjdCBwY2lfZGV2ICpncHVfcGRldjsKKwlyZXNvdXJjZV9zaXpl X3QgYXBlcl9iYXNlOworCXJlc291cmNlX3NpemVfdCBhcGVyX3NpemU7CisJcmVzb3VyY2Vfc2l6 ZV90IG1taW9fYmFzZTsKKwlyZXNvdXJjZV9zaXplX3QgbW1pb19zaXplOworCisJLyogR1BVIE1F TSAqLworCS8qIFdlIG5lZWQgZ2V0IDdBLWdwdSBwY2kgZGV2aWNlIGluZm9ybWF0aW9uIGZvciBs ZGV2LSZndDtncHVfcGRldiAqLworCS8qIGRldi0mZ3Q7cGRldiBzYXZlIDdBLWRjIHBjaSBkZXZp Y2UgaW5mb3JtYXRpb24gKi8KKwlncHVfcGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1Jf SURfTE9PTkdTT04sCisJCQkJICBQQ0lfREVWSUNFX0lEX0xPT05HU09OX0dQVSwgTlVMTCk7CisJ aWYgKElTX0VSUihncHVfcGRldikpCisJCXJldHVybiBQVFJfRVJSKGdwdV9wZGV2KTsKKworCWxk ZXYtJmd0O2dwdV9wZGV2ID0gZ3B1X3BkZXY7CisJYXBlcl9iYXNlID0gcGNpX3Jlc291cmNlX3N0 YXJ0KGdwdV9wZGV2LCAyKTsKKwlhcGVyX3NpemUgPSBwY2lfcmVzb3VyY2VfbGVuKGdwdV9wZGV2 LCAyKTsKKwlsZGV2LSZndDt2cmFtX3N0YXJ0ID0gKHUzMilhcGVyX2Jhc2U7CisJbGRldi0mZ3Q7 dnJhbV9zaXplID0gKHUzMilhcGVyX3NpemU7CisKKwlpZiAoIWRldm1fcmVxdWVzdF9tZW1fcmVn aW9uKGxkZXYtJmd0O2Rldi0mZ3Q7ZGV2LCBsZGV2LSZndDt2cmFtX3N0YXJ0LAorCQkJCSAgICAg bGRldi0mZ3Q7dnJhbV9zaXplLCAibG9vbmdzb25fdnJhbSIpKSB7CisJCURSTV9FUlJPUigiQ2Fu J3QgcmVzZXJ2ZSBWUkFNXG4iKTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisKKwkvKiBEQyBNRU0g Ki8KKwltbWlvX2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQobGRldi0mZ3Q7ZGV2LSZndDtwZGV2 LCAwKTsKKwltbWlvX3NpemUgPSBwY2lfcmVzb3VyY2VfbGVuKGxkZXYtJmd0O2Rldi0mZ3Q7cGRl diwgMCk7CisJbGRldi0mZ3Q7bW1pbyA9IGRldm1faW9yZW1hcChkZXYtJmd0O2RldiwgbW1pb19i YXNlLCBtbWlvX3NpemUpOworCWlmICghbGRldi0mZ3Q7bW1pbykgeworCQlkcm1fZXJyKGRldiwg IkNhbm5vdCBtYXAgbW1pbyByZWdpb25cbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlp ZiAoIWRldm1fcmVxdWVzdF9tZW1fcmVnaW9uKGxkZXYtJmd0O2Rldi0mZ3Q7ZGV2LCBtbWlvX2Jh c2UsCisJCQkJICAgICBtbWlvX3NpemUsICJsb29uZ3Nvbl9tbWlvIikpIHsKKwkJRFJNX0VSUk9S KCJDYW4ndCByZXNlcnZlIG1taW8gcmVnaXN0ZXJzXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJ fQorCisJLyogREMgSU8gKi8KKwlsZGV2LSZndDtpbyA9IGlvcmVtYXAoTFM3QV9DSElQQ0ZHX1JF R19CQVNFLCAweGYpOworCWlmIChsZGV2LSZndDtpbyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01F TTsKKworCURSTV9JTkZPKCJEQyBtbWlvIGJhc2UgMHglbGx4IHNpemUgMHglbGx4IGlvIDB4JWxs eFxuIiwKKwkJIG1taW9fYmFzZSwgbW1pb19zaXplLCAqKHU2NCAqKWxkZXYtJmd0O2lvKTsKKwlE Uk1fSU5GTygiR1BVIHZyYW0gc3RhcnQgPSAweCV4IHNpemUgPSAweCV4XG4iLAorCQkgbGRldi0m Z3Q7dnJhbV9zdGFydCwgbGRldi0mZ3Q7dnJhbV9zaXplKTsKKworCXJldHVybiAwOworfQorCitp bnQgbG9vbmdzb25fbW9kZXNldF9pbml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYpCit7 CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3I7CisJaW50IGk7CisJdTMyIHJldDsKKworCWxkZXYtJmd0O2Rldi0mZ3Q7bW9kZV9j b25maWcuYWxsb3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKKworCWZvciAoaSA9IDA7IGkgJmx0OyAy OyBpKyspIHsKKwkJcmV0ID0gbG9vbmdzb25fY3J0Y19pbml0KGxkZXYsIGkpOworCQlpZiAocmV0 KSB7CisJCQlEUk1fV0FSTigibG9vbmdzb24gY3J0YyVkIGluaXQgZmFpbGVkXG4iLCBpKTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJcmV0ID0gbG9vbmdzb25fZW5jb2Rlcl9pbml0KGxkZXYsIGkp OworCQlpZiAocmV0KSB7CisJCQlEUk1fRVJST1IoImxvb25nc29uX2VuY29kZXJfaW5pdCBmYWls ZWRcbiIpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJcmV0ID0gbG9vbmdzb25fY29ubmVjdG9y X2luaXQobGRldiwgaSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigibG9vbmdzb25fY29u bmVjdG9yX2luaXQgZmFpbGVkXG4iKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWVuY29kZXIg PSAmYW1wO2xkZXYtJmd0O21vZGVfaW5mb1tpXS5lbmNvZGVyLSZndDtiYXNlOworCQljb25uZWN0 b3IgPSAmYW1wO2xkZXYtJmd0O21vZGVfaW5mb1tpXS5jb25uZWN0b3ItJmd0O2Jhc2U7CisJCWRy bV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKKwkJbGRldi0m Z3Q7bnVtX2NydGMrKzsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsb29uZ3Nv bl9kcm1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQor eworCXN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXY7CisJaW50IHJldDsKKworCWxkZXYgPSBk ZXZtX2t6YWxsb2MoZGV2LSZndDtkZXYsIHNpemVvZigqbGRldiksIEdGUF9LRVJORUwpOworCWlm ICghbGRldikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkZXYtJmd0O2Rldl9wcml2YXRlID0gbGRl djsKKwlsZGV2LSZndDtkZXYgPSBkZXY7CisKKwlyZXQgPSBsb29uZ3Nvbl9kZXZpY2VfaW5pdChk ZXYsIGZsYWdzKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycjsKKworCXJldCA9IGRybW1fdnJhbV9o ZWxwZXJfaW5pdChkZXYsIGxkZXYtJmd0O3ZyYW1fc3RhcnQsIGxkZXYtJmd0O3ZyYW1fc2l6ZSk7 CisJaWYgKHJldCkKKwkJZ290byBlcnI7CisKKwlkcm1fbW9kZV9jb25maWdfaW5pdChkZXYpOwor CWRldi0mZ3Q7bW9kZV9jb25maWcuZnVuY3MgPSAodm9pZCAqKSZhbXA7bG9vbmdzb25fbW9kZV9m dW5jczsKKwlkZXYtJmd0O21vZGVfY29uZmlnLm1pbl93aWR0aCA9IDE7CisJZGV2LSZndDttb2Rl X2NvbmZpZy5taW5faGVpZ2h0ID0gMTsKKwlkZXYtJmd0O21vZGVfY29uZmlnLm1heF93aWR0aCA9 IDQwOTY7CisJZGV2LSZndDttb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKKwlkZXYtJmd0 O21vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9IDMyOworCWRldi0mZ3Q7bW9kZV9jb25maWcu cHJlZmVyX3NoYWRvdyA9IDE7CisJZGV2LSZndDttb2RlX2NvbmZpZy5mYl9iYXNlID0gbGRldi0m Z3Q7dnJhbV9zdGFydDsKKworCXBjaV9zZXRfZHJ2ZGF0YShkZXYtJmd0O3BkZXYsIGRldik7CisK KwlyZXQgPSBsb29uZ3Nvbl9tb2Rlc2V0X2luaXQobGRldik7CisJaWYgKHJldCkKKwkJZGV2X2Vy cihkZXYtJmd0O2RldiwgIkZhdGFsIGVycm9yIGR1cmluZyBtb2Rlc2V0IGluaXQ6ICVkXG4iLCBy ZXQpOworCisJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRldik7CisJZHJtX21vZGVfY29uZmln X3Jlc2V0KGRldik7CisKKwlyZXR1cm4gMDsKKworZXJyOgorCWRybV9lcnIoZGV2LCAiZmFpbGVk IHRvIGluaXRpYWxpemUgZHJtIGRyaXZlcjogJWRcbiIsIHJldCk7CisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHZvaWQgbG9vbmdzb25fZHJtX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoreworCWRybV92cmFtX2hlbHBlcl9yZWxlYXNlX21tKGRldik7CisJZHJtX21vZGVfY29uZmln X2NsZWFudXAoZGV2KTsKKwlkZXYtJmd0O2Rldl9wcml2YXRlID0gTlVMTDsKKwlkZXZfc2V0X2Ry dmRhdGEoZGV2LSZndDtkZXYsIE5VTEwpOworfQorCitERUZJTkVfRFJNX0dFTV9GT1BTKGZvcHMp OworCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbG9vbmdzb25fZHJtX2RyaXZlciA9IHsKKwku ZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FU T01JQywKKwkuZm9wcyA9ICZhbXA7Zm9wcywKKwlEUk1fR0VNX1ZSQU1fRFJJVkVSLAorCisJLm5h bWUgPSBEUklWRVJfTkFNRSwKKwkuZGVzYyA9IERSSVZFUl9ERVNDLAorCS5kYXRlID0gRFJJVkVS X0RBVEUsCisJLm1ham9yID0gRFJJVkVSX01BSk9SLAorCS5taW5vciA9IERSSVZFUl9NSU5PUiwK K307CisKK3N0YXRpYyBpbnQgbG9vbmdzb25fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2 LAorCQkJICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKK3sKKwlpbnQgcmV0 OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisKKwlEUk1fSU5GTygiU3RhcnQgbG9vbmdzb24g ZHJtIHByb2JlXG4iKTsKKwlkZXYgPSBkcm1fZGV2X2FsbG9jKCZhbXA7bG9vbmdzb25fZHJtX2Ry aXZlciwgJmFtcDtwZGV2LSZndDtkZXYpOworCWlmIChJU19FUlIoZGV2KSkgeworCQlEUk1fRVJS T1IoImZhaWxlZCB0byBhbGxvY2F0ZSBkcm1fZGV2aWNlXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIo ZGV2KTsKKwl9CisKKwlkZXYtJmd0O3BkZXYgPSBwZGV2OworCXBjaV9zZXRfZHJ2ZGF0YShwZGV2 LCBkZXYpOworCisJcmV0ID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CisJaWYgKHJldCkgewor CQlkcm1fZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgcGNpIGRldmljZTogJWRcbiIsIHJldCk7 CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJcmV0ID0gbG9vbmdzb25fZHJtX2xvYWQoZGV2LCAw eDApOworCWlmIChyZXQpIHsKKwkJZHJtX2VycihkZXYsICJmYWlsZWQgdG8gbG9hZCBsb29uZ3Nv bjogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3BkZXY7CisJfQorCisJcmV0ID0gZHJtX2Rldl9y ZWdpc3RlcihkZXYsIDApOworCWlmIChyZXQpIHsKKwkJZHJtX2VycihkZXYsICJmYWlsZWQgdG8g cmVnaXN0ZXIgZHJ2IGZvciB1c2Vyc3BhY2UgYWNjZXNzOiAlZFxuIiwKKwkJCXJldCk7CisJCWdv dG8gZXJyX3BkZXY7CisJfQorCisJZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoZGV2LCBkZXYtJmd0 O21vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCk7CisKKwlyZXR1cm4gMDsKKworZXJyX3BkZXY6 CisJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOworZXJyX2ZyZWU6CisJZHJtX2Rldl9wdXQoZGV2 KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBsb29uZ3Nvbl9wY2lfcmVtb3ZlKHN0 cnVjdCBwY2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwY2lfZ2V0 X2RydmRhdGEocGRldik7CisKKwlkcm1fZGV2X3VucmVnaXN0ZXIoZGV2KTsKKwlsb29uZ3Nvbl9k cm1fdW5sb2FkKGRldik7CisJZHJtX2Rldl9wdXQoZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCBw Y2lfZGV2aWNlX2lkIGxvb25nc29uX3BjaV9kZXZpY2VzW10gPSB7CisJeyBQQ0lfREVWSUNFKFBD SV9WRU5ET1JfSURfTE9PTkdTT04sIFBDSV9ERVZJQ0VfSURfTE9PTkdTT05fREMpIH0sCisJezAs fQorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2RybV9wY2lfZHJpdmVy ID0geworCS5uYW1lID0gRFJJVkVSX05BTUUsCisJLmlkX3RhYmxlID0gbG9vbmdzb25fcGNpX2Rl dmljZXMsCisJLnByb2JlID0gbG9vbmdzb25fcGNpX3Byb2JlLAorCS5yZW1vdmUgPSBsb29uZ3Nv bl9wY2lfcmVtb3ZlLAorfTsKKworc3RhdGljIGludCBfX2luaXQgbG9vbmdzb25fZHJtX2luaXQo dm9pZCkKK3sKKwlyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcigmYW1wO2xvb25nc29uX2RybV9w Y2lfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGxvb25nc29uX2RybV9leGl0KHZv aWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZhbXA7bG9vbmdzb25fZHJtX3BjaV9kcml2 ZXIpOworfQorCittb2R1bGVfaW5pdChsb29uZ3Nvbl9kcm1faW5pdCk7Cittb2R1bGVfZXhpdChs b29uZ3Nvbl9kcm1fZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7CitNT0RV TEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Rydi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNDk4ZDFiMDgyYTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2Rydi5oCkBAIC0wLDAgKzEsMTM5IEBACisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisKKyNpZm5kZWYgX19M T09OR1NPTl9EUlZfSF9fCisjZGVmaW5lIF9fTE9PTkdTT05fRFJWX0hfXworCisjaW5jbHVkZSAm bHQ7ZHJtL2RybV9kcnYuaCZndDsKKyNpbmNsdWRlICZsdDtkcm0vZHJtX2dlbS5oJmd0OworI2lu Y2x1ZGUgJmx0O2RybS9kcm1fZmJfaGVscGVyLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9m b3VyY2MuaCZndDsKKyNpbmNsdWRlICZsdDtkcm0vZHJtX3Byb2JlX2hlbHBlci5oJmd0OworI2lu Y2x1ZGUgJmx0O2RybS9kcm1fYXRvbWljLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9hdG9t aWNfaGVscGVyLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVs cGVyLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaCZndDsKKyNp bmNsdWRlICZsdDtkcm0vZHJtX3BsYW5lLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9wbGFu ZV9oZWxwZXIuaCZndDsKKyNpbmNsdWRlICZsdDtkcm0vZHJtX2NydGMuaCZndDsKKyNpbmNsdWRl ICZsdDtkcm0vZHJtX2NydGNfaGVscGVyLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZHJtL2RybV9jb25u ZWN0b3IuaCZndDsKKyNpbmNsdWRlICZsdDtkcm0vZHJtX2VuY29kZXIuaCZndDsKKworLyogR2Vu ZXJhbCBjdXN0b21pemF0aW9uOgorICovCisjZGVmaW5lIERSSVZFUl9BVVRIT1IgIkxvb25nc29u IGdyYXBoaWNzIGRyaXZlciB0ZWFtIgorI2RlZmluZSBEUklWRVJfTkFNRSAibG9vbmdzb24tZHJt IgorI2RlZmluZSBEUklWRVJfREVTQyAiTG9vbmdzb24gTFM3QSBEUk0gZHJpdmVyIgorI2RlZmlu ZSBEUklWRVJfREFURSAiMjAyMDA5MTUiCisKKyNkZWZpbmUgdG9fbG9vbmdzb25fY3J0Yyh4KSBj b250YWluZXJfb2YoeCwgc3RydWN0IGxvb25nc29uX2NydGMsIGJhc2UpCisjZGVmaW5lIHRvX2xv b25nc29uX2VuY29kZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBsb29uZ3Nvbl9lbmNvZGVy LCBiYXNlKQorCisjZGVmaW5lIExTN0FfQ0hJUENGR19SRUdfQkFTRSAoMHgxMDAxMDAwMCkKKyNk ZWZpbmUgUENJX0RFVklDRV9JRF9MT09OR1NPTl9EQyAweDdhMDYKKyNkZWZpbmUgUENJX0RFVklD RV9JRF9MT09OR1NPTl9HUFUgMHg3YTE1CisjZGVmaW5lIExTN0FfUElYX1BMTCAoMHgwNGIwKQor I2RlZmluZSBSRUdfT0ZGU0VUICgweDEwKQorI2RlZmluZSBGQl9DRkdfUkVHICgweDEyNDApCisj ZGVmaW5lIEZCX0FERFIwX1JFRyAoMHgxMjYwKQorI2RlZmluZSBGQl9BRERSMV9SRUcgKDB4MTU4 MCkKKyNkZWZpbmUgRkJfU1RSSV9SRUcgKDB4MTI4MCkKKyNkZWZpbmUgRkJfRElUQ0ZHX1JFRyAo MHgxMzYwKQorI2RlZmluZSBGQl9ESVRUQUJfTE9fUkVHICgweDEzODApCisjZGVmaW5lIEZCX0RJ VFRBQl9ISV9SRUcgKDB4MTNhMCkKKyNkZWZpbmUgRkJfUEFOQ0ZHX1JFRyAoMHgxM2MwKQorI2Rl ZmluZSBGQl9QQU5USU1fUkVHICgweDEzZTApCisjZGVmaW5lIEZCX0hESVNQTEFZX1JFRyAoMHgx NDAwKQorI2RlZmluZSBGQl9IU1lOQ19SRUcgKDB4MTQyMCkKKyNkZWZpbmUgRkJfVkRJU1BMQVlf UkVHICgweDE0ODApCisjZGVmaW5lIEZCX1ZTWU5DX1JFRyAoMHgxNGEwKQorCisjZGVmaW5lIENG R19GTVQgR0VOTUFTSygyLCAwKQorI2RlZmluZSBDRkdfRkJTV0lUQ0ggQklUKDcpCisjZGVmaW5l IENGR19FTkFCTEUgQklUKDgpCisjZGVmaW5lIENGR19GQk5VTSBCSVQoMTEpCisjZGVmaW5lIENG R19HQU1NQVIgQklUKDEyKQorI2RlZmluZSBDRkdfUkVTRVQgQklUKDIwKQorCisjZGVmaW5lIEZC X1BBTkNGR19ERUYgMHg4MDAwMTMxMQorI2RlZmluZSBGQl9IU1lOQ19QVUxTRSAoMSAmbHQ7Jmx0 OyAzMCkKKyNkZWZpbmUgRkJfVlNZTkNfUFVMU0UgKDEgJmx0OyZsdDsgMzApCisKKy8qIFBJWCBQ TEwgKi8KKyNkZWZpbmUgTE9PUENfTUlOIDI0CisjZGVmaW5lIExPT1BDX01BWCAxNjEKKyNkZWZp bmUgRlJFX1JFRl9NSU4gMTIKKyNkZWZpbmUgRlJFX1JFRl9NQVggMzIKKyNkZWZpbmUgRElWX1JF Rl9NSU4gMworI2RlZmluZSBESVZfUkVGX01BWCA1CisjZGVmaW5lIFBTVF9ESVZfTUFYIDY0CisK K3N0cnVjdCBwaXhfcGxsIHsKKwl1MzIgbDJfZGl2OworCXUzMiBsMV9sb29wYzsKKwl1MzIgbDFf ZnJlZmM7Cit9OworCitzdHJ1Y3QgbG9vbmdzb25fY3J0YyB7CisJc3RydWN0IGRybV9jcnRjIGJh c2U7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldjsKKwl1MzIgY3J0Y19pZDsKKwl1MzIg cmVnX29mZnNldDsKKwl1MzIgY2ZnX3JlZzsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKK307 CisKK3N0cnVjdCBsb29uZ3Nvbl9lbmNvZGVyIHsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgYmFzZTsK KwlzdHJ1Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2OworCXN0cnVjdCBsb29uZ3Nvbl9jcnRjICps Y3J0YzsKK307CisKK3N0cnVjdCBsb29uZ3Nvbl9jb25uZWN0b3IgeworCXN0cnVjdCBkcm1fY29u bmVjdG9yIGJhc2U7CisJc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldjsKKwl1MTYgaWQ7CisJ dTMyIHR5cGU7Cit9OworCitzdHJ1Y3QgbG9vbmdzb25fbW9kZV9pbmZvIHsKKwlzdHJ1Y3QgbG9v bmdzb25fZGV2aWNlICpsZGV2OworCXN0cnVjdCBsb29uZ3Nvbl9jcnRjICpjcnRjOworCXN0cnVj dCBsb29uZ3Nvbl9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBsb29uZ3Nvbl9jb25uZWN0b3Ig KmNvbm5lY3RvcjsKK307CisKK3N0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgeworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOworCisJdm9pZCBf X2lvbWVtICptbWlvOworCXZvaWQgX19pb21lbSAqaW87CisJdTMyIHZyYW1fc3RhcnQ7CisJdTMy IHZyYW1fc2l6ZTsKKworCXUzMiBudW1fY3J0YzsKKwlzdHJ1Y3QgbG9vbmdzb25fbW9kZV9pbmZv IG1vZGVfaW5mb1syXTsKKwlzdHJ1Y3QgcGNpX2RldiAqZ3B1X3BkZXY7IC8qIExTN0EgZ3B1IGRl dmljZSBpbmZvICovCit9OworCisvKiBjcnRjICovCitpbnQgbG9vbmdzb25fY3J0Y19pbml0KHN0 cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYsIGludCBpbmRleCk7CisKKy8qIGNvbm5lY3RvciAq LworaW50IGxvb25nc29uX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxk ZXYsIGludCBpbmRleCk7CisKKy8qIGVuY29kZXIgKi8KK2ludCBsb29uZ3Nvbl9lbmNvZGVyX2lu aXQoc3RydWN0IGxvb25nc29uX2RldmljZSAqbGRldiwgaW50IGluZGV4KTsKKworLyogcGxhbmUg Ki8KK2ludCBsb29uZ3Nvbl9wbGFuZV9pbml0KHN0cnVjdCBsb29uZ3Nvbl9jcnRjICpsY3J0Yyk7 CisKKy8qIGRldmljZSAqLwordTMyIGxvb25nc29uX2dwdV9vZmZzZXQoc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqc3RhdGUpOwordTMyIGxzN2FfbW1fcnJlZyhzdHJ1Y3QgbG9vbmdzb25fZGV2aWNl ICpsZGV2LCB1MzIgb2Zmc2V0KTsKK3ZvaWQgbHM3YV9tbV93cmVnKHN0cnVjdCBsb29uZ3Nvbl9k ZXZpY2UgKmxkZXYsIHUzMiBvZmZzZXQsIHUzMiB2YWwpOwordTMyIGxzN2FfaW9fcnJlZyhzdHJ1 Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCB1MzIgb2Zmc2V0KTsKK3ZvaWQgbHM3YV9pb193cmVn KHN0cnVjdCBsb29uZ3Nvbl9kZXZpY2UgKmxkZXYsIHUzMiBvZmZzZXQsIHUzMiB2YWwpOworCisj ZW5kaWYgLyogX19MT09OR1NPTl9EUlZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbG9vbmdzb24vbG9vbmdzb25fZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29u L2xvb25nc29uX2VuY29kZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjIwMDJjZWUwMDMwMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29u Z3Nvbi9sb29uZ3Nvbl9lbmNvZGVyLmMKQEAgLTAsMCArMSwzNyBAQAorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKworI2luY2x1ZGUgImxvb25nc29uX2Rydi5o IgorCitzdGF0aWMgdm9pZCBsb29uZ3Nvbl9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBsb29uZ3Nvbl9lbmNvZGVyICpsZW5jb2RlciA9IHRv X2xvb25nc29uX2VuY29kZXIoZW5jb2Rlcik7CisKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29k ZXIpOworCWtmcmVlKGxlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9mdW5jcyBsb29uZ3Nvbl9lbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0gbG9vbmdz b25fZW5jb2Rlcl9kZXN0cm95LAorfTsKKworaW50IGxvb25nc29uX2VuY29kZXJfaW5pdChzdHJ1 Y3QgbG9vbmdzb25fZGV2aWNlICpsZGV2LCBpbnQgaW5kZXgpCit7CisJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOworCXN0cnVjdCBsb29uZ3Nvbl9lbmNvZGVyICpsZW5jb2RlcjsKKworCWxl bmNvZGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGxvb25nc29uX2VuY29kZXIpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIWxlbmNvZGVyKQorCQlyZXR1cm4gLTE7CisKKwlsZW5jb2Rlci0mZ3Q7bGNy dGMgPSBsZGV2LSZndDttb2RlX2luZm9baW5kZXhdLmNydGM7CisJbGVuY29kZXItJmd0O2xkZXYg PSBsZGV2OworCWVuY29kZXIgPSAmYW1wO2xlbmNvZGVyLSZndDtiYXNlOworCWVuY29kZXItJmd0 O3Bvc3NpYmxlX2NydGNzID0gMSAmbHQ7Jmx0OyBpbmRleDsKKworCWRybV9lbmNvZGVyX2luaXQo bGRldi0mZ3Q7ZGV2LCBlbmNvZGVyLCAmYW1wO2xvb25nc29uX2VuY29kZXJfZnVuY3MsCisJCQkg RFJNX01PREVfRU5DT0RFUl9EQUMsIE5VTEwpOworCisJbGRldi0mZ3Q7bW9kZV9pbmZvW2luZGV4 XS5lbmNvZGVyID0gbGVuY29kZXI7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sb29uZ3Nvbl9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xvb25nc29uX3BsYW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5mNDY5NGRjYmYxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bG9vbmdzb24vbG9vbmdzb25fcGxhbmUuYwpAQCAtMCwwICsxLDEwMiBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKworI2luY2x1ZGUgImxvb25nc29uX2Ry di5oIgorCitzdGF0aWMgdm9pZCBsb29uZ3Nvbl9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRl KQoreworCXN0cnVjdCBsb29uZ3Nvbl9jcnRjICpsY3J0YzsKKwlzdHJ1Y3QgbG9vbmdzb25fZGV2 aWNlICpsZGV2OworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxhbmUtJmd0O3N0 YXRlOworCXUzMiBncHVfYWRkciA9IDA7CisJdTMyIGZiX2FkZHIgPSAwOworCXUzMiByZWdfdmFs ID0gMDsKKwl1MzIgcmVnX29mZnNldDsKKwl1MzIgcGl0Y2g7CisJdTggZGVwdGg7CisJdTMyIHgs IHk7CisKKwlpZiAoIXN0YXRlLSZndDtjcnRjIHx8ICFzdGF0ZS0mZ3Q7ZmIpCisJCXJldHVybjsK KworCXBpdGNoID0gc3RhdGUtJmd0O2ZiLSZndDtwaXRjaGVzWzBdOworCWxjcnRjID0gdG9fbG9v bmdzb25fY3J0YyhzdGF0ZS0mZ3Q7Y3J0Yyk7CisJbGRldiA9IGxjcnRjLSZndDtsZGV2OworCXJl Z19vZmZzZXQgPSBsY3J0Yy0mZ3Q7cmVnX29mZnNldDsKKwl4ID0gc3RhdGUtJmd0O2NydGMtJmd0 O3g7CisJeSA9IHN0YXRlLSZndDtjcnRjLSZndDt5OworCWRlcHRoID0gc3RhdGUtJmd0O2ZiLSZn dDtmb3JtYXQtJmd0O2NwcFswXSAmbHQ7Jmx0OyAzOworCisJZ3B1X2FkZHIgPSBsb29uZ3Nvbl9n cHVfb2Zmc2V0KHN0YXRlKTsKKwlyZWdfdmFsID0gKHBpdGNoICsgMjU1KSAmYW1wOyB+MjU1Owor CWxzN2FfbW1fd3JlZyhsZGV2LCBGQl9TVFJJX1JFRyArIHJlZ19vZmZzZXQsIHJlZ192YWwpOwor CisJc3dpdGNoIChkZXB0aCkgeworCWNhc2UgMTIgLi4uIDE2OgorCQlmYl9hZGRyID0gZ3B1X2Fk ZHIgKyB5ICogcGl0Y2ggKyBBTElHTih4LCA2NCkgKiAyOworCQlicmVhazsKKwljYXNlIDI0IC4u LiAzMjoKKwlkZWZhdWx0OgorCQlmYl9hZGRyID0gZ3B1X2FkZHIgKyB5ICogcGl0Y2ggKyBBTElH Tih4LCA2NCkgKiA0OworCQlicmVhazsKKwl9CisKKwlsczdhX21tX3dyZWcobGRldiwgRkJfQURE UjBfUkVHICsgcmVnX29mZnNldCwgZmJfYWRkcik7CisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0FE RFIxX1JFRyArIHJlZ19vZmZzZXQsIGZiX2FkZHIpOworCXJlZ192YWwgPSBsY3J0Yy0mZ3Q7Y2Zn X3JlZyB8IENGR19FTkFCTEU7CisJbHM3YV9tbV93cmVnKGxkZXYsIEZCX0NGR19SRUcgKyByZWdf b2Zmc2V0LCByZWdfdmFsKTsKK30KKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGxvb25nc29uX2Zv cm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1JHQjg4OCwKKwlE Uk1fRk9STUFUX1hSR0I4ODg4LAorCURSTV9GT1JNQVRfQVJHQjg4ODgsCit9OworCitzdGF0aWMg Y29uc3QgdWludDY0X3QgbG9vbmdzb25fZm9ybWF0X21vZGlmaWVyc1tdID0geyBEUk1fRk9STUFU X01PRF9MSU5FQVIsCisJCQkJCQkgICAgICBEUk1fRk9STUFUX01PRF9JTlZBTElEIH07CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGxvb25nc29uX3BsYW5lX2Z1bmNzID0g eworCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVw bGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVy X3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCisJLmRlc3Ryb3kgPSBkcm1fcGxhbmVfY2xlYW51cCwKKwku ZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCisJLnJlc2V0 ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCisJLnVwZGF0ZV9wbGFuZSA9IGRybV9h dG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX2hlbHBlcl9mdW5jcyBsb29uZ3Nvbl9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CisJLnBy ZXBhcmVfZmIJPSBkcm1fZ2VtX3ZyYW1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIsCisJLmNsZWFu dXBfZmIJPSBkcm1fZ2VtX3ZyYW1fcGxhbmVfaGVscGVyX2NsZWFudXBfZmIsCisJLmF0b21pY191 cGRhdGUgPSBsb29uZ3Nvbl9wbGFuZV9hdG9taWNfdXBkYXRlLAorfTsKKworaW50IGxvb25nc29u X3BsYW5lX2luaXQoc3RydWN0IGxvb25nc29uX2NydGMgKmxjcnRjKQoreworCXN0cnVjdCBsb29u Z3Nvbl9kZXZpY2UgKmxkZXY7CisJaW50IGNydGNfaWQ7CisJaW50IHJldDsKKworCWxkZXYgPSBs Y3J0Yy0mZ3Q7bGRldjsKKwljcnRjX2lkID0gbGNydGMtJmd0O2NydGNfaWQ7CisKKwlsY3J0Yy0m Z3Q7cGxhbmUgPSBkZXZtX2t6YWxsb2MobGRldi0mZ3Q7ZGV2LSZndDtkZXYsIHNpemVvZigqbGNy dGMtJmd0O3BsYW5lKSwKKwkJCQkgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFsY3J0Yy0mZ3Q7cGxh bmUpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0 KGxkZXYtJmd0O2RldiwgbGNydGMtJmd0O3BsYW5lLCBCSVQoY3J0Y19pZCksCisJCQkJICAgICAg ICZhbXA7bG9vbmdzb25fcGxhbmVfZnVuY3MsIGxvb25nc29uX2Zvcm1hdHMsCisJCQkJICAgICAg IEFSUkFZX1NJWkUobG9vbmdzb25fZm9ybWF0cyksCisJCQkJICAgICAgIGxvb25nc29uX2Zvcm1h dF9tb2RpZmllcnMsCisJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlksIE5VTEwpOwor CWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJmYWlsIHRvIGluaXQgcGxhbmVkIGNydGMgJWRcbiIs IGNydGNfaWQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRybV9wbGFuZV9oZWxwZXJfYWRkKGxj cnRjLSZndDtwbGFuZSwgJmFtcDtsb29uZ3Nvbl9wbGFuZV9oZWxwZXJfZnVuY3MpOworCisJcmV0 dXJuIDA7Cit9Ci0tIAoyLjMxLjA8L3ByZT48L2Rpdj48YnI+PGJyPjxzcGFuIHRpdGxlPSJuZXRl YXNlZm9vdGVyIj48cD4mbmJzcDs8L3A+PC9zcGFuPg== ------=_Part_10603_1734786299.1617240017106-- --===============1228231563== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel --===============1228231563==--