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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham 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 859FEC43331 for ; Tue, 12 Nov 2019 18:04:24 +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 6128A2067B for ; Tue, 12 Nov 2019 18:04:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6128A2067B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0978F6EBB2; Tue, 12 Nov 2019 18:04:24 +0000 (UTC) Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690042.outbound.protection.outlook.com [40.107.69.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D8056EBB8 for ; Tue, 12 Nov 2019 18:04:21 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TfaVnbP9xHxexLFe6nd5Reb9vRnH38d63OuFi8Uh6A3bcguRrNjQ9h2EbGFoN78dyZBOrRCbHO1JGU4eOcjCBJNJNykMf3390Re/uwJZIdjqa3rlVr5tQ6Ju0zzduzwoeXfIEljnnMF5JUfz1OFyUjD0ffSh47Ofwb3+Xe+XM+y/brvvDAHmzJ+yEnbTpIJ2MsPz+n7itI90oAlI/yiMsOJTKul+3m2czjv0uJeDnu+2QBywdHv/V6w3jW8GIWF9fDdOgmYLnzHlg+k4j6T88I5/sJ0jMeTlJnzTXzEne6ZxyfFBoWs9pAEyRPCFUNILvhnkUSs3D7rTLOm7/eymVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xsgtl4GymTye+yglMwdnRTZg9HCxU4HcUQPb9vhEKhI=; b=N4Q/8uWHsI/dhBaXxt1iMcMMvPLxR1M3W/y0p6EIgStEKKEIpB2vrWvTCfyxyCb7WDCjzGyDF7OATZH+nEQNVoUr3dL6stnaXeMth3CSN7j3cj2BLLl5QcNCPCY+nzGApkrO2eGgRvqg4WA2vJdB2VQHh5BAjVPBVqJksmyO9N25GYU3bc7HjwWFW5bDOJzpa+AMyRHTZoL37KMDOBW/RvQi3l6t6dvqLwK/zGFFiBgD2dIgEQscL2VFCHrO8m8bb1zoD1UGpToyZFAfttDB7kGVATOx5q9lVcOIujsVqur3XblreMCt0BH/82rFQcf2UZOnyiDImZGUrWJZRcUJYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from DM5PR12MB2456.namprd12.prod.outlook.com (52.132.141.37) by DM5PR12MB1580.namprd12.prod.outlook.com (10.172.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.20; Tue, 12 Nov 2019 18:04:19 +0000 Received: from DM5PR12MB2456.namprd12.prod.outlook.com ([fe80::75bf:bd52:2f61:656b]) by DM5PR12MB2456.namprd12.prod.outlook.com ([fe80::75bf:bd52:2f61:656b%7]) with mapi id 15.20.2451.023; Tue, 12 Nov 2019 18:04:19 +0000 From: Leo Liu To: amd-gfx@lists.freedesktop.org Subject: [PATCH 19/21] drm/amdgpu: move JPEG2.5 out from VCN2.5 Date: Tue, 12 Nov 2019 13:03:27 -0500 Message-Id: <20191112180329.3927-20-leo.liu@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191112180329.3927-1-leo.liu@amd.com> References: <20191112180329.3927-1-leo.liu@amd.com> X-ClientProxiedBy: YTOPR0101CA0059.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:14::36) To DM5PR12MB2456.namprd12.prod.outlook.com (2603:10b6:4:b4::37) MIME-Version: 1.0 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [165.204.55.251] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: de17aa74-96b4-4f34-b56b-08d7679abcd2 X-MS-TrafficTypeDiagnostic: DM5PR12MB1580: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:393; X-Forefront-PRVS: 021975AE46 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(199004)(189003)(478600001)(6512007)(305945005)(186003)(26005)(8936002)(30864003)(6436002)(6486002)(5660300002)(76176011)(99286004)(25786009)(14454004)(51416003)(476003)(446003)(2616005)(4326008)(386003)(6506007)(6916009)(16586007)(7736002)(316002)(52116002)(86362001)(11346002)(50226002)(6666004)(486006)(2361001)(8676002)(44832011)(1076003)(36756003)(3846002)(6116002)(66066001)(47776003)(14444005)(50466002)(2906002)(48376002)(66946007)(66556008)(2351001)(66476007)(81156014)(81166006)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1580; H:DM5PR12MB2456.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VqF48k7II2ciAE1up6+Rg/tYq+7FC54SdqPoiF71q8r8M5googl5OLaa3+3uyUqTyZ11ATnf7nr8W9FPAWHZAl+lOlnstWlEC230yU8Lao/UckYc8dmt0+jkszNxiuO/eHFXYTJaksBBp5peAqoNhitCDdn66wqjpPtYxXkaHRS+R82b8ALMgy3nWSqzvOZf+xSYveK/jnk+zTQlASkiuawHCVaXcoIFZLj5q2iYKPc++4sZal9RmadLQXJeeZn3krVY85UajdfNjA4jToBbF/p//uyvLH/5kfPxFWSF8Q3erXTWe3m6LDBs/Sq6KN0Ycb2NyBcW88oiUSVbKLJugpc/unuU+HOdFZSYGWQoSno2QsRBst0FmP8t1o6WoOSamjNL9jgPM1uXfEk2R1NVK2uPzTfmuePYI2GaZqQBOPcr9mLVkKZ0mtIhwyepxP5T X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: de17aa74-96b4-4f34-b56b-08d7679abcd2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2019 18:04:18.9503 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nmuWa7GZsWZgaGPIV8vwp4jgJel2tQTd7w/te7kAo3KDB3KZGWOSAjozefH0ogMX X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1580 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xsgtl4GymTye+yglMwdnRTZg9HCxU4HcUQPb9vhEKhI=; b=lBlzaG2ireVrewEtYg1FmUE4Go+Cv62cmNcGdpwwQgwJrKbWugX4rERf3lMuwFyDBxQUw0pxbaaP2DzIUqmImUZIynUBxguIHS4EVshhfdYva45ZujS5NDDA3Vwy4n8v5UTDzrzMX84AEKJ5QYUxQOGYfHjlIeF4ew517R4TEqA= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Leo.Liu@amd.com; X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Leo Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Message-ID: <20191112180327.L3Q2bYAeujlXgFfWxaYmTFhWPhdvke1Bgaftbk4krS0@z> QW5kIGNsZWFuIHVwIHRoZSBkdXBsaWNhdGVkIHN0dWZmCgpTaWduZWQtb2ZmLWJ5OiBMZW8gTGl1 IDxsZW8ubGl1QGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZp bGUgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pwZWcu aCB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMgIHwgMTA1 IC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uaCAgfCAgIDUgLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvanBlZ192Ml81LmMgICB8IDY0MSArKysrKysrKysr KysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvanBlZ192Ml81LmggICB8 ICAyOSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y25fdjJfMC5jICAgIHwgMjM2IC0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YyXzAuaCAgICB8ICAxMyAt CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y25fdjJfNS5jICAgIHwgMjQ2ICstLS0tLS0t LQogOSBmaWxlcyBjaGFuZ2VkLCA2NzkgaW5zZXJ0aW9ucygrKSwgNjAyIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2pwZWdfdjJfNS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvanBlZ192Ml81 LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCmluZGV4IGQ0MGFmNjUxOTM1Ni4uODNl ZTFjNjc2ZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmls ZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQpAQCAtMTU1LDcgKzE1 NSw4IEBAIGFtZGdwdS15ICs9IFwKIAl2Y25fdjJfNS5vIFwKIAlhbWRncHVfanBlZy5vIFwKIAlq cGVnX3YxXzAubyBcCi0JanBlZ192Ml8wLm8KKwlqcGVnX3YyXzAubyBcCisJanBlZ192Ml81Lm8K IAogIyBhZGQgQVRIVUIgYmxvY2sKIGFtZGdwdS15ICs9IFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qcGVnLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfanBlZy5oCmluZGV4IDVlMmUwNmVjMTNkZi4uNTEzMWEwYTFiYzhhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfanBlZy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qcGVnLmgKQEAgLTI2LDYgKzI2LDkgQEAK IAogI2RlZmluZSBBTURHUFVfTUFYX0pQRUdfSU5TVEFOQ0VTCTIKIAorI2RlZmluZSBBTURHUFVf SlBFR19IQVJWRVNUX0pQRUcwICgxIDw8IDApCisjZGVmaW5lIEFNREdQVV9KUEVHX0hBUlZFU1Rf SlBFRzEgKDEgPDwgMSkKKwogc3RydWN0IGFtZGdwdV9qcGVnX3JlZ3sKIAl1bnNpZ25lZCBqcGVn X3BpdGNoOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92Y24uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y24uYwppbmRleCA2 YjZjOGY4ZWZhZmYuLjY5OTU0NjFhNTQxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92Y24uYwpAQCAtNzA0LDEwOCArNzA0LDMgQEAgaW50IGFtZGdwdV92Y25fZW5jX3Jpbmdf dGVzdF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgdGltZW91dCkKIAlhbWRncHVf Ym9fdW5yZWYoJmJvKTsKIAlyZXR1cm4gcjsKIH0KLQotaW50IGFtZGdwdV92Y25fanBlZ19yaW5n X3Rlc3RfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCi17Ci0Jc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2OwotCXVpbnQzMl90IHRtcCA9IDA7Ci0JdW5zaWduZWQg aTsKLQlpbnQgcjsKLQotCVdSRUczMihhZGV2LT52Y24uaW5zdFtyaW5nLT5tZV0uZXh0ZXJuYWwu anBlZ19waXRjaCwgMHhDQUZFREVBRCk7Ci0JciA9IGFtZGdwdV9yaW5nX2FsbG9jKHJpbmcsIDMp OwotCWlmIChyKQotCQlyZXR1cm4gcjsKLQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tF VDAoYWRldi0+dmNuLmludGVybmFsLmpwZWdfcGl0Y2gsIDApKTsKLQlhbWRncHVfcmluZ193cml0 ZShyaW5nLCAweERFQURCRUVGKTsKLQlhbWRncHVfcmluZ19jb21taXQocmluZyk7Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgYWRldi0+dXNlY190aW1lb3V0OyBpKyspIHsKLQkJdG1wID0gUlJFRzMyKGFk ZXYtPnZjbi5pbnN0W3JpbmctPm1lXS5leHRlcm5hbC5qcGVnX3BpdGNoKTsKLQkJaWYgKHRtcCA9 PSAweERFQURCRUVGKQotCQkJYnJlYWs7Ci0JCXVkZWxheSgxKTsKLQl9Ci0KLQlpZiAoaSA+PSBh ZGV2LT51c2VjX3RpbWVvdXQpCi0JCXIgPSAtRVRJTUVET1VUOwotCi0JcmV0dXJuIHI7Ci19Ci0K LXN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9qcGVnX3NldF9yZWcoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nLCB1aW50MzJfdCBoYW5kbGUsCi0JCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKLXsKLQlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Ci0Jc3RydWN0IGFtZGdwdV9q b2IgKmpvYjsKLQlzdHJ1Y3QgYW1kZ3B1X2liICppYjsKLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0g TlVMTDsKLQljb25zdCB1bnNpZ25lZCBpYl9zaXplX2R3ID0gMTY7Ci0JaW50IGksIHI7Ci0KLQly ID0gYW1kZ3B1X2pvYl9hbGxvY193aXRoX2liKHJpbmctPmFkZXYsIGliX3NpemVfZHcgKiA0LCAm am9iKTsKLQlpZiAocikKLQkJcmV0dXJuIHI7Ci0KLQlpYiA9ICZqb2ItPmlic1swXTsKLQotCWli LT5wdHJbMF0gPSBQQUNLRVRKKGFkZXYtPnZjbi5pbnRlcm5hbC5qcGVnX3BpdGNoLCAwLCAwLCBQ QUNLRVRKX1RZUEUwKTsKLQlpYi0+cHRyWzFdID0gMHhERUFEQkVFRjsKLQlmb3IgKGkgPSAyOyBp IDwgMTY7IGkgKz0gMikgewotCQlpYi0+cHRyW2ldID0gUEFDS0VUSigwLCAwLCAwLCBQQUNLRVRK X1RZUEU2KTsKLQkJaWItPnB0cltpKzFdID0gMDsKLQl9Ci0JaWItPmxlbmd0aF9kdyA9IDE2Owot Ci0JciA9IGFtZGdwdV9qb2Jfc3VibWl0X2RpcmVjdChqb2IsIHJpbmcsICZmKTsKLQlpZiAocikK LQkJZ290byBlcnI7Ci0KLQlpZiAoZmVuY2UpCi0JCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoZik7 Ci0JZG1hX2ZlbmNlX3B1dChmKTsKLQotCXJldHVybiAwOwotCi1lcnI6Ci0JYW1kZ3B1X2pvYl9m cmVlKGpvYik7Ci0JcmV0dXJuIHI7Ci19Ci0KLWludCBhbWRncHVfdmNuX2pwZWdfcmluZ190ZXN0 X2liKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgbG9uZyB0aW1lb3V0KQotewotCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKLQl1aW50MzJfdCB0bXAgPSAwOwotCXVu c2lnbmVkIGk7Ci0Jc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwotCWxvbmcgciA9IDA7 Ci0KLQlyID0gYW1kZ3B1X3Zjbl9qcGVnX3NldF9yZWcocmluZywgMSwgJmZlbmNlKTsKLQlpZiAo cikKLQkJZ290byBlcnJvcjsKLQotCXIgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlLCBm YWxzZSwgdGltZW91dCk7Ci0JaWYgKHIgPT0gMCkgewotCQlyID0gLUVUSU1FRE9VVDsKLQkJZ290 byBlcnJvcjsKLQl9IGVsc2UgaWYgKHIgPCAwKSB7Ci0JCWdvdG8gZXJyb3I7Ci0JfSBlbHNlIHsK LQkJciA9IDA7Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IGFkZXYtPnVzZWNfdGltZW91dDsgaSsr KSB7Ci0JCXRtcCA9IFJSRUczMihhZGV2LT52Y24uaW5zdFtyaW5nLT5tZV0uZXh0ZXJuYWwuanBl Z19waXRjaCk7Ci0JCWlmICh0bXAgPT0gMHhERUFEQkVFRikKLQkJCWJyZWFrOwotCQl1ZGVsYXko MSk7Ci0JfQotCi0JaWYgKGkgPj0gYWRldi0+dXNlY190aW1lb3V0KQotCQlyID0gLUVUSU1FRE9V VDsKLQotCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwotZXJyb3I6Ci0JcmV0dXJuIHI7Ci19CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmggYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmgKaW5kZXggZGZhY2UyNzVjODFhLi40MDJh NTA0NmI5ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 Y24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmgKQEAgLTE1 OCw3ICsxNTgsNiBAQCBzdHJ1Y3QgYW1kZ3B1X3Zjbl9yZWd7CiAJdW5zaWduZWQJaWJfc2l6ZTsK IAl1bnNpZ25lZAlncF9zY3JhdGNoODsKIAl1bnNpZ25lZAlzY3JhdGNoOTsKLQl1bnNpZ25lZAlq cGVnX3BpdGNoOwogfTsKIAogc3RydWN0IGFtZGdwdV92Y25faW5zdCB7CkBAIC0xNjgsNyArMTY3 LDYgQEAgc3RydWN0IGFtZGdwdV92Y25faW5zdCB7CiAJdm9pZAkJCSpzYXZlZF9ibzsKIAlzdHJ1 Y3QgYW1kZ3B1X3JpbmcJcmluZ19kZWM7CiAJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmdfZW5jW0FN REdQVV9WQ05fTUFYX0VOQ19SSU5HU107Ci0Jc3RydWN0IGFtZGdwdV9yaW5nCXJpbmdfanBlZzsK IAlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJaXJxOwogCXN0cnVjdCBhbWRncHVfdmNuX3JlZwlleHRl cm5hbDsKIH07CkBAIC0yMDksNyArMjA3LDQgQEAgaW50IGFtZGdwdV92Y25fZGVjX3JpbmdfdGVz dF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgdGltZW91dCk7CiBpbnQgYW1kZ3B1 X3Zjbl9lbmNfcmluZ190ZXN0X3Jpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKIGludCBh bWRncHVfdmNuX2VuY19yaW5nX3Rlc3RfaWIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBsb25n IHRpbWVvdXQpOwogCi1pbnQgYW1kZ3B1X3Zjbl9qcGVnX3JpbmdfdGVzdF9yaW5nKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZyk7Ci1pbnQgYW1kZ3B1X3Zjbl9qcGVnX3JpbmdfdGVzdF9pYihzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGxvbmcgdGltZW91dCk7Ci0KICNlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvanBlZ192Ml81LmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9qcGVnX3YyXzUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjJjNTg5MzllNmFkMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2pwZWdfdjJfNS5jCkBAIC0wLDAgKzEsNjQxIEBACisvKgorICogQ29weXJp Z2h0IDIwMTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg aW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9S KFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwK KyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworCisjaW5jbHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSAiYW1kZ3B1X2pwZWcuaCIKKyNp bmNsdWRlICJzb2MxNS5oIgorI2luY2x1ZGUgInNvYzE1ZC5oIgorI2luY2x1ZGUgImpwZWdfdjJf MC5oIgorCisjaW5jbHVkZSAidmNuL3Zjbl8yXzVfb2Zmc2V0LmgiCisjaW5jbHVkZSAidmNuL3Zj bl8yXzVfc2hfbWFzay5oIgorI2luY2x1ZGUgIml2c3JjaWQvdmNuL2lycXNyY3NfdmNuXzJfMC5o IgorCisjZGVmaW5lIG1tVVZEX0pQRUdfUElUQ0hfSU5URVJOQUxfT0ZGU0VUCQkJMHg0MDFmCisK KyNkZWZpbmUgSlBFRzI1X01BWF9IV19JTlNUQU5DRVNfQVJDVFVSVVMJCQkyCisKK3N0YXRpYyB2 b2lkIGpwZWdfdjJfNV9zZXRfZGVjX3JpbmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOworc3RhdGljIHZvaWQganBlZ192Ml81X3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpOworc3RhdGljIGludCBqcGVnX3YyXzVfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRl KHZvaWQgKmhhbmRsZSwKKwkJCQllbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSk7CisK K3N0YXRpYyBpbnQgYW1kZ3B1X2loX2NsaWVudGlkX2pwZWdbXSA9IHsKKwlTT0MxNV9JSF9DTElF TlRJRF9WQ04sCisJU09DMTVfSUhfQ0xJRU5USURfVkNOMQorfTsKKworLyoqCisgKiBqcGVnX3Yy XzVfZWFybHlfaW5pdCAtIHNldCBmdW5jdGlvbiBwb2ludGVycworICoKKyAqIEBoYW5kbGU6IGFt ZGdwdV9kZXZpY2UgcG9pbnRlcgorICoKKyAqIFNldCByaW5nIGFuZCBpcnEgZnVuY3Rpb24gcG9p bnRlcnMKKyAqLworc3RhdGljIGludCBqcGVnX3YyXzVfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUp Cit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7CisJaWYgKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX0FSQ1RVUlVTKSB7CisJCXUz MiBoYXJ2ZXN0OworCQlpbnQgaTsKKworCQlhZGV2LT5qcGVnLm51bV9qcGVnX2luc3QgPSBKUEVH MjVfTUFYX0hXX0lOU1RBTkNFU19BUkNUVVJVUzsKKwkJZm9yIChpID0gMDsgaSA8IGFkZXYtPmpw ZWcubnVtX2pwZWdfaW5zdDsgaSsrKSB7CisJCQloYXJ2ZXN0ID0gUlJFRzMyX1NPQzE1KEpQRUcs IGksIG1tQ0NfVVZEX0hBUlZFU1RJTkcpOworCQkJaWYgKGhhcnZlc3QgJiBDQ19VVkRfSEFSVkVT VElOR19fVVZEX0RJU0FCTEVfTUFTSykKKwkJCQlhZGV2LT5qcGVnLmhhcnZlc3RfY29uZmlnIHw9 IDEgPDwgaTsKKwkJfQorCisJCWlmIChhZGV2LT5qcGVnLmhhcnZlc3RfY29uZmlnID09IChBTURH UFVfSlBFR19IQVJWRVNUX0pQRUcwIHwKKwkJCQkJCSBBTURHUFVfSlBFR19IQVJWRVNUX0pQRUcx KSkKKwkJCXJldHVybiAtRU5PRU5UOworCX0gZWxzZQorCQlhZGV2LT5qcGVnLm51bV9qcGVnX2lu c3QgPSAxOworCisJanBlZ192Ml81X3NldF9kZWNfcmluZ19mdW5jcyhhZGV2KTsKKwlqcGVnX3Yy XzVfc2V0X2lycV9mdW5jcyhhZGV2KTsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIGpwZWdf djJfNV9zd19pbml0IC0gc3cgaW5pdCBmb3IgSlBFRyBibG9jaworICoKKyAqIEBoYW5kbGU6IGFt ZGdwdV9kZXZpY2UgcG9pbnRlcgorICoKKyAqIExvYWQgZmlybXdhcmUgYW5kIHN3IGluaXRpYWxp emF0aW9uCisgKi8KK3N0YXRpYyBpbnQganBlZ192Ml81X3N3X2luaXQodm9pZCAqaGFuZGxlKQor eworCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZzsKKwlpbnQgaSwgcjsKKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKworCWZvciAo aSA9IDA7IGkgPCBhZGV2LT5qcGVnLm51bV9qcGVnX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+ anBlZy5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CisKKwkJLyogSlBF RyBUUkFQICovCisJCXIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBhbWRncHVfaWhfY2xpZW50 aWRfanBlZ1tpXSwKKwkJCQlWQ05fMl8wX19TUkNJRF9fSlBFR19ERUNPREUsICZhZGV2LT5qcGVn Lmluc3RbaV0uaXJxKTsKKwkJaWYgKHIpCisJCQlyZXR1cm4gcjsKKwl9CisKKwlyID0gYW1kZ3B1 X2pwZWdfc3dfaW5pdChhZGV2KTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKKwlyID0gYW1kZ3B1 X2pwZWdfcmVzdW1lKGFkZXYpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCWZvciAoaSA9IDA7 IGkgPCBhZGV2LT5qcGVnLm51bV9qcGVnX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+anBlZy5o YXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CisKKwkJcmluZyA9ICZhZGV2 LT5qcGVnLmluc3RbaV0ucmluZ19kZWM7CisJCXJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7CisJ CXJpbmctPmRvb3JiZWxsX2luZGV4ID0gKGFkZXYtPmRvb3JiZWxsX2luZGV4LnZjbi52Y25fcmlu ZzBfMSA8PCAxKSArIDEgKyA4ICogaTsKKwkJc3ByaW50ZihyaW5nLT5uYW1lLCAianBlZ19kZWNf JWQiLCBpKTsKKwkJciA9IGFtZGdwdV9yaW5nX2luaXQoYWRldiwgcmluZywgNTEyLCAmYWRldi0+ anBlZy5pbnN0W2ldLmlycSwgMCk7CisJCWlmIChyKQorCQkJcmV0dXJuIHI7CisKKwkJYWRldi0+ anBlZy5pbnRlcm5hbC5qcGVnX3BpdGNoID0gbW1VVkRfSlBFR19QSVRDSF9JTlRFUk5BTF9PRkZT RVQ7CisJCWFkZXYtPmpwZWcuaW5zdFtpXS5leHRlcm5hbC5qcGVnX3BpdGNoID0gU09DMTVfUkVH X09GRlNFVChKUEVHLCBpLCBtbVVWRF9KUEVHX1BJVENIKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K KworLyoqCisgKiBqcGVnX3YyXzVfc3dfZmluaSAtIHN3IGZpbmkgZm9yIEpQRUcgYmxvY2sKKyAq CisgKiBAaGFuZGxlOiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKKyAqCisgKiBKUEVHIHN1c3BlbmQg YW5kIGZyZWUgdXAgc3cgYWxsb2NhdGlvbgorICovCitzdGF0aWMgaW50IGpwZWdfdjJfNV9zd19m aW5pKHZvaWQgKmhhbmRsZSkKK3sKKwlpbnQgcjsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKworCXIgPSBhbWRncHVfanBlZ19z dXNwZW5kKGFkZXYpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCXIgPSBhbWRncHVfanBlZ19z d19maW5pKGFkZXYpOworCisJcmV0dXJuIHI7Cit9CisKKy8qKgorICoganBlZ192Ml81X2h3X2lu aXQgLSBzdGFydCBhbmQgdGVzdCBKUEVHIGJsb2NrCisgKgorICogQGhhbmRsZTogYW1kZ3B1X2Rl dmljZSBwb2ludGVyCisgKgorICovCitzdGF0aWMgaW50IGpwZWdfdjJfNV9od19pbml0KHZvaWQg KmhhbmRsZSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmc7CisJaW50IGksIHI7 CisKKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+anBlZy5udW1fanBlZ19pbnN0OyArK2kpIHsKKwkJ aWYgKGFkZXYtPmpwZWcuaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKKwkJCWNvbnRpbnVlOwor CisJCXJpbmcgPSAmYWRldi0+anBlZy5pbnN0W2ldLnJpbmdfZGVjOworCQlhZGV2LT5uYmlvLmZ1 bmNzLT52Y25fZG9vcmJlbGxfcmFuZ2UoYWRldiwgcmluZy0+dXNlX2Rvb3JiZWxsLAorCQkJKGFk ZXYtPmRvb3JiZWxsX2luZGV4LnZjbi52Y25fcmluZzBfMSA8PCAxKSArIDggKiBpLCBpKTsKKwor CQlyID0gYW1kZ3B1X3JpbmdfdGVzdF9oZWxwZXIocmluZyk7CisJCWlmIChyKQorCQkJcmV0dXJu IHI7CisJfQorCisJRFJNX0lORk8oIkpQRUcgZGVjb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxs eS5cbiIpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICoganBlZ192Ml81X2h3X2ZpbmkgLSBz dG9wIHRoZSBoYXJkd2FyZSBibG9jaworICoKKyAqIEBoYW5kbGU6IGFtZGdwdV9kZXZpY2UgcG9p bnRlcgorICoKKyAqIFN0b3AgdGhlIEpQRUcgYmxvY2ssIG1hcmsgcmluZyBhcyBub3QgcmVhZHkg YW55IG1vcmUKKyAqLworc3RhdGljIGludCBqcGVnX3YyXzVfaHdfZmluaSh2b2lkICpoYW5kbGUp Cit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7CisJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOworCWludCBpOworCisJZm9yIChp ID0gMDsgaSA8IGFkZXYtPmpwZWcubnVtX2pwZWdfaW5zdDsgKytpKSB7CisJCWlmIChhZGV2LT5q cGVnLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKKworCQlyaW5nID0g JmFkZXYtPmpwZWcuaW5zdFtpXS5yaW5nX2RlYzsKKwkJaWYgKGFkZXYtPmpwZWcuY3VyX3N0YXRl ICE9IEFNRF9QR19TVEFURV9HQVRFICYmCisJCSAgICAgIFJSRUczMl9TT0MxNShKUEVHLCBpLCBt bVVWRF9KUkJDX1NUQVRVUykpCisJCQlqcGVnX3YyXzVfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKGFk ZXYsIEFNRF9QR19TVEFURV9HQVRFKTsKKworCQlyaW5nLT5zY2hlZC5yZWFkeSA9IGZhbHNlOwor CX0KKworCXJldHVybiAwOworfQorCisvKioKKyAqIGpwZWdfdjJfNV9zdXNwZW5kIC0gc3VzcGVu ZCBKUEVHIGJsb2NrCisgKgorICogQGhhbmRsZTogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKgor ICogSFcgZmluaSBhbmQgc3VzcGVuZCBKUEVHIGJsb2NrCisgKi8KK3N0YXRpYyBpbnQganBlZ192 Ml81X3N1c3BlbmQodm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCWludCByOworCisJciA9IGpwZWdf djJfNV9od19maW5pKGFkZXYpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCXIgPSBhbWRncHVf anBlZ19zdXNwZW5kKGFkZXYpOworCisJcmV0dXJuIHI7Cit9CisKKy8qKgorICoganBlZ192Ml81 X3Jlc3VtZSAtIHJlc3VtZSBKUEVHIGJsb2NrCisgKgorICogQGhhbmRsZTogYW1kZ3B1X2Rldmlj ZSBwb2ludGVyCisgKgorICogUmVzdW1lIGZpcm13YXJlIGFuZCBodyBpbml0IEpQRUcgYmxvY2sK KyAqLworc3RhdGljIGludCBqcGVnX3YyXzVfcmVzdW1lKHZvaWQgKmhhbmRsZSkKK3sKKwlzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsK KwlpbnQgcjsKKworCXIgPSBhbWRncHVfanBlZ19yZXN1bWUoYWRldik7CisJaWYgKHIpCisJCXJl dHVybiByOworCisJciA9IGpwZWdfdjJfNV9od19pbml0KGFkZXYpOworCisJcmV0dXJuIHI7Cit9 CisKK3N0YXRpYyB2b2lkIGpwZWdfdjJfNV9kaXNhYmxlX2Nsb2NrX2dhdGluZyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSogYWRldiwgaW50IGluc3QpCit7CisJdWludDMyX3QgZGF0YTsKKworCWRhdGEg PSBSUkVHMzJfU09DMTUoSlBFRywgaW5zdCwgbW1KUEVHX0NHQ19DVFJMKTsKKwlpZiAoYWRldi0+ Y2dfZmxhZ3MgJiBBTURfQ0dfU1VQUE9SVF9KUEVHX01HQ0cpCisJCWRhdGEgfD0gMSA8PCBKUEVH X0NHQ19DVFJMX19EWU5fQ0xPQ0tfTU9ERV9fU0hJRlQ7CisJZWxzZQorCQlkYXRhICY9IH5KUEVH X0NHQ19DVFJMX19EWU5fQ0xPQ0tfTU9ERV9fU0hJRlQ7CisKKwlkYXRhIHw9IDEgPDwgSlBFR19D R0NfQ1RSTF9fQ0xLX0dBVEVfRExZX1RJTUVSX19TSElGVDsKKwlkYXRhIHw9IDQgPDwgSlBFR19D R0NfQ1RSTF9fQ0xLX09GRl9ERUxBWV9fU0hJRlQ7CisJV1JFRzMyX1NPQzE1KEpQRUcsIGluc3Qs IG1tSlBFR19DR0NfQ1RSTCwgZGF0YSk7CisKKwlkYXRhID0gUlJFRzMyX1NPQzE1KEpQRUcsIGlu c3QsIG1tSlBFR19DR0NfR0FURSk7CisJZGF0YSAmPSB+KEpQRUdfQ0dDX0dBVEVfX0pQRUdfREVD X01BU0sKKwkJfCBKUEVHX0NHQ19HQVRFX19KUEVHMl9ERUNfTUFTSworCQl8IEpQRUdfQ0dDX0dB VEVfX0pQRUdfRU5DX01BU0sKKwkJfCBKUEVHX0NHQ19HQVRFX19KTUNJRl9NQVNLCisJCXwgSlBF R19DR0NfR0FURV9fSlJCQk1fTUFTSyk7CisJV1JFRzMyX1NPQzE1KEpQRUcsIGluc3QsIG1tSlBF R19DR0NfR0FURSwgZGF0YSk7CisKKwlkYXRhID0gUlJFRzMyX1NPQzE1KEpQRUcsIGluc3QsIG1t SlBFR19DR0NfQ1RSTCk7CisJZGF0YSAmPSB+KEpQRUdfQ0dDX0NUUkxfX0pQRUdfREVDX01PREVf TUFTSworCQl8IEpQRUdfQ0dDX0NUUkxfX0pQRUcyX0RFQ19NT0RFX01BU0sKKwkJfCBKUEVHX0NH Q19DVFJMX19KTUNJRl9NT0RFX01BU0sKKwkJfCBKUEVHX0NHQ19DVFJMX19KUkJCTV9NT0RFX01B U0spOworCVdSRUczMl9TT0MxNShKUEVHLCBpbnN0LCBtbUpQRUdfQ0dDX0NUUkwsIGRhdGEpOwor fQorCitzdGF0aWMgdm9pZCBqcGVnX3YyXzVfZW5hYmxlX2Nsb2NrX2dhdGluZyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSogYWRldiwgaW50IGluc3QpCit7CisJdWludDMyX3QgZGF0YTsKKworCWRhdGEg PSBSUkVHMzJfU09DMTUoSlBFRywgaW5zdCwgbW1KUEVHX0NHQ19HQVRFKTsKKwlkYXRhIHw9IChK UEVHX0NHQ19HQVRFX19KUEVHX0RFQ19NQVNLCisJCXxKUEVHX0NHQ19HQVRFX19KUEVHMl9ERUNf TUFTSworCQl8SlBFR19DR0NfR0FURV9fSlBFR19FTkNfTUFTSworCQl8SlBFR19DR0NfR0FURV9f Sk1DSUZfTUFTSworCQl8SlBFR19DR0NfR0FURV9fSlJCQk1fTUFTSyk7CisJV1JFRzMyX1NPQzE1 KEpQRUcsIGluc3QsIG1tSlBFR19DR0NfR0FURSwgZGF0YSk7Cit9CisKKy8qKgorICoganBlZ192 Ml81X3N0YXJ0IC0gc3RhcnQgSlBFRyBibG9jaworICoKKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNl IHBvaW50ZXIKKyAqCisgKiBTZXR1cCBhbmQgc3RhcnQgdGhlIEpQRUcgYmxvY2sKKyAqLworc3Rh dGljIGludCBqcGVnX3YyXzVfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJ c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGFk ZXYtPmpwZWcubnVtX2pwZWdfaW5zdDsgKytpKSB7CisJCWlmIChhZGV2LT5qcGVnLmhhcnZlc3Rf Y29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKKworCQlyaW5nID0gJmFkZXYtPmpwZWcu aW5zdFtpXS5yaW5nX2RlYzsKKwkJLyogZGlzYWJsZSBhbnRpIGhhbmcgbWVjaGFuaXNtICovCisJ CVdSRUczMl9QKFNPQzE1X1JFR19PRkZTRVQoSlBFRywgaSwgbW1VVkRfSlBFR19QT1dFUl9TVEFU VVMpLCAwLAorCQkJflVWRF9KUEVHX1BPV0VSX1NUQVRVU19fSlBFR19QT1dFUl9TVEFUVVNfTUFT Syk7CisKKwkJLyogSlBFRyBkaXNhYmxlIENHQyAqLworCQlqcGVnX3YyXzVfZGlzYWJsZV9jbG9j a19nYXRpbmcoYWRldiwgaSk7CisKKwkJLyogTUpQRUcgZ2xvYmFsIHRpbGluZyByZWdpc3RlcnMg Ki8KKwkJV1JFRzMyX1NPQzE1KEpQRUcsIGksIG1tSlBFR19ERUNfR0ZYOF9BRERSX0NPTkZJRywK KwkJCWFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25maWcpOworCQlXUkVHMzJfU09DMTUoSlBF RywgaSwgbW1KUEVHX0RFQ19HRlgxMF9BRERSX0NPTkZJRywKKwkJCWFkZXYtPmdmeC5jb25maWcu Z2JfYWRkcl9jb25maWcpOworCisJCS8qIGVuYWJsZSBKTUkgY2hhbm5lbCAqLworCQlXUkVHMzJf UChTT0MxNV9SRUdfT0ZGU0VUKEpQRUcsIGksIG1tVVZEX0pNSV9DTlRMKSwgMCwKKwkJCX5VVkRf Sk1JX0NOVExfX1NPRlRfUkVTRVRfTUFTSyk7CisKKwkJLyogZW5hYmxlIFN5c3RlbSBJbnRlcnJ1 cHQgZm9yIEpSQkMgKi8KKwkJV1JFRzMyX1AoU09DMTVfUkVHX09GRlNFVChKUEVHLCBpLCBtbUpQ RUdfU1lTX0lOVF9FTiksCisJCQlKUEVHX1NZU19JTlRfRU5fX0RKUkJDX01BU0ssCisJCQl+SlBF R19TWVNfSU5UX0VOX19ESlJCQ19NQVNLKTsKKworCQlXUkVHMzJfU09DMTUoSlBFRywgaSwgbW1V VkRfTE1JX0pSQkNfUkJfVk1JRCwgMCk7CisJCVdSRUczMl9TT0MxNShKUEVHLCBpLCBtbVVWRF9K UkJDX1JCX0NOVEwsICgweDAwMDAwMDAxTCB8IDB4MDAwMDAwMDJMKSk7CisJCVdSRUczMl9TT0Mx NShKUEVHLCBpLCBtbVVWRF9MTUlfSlJCQ19SQl82NEJJVF9CQVJfTE9XLAorCQkJbG93ZXJfMzJf Yml0cyhyaW5nLT5ncHVfYWRkcikpOworCQlXUkVHMzJfU09DMTUoSlBFRywgaSwgbW1VVkRfTE1J X0pSQkNfUkJfNjRCSVRfQkFSX0hJR0gsCisJCQl1cHBlcl8zMl9iaXRzKHJpbmctPmdwdV9hZGRy KSk7CisJCVdSRUczMl9TT0MxNShKUEVHLCBpLCBtbVVWRF9KUkJDX1JCX1JQVFIsIDApOworCQlX UkVHMzJfU09DMTUoSlBFRywgaSwgbW1VVkRfSlJCQ19SQl9XUFRSLCAwKTsKKwkJV1JFRzMyX1NP QzE1KEpQRUcsIGksIG1tVVZEX0pSQkNfUkJfQ05UTCwgMHgwMDAwMDAwMkwpOworCQlXUkVHMzJf U09DMTUoSlBFRywgaSwgbW1VVkRfSlJCQ19SQl9TSVpFLCByaW5nLT5yaW5nX3NpemUgLyA0KTsK KwkJcmluZy0+d3B0ciA9IFJSRUczMl9TT0MxNShKUEVHLCBpLCBtbVVWRF9KUkJDX1JCX1dQVFIp OworCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAqIGpwZWdfdjJfNV9zdG9wIC0gc3RvcCBK UEVHIGJsb2NrCisgKgorICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgorICoKKyAqIHN0 b3AgdGhlIEpQRUcgYmxvY2sKKyAqLworc3RhdGljIGludCBqcGVnX3YyXzVfc3RvcChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBhZGV2 LT5qcGVnLm51bV9qcGVnX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+anBlZy5oYXJ2ZXN0X2Nv bmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CisKKwkJLyogcmVzZXQgSk1JICovCisJCVdS RUczMl9QKFNPQzE1X1JFR19PRkZTRVQoSlBFRywgaSwgbW1VVkRfSk1JX0NOVEwpLAorCQkJVVZE X0pNSV9DTlRMX19TT0ZUX1JFU0VUX01BU0ssCisJCQl+VVZEX0pNSV9DTlRMX19TT0ZUX1JFU0VU X01BU0spOworCisJCWpwZWdfdjJfNV9lbmFibGVfY2xvY2tfZ2F0aW5nKGFkZXYsIGkpOworCisJ CS8qIGVuYWJsZSBhbnRpIGhhbmcgbWVjaGFuaXNtICovCisJCVdSRUczMl9QKFNPQzE1X1JFR19P RkZTRVQoSlBFRywgaSwgbW1VVkRfSlBFR19QT1dFUl9TVEFUVVMpLAorCQkJVVZEX0pQRUdfUE9X RVJfU1RBVFVTX19KUEVHX1BPV0VSX1NUQVRVU19NQVNLLAorCQkJflVWRF9KUEVHX1BPV0VSX1NU QVRVU19fSlBFR19QT1dFUl9TVEFUVVNfTUFTSyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8q KgorICoganBlZ192Ml81X2RlY19yaW5nX2dldF9ycHRyIC0gZ2V0IHJlYWQgcG9pbnRlcgorICoK KyAqIEByaW5nOiBhbWRncHVfcmluZyBwb2ludGVyCisgKgorICogUmV0dXJucyB0aGUgY3VycmVu dCBoYXJkd2FyZSByZWFkIHBvaW50ZXIKKyAqLworc3RhdGljIHVpbnQ2NF90IGpwZWdfdjJfNV9k ZWNfcmluZ19nZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCit7CisJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2OworCisJcmV0dXJuIFJSRUczMl9TT0MxNShK UEVHLCByaW5nLT5tZSwgbW1VVkRfSlJCQ19SQl9SUFRSKTsKK30KKworLyoqCisgKiBqcGVnX3Yy XzVfZGVjX3JpbmdfZ2V0X3dwdHIgLSBnZXQgd3JpdGUgcG9pbnRlcgorICoKKyAqIEByaW5nOiBh bWRncHVfcmluZyBwb2ludGVyCisgKgorICogUmV0dXJucyB0aGUgY3VycmVudCBoYXJkd2FyZSB3 cml0ZSBwb2ludGVyCisgKi8KK3N0YXRpYyB1aW50NjRfdCBqcGVnX3YyXzVfZGVjX3JpbmdfZ2V0 X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gcmluZy0+YWRldjsKKworCWlmIChyaW5nLT51c2VfZG9vcmJlbGwpCisJCXJldHVy biBhZGV2LT53Yi53YltyaW5nLT53cHRyX29mZnNdOworCWVsc2UKKwkJcmV0dXJuIFJSRUczMl9T T0MxNShKUEVHLCByaW5nLT5tZSwgbW1VVkRfSlJCQ19SQl9XUFRSKTsKK30KKworLyoqCisgKiBq cGVnX3YyXzVfZGVjX3Jpbmdfc2V0X3dwdHIgLSBzZXQgd3JpdGUgcG9pbnRlcgorICoKKyAqIEBy aW5nOiBhbWRncHVfcmluZyBwb2ludGVyCisgKgorICogQ29tbWl0cyB0aGUgd3JpdGUgcG9pbnRl ciB0byB0aGUgaGFyZHdhcmUKKyAqLworc3RhdGljIHZvaWQganBlZ192Ml81X2RlY19yaW5nX3Nl dF93cHRyKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IHJpbmctPmFkZXY7CisKKwlpZiAocmluZy0+dXNlX2Rvb3JiZWxsKSB7CisJCWFk ZXYtPndiLndiW3JpbmctPndwdHJfb2Zmc10gPSBsb3dlcl8zMl9iaXRzKHJpbmctPndwdHIpOwor CQlXRE9PUkJFTEwzMihyaW5nLT5kb29yYmVsbF9pbmRleCwgbG93ZXJfMzJfYml0cyhyaW5nLT53 cHRyKSk7CisJfSBlbHNlIHsKKwkJV1JFRzMyX1NPQzE1KEpQRUcsIHJpbmctPm1lLCBtbVVWRF9K UkJDX1JCX1dQVFIsIGxvd2VyXzMyX2JpdHMocmluZy0+d3B0cikpOworCX0KK30KKworc3RhdGlj IGJvb2wganBlZ192Ml81X2lzX2lkbGUodm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCWludCBpLCBy ZXQgPSAxOworCisJZm9yIChpID0gMDsgaSA8IGFkZXYtPmpwZWcubnVtX2pwZWdfaW5zdDsgKytp KSB7CisJCWlmIChhZGV2LT5qcGVnLmhhcnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250 aW51ZTsKKworCQlyZXQgJj0gKCgoUlJFRzMyX1NPQzE1KEpQRUcsIGksIG1tVVZEX0pSQkNfU1RB VFVTKSAmCisJCQlVVkRfSlJCQ19TVEFUVVNfX1JCX0pPQl9ET05FX01BU0spID09CisJCQlVVkRf SlJCQ19TVEFUVVNfX1JCX0pPQl9ET05FX01BU0spKTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGpwZWdfdjJfNV93YWl0X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSkKK3sKKwlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRs ZTsKKwlpbnQgaSwgcmV0ID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5qcGVnLm51bV9q cGVnX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+anBlZy5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8 IGkpKQorCQkJY29udGludWU7CisKKwkJU09DMTVfV0FJVF9PTl9SUkVHKEpQRUcsIGksIG1tVVZE X0pSQkNfU1RBVFVTLAorCQkJVVZEX0pSQkNfU1RBVFVTX19SQl9KT0JfRE9ORV9NQVNLLAorCQkJ VVZEX0pSQkNfU1RBVFVTX19SQl9KT0JfRE9ORV9NQVNLLCByZXQpOworCQlpZiAocmV0KQorCQkJ cmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGpwZWdfdjJf NV9zZXRfY2xvY2tnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAorCQkJCQkgIGVudW0gYW1kX2Ns b2NrZ2F0aW5nX3N0YXRlIHN0YXRlKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCWJvb2wgZW5hYmxlID0gKHN0YXRlID09 IEFNRF9DR19TVEFURV9HQVRFKSA/IHRydWUgOiBmYWxzZTsKKwlpbnQgaTsKKworCWZvciAoaSA9 IDA7IGkgPCBhZGV2LT5qcGVnLm51bV9qcGVnX2luc3Q7ICsraSkgeworCQlpZiAoYWRldi0+anBl Zy5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQorCQkJY29udGludWU7CisKKwkJaWYgKGVuYWJs ZSkgeworCQkJaWYgKGpwZWdfdjJfNV9pc19pZGxlKGhhbmRsZSkpCisJCQkJcmV0dXJuIC1FQlVT WTsKKwkJCWpwZWdfdjJfNV9lbmFibGVfY2xvY2tfZ2F0aW5nKGFkZXYsIGkpOworCQl9IGVsc2Ug eworCQkJanBlZ192Ml81X2Rpc2FibGVfY2xvY2tfZ2F0aW5nKGFkZXYsIGkpOworCQl9CisJfQor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQganBlZ192Ml81X3NldF9wb3dlcmdhdGluZ19z dGF0ZSh2b2lkICpoYW5kbGUsCisJCQkJCSAgZW51bSBhbWRfcG93ZXJnYXRpbmdfc3RhdGUgc3Rh dGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7CisJaW50IHJldDsKKworCWlmKHN0YXRlID09IGFkZXYtPmpwZWcuY3VyX3N0 YXRlKQorCQlyZXR1cm4gMDsKKworCWlmIChzdGF0ZSA9PSBBTURfUEdfU1RBVEVfR0FURSkKKwkJ cmV0ID0ganBlZ192Ml81X3N0b3AoYWRldik7CisJZWxzZQorCQlyZXQgPSBqcGVnX3YyXzVfc3Rh cnQoYWRldik7CisKKwlpZighcmV0KQorCQlhZGV2LT5qcGVnLmN1cl9zdGF0ZSA9IHN0YXRlOwor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBqcGVnX3YyXzVfc2V0X2ludGVycnVwdF9z dGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJc3RydWN0IGFtZGdwdV9pcnFf c3JjICpzb3VyY2UsCisJCQkJCXVuc2lnbmVkIHR5cGUsCisJCQkJCWVudW0gYW1kZ3B1X2ludGVy cnVwdF9zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBqcGVnX3Yy XzVfcHJvY2Vzc19pbnRlcnJ1cHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJICAg ICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICpzb3VyY2UsCisJCQkJICAgICAgc3RydWN0IGFtZGdw dV9pdl9lbnRyeSAqZW50cnkpCit7CisJdWludDMyX3QgaXBfaW5zdGFuY2U7CisKKwlzd2l0Y2gg KGVudHJ5LT5jbGllbnRfaWQpIHsKKwljYXNlIFNPQzE1X0lIX0NMSUVOVElEX1ZDTjoKKwkJaXBf aW5zdGFuY2UgPSAwOworCQlicmVhazsKKwljYXNlIFNPQzE1X0lIX0NMSUVOVElEX1ZDTjE6CisJ CWlwX2luc3RhbmNlID0gMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJVbmhh bmRsZWQgY2xpZW50IGlkOiAlZFxuIiwgZW50cnktPmNsaWVudF9pZCk7CisJCXJldHVybiAwOwor CX0KKworCURSTV9ERUJVRygiSUg6IEpQRUcgVFJBUFxuIik7CisKKwlzd2l0Y2ggKGVudHJ5LT5z cmNfaWQpIHsKKwljYXNlIFZDTl8yXzBfX1NSQ0lEX19KUEVHX0RFQ09ERToKKwkJYW1kZ3B1X2Zl bmNlX3Byb2Nlc3MoJmFkZXYtPmpwZWcuaW5zdFtpcF9pbnN0YW5jZV0ucmluZ19kZWMpOworCQli cmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoIlVuaGFuZGxlZCBpbnRlcnJ1cHQ6ICVkICVk XG4iLAorCQkJICBlbnRyeS0+c3JjX2lkLCBlbnRyeS0+c3JjX2RhdGFbMF0pOworCQlicmVhazsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3Mg anBlZ192Ml81X2lwX2Z1bmNzID0geworCS5uYW1lID0gImpwZWdfdjJfNSIsCisJLmVhcmx5X2lu aXQgPSBqcGVnX3YyXzVfZWFybHlfaW5pdCwKKwkubGF0ZV9pbml0ID0gTlVMTCwKKwkuc3dfaW5p dCA9IGpwZWdfdjJfNV9zd19pbml0LAorCS5zd19maW5pID0ganBlZ192Ml81X3N3X2ZpbmksCisJ Lmh3X2luaXQgPSBqcGVnX3YyXzVfaHdfaW5pdCwKKwkuaHdfZmluaSA9IGpwZWdfdjJfNV9od19m aW5pLAorCS5zdXNwZW5kID0ganBlZ192Ml81X3N1c3BlbmQsCisJLnJlc3VtZSA9IGpwZWdfdjJf NV9yZXN1bWUsCisJLmlzX2lkbGUgPSBqcGVnX3YyXzVfaXNfaWRsZSwKKwkud2FpdF9mb3JfaWRs ZSA9IGpwZWdfdjJfNV93YWl0X2Zvcl9pZGxlLAorCS5jaGVja19zb2Z0X3Jlc2V0ID0gTlVMTCwK KwkucHJlX3NvZnRfcmVzZXQgPSBOVUxMLAorCS5zb2Z0X3Jlc2V0ID0gTlVMTCwKKwkucG9zdF9z b2Z0X3Jlc2V0ID0gTlVMTCwKKwkuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0ganBlZ192Ml81X3Nl dF9jbG9ja2dhdGluZ19zdGF0ZSwKKwkuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0ganBlZ192Ml81 X3NldF9wb3dlcmdhdGluZ19zdGF0ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1 X3JpbmdfZnVuY3MganBlZ192Ml81X2RlY19yaW5nX3ZtX2Z1bmNzID0geworCS50eXBlID0gQU1E R1BVX1JJTkdfVFlQRV9WQ05fSlBFRywKKwkuYWxpZ25fbWFzayA9IDB4ZiwKKwkudm1odWIgPSBB TURHUFVfTU1IVUJfMSwKKwkuZ2V0X3JwdHIgPSBqcGVnX3YyXzVfZGVjX3JpbmdfZ2V0X3JwdHIs CisJLmdldF93cHRyID0ganBlZ192Ml81X2RlY19yaW5nX2dldF93cHRyLAorCS5zZXRfd3B0ciA9 IGpwZWdfdjJfNV9kZWNfcmluZ19zZXRfd3B0ciwKKwkuZW1pdF9mcmFtZV9zaXplID0KKwkJU09D MTVfRkxVU0hfR1BVX1RMQl9OVU1fV1JFRyAqIDYgKworCQlTT0MxNV9GTFVTSF9HUFVfVExCX05V TV9SRUdfV0FJVCAqIDggKworCQk4ICsgLyoganBlZ192Ml81X2RlY19yaW5nX2VtaXRfdm1fZmx1 c2ggKi8KKwkJMTggKyAxOCArIC8qIGpwZWdfdjJfNV9kZWNfcmluZ19lbWl0X2ZlbmNlIHgyIHZt IGZlbmNlICovCisJCTggKyAxNiwKKwkuZW1pdF9pYl9zaXplID0gMjIsIC8qIGpwZWdfdjJfNV9k ZWNfcmluZ19lbWl0X2liICovCisJLmVtaXRfaWIgPSBqcGVnX3YyXzBfZGVjX3JpbmdfZW1pdF9p YiwKKwkuZW1pdF9mZW5jZSA9IGpwZWdfdjJfMF9kZWNfcmluZ19lbWl0X2ZlbmNlLAorCS5lbWl0 X3ZtX2ZsdXNoID0ganBlZ192Ml8wX2RlY19yaW5nX2VtaXRfdm1fZmx1c2gsCisJLnRlc3Rfcmlu ZyA9IGFtZGdwdV9qcGVnX2RlY19yaW5nX3Rlc3RfcmluZywKKwkudGVzdF9pYiA9IGFtZGdwdV9q cGVnX2RlY19yaW5nX3Rlc3RfaWIsCisJLmluc2VydF9ub3AgPSBqcGVnX3YyXzBfZGVjX3Jpbmdf bm9wLAorCS5pbnNlcnRfc3RhcnQgPSBqcGVnX3YyXzBfZGVjX3JpbmdfaW5zZXJ0X3N0YXJ0LAor CS5pbnNlcnRfZW5kID0ganBlZ192Ml8wX2RlY19yaW5nX2luc2VydF9lbmQsCisJLnBhZF9pYiA9 IGFtZGdwdV9yaW5nX2dlbmVyaWNfcGFkX2liLAorCS5iZWdpbl91c2UgPSBhbWRncHVfanBlZ19y aW5nX2JlZ2luX3VzZSwKKwkuZW5kX3VzZSA9IGFtZGdwdV9qcGVnX3JpbmdfZW5kX3VzZSwKKwku ZW1pdF93cmVnID0ganBlZ192Ml8wX2RlY19yaW5nX2VtaXRfd3JlZywKKwkuZW1pdF9yZWdfd2Fp dCA9IGpwZWdfdjJfMF9kZWNfcmluZ19lbWl0X3JlZ193YWl0LAorCS5lbWl0X3JlZ193cml0ZV9y ZWdfd2FpdCA9IGFtZGdwdV9yaW5nX2VtaXRfcmVnX3dyaXRlX3JlZ193YWl0X2hlbHBlciwKK307 CisKK3N0YXRpYyB2b2lkIGpwZWdfdjJfNV9zZXRfZGVjX3JpbmdfZnVuY3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+anBl Zy5udW1fanBlZ19pbnN0OyArK2kpIHsKKwkJaWYgKGFkZXYtPmpwZWcuaGFydmVzdF9jb25maWcg JiAoMSA8PCBpKSkKKwkJCWNvbnRpbnVlOworCisJCWFkZXYtPmpwZWcuaW5zdFtpXS5yaW5nX2Rl Yy5mdW5jcyA9ICZqcGVnX3YyXzVfZGVjX3Jpbmdfdm1fZnVuY3M7CisJCWFkZXYtPmpwZWcuaW5z dFtpXS5yaW5nX2RlYy5tZSA9IGk7CisJCURSTV9JTkZPKCJKUEVHKCVkKSBKUEVHIGRlY29kZSBp cyBlbmFibGVkIGluIFZNIG1vZGVcbiIsIGkpOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBhbWRncHVfaXJxX3NyY19mdW5jcyBqcGVnX3YyXzVfaXJxX2Z1bmNzID0geworCS5zZXQgPSBq cGVnX3YyXzVfc2V0X2ludGVycnVwdF9zdGF0ZSwKKwkucHJvY2VzcyA9IGpwZWdfdjJfNV9wcm9j ZXNzX2ludGVycnVwdCwKK307CisKK3N0YXRpYyB2b2lkIGpwZWdfdjJfNV9zZXRfaXJxX2Z1bmNz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IGFkZXYtPmpwZWcubnVtX2pwZWdfaW5zdDsgKytpKSB7CisJCWlmIChhZGV2LT5qcGVnLmhh cnZlc3RfY29uZmlnICYgKDEgPDwgaSkpCisJCQljb250aW51ZTsKKworCQlhZGV2LT5qcGVnLmlu c3RbaV0uaXJxLm51bV90eXBlcyA9IDE7CisJCWFkZXYtPmpwZWcuaW5zdFtpXS5pcnEuZnVuY3Mg PSAmanBlZ192Ml81X2lycV9mdW5jczsKKwl9Cit9CisKK2NvbnN0IHN0cnVjdCBhbWRncHVfaXBf YmxvY2tfdmVyc2lvbiBqcGVnX3YyXzVfaXBfYmxvY2sgPQoreworCQkudHlwZSA9IEFNRF9JUF9C TE9DS19UWVBFX0pQRUcsCisJCS5tYWpvciA9IDIsCisJCS5taW5vciA9IDUsCisJCS5yZXYgPSAw LAorCQkuZnVuY3MgPSAmanBlZ192Ml81X2lwX2Z1bmNzLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2pwZWdfdjJfNS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvanBlZ192Ml81LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4yYjQwODdjMDI2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9qcGVnX3YyXzUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTkg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJ TkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisj aWZuZGVmIF9fSlBFR19WMl81X0hfXworI2RlZmluZSBfX0pQRUdfVjJfNV9IX18KKworZXh0ZXJu IGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBqcGVnX3YyXzVfaXBfYmxvY2s7 CisKKyNlbmRpZiAvKiBfX0pQRUdfVjJfNV9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L3Zjbl92Ml8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92 Y25fdjJfMC5jCmluZGV4IGRlZDBhYjU3NGY0ZS4uNTY0OTE5MGNiNjI5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y25fdjJfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3Zjbl92Ml8wLmMKQEAgLTQ3LDI2ICs0Nyw2IEBACiAjZGVmaW5lIG1tVVZE X0xNSV9SQkNfSUJfNjRCSVRfQkFSX0xPV19JTlRFUk5BTF9PRkZTRVQJCTB4NWE3CiAjZGVmaW5l IG1tVVZEX1JCQ19JQl9TSVpFX0lOVEVSTkFMX09GRlNFVAkJCTB4MWUyCiAKLSNkZWZpbmUgbW1V VkRfSlJCQ19FWFRFUk5BTF9SRUdfSU5URVJOQUxfT0ZGU0VUIAkJCTB4MWJmZmYKLSNkZWZpbmUg bW1VVkRfSlBFR19HUENPTV9DTURfSU5URVJOQUxfT0ZGU0VUCQkJCTB4NDAyOQotI2RlZmluZSBt bVVWRF9KUEVHX0dQQ09NX0RBVEEwX0lOVEVSTkFMX09GRlNFVAkJCQkweDQwMmEKLSNkZWZpbmUg bW1VVkRfSlBFR19HUENPTV9EQVRBMV9JTlRFUk5BTF9PRkZTRVQJCQkJMHg0MDJiCi0jZGVmaW5l IG1tVVZEX0xNSV9KUkJDX1JCX01FTV9XUl82NEJJVF9CQVJfTE9XX0lOVEVSTkFMX09GRlNFVAkJ MHg0MGVhCi0jZGVmaW5lIG1tVVZEX0xNSV9KUkJDX1JCX01FTV9XUl82NEJJVF9CQVJfSElHSF9J TlRFUk5BTF9PRkZTRVQgCTB4NDBlYgotI2RlZmluZSBtbVVWRF9MTUlfSlJCQ19JQl9WTUlEX0lO VEVSTkFMX09GRlNFVAkJCQkweDQwY2YKLSNkZWZpbmUgbW1VVkRfTE1JX0pQRUdfVk1JRF9JTlRF Uk5BTF9PRkZTRVQJCQkJMHg0MGQxCi0jZGVmaW5lIG1tVVZEX0xNSV9KUkJDX0lCXzY0QklUX0JB Ul9MT1dfSU5URVJOQUxfT0ZGU0VUIAkJMHg0MGU4Ci0jZGVmaW5lIG1tVVZEX0xNSV9KUkJDX0lC XzY0QklUX0JBUl9ISUdIX0lOVEVSTkFMX09GRlNFVAkJMHg0MGU5Ci0jZGVmaW5lIG1tVVZEX0pS QkNfSUJfU0laRV9JTlRFUk5BTF9PRkZTRVQJCQkJMHg0MDgyCi0jZGVmaW5lIG1tVVZEX0xNSV9K UkJDX1JCX01FTV9SRF82NEJJVF9CQVJfTE9XX0lOVEVSTkFMX09GRlNFVAkJMHg0MGVjCi0jZGVm aW5lIG1tVVZEX0xNSV9KUkJDX1JCX01FTV9SRF82NEJJVF9CQVJfSElHSF9JTlRFUk5BTF9PRkZT RVQgCTB4NDBlZAotI2RlZmluZSBtbVVWRF9KUkJDX1JCX0NPTkRfUkRfVElNRVJfSU5URVJOQUxf T0ZGU0VUCQkJMHg0MDg1Ci0jZGVmaW5lIG1tVVZEX0pSQkNfUkJfUkVGX0RBVEFfSU5URVJOQUxf T0ZGU0VUCQkJCTB4NDA4NAotI2RlZmluZSBtbVVWRF9KUkJDX1NUQVRVU19JTlRFUk5BTF9PRkZT RVQJCQkJMHg0MDg5Ci0jZGVmaW5lIG1tVVZEX0pQRUdfUElUQ0hfSU5URVJOQUxfT0ZGU0VUCQkJ CTB4NDAxZgotCi0jZGVmaW5lIEpSQkNfREVDX0VYVEVSTkFMX1JFR19XUklURV9BRERSCQkJCTB4 MTgwMDAKLQogI2RlZmluZSBtbVVWRF9SQkNfWFhfSUJfUkVHX0NIRUNLIAkJCQkJMHgwMjZiCiAj ZGVmaW5lIG1tVVZEX1JCQ19YWF9JQl9SRUdfQ0hFQ0tfQkFTRV9JRFggCQkJCTEKICNkZWZpbmUg bW1VVkRfUkVHX1hYX01BU0sgCQkJCQkJMHgwMjZjCkBAIC0xNjE2LDIyMiArMTU5Niw2IEBAIHZv aWQgdmNuX3YyXzBfZW5jX3JpbmdfZW1pdF93cmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywg dWludDMyX3QgcmVnLCB1aW50MzJfCiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdmFsKTsKIH0K IAotLyoqCi0gKiB2Y25fdjJfMF9qcGVnX3JpbmdfaW5zZXJ0X3N0YXJ0IC0gaW5zZXJ0IGEgc3Rh cnQgY29tbWFuZAotICoKLSAqIEByaW5nOiBhbWRncHVfcmluZyBwb2ludGVyCi0gKgotICogV3Jp dGUgYSBzdGFydCBjb21tYW5kIHRvIHRoZSByaW5nLgotICovCi12b2lkIHZjbl92Ml8wX2pwZWdf cmluZ19pbnNlcnRfc3RhcnQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQotewotCWFtZGdwdV9y aW5nX3dyaXRlKHJpbmcsIFBBQ0tFVEoobW1VVkRfSlJCQ19FWFRFUk5BTF9SRUdfSU5URVJOQUxf T0ZGU0VULAotCQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgMHg2OGUwNCk7Ci0KLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVRKKEpSQkNfREVD X0VYVEVSTkFMX1JFR19XUklURV9BRERSLAotCQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgMHg4MDAxMDAwMCk7Ci19Ci0KLS8qKgotICogdmNuX3YyXzBf anBlZ19yaW5nX2luc2VydF9lbmQgLSBpbnNlcnQgYSBlbmQgY29tbWFuZAotICoKLSAqIEByaW5n OiBhbWRncHVfcmluZyBwb2ludGVyCi0gKgotICogV3JpdGUgYSBlbmQgY29tbWFuZCB0byB0aGUg cmluZy4KLSAqLwotdm9pZCB2Y25fdjJfMF9qcGVnX3JpbmdfaW5zZXJ0X2VuZChzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcpCi17Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUSihtbVVW RF9KUkJDX0VYVEVSTkFMX1JFR19JTlRFUk5BTF9PRkZTRVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQ RTApKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAweDY4ZTA0KTsKLQotCWFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsIFBBQ0tFVEooSlJCQ19ERUNfRVhURVJOQUxfUkVHX1dSSVRFX0FERFIsCi0J CTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAweDAwMDEw MDAwKTsKLX0KLQotLyoqCi0gKiB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF9mZW5jZSAtIGVtaXQg YW4gZmVuY2UgJiB0cmFwIGNvbW1hbmQKLSAqCi0gKiBAcmluZzogYW1kZ3B1X3JpbmcgcG9pbnRl cgotICogQGZlbmNlOiBmZW5jZSB0byBlbWl0Ci0gKgotICogV3JpdGUgYSBmZW5jZSBhbmQgYSB0 cmFwIGNvbW1hbmQgdG8gdGhlIHJpbmcuCi0gKi8KLXZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2Vt aXRfZmVuY2Uoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1NjQgYWRkciwgdTY0IHNlcSwKLQkJ CQl1bnNpZ25lZCBmbGFncykKLXsKLQlXQVJOX09OKGZsYWdzICYgQU1ER1BVX0ZFTkNFX0ZMQUdf NjRCSVQpOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUSihtbVVWRF9KUEVHX0dQ Q09NX0RBVEEwX0lOVEVSTkFMX09GRlNFVCwKLQkJMCwgMCwgUEFDS0VUSl9UWVBFMCkpOwotCWFt ZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHNlcSk7Ci0KLQlhbWRncHVfcmluZ193cml0ZShyaW5nLAlQ QUNLRVRKKG1tVVZEX0pQRUdfR1BDT01fREFUQTFfSU5URVJOQUxfT0ZGU0VULAotCQkwLCAwLCBQ QUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgc2VxKTsKLQotCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsCVBBQ0tFVEoobW1VVkRfTE1JX0pSQkNfUkJfTUVNX1dSXzY0QklU X0JBUl9MT1dfSU5URVJOQUxfT0ZGU0VULAotCQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7Ci0KLQlhbWRncHVfcmlu Z193cml0ZShyaW5nLAlQQUNLRVRKKG1tVVZEX0xNSV9KUkJDX1JCX01FTV9XUl82NEJJVF9CQVJf SElHSF9JTlRFUk5BTF9PRkZTRVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVf cmluZ193cml0ZShyaW5nLCB1cHBlcl8zMl9iaXRzKGFkZHIpKTsKLQotCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsCVBBQ0tFVEoobW1VVkRfSlBFR19HUENPTV9DTURfSU5URVJOQUxfT0ZGU0VULAot CQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMHg4KTsK LQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCVBBQ0tFVEoobW1VVkRfSlBFR19HUENPTV9DTURf SU5URVJOQUxfT0ZGU0VULAotCQkwLCBQQUNLRVRKX0NPTkRJVElPTl9DSEVDSzAsIFBBQ0tFVEpf VFlQRTQpKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKLQotCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsCVBBQ0tFVEoobW1VVkRfSlJCQ19FWFRFUk5BTF9SRUdfSU5URVJOQUxfT0ZGU0VU LAotCQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMHgz ZmJjKTsKLQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVEooSlJCQ19ERUNfRVhURVJO QUxfUkVHX1dSSVRFX0FERFIsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVfcmlu Z193cml0ZShyaW5nLCAweDEpOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUSigw LCAwLCAwLCBQQUNLRVRKX1RZUEU3KSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7Ci19 Ci0KLS8qKgotICogdmNuX3YyXzBfanBlZ19yaW5nX2VtaXRfaWIgLSBleGVjdXRlIGluZGlyZWN0 IGJ1ZmZlcgotICoKLSAqIEByaW5nOiBhbWRncHVfcmluZyBwb2ludGVyCi0gKiBAaWI6IGluZGly ZWN0IGJ1ZmZlciB0byBleGVjdXRlCi0gKgotICogV3JpdGUgcmluZyBjb21tYW5kcyB0byBleGVj dXRlIHRoZSBpbmRpcmVjdCBidWZmZXIuCi0gKi8KLXZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2Vt aXRfaWIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAotCQkJCXN0cnVjdCBhbWRncHVfam9iICpq b2IsCi0JCQkJc3RydWN0IGFtZGdwdV9pYiAqaWIsCi0JCQkJdWludDMyX3QgZmxhZ3MpCi17Ci0J dW5zaWduZWQgdm1pZCA9IEFNREdQVV9KT0JfR0VUX1ZNSUQoam9iKTsKLQotCWFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsIFBBQ0tFVEoobW1VVkRfTE1JX0pSQkNfSUJfVk1JRF9JTlRFUk5BTF9PRkZT RVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAo dm1pZCB8ICh2bWlkIDw8IDQpKSk7Ci0KLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVRK KG1tVVZEX0xNSV9KUEVHX1ZNSURfSU5URVJOQUxfT0ZGU0VULAotCQkwLCAwLCBQQUNLRVRKX1RZ UEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKHZtaWQgfCAodm1pZCA8PCA0KSkpOwot Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJUEFDS0VUSihtbVVWRF9MTUlfSlJCQ19JQl82NEJJ VF9CQVJfTE9XX0lOVEVSTkFMX09GRlNFVCwKLQkJMCwgMCwgUEFDS0VUSl9UWVBFMCkpOwotCWFt ZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2JpdHMoaWItPmdwdV9hZGRyKSk7Ci0KLQlh bWRncHVfcmluZ193cml0ZShyaW5nLAlQQUNLRVRKKG1tVVZEX0xNSV9KUkJDX0lCXzY0QklUX0JB Ul9ISUdIX0lOVEVSTkFMX09GRlNFVCwKLQkJMCwgMCwgUEFDS0VUSl9UWVBFMCkpOwotCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMoaWItPmdwdV9hZGRyKSk7Ci0KLQlhbWRn cHVfcmluZ193cml0ZShyaW5nLAlQQUNLRVRKKG1tVVZEX0pSQkNfSUJfU0laRV9JTlRFUk5BTF9P RkZTRVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5n LCBpYi0+bGVuZ3RoX2R3KTsKLQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCVBBQ0tFVEoobW1V VkRfTE1JX0pSQkNfUkJfTUVNX1JEXzY0QklUX0JBUl9MT1dfSU5URVJOQUxfT0ZGU0VULAotCQkw LCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJf Yml0cyhyaW5nLT5ncHVfYWRkcikpOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJUEFDS0VU SihtbVVWRF9MTUlfSlJCQ19SQl9NRU1fUkRfNjRCSVRfQkFSX0hJR0hfSU5URVJOQUxfT0ZGU0VU LAotCQkwLCAwLCBQQUNLRVRKX1RZUEUwKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdXBw ZXJfMzJfYml0cyhyaW5nLT5ncHVfYWRkcikpOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJ UEFDS0VUSigwLCAwLCBQQUNLRVRKX0NPTkRJVElPTl9DSEVDSzAsIFBBQ0tFVEpfVFlQRTIpKTsK LQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKLQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs CVBBQ0tFVEoobW1VVkRfSlJCQ19SQl9DT05EX1JEX1RJTUVSX0lOVEVSTkFMX09GRlNFVCwKLQkJ MCwgMCwgUEFDS0VUSl9UWVBFMCkpOwotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDB4MDE0MDAy MDApOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUSihtbVVWRF9KUkJDX1JCX1JF Rl9EQVRBX0lOVEVSTkFMX09GRlNFVCwKLQkJMCwgMCwgUEFDS0VUSl9UWVBFMCkpOwotCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsIDB4Mik7Ci0KLQlhbWRncHVfcmluZ193cml0ZShyaW5nLAlQQUNL RVRKKG1tVVZEX0pSQkNfU1RBVFVTX0lOVEVSTkFMX09GRlNFVCwKLQkJMCwgUEFDS0VUSl9DT05E SVRJT05fQ0hFQ0szLCBQQUNLRVRKX1RZUEUzKSk7Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg MHgyKTsKLX0KLQotdm9pZCB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF9yZWdfd2FpdChzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywKLQkJCQl1aW50MzJfdCB2YWwsIHVpbnQz Ml90IG1hc2spCi17Ci0JdWludDMyX3QgcmVnX29mZnNldCA9IChyZWcgPDwgMik7Ci0KLQlhbWRn cHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVRKKG1tVVZEX0pSQkNfUkJfQ09ORF9SRF9USU1FUl9J TlRFUk5BTF9PRkZTRVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlhbWRncHVfcmluZ193 cml0ZShyaW5nLCAweDAxNDAwMjAwKTsKLQotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCVBBQ0tF VEoobW1VVkRfSlJCQ19SQl9SRUZfREFUQV9JTlRFUk5BTF9PRkZTRVQsCi0JCTAsIDAsIFBBQ0tF VEpfVFlQRTApKTsKLQlhbWRncHVfcmluZ193cml0ZShyaW5nLCB2YWwpOwotCi0JYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgUEFDS0VUSihtbVVWRF9KUkJDX0VYVEVSTkFMX1JFR19JTlRFUk5BTF9P RkZTRVQsCi0JCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQlpZiAocmVnX29mZnNldCA+PSAweDEw MDAwICYmIHJlZ19vZmZzZXQgPD0gMHgxMDVmZikgewotCQlhbWRncHVfcmluZ193cml0ZShyaW5n LCAwKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywKLQkJCVBBQ0tFVEooKHJlZ19vZmZzZXQg Pj4gMiksIDAsIDAsIFBBQ0tFVEpfVFlQRTMpKTsKLQl9IGVsc2UgewotCQlhbWRncHVfcmluZ193 cml0ZShyaW5nLCByZWdfb2Zmc2V0KTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJUEFDS0VU SihKUkJDX0RFQ19FWFRFUk5BTF9SRUdfV1JJVEVfQUREUiwKLQkJCTAsIDAsIFBBQ0tFVEpfVFlQ RTMpKTsKLQl9Ci0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbWFzayk7Ci19Ci0KLXZvaWQgdmNu X3YyXzBfanBlZ19yaW5nX2VtaXRfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAot CQkJCXVuc2lnbmVkIHZtaWQsIHVpbnQ2NF90IHBkX2FkZHIpCi17Ci0Jc3RydWN0IGFtZGdwdV92 bWh1YiAqaHViID0gJnJpbmctPmFkZXYtPnZtaHViW3JpbmctPmZ1bmNzLT52bWh1Yl07Ci0JdWlu dDMyX3QgZGF0YTAsIGRhdGExLCBtYXNrOwotCi0JcGRfYWRkciA9IGFtZGdwdV9nbWNfZW1pdF9m bHVzaF9ncHVfdGxiKHJpbmcsIHZtaWQsIHBkX2FkZHIpOwotCi0JLyogd2FpdCBmb3IgcmVnaXN0 ZXIgd3JpdGUgKi8KLQlkYXRhMCA9IGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsgdm1pZCAqIDI7 Ci0JZGF0YTEgPSBsb3dlcl8zMl9iaXRzKHBkX2FkZHIpOwotCW1hc2sgPSAweGZmZmZmZmZmOwot CXZjbl92Ml8wX2pwZWdfcmluZ19lbWl0X3JlZ193YWl0KHJpbmcsIGRhdGEwLCBkYXRhMSwgbWFz ayk7Ci19Ci0KLXZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQotewotCXVpbnQzMl90IHJl Z19vZmZzZXQgPSAocmVnIDw8IDIpOwotCi0JYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJUEFDS0VU SihtbVVWRF9KUkJDX0VYVEVSTkFMX1JFR19JTlRFUk5BTF9PRkZTRVQsCi0JCTAsIDAsIFBBQ0tF VEpfVFlQRTApKTsKLQlpZiAocmVnX29mZnNldCA+PSAweDEwMDAwICYmIHJlZ19vZmZzZXQgPD0g MHgxMDVmZikgewotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKLQkJYW1kZ3B1X3Jpbmdf d3JpdGUocmluZywKLQkJCVBBQ0tFVEooKHJlZ19vZmZzZXQgPj4gMiksIDAsIDAsIFBBQ0tFVEpf VFlQRTApKTsKLQl9IGVsc2UgewotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCByZWdfb2Zmc2V0 KTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJUEFDS0VUSihKUkJDX0RFQ19FWFRFUk5BTF9S RUdfV1JJVEVfQUREUiwKLQkJCTAsIDAsIFBBQ0tFVEpfVFlQRTApKTsKLQl9Ci0JYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgdmFsKTsKLX0KLQotdm9pZCB2Y25fdjJfMF9qcGVnX3Jpbmdfbm9wKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgY291bnQpCi17Ci0JaW50IGk7Ci0KLQlX QVJOX09OKHJpbmctPndwdHIgJSAyIHx8IGNvdW50ICUgMik7Ci0KLQlmb3IgKGkgPSAwOyBpIDwg Y291bnQgLyAyOyBpKyspIHsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUSigwLCAw LCAwLCBQQUNLRVRKX1RZUEU2KSk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwotCX0K LX0KLQogc3RhdGljIGludCB2Y25fdjJfMF9zZXRfaW50ZXJydXB0X3N0YXRlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCQlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNvdXJjZSwKIAkJ CQkJdW5zaWduZWQgdHlwZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3Zjbl92Ml8wLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y25fdjJfMC5oCmluZGV4 IDg0NjcyOTJmMzJlNS4uZWY3NDliMDJkZWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS92Y25fdjJfMC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zj bl92Ml8wLmgKQEAgLTQ5LDE5ICs0OSw2IEBAIGV4dGVybiB2b2lkIHZjbl92Ml8wX2VuY19yaW5n X2VtaXRfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAogCQkJCXVuc2lnbmVkIGlu dCB2bWlkLCB1aW50NjRfdCBwZF9hZGRyKTsKIGV4dGVybiB2b2lkIHZjbl92Ml8wX2VuY19yaW5n X2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsKTsKIAotZXh0ZXJuIHZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2luc2VydF9zdGFydChz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwotZXh0ZXJuIHZvaWQgdmNuX3YyXzBfanBlZ19yaW5n X2luc2VydF9lbmQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKLWV4dGVybiB2b2lkIHZjbl92 Ml8wX2pwZWdfcmluZ19lbWl0X2ZlbmNlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdTY0IGFk ZHIsIHU2NCBzZXEsCi0JCQkJdW5zaWduZWQgZmxhZ3MpOwotZXh0ZXJuIHZvaWQgdmNuX3YyXzBf anBlZ19yaW5nX2VtaXRfaWIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1 X2pvYiAqam9iLAotCQkJCXN0cnVjdCBhbWRncHVfaWIgKmliLCB1aW50MzJfdCBmbGFncyk7Ci1l eHRlcm4gdm9pZCB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF9yZWdfd2FpdChzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywKLQkJCQl1aW50MzJfdCB2YWwsIHVpbnQzMl90IG1h c2spOwotZXh0ZXJuIHZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2VtaXRfdm1fZmx1c2goc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLAotCQkJCXVuc2lnbmVkIHZtaWQsIHVpbnQ2NF90IHBkX2FkZHIp OwotZXh0ZXJuIHZvaWQgdmNuX3YyXzBfanBlZ19yaW5nX2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLWV4dGVybiB2b2lkIHZj bl92Ml8wX2pwZWdfcmluZ19ub3Aoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBj b3VudCk7Ci0KIGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gdmNu X3YyXzBfaXBfYmxvY2s7CiAKICNlbmRpZiAvKiBfX1ZDTl9WMl8wX0hfXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YyXzUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3Zjbl92Ml81LmMKaW5kZXggMDMwODNlNWY3MzFhLi40NTFkYzgxNGQ4NDUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zjbl92Ml81LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmNuX3YyXzUuYwpAQCAtNDcsMTMgKzQ3LDEwIEBA CiAjZGVmaW5lIG1tVVZEX0xNSV9SQkNfSUJfNjRCSVRfQkFSX0hJR0hfSU5URVJOQUxfT0ZGU0VU IAkweDNiNQogI2RlZmluZSBtbVVWRF9SQkNfSUJfU0laRV9JTlRFUk5BTF9PRkZTRVQJCQkweDI1 YwogCi0jZGVmaW5lIG1tVVZEX0pQRUdfUElUQ0hfSU5URVJOQUxfT0ZGU0VUCQkJMHg0MDFmCi0K LSNkZWZpbmUgVkNOMjVfTUFYX0hXX0lOU1RBTkNFU19BUkNUVVJVUwkJCQkyCisjZGVmaW5lIFZD TjI1X01BWF9IV19JTlNUQU5DRVNfQVJDVFVSVVMJCQkyCiAKIHN0YXRpYyB2b2lkIHZjbl92Ml81 X3NldF9kZWNfcmluZ19mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBzdGF0aWMg dm9pZCB2Y25fdjJfNV9zZXRfZW5jX3JpbmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOwotc3RhdGljIHZvaWQgdmNuX3YyXzVfc2V0X2pwZWdfcmluZ19mdW5jcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldik7CiBzdGF0aWMgdm9pZCB2Y25fdjJfNV9zZXRfaXJxX2Z1bmNzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIHN0YXRpYyBpbnQgdmNuX3YyXzVfc2V0X3Bvd2Vy Z2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwKIAkJCQllbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0 ZSBzdGF0ZSk7CkBAIC05NSw3ICs5Miw2IEBAIHN0YXRpYyBpbnQgdmNuX3YyXzVfZWFybHlfaW5p dCh2b2lkICpoYW5kbGUpCiAKIAl2Y25fdjJfNV9zZXRfZGVjX3JpbmdfZnVuY3MoYWRldik7CiAJ dmNuX3YyXzVfc2V0X2VuY19yaW5nX2Z1bmNzKGFkZXYpOwotCXZjbl92Ml81X3NldF9qcGVnX3Jp bmdfZnVuY3MoYWRldik7CiAJdmNuX3YyXzVfc2V0X2lycV9mdW5jcyhhZGV2KTsKIAogCXJldHVy biAwOwpAQCAtMTMwLDEyICsxMjYsNiBAQCBzdGF0aWMgaW50IHZjbl92Ml81X3N3X2luaXQodm9p ZCAqaGFuZGxlKQogCQkJaWYgKHIpCiAJCQkJcmV0dXJuIHI7CiAJCX0KLQotCQkvKiBWQ04gSlBF RyBUUkFQICovCi0JCXIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBhbWRncHVfaWhfY2xpZW50 aWRfdmNuc1tqXSwKLQkJCQlWQ05fMl8wX19TUkNJRF9fSlBFR19ERUNPREUsICZhZGV2LT52Y24u aW5zdFtqXS5pcnEpOwotCQlpZiAocikKLQkJCXJldHVybiByOwogCX0KIAogCXIgPSBhbWRncHVf dmNuX3N3X2luaXQoYWRldik7CkBAIC0xODQsOSArMTc0LDYgQEAgc3RhdGljIGludCB2Y25fdjJf NV9zd19pbml0KHZvaWQgKmhhbmRsZSkKIAkJYWRldi0+dmNuLmludGVybmFsLm5vcCA9IG1tVVZE X05PX09QX0lOVEVSTkFMX09GRlNFVDsKIAkJYWRldi0+dmNuLmluc3Rbal0uZXh0ZXJuYWwubm9w ID0gU09DMTVfUkVHX09GRlNFVChVVkQsIGosIG1tVVZEX05PX09QKTsKIAotCQlhZGV2LT52Y24u aW50ZXJuYWwuanBlZ19waXRjaCA9IG1tVVZEX0pQRUdfUElUQ0hfSU5URVJOQUxfT0ZGU0VUOwot CQlhZGV2LT52Y24uaW5zdFtqXS5leHRlcm5hbC5qcGVnX3BpdGNoID0gU09DMTVfUkVHX09GRlNF VChVVkQsIGosIG1tVVZEX0pQRUdfUElUQ0gpOwotCiAJCXJpbmcgPSAmYWRldi0+dmNuLmluc3Rb al0ucmluZ19kZWM7CiAJCXJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7CiAJCXJpbmctPmRvb3Ji ZWxsX2luZGV4ID0gKGFkZXYtPmRvb3JiZWxsX2luZGV4LnZjbi52Y25fcmluZzBfMSA8PCAxKSAr IDgqajsKQEAgLTIwNCwxNCArMTkxLDYgQEAgc3RhdGljIGludCB2Y25fdjJfNV9zd19pbml0KHZv aWQgKmhhbmRsZSkKIAkJCWlmIChyKQogCQkJCXJldHVybiByOwogCQl9Ci0KLQkJcmluZyA9ICZh ZGV2LT52Y24uaW5zdFtqXS5yaW5nX2pwZWc7Ci0JCXJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7 Ci0JCXJpbmctPmRvb3JiZWxsX2luZGV4ID0gKGFkZXYtPmRvb3JiZWxsX2luZGV4LnZjbi52Y25f cmluZzBfMSA8PCAxKSArIDEgKyA4Kmo7Ci0JCXNwcmludGYocmluZy0+bmFtZSwgInZjbl9qcGVn XyVkIiwgaik7Ci0JCXIgPSBhbWRncHVfcmluZ19pbml0KGFkZXYsIHJpbmcsIDUxMiwgJmFkZXYt PnZjbi5pbnN0W2pdLmlycSwgMCk7Ci0JCWlmIChyKQotCQkJcmV0dXJuIHI7CiAJfQogCiAJcmV0 dXJuIDA7CkBAIC0yNjksMTIgKzI0OCw4IEBAIHN0YXRpYyBpbnQgdmNuX3YyXzVfaHdfaW5pdCh2 b2lkICpoYW5kbGUpCiAJCQlpZiAocikKIAkJCQlnb3RvIGRvbmU7CiAJCX0KLQotCQlyaW5nID0g JmFkZXYtPnZjbi5pbnN0W2pdLnJpbmdfanBlZzsKLQkJciA9IGFtZGdwdV9yaW5nX3Rlc3RfaGVs cGVyKHJpbmcpOwotCQlpZiAocikKLQkJCWdvdG8gZG9uZTsKIAl9CisKIGRvbmU6CiAJaWYgKCFy KQogCQlEUk1fSU5GTygiVkNOIGRlY29kZSBhbmQgZW5jb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3Nm dWxseS5cbiIpOwpAQCAtMzA5LDkgKzI4NCw2IEBAIHN0YXRpYyBpbnQgdmNuX3YyXzVfaHdfZmlu aSh2b2lkICpoYW5kbGUpCiAJCQlyaW5nID0gJmFkZXYtPnZjbi5pbnN0W2ldLnJpbmdfZW5jW2ld OwogCQkJcmluZy0+c2NoZWQucmVhZHkgPSBmYWxzZTsKIAkJfQotCi0JCXJpbmcgPSAmYWRldi0+ dmNuLmluc3RbaV0ucmluZ19qcGVnOwotCQlyaW5nLT5zY2hlZC5yZWFkeSA9IGZhbHNlOwogCX0K IAogCXJldHVybiAwOwpAQCAtNTkyLDExNSArNTY0LDYgQEAgc3RhdGljIHZvaWQgdmNuX3YyXzVf ZW5hYmxlX2Nsb2NrX2dhdGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiB9CiAK LS8qKgotICoganBlZ192Ml81X3N0YXJ0IC0gc3RhcnQgSlBFRyBibG9jawotICoKLSAqIEBhZGV2 OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKLSAqCi0gKiBTZXR1cCBhbmQgc3RhcnQgdGhlIEpQRUcg YmxvY2sKLSAqLwotc3RhdGljIGludCBqcGVnX3YyXzVfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCi17Ci0Jc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwotCXVpbnQzMl90IHRtcDsK LQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBhZGV2LT52Y24ubnVtX3Zjbl9pbnN0OyArK2kp IHsKLQkJaWYgKGFkZXYtPnZjbi5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8IGkpKQotCQkJY29udGlu dWU7Ci0JCXJpbmcgPSAmYWRldi0+dmNuLmluc3RbaV0ucmluZ19qcGVnOwotCQkvKiBkaXNhYmxl IGFudGkgaGFuZyBtZWNoYW5pc20gKi8KLQkJV1JFRzMyX1AoU09DMTVfUkVHX09GRlNFVChVVkQs IGksIG1tVVZEX0pQRUdfUE9XRVJfU1RBVFVTKSwgMCwKLQkJCX5VVkRfSlBFR19QT1dFUl9TVEFU VVNfX0pQRUdfUE9XRVJfU1RBVFVTX01BU0spOwotCi0JCS8qIEpQRUcgZGlzYWJsZSBDR0MgKi8K LQkJdG1wID0gUlJFRzMyX1NPQzE1KFZDTiwgaSwgbW1KUEVHX0NHQ19DVFJMKTsKLQkJdG1wIHw9 IDEgPDwgSlBFR19DR0NfQ1RSTF9fRFlOX0NMT0NLX01PREVfX1NISUZUOwotCQl0bXAgfD0gMSA8 PCBKUEVHX0NHQ19DVFJMX19DTEtfR0FURV9ETFlfVElNRVJfX1NISUZUOwotCQl0bXAgfD0gNCA8 PCBKUEVHX0NHQ19DVFJMX19DTEtfT0ZGX0RFTEFZX19TSElGVDsKLQkJV1JFRzMyX1NPQzE1KFZD TiwgaSwgbW1KUEVHX0NHQ19DVFJMLCB0bXApOwotCi0JCXRtcCA9IFJSRUczMl9TT0MxNShWQ04s IGksIG1tSlBFR19DR0NfR0FURSk7Ci0JCXRtcCAmPSB+KEpQRUdfQ0dDX0dBVEVfX0pQRUdfREVD X01BU0sKLQkJCXwgSlBFR19DR0NfR0FURV9fSlBFRzJfREVDX01BU0sKLQkJCXwgSlBFR19DR0Nf R0FURV9fSk1DSUZfTUFTSwotCQkJfCBKUEVHX0NHQ19HQVRFX19KUkJCTV9NQVNLKTsKLQkJV1JF RzMyX1NPQzE1KFZDTiwgaSwgbW1KUEVHX0NHQ19HQVRFLCB0bXApOwotCi0JCXRtcCA9IFJSRUcz Ml9TT0MxNShWQ04sIGksIG1tSlBFR19DR0NfQ1RSTCk7Ci0JCXRtcCAmPSB+KEpQRUdfQ0dDX0NU UkxfX0pQRUdfREVDX01PREVfTUFTSwotCQkJfCBKUEVHX0NHQ19DVFJMX19KUEVHMl9ERUNfTU9E RV9NQVNLCi0JCQl8IEpQRUdfQ0dDX0NUUkxfX0pNQ0lGX01PREVfTUFTSwotCQkJfCBKUEVHX0NH Q19DVFJMX19KUkJCTV9NT0RFX01BU0spOwotCQlXUkVHMzJfU09DMTUoVkNOLCBpLCBtbUpQRUdf Q0dDX0NUUkwsIHRtcCk7Ci0KLQkJLyogTUpQRUcgZ2xvYmFsIHRpbGluZyByZWdpc3RlcnMgKi8K LQkJV1JFRzMyX1NPQzE1KFVWRCwgaSwgbW1KUEVHX0RFQ19HRlg4X0FERFJfQ09ORklHLAotCQkJ YWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyk7Ci0JCVdSRUczMl9TT0MxNShVVkQsIGks IG1tSlBFR19ERUNfR0ZYMTBfQUREUl9DT05GSUcsCi0JCQlhZGV2LT5nZnguY29uZmlnLmdiX2Fk ZHJfY29uZmlnKTsKLQotCQkvKiBlbmFibGUgSk1JIGNoYW5uZWwgKi8KLQkJV1JFRzMyX1AoU09D MTVfUkVHX09GRlNFVChVVkQsIGksIG1tVVZEX0pNSV9DTlRMKSwgMCwKLQkJCX5VVkRfSk1JX0NO VExfX1NPRlRfUkVTRVRfTUFTSyk7Ci0KLQkJLyogZW5hYmxlIFN5c3RlbSBJbnRlcnJ1cHQgZm9y IEpSQkMgKi8KLQkJV1JFRzMyX1AoU09DMTVfUkVHX09GRlNFVChWQ04sIGksIG1tSlBFR19TWVNf SU5UX0VOKSwKLQkJCUpQRUdfU1lTX0lOVF9FTl9fREpSQkNfTUFTSywKLQkJCX5KUEVHX1NZU19J TlRfRU5fX0RKUkJDX01BU0spOwotCi0JCVdSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX0xNSV9K UkJDX1JCX1ZNSUQsIDApOwotCQlXUkVHMzJfU09DMTUoVVZELCBpLCBtbVVWRF9KUkJDX1JCX0NO VEwsICgweDAwMDAwMDAxTCB8IDB4MDAwMDAwMDJMKSk7Ci0JCVdSRUczMl9TT0MxNShVVkQsIGks IG1tVVZEX0xNSV9KUkJDX1JCXzY0QklUX0JBUl9MT1csCi0JCQlsb3dlcl8zMl9iaXRzKHJpbmct PmdwdV9hZGRyKSk7Ci0JCVdSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX0xNSV9KUkJDX1JCXzY0 QklUX0JBUl9ISUdILAotCQkJdXBwZXJfMzJfYml0cyhyaW5nLT5ncHVfYWRkcikpOwotCQlXUkVH MzJfU09DMTUoVVZELCBpLCBtbVVWRF9KUkJDX1JCX1JQVFIsIDApOwotCQlXUkVHMzJfU09DMTUo VVZELCBpLCBtbVVWRF9KUkJDX1JCX1dQVFIsIDApOwotCQlXUkVHMzJfU09DMTUoVVZELCBpLCBt bVVWRF9KUkJDX1JCX0NOVEwsIDB4MDAwMDAwMDJMKTsKLQkJV1JFRzMyX1NPQzE1KFVWRCwgaSwg bW1VVkRfSlJCQ19SQl9TSVpFLCByaW5nLT5yaW5nX3NpemUgLyA0KTsKLQkJcmluZy0+d3B0ciA9 IFJSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX0pSQkNfUkJfV1BUUik7Ci0JfQotCi0JcmV0dXJu IDA7Ci19Ci0KLS8qKgotICoganBlZ192Ml81X3N0b3AgLSBzdG9wIEpQRUcgYmxvY2sKLSAqCi0g KiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCi0gKgotICogc3RvcCB0aGUgSlBFRyBibG9j awotICovCi1zdGF0aWMgaW50IGpwZWdfdjJfNV9zdG9wKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQotewotCXVpbnQzMl90IHRtcDsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBhZGV2 LT52Y24ubnVtX3Zjbl9pbnN0OyArK2kpIHsKLQkJaWYgKGFkZXYtPnZjbi5oYXJ2ZXN0X2NvbmZp ZyAmICgxIDw8IGkpKQotCQkJY29udGludWU7Ci0JCS8qIHJlc2V0IEpNSSAqLwotCQlXUkVHMzJf UChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgaSwgbW1VVkRfSk1JX0NOVEwpLAotCQkJVVZEX0pNSV9D TlRMX19TT0ZUX1JFU0VUX01BU0ssCi0JCQl+VVZEX0pNSV9DTlRMX19TT0ZUX1JFU0VUX01BU0sp OwotCi0JCXRtcCA9IFJSRUczMl9TT0MxNShWQ04sIGksIG1tSlBFR19DR0NfR0FURSk7Ci0JCXRt cCB8PSAoSlBFR19DR0NfR0FURV9fSlBFR19ERUNfTUFTSwotCQkJfEpQRUdfQ0dDX0dBVEVfX0pQ RUcyX0RFQ19NQVNLCi0JCQl8SlBFR19DR0NfR0FURV9fSk1DSUZfTUFTSwotCQkJfEpQRUdfQ0dD X0dBVEVfX0pSQkJNX01BU0spOwotCQlXUkVHMzJfU09DMTUoVkNOLCBpLCBtbUpQRUdfQ0dDX0dB VEUsIHRtcCk7Ci0KLQkJLyogZW5hYmxlIGFudGkgaGFuZyBtZWNoYW5pc20gKi8KLQkJV1JFRzMy X1AoU09DMTVfUkVHX09GRlNFVChVVkQsIGksIG1tVVZEX0pQRUdfUE9XRVJfU1RBVFVTKSwKLQkJ CVVWRF9KUEVHX1BPV0VSX1NUQVRVU19fSlBFR19QT1dFUl9TVEFUVVNfTUFTSywKLQkJCX5VVkRf SlBFR19QT1dFUl9TVEFUVVNfX0pQRUdfUE9XRVJfU1RBVFVTX01BU0spOwotCX0KLQotCXJldHVy biAwOwotfQotCiBzdGF0aWMgaW50IHZjbl92Ml81X3N0YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogewogCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZzsKQEAgLTg3NCwxOSArNzM3LDE0 IEBAIHN0YXRpYyBpbnQgdmNuX3YyXzVfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAJCVdSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX1JCX0JBU0VfSEkyLCB1cHBlcl8zMl9iaXRz KHJpbmctPmdwdV9hZGRyKSk7CiAJCVdSRUczMl9TT0MxNShVVkQsIGksIG1tVVZEX1JCX1NJWkUy LCByaW5nLT5yaW5nX3NpemUgLyA0KTsKIAl9Ci0JciA9IGpwZWdfdjJfNV9zdGFydChhZGV2KTsK IAotCXJldHVybiByOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHZjbl92Ml81X3N0b3Ao c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJdWludDMyX3QgdG1wOwotCWludCBpLCBy OwotCi0JciA9IGpwZWdfdjJfNV9zdG9wKGFkZXYpOwotCWlmIChyKQotCQlyZXR1cm4gcjsKKwlp bnQgaSwgciA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dmNuLm51bV92Y25faW5zdDsg KytpKSB7CiAJCWlmIChhZGV2LT52Y24uaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKQEAgLTEx MjUsODYgKzk4Myw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgdmNu X3YyXzVfZW5jX3Jpbmdfdm1fZnVuY3MgPSB7CiAJLmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0ID0g YW1kZ3B1X3JpbmdfZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXRfaGVscGVyLAogfTsKIAotLyoqCi0g KiB2Y25fdjJfNV9qcGVnX3JpbmdfZ2V0X3JwdHIgLSBnZXQgcmVhZCBwb2ludGVyCi0gKgotICog QHJpbmc6IGFtZGdwdV9yaW5nIHBvaW50ZXIKLSAqCi0gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGhh cmR3YXJlIHJlYWQgcG9pbnRlcgotICovCi1zdGF0aWMgdWludDY0X3QgdmNuX3YyXzVfanBlZ19y aW5nX2dldF9ycHRyKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKLXsKLQlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Ci0KLQlyZXR1cm4gUlJFRzMyX1NPQzE1KFVWRCwg cmluZy0+bWUsIG1tVVZEX0pSQkNfUkJfUlBUUik7Ci19Ci0KLS8qKgotICogdmNuX3YyXzVfanBl Z19yaW5nX2dldF93cHRyIC0gZ2V0IHdyaXRlIHBvaW50ZXIKLSAqCi0gKiBAcmluZzogYW1kZ3B1 X3JpbmcgcG9pbnRlcgotICoKLSAqIFJldHVybnMgdGhlIGN1cnJlbnQgaGFyZHdhcmUgd3JpdGUg cG9pbnRlcgotICovCi1zdGF0aWMgdWludDY0X3QgdmNuX3YyXzVfanBlZ19yaW5nX2dldF93cHRy KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKLXsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IHJpbmctPmFkZXY7Ci0KLQlpZiAocmluZy0+dXNlX2Rvb3JiZWxsKQotCQlyZXR1cm4gYWRl di0+d2Iud2JbcmluZy0+d3B0cl9vZmZzXTsKLQllbHNlCi0JCXJldHVybiBSUkVHMzJfU09DMTUo VVZELCByaW5nLT5tZSwgbW1VVkRfSlJCQ19SQl9XUFRSKTsKLX0KLQotLyoqCi0gKiB2Y25fdjJf NV9qcGVnX3Jpbmdfc2V0X3dwdHIgLSBzZXQgd3JpdGUgcG9pbnRlcgotICoKLSAqIEByaW5nOiBh bWRncHVfcmluZyBwb2ludGVyCi0gKgotICogQ29tbWl0cyB0aGUgd3JpdGUgcG9pbnRlciB0byB0 aGUgaGFyZHdhcmUKLSAqLwotc3RhdGljIHZvaWQgdmNuX3YyXzVfanBlZ19yaW5nX3NldF93cHRy KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKLXsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IHJpbmctPmFkZXY7Ci0KLQlpZiAocmluZy0+dXNlX2Rvb3JiZWxsKSB7Ci0JCWFkZXYtPndi LndiW3JpbmctPndwdHJfb2Zmc10gPSBsb3dlcl8zMl9iaXRzKHJpbmctPndwdHIpOwotCQlXRE9P UkJFTEwzMihyaW5nLT5kb29yYmVsbF9pbmRleCwgbG93ZXJfMzJfYml0cyhyaW5nLT53cHRyKSk7 Ci0JfSBlbHNlIHsKLQkJV1JFRzMyX1NPQzE1KFVWRCwgcmluZy0+bWUsIG1tVVZEX0pSQkNfUkJf V1BUUiwgbG93ZXJfMzJfYml0cyhyaW5nLT53cHRyKSk7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzIHZjbl92Ml81X2pwZWdfcmluZ192bV9mdW5jcyA9IHsK LQkudHlwZSA9IEFNREdQVV9SSU5HX1RZUEVfVkNOX0pQRUcsCi0JLmFsaWduX21hc2sgPSAweGYs Ci0JLnZtaHViID0gQU1ER1BVX01NSFVCXzEsCi0JLmdldF9ycHRyID0gdmNuX3YyXzVfanBlZ19y aW5nX2dldF9ycHRyLAotCS5nZXRfd3B0ciA9IHZjbl92Ml81X2pwZWdfcmluZ19nZXRfd3B0ciwK LQkuc2V0X3dwdHIgPSB2Y25fdjJfNV9qcGVnX3Jpbmdfc2V0X3dwdHIsCi0JLmVtaXRfZnJhbWVf c2l6ZSA9Ci0JCVNPQzE1X0ZMVVNIX0dQVV9UTEJfTlVNX1dSRUcgKiA2ICsKLQkJU09DMTVfRkxV U0hfR1BVX1RMQl9OVU1fUkVHX1dBSVQgKiA4ICsKLQkJOCArIC8qIHZjbl92Ml8wX2pwZWdfcmlu Z19lbWl0X3ZtX2ZsdXNoICovCi0JCTE4ICsgMTggKyAvKiB2Y25fdjJfMF9qcGVnX3JpbmdfZW1p dF9mZW5jZSB4MiB2bSBmZW5jZSAqLwotCQk4ICsgMTYsCi0JLmVtaXRfaWJfc2l6ZSA9IDIyLCAv KiB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF9pYiAqLwotCS5lbWl0X2liID0gdmNuX3YyXzBfanBl Z19yaW5nX2VtaXRfaWIsCi0JLmVtaXRfZmVuY2UgPSB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF9m ZW5jZSwKLQkuZW1pdF92bV9mbHVzaCA9IHZjbl92Ml8wX2pwZWdfcmluZ19lbWl0X3ZtX2ZsdXNo LAotCS50ZXN0X3JpbmcgPSBhbWRncHVfdmNuX2pwZWdfcmluZ190ZXN0X3JpbmcsCi0JLnRlc3Rf aWIgPSBhbWRncHVfdmNuX2pwZWdfcmluZ190ZXN0X2liLAotCS5pbnNlcnRfbm9wID0gdmNuX3Yy XzBfanBlZ19yaW5nX25vcCwKLQkuaW5zZXJ0X3N0YXJ0ID0gdmNuX3YyXzBfanBlZ19yaW5nX2lu c2VydF9zdGFydCwKLQkuaW5zZXJ0X2VuZCA9IHZjbl92Ml8wX2pwZWdfcmluZ19pbnNlcnRfZW5k LAotCS5wYWRfaWIgPSBhbWRncHVfcmluZ19nZW5lcmljX3BhZF9pYiwKLQkuYmVnaW5fdXNlID0g YW1kZ3B1X3Zjbl9yaW5nX2JlZ2luX3VzZSwKLQkuZW5kX3VzZSA9IGFtZGdwdV92Y25fcmluZ19l bmRfdXNlLAotCS5lbWl0X3dyZWcgPSB2Y25fdjJfMF9qcGVnX3JpbmdfZW1pdF93cmVnLAotCS5l bWl0X3JlZ193YWl0ID0gdmNuX3YyXzBfanBlZ19yaW5nX2VtaXRfcmVnX3dhaXQsCi0JLmVtaXRf cmVnX3dyaXRlX3JlZ193YWl0ID0gYW1kZ3B1X3JpbmdfZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXRf aGVscGVyLAotfTsKLQogc3RhdGljIHZvaWQgdmNuX3YyXzVfc2V0X2RlY19yaW5nX2Z1bmNzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWludCBpOwpAQCAtMTIzMywxOSArMTAxMSw2 IEBAIHN0YXRpYyB2b2lkIHZjbl92Ml81X3NldF9lbmNfcmluZ19mdW5jcyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIHZjbl92Ml81X3NldF9qcGVnX3Jp bmdfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCi17Ci0JaW50IGk7Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgYWRldi0+dmNuLm51bV92Y25faW5zdDsgKytpKSB7Ci0JCWlmIChhZGV2LT52 Y24uaGFydmVzdF9jb25maWcgJiAoMSA8PCBpKSkKLQkJCWNvbnRpbnVlOwotCQlhZGV2LT52Y24u aW5zdFtpXS5yaW5nX2pwZWcuZnVuY3MgPSAmdmNuX3YyXzVfanBlZ19yaW5nX3ZtX2Z1bmNzOwot CQlhZGV2LT52Y24uaW5zdFtpXS5yaW5nX2pwZWcubWUgPSBpOwotCQlEUk1fSU5GTygiVkNOKCVk KSBqcGVnIGRlY29kZSBpcyBlbmFibGVkIGluIFZNIG1vZGVcbiIsIGkpOwotCX0KLX0KLQogc3Rh dGljIGJvb2wgdmNuX3YyXzVfaXNfaWRsZSh2b2lkICpoYW5kbGUpCiB7CiAJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CkBAIC0xMzUy LDkgKzExMTcsNiBAQCBzdGF0aWMgaW50IHZjbl92Ml81X3Byb2Nlc3NfaW50ZXJydXB0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogCWNhc2UgVkNOXzJfMF9fU1JDSURfX1VWRF9FTkNfTE9X X0xBVEVOQ1k6CiAJCWFtZGdwdV9mZW5jZV9wcm9jZXNzKCZhZGV2LT52Y24uaW5zdFtpcF9pbnN0 YW5jZV0ucmluZ19lbmNbMV0pOwogCQlicmVhazsKLQljYXNlIFZDTl8yXzBfX1NSQ0lEX19KUEVH X0RFQ09ERToKLQkJYW1kZ3B1X2ZlbmNlX3Byb2Nlc3MoJmFkZXYtPnZjbi5pbnN0W2lwX2luc3Rh bmNlXS5yaW5nX2pwZWcpOwotCQlicmVhazsKIAlkZWZhdWx0OgogCQlEUk1fRVJST1IoIlVuaGFu ZGxlZCBpbnRlcnJ1cHQ6ICVkICVkXG4iLAogCQkJICBlbnRyeS0+c3JjX2lkLCBlbnRyeS0+c3Jj X2RhdGFbMF0pOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ft ZC1nZng=