Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3503886ybl; Tue, 21 Jan 2020 01:55:59 -0800 (PST) X-Google-Smtp-Source: APXvYqyJnJJpA1lKM/fRqTUbWNp+SpYIbLAjSkSfusjMa2nGkbi4vbyC2hDA7OdMU0lo/RIqfb+r X-Received: by 2002:aca:ad11:: with SMTP id w17mr2407419oie.85.1579600558919; Tue, 21 Jan 2020 01:55:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579600558; cv=none; d=google.com; s=arc-20160816; b=0cAZfDIyCar/THug9DickAXQYVsCa14Dzkpqmhst1tjJJIBb6bd2lWk97N6rQH4zUu KlaGR7MjnmGvkWKSSVZAPQ64uqn3FITnT6ouu6MgZP3kS65jG2LUuLyzsZ4xzGTTkl8S MXkmzRhHbRCc3j9QcpPkFdzX35x8TVBSWR7FIjKtJVRBa/zCwhsOXWCaY9XAbnu2Pa2T QndOId22eePZyIVrwoedEzAQC2vuqZKv1k0YYGllUkvHviSn6I39BpPxINTE9pblm4cS lrBVbIdrBam967zek1icom5GZj8syonXtwtL7AV7qL8Rr3s8kPMIAJIYKlaMtqfBeaSl 1zOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0nvbxX7bIBn8j+BcMT4VEjyrU6QLQbfoJbCMo58S5GQ=; b=dMbljEzS+K5G5q9lxDZSwiUahHOFDD362CVgkQlZ7hcnxYteuREvPx0jMWyc80p4iu 2pMmiivkg76PIoQ2AdrBYaDWv4DNi3UIACFE77w9aPMOzAUVPdf8GPM4MsQ/HwXr1gVl s43TCQ8rrwiDJodF+wjIZ//0UUvPCfIy88pH9Y7/UKZAgXU6DZzoKjaHyqxc4A8QSj7m lGWDoq7bJCMSMdz6pzzm9LPnqW7RSQ/kQWxEZaBmXuZkET9s1JmepD6i1uWeBtbYscFB B3cS5RLBVr0DIxw1Mn0iVdlbsda60wXrbe8/9+TbdK8zmAPtGHNV6mxtQ8yB+hxtq357 yArQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=N9Tc5nAz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u5si23851285otg.99.2020.01.21.01.55.46; Tue, 21 Jan 2020 01:55:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=N9Tc5nAz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729451AbgAUJyX (ORCPT + 99 others); Tue, 21 Jan 2020 04:54:23 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:5378 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729401AbgAUJyX (ORCPT ); Tue, 21 Jan 2020 04:54:23 -0500 X-UUID: e55dd63201034774b72e670da33a4eb1-20200121 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=0nvbxX7bIBn8j+BcMT4VEjyrU6QLQbfoJbCMo58S5GQ=; b=N9Tc5nAzA71hGpV4XPlYfbwMbmCnqGnuBdknoVrAE7QpunyBiytnTeQ4zDECIJQq4/NvTi+lMFpwU6kaP9m0CrcJ2qmezt4qq6GUNx/NwQKHchWs1TTJ0BntXIOhjFCtr30dEVoswHK2u0LhruHVJ2c965mX3sRlS0LiGRR4gQo=; X-UUID: e55dd63201034774b72e670da33a4eb1-20200121 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 494808747; Tue, 21 Jan 2020 17:54:04 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 21 Jan 2020 17:53:23 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 21 Jan 2020 17:52:01 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Rick Chang CC: , , , , , Marek Szyprowski , Tomasz Figa , , Xia Jiang Subject: [PATCH v6 5/5] media: platform: Add jpeg dec/enc feature Date: Tue, 21 Jan 2020 17:53:21 +0800 Message-ID: <20200121095320.32258-6-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200121095320.32258-1-xia.jiang@mediatek.com> References: <20200121095320.32258-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIG10ayBqcGVnIGVuY29kZSB2NGwyIGRyaXZlciBiYXNlZCBvbiBqcGVnIGRlY29kZSwgYmVj YXVzZSB0aGF0IGpwZWcNCmRlY29kZSBhbmQgZW5jb2RlIGhhdmUgZ3JlYXQgc2ltaWxhcml0aWVz IHdpdGggZnVuY3Rpb24gb3BlcmF0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBYaWEgSmlhbmcgPHhp YS5qaWFuZ0BtZWRpYXRlay5jb20+DQotLS0NCnY2OiBhZGQgc3BhY2UgdG8gYXJvdW5kaW5nICcr Jy4NCiAgICBhbGlnbm1lbnQgJ3N0cnVjdCBtdGtfanBlZ19mbXQgKmZtdCcgbWF0Y2ggb3BlbiBw YXJlbnRoZXNpcy4NCiAgICBjaGFuZ2UgJ210a19qcGVnX2VuY19zZXRfZW5jRm9ybWF0JyB0byAn bXRrX2pwZWdfZW5jX3NldF9lbmNfZm9ybWF0Jy4NCiAgICBtYWtlICdtdGtfanBlZ19jdHJsc19z ZXR1cCcgdG8gc3RhdGljIHByb3RvdHlwZS4NCiAgICBkZWxldGUgdW51c2VkIHZhcmlhYmxlcyAn anBlZycvJ2FsaWduX2gnLydhbGlnbl93Jy8nZmxhZ3MnLg0KICAgIGluaXRpYWxpemUgJ3l1dl9m b3JtYXQnLydlbmNfcXVhbGl0eScgdmFyaWFibGVzLg0KDQp2NTogc3VwcG9ydCBjcm9wIGZvciBl bmNvZGVyIGFuZCBjb21wb3NlIGZvciBkZWNvZGVyIGluIHNfc2VsZWN0aW9uIGFuZA0KICAgIGdf c2VsZWN0aW9uIGZ1bmN0aW9uLg0KICAgIHVzZSBjbGFtcCgpIHRvIHJlcGxhY2UgbXRrX2pwZWdf Ym91bmRfYWxpZ25faW1hZ2UoKSBhbmQgcm91bmRfdXAoKQ0KICAgIHRvIHJlcGxhY2UgbXRrX2pw ZWdfYWxpZ24oKS4NCiAgICBkZWxldGUganBlZ19lbmNfcGFyYW0vbXRrX2pwZWdfZW5jX3BhcmFt IHN0cnVjdHVyZSBhbmQNCiAgICBtdGtfanBlZ19zZXRfcGFyYW0oKSwgcHJvZ3JhbSB0aGUgcmVn aXN0ZXJzIGRpcmVjdGx5IGJhc2VkIG9uDQogICAgdGhlIG9yaWdpbmFsIFY0TDIgdmFsdWVzLg0K ICAgIG1vdmUgbWFjcm8gZGVmaW5pdGlvbiBhYm91dCBodyB0byBtdGtfanBlZ19lbmNfcmVnLmgu DQogICAgZGVsZXRlIHVubmVjZXNzYXJ5IFY0TDIgbG9ncyBpbiBkcml2ZXIuDQogICAgY2FuY2Vs IHNwaW4gbG9jayBhbmQgdW5sb2NrIG9wZXJhdGlvbiBpbiBkZXZpZWMgcnVuIGZ1bmN0aW9uLg0K ICAgIGNoYW5nZSBqcGVnIGVuYyByZWdpc3RlciBvZmZzZXQgaGV4IG51bWJlcmFscyBmcm9tIHVw ZXJjYXNlIHRvDQogICAgbG93ZXJjYXNlLg0KICANCnY0OiBzcGxpdCBtdGtfanBlZ190cnlfZm10 X21wbGFuZSgpIHRvIHR3byBmdW5jdGlvbnMsIG9uZSBmb3IgZW5jb2RlciwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBvbmUgZm9yIGRl Y29kZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIA0KICAgIHNwbGl0IG10a19qcGVnX3NldF9kZWZhdWx0X3BhcmFtcygpIHRvIHR3byBm dW5jdGlvbnMsIG9uZSBmb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgDQogICAgZW5jb2Rlciwgb25lIGZvciBkZWNvZGVyLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBh ZGQgY3JvcHBpbmcgc3VwcG9ydCBmb3IgZW5jb2RlciBpbiBnL3Nfc2VsZWN0aW9uIGlvY3Rscy4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg DQogICAgY2hhbmdlIGV4aWYgbW9kZSBzdXBwb3J0IGJ5IHVzaW5nIFY0TDJfSlBFR19BQ1RJVkVf TUFSS0VSX0FQUDEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgDQogICAgY2hhbmdlIE1US19KUEVHX01BWF9XSURUSC9NVEtfSlBFR19NQVhf SEVJR0ggZnJvbSA4MTkyIHRvIDY1NTM1IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgbW92ZSB3 aWR0aCBzaGlmdGluZyBvcGVyYXRpb24gYmVoaW5kIGFsaWduaW5nIG9wZXJhdGlvbiBpbiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg ICBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUoKSBmb3IgYnVnIGZpeC4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgZml4IHVz ZXIgYWJ1c2VpbmcgZGF0YV9vZmZzZXQgaXNzdWUgZm9yIERNQUJVRiBpbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBtdGtfanBl Z19zZXRfZW5jX3NyYygpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICANCiAgICBmaXgga2J1aWxkIHdhcmluZ3M6IGNoYW5nZSBNVEtfSlBF R19NSU5fSEVJR0hUL01US19KUEVHX01BWF9IRUlHSFQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGFu ZCBNVEtfSlBFR19NSU5fV0lEVEgvTVRLX0pQRUdfTUFYX1dJRFRIIGZyb20gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg ICAgICAgICAgICdpbnQnIHR5cGUgdG8gJ3Vuc2lnbmVkIGludCcgdHlwZS4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg ICAgICAgICAgICAgICBmaXggbXNsZWFkaW5nbHkgaW5kZW50ZWQgb2YgJ2Vsc2UnLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnYz OiBkZWxldGUgQ2hhbmdlLUlkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAgICBvbmx5IHRlc3Qgb25jZSBoYW5kbGVyLT5lcnJvciBh ZnRlciB0aGUgbGFzdCB2NGwyX2N0cmxfbmV3X3N0ZCgpLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBzZXBlcmF0ZSBjaGFuZ2VzIG9m IHY0bDItY3RybHMuYyBhbmQgdjRsMi1jb250cm9scy5oIHRvIG5ldyBwYXRjaC4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnYyOiBmaXgg Y29tcGxpYW5jZSB0ZXN0IGZhaWwsIGNoZWNrIGNyZWF0ZWQgYnVmZmVyIHNpemUgaW4gZHJpdmVy LiANCi0tLQ0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUgICAgICB8 ICAgNSArLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMgICB8 IDY4MSArKysrKysrKysrKysrKy0tLS0NCiAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfY29yZS5oICAgfCAgNDMgKy0NCiAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfZGVjX2h3LmggfCAgIDcgKy0NCiAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfZW5jX2h3LmMgfCAyNzMgKysrKysrKw0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBl Zy9tdGtfanBlZ19lbmNfaHcuaCB8ICA4NiArKysNCiAuLi4vcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfZW5jX3JlZy5oICAgICAgfCAgNzggKysNCiA3IGZpbGVzIGNoYW5nZWQsIDEwMDcgaW5z ZXJ0aW9ucygrKSwgMTY2IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgN CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19lbmNfcmVnLmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWpwZWcvTWFrZWZpbGUgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL01ha2VmaWxl DQppbmRleCA0ODUxNmRjZjk2ZTYuLjc2YzMzYWFkMGYzZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCkBAIC0xLDMgKzEsNiBAQA0KICMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KLW10a19qcGVnLW9ianMgOj0gbXRrX2pwZWdfY29y ZS5vIG10a19qcGVnX2RlY19ody5vIG10a19qcGVnX2RlY19wYXJzZS5vDQorbXRrX2pwZWctb2Jq cyA6PSBtdGtfanBlZ19jb3JlLm8gXA0KKwkJIG10a19qcGVnX2RlY19ody5vIFwNCisJCSBtdGtf anBlZ19kZWNfcGFyc2UubyBcDQorCQkgbXRrX2pwZWdfZW5jX2h3Lm8NCiBvYmotJChDT05GSUdf VklERU9fTUVESUFURUtfSlBFRykgKz0gbXRrX2pwZWcubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCmluZGV4IGQ2MjIwZDdhNjkxYS4uNTNh ZTk0YTdlZWUwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9t dGtfanBlZ19jb3JlLmMNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRr X2pwZWdfY29yZS5jDQpAQCAtMyw2ICszLDcgQEANCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWVk aWFUZWsgSW5jLg0KICAqIEF1dGhvcjogTWluZyBIc2l1IFRzYWkgPG1pbmdoc2l1LnRzYWlAbWVk aWF0ZWsuY29tPg0KICAqICAgICAgICAgUmljayBDaGFuZyA8cmljay5jaGFuZ0BtZWRpYXRlay5j b20+DQorICogICAgICAgICBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQogICov DQogDQogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KQEAgLTIzLDYgKzI0LDcgQEANCiAjaW5jbHVk ZSA8bWVkaWEvdmlkZW9idWYyLWRtYS1jb250aWcuaD4NCiAjaW5jbHVkZSA8c29jL21lZGlhdGVr L3NtaS5oPg0KIA0KKyNpbmNsdWRlICJtdGtfanBlZ19lbmNfaHcuaCINCiAjaW5jbHVkZSAibXRr X2pwZWdfZGVjX2h3LmgiDQogI2luY2x1ZGUgIm10a19qcGVnX2NvcmUuaCINCiAjaW5jbHVkZSAi bXRrX2pwZWdfZGVjX3BhcnNlLmgiDQpAQCAtMzEsNyArMzMsOCBAQCBzdGF0aWMgc3RydWN0IG10 a19qcGVnX2ZtdCBtdGtfanBlZ19mb3JtYXRzW10gPSB7DQogCXsNCiAJCS5mb3VyY2MJCT0gVjRM Ml9QSVhfRk1UX0pQRUcsDQogCQkuY29scGxhbmVzCT0gMSwNCi0JCS5mbGFncwkJPSBNVEtfSlBF R19GTVRfRkxBR19ERUNfT1VUUFVULA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0RF Q19PVVRQVVQgfA0KKwkJCQkgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFLA0KIAl9LA0K IAl7DQogCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVVY0MjBNLA0KQEAgLTUxLDYgKzU0LDQy IEBAIHN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2Zvcm1hdHNbXSA9IHsNCiAJ CS52X2FsaWduCT0gMywNCiAJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQVFVS RSwNCiAJfSwNCisJew0KKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfTlYxMk0sDQorCQkuaF9z YW1wbGUJPSB7NCwgMiwgMn0sDQorCQkudl9zYW1wbGUJPSB7NCwgMiwgMn0sDQorCQkuY29scGxh bmVzCT0gMiwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2FsaWduCT0gNCwNCisJCS5mbGFncwkJ PSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KKwl9LA0KKwl7DQorCQkuZm91cmNjCQk9 IFY0TDJfUElYX0ZNVF9OVjIxTSwNCisJCS5oX3NhbXBsZQk9IHs0LCAyLCAyfSwNCisJCS52X3Nh bXBsZQk9IHs0LCAyLCAyfSwNCisJCS5jb2xwbGFuZXMJPSAyLA0KKwkJLmhfYWxpZ24JPSA0LA0K KwkJLnZfYWxpZ24JPSA0LA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQ VVQsDQorCX0sDQorCXsNCisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lVWVYsDQorCQkuaF9z YW1wbGUJPSB7NCwgMiwgMn0sDQorCQkudl9zYW1wbGUJPSB7NCwgNCwgNH0sDQorCQkuY29scGxh bmVzCT0gMSwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2FsaWduCT0gMywNCisJCS5mbGFncwkJ PSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KKwl9LA0KKwl7DQorCQkuZm91cmNjCQk9 IFY0TDJfUElYX0ZNVF9ZVllVLA0KKwkJLmhfc2FtcGxlCT0gezQsIDIsIDJ9LA0KKwkJLnZfc2Ft cGxlCT0gezQsIDQsIDR9LA0KKwkJLmNvbHBsYW5lcwk9IDEsDQorCQkuaF9hbGlnbgk9IDQsDQor CQkudl9hbGlnbgk9IDMsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBV VCwNCisJfSwNCiB9Ow0KIA0KICNkZWZpbmUgTVRLX0pQRUdfTlVNX0ZPUk1BVFMgQVJSQVlfU0la RShtdGtfanBlZ19mb3JtYXRzKQ0KQEAgLTcwLDYgKzEwOSwxMSBAQCBzdHJ1Y3QgbXRrX2pwZWdf c3JjX2J1ZiB7DQogc3RhdGljIGludCBkZWJ1ZzsNCiBtb2R1bGVfcGFyYW0oZGVidWcsIGludCwg MDY0NCk7DQogDQorc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHJsX3RvX2N0 eChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KK3sNCisJcmV0dXJuIGNvbnRhaW5lcl9vZihjdHJs LT5oYW5kbGVyLCBzdHJ1Y3QgbXRrX2pwZWdfY3R4LCBjdHJsX2hkbCk7DQorfQ0KKw0KIHN0YXRp YyBpbmxpbmUgc3RydWN0IG10a19qcGVnX2N0eCAqbXRrX2pwZWdfZmhfdG9fY3R4KHN0cnVjdCB2 NGwyX2ZoICpmaCkNCiB7DQogCXJldHVybiBjb250YWluZXJfb2YoZmgsIHN0cnVjdCBtdGtfanBl Z19jdHgsIGZoKTsNCkBAIC04NiwxNCArMTMwLDY5IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcXVl cnljYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogew0KIAlzdHJ1Y3QgbXRrX2pw ZWdfZGV2ICpqcGVnID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsNCiANCi0Jc3Ryc2NweShjYXAtPmRy aXZlciwgTVRLX0pQRUdfTkFNRSAiIGRlY29kZXIiLCBzaXplb2YoY2FwLT5kcml2ZXIpKTsNCi0J c3Ryc2NweShjYXAtPmNhcmQsIE1US19KUEVHX05BTUUgIiBkZWNvZGVyIiwgc2l6ZW9mKGNhcC0+ Y2FyZCkpOw0KKwlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBNVEtfSlBFR19OQU1FLCBzaXplb2YoY2Fw LT5kcml2ZXIpKTsNCisJaWYgKGpwZWctPm1vZGUgPT0gIE1US19KUEVHX0VOQykNCisJCXN0cnNj cHkoY2FwLT5jYXJkLCBNVEtfSlBFR19OQU1FICIgZW5jb2RlciIsIHNpemVvZihjYXAtPmNhcmQp KTsNCisJZWxzZQ0KKwkJc3Ryc2NweShjYXAtPmNhcmQsIE1US19KUEVHX05BTUUgIiBkZWNvZGVy Iiwgc2l6ZW9mKGNhcC0+Y2FyZCkpOw0KIAlzbnByaW50ZihjYXAtPmJ1c19pbmZvLCBzaXplb2Yo Y2FwLT5idXNfaW5mbyksICJwbGF0Zm9ybTolcyIsDQogCQkgZGV2X25hbWUoanBlZy0+ZGV2KSk7 DQogDQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgaW50IHZpZGlvY19qcGVnX3NfY3RybChz dHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0g Y3RybF90b19jdHgoY3RybCk7DQorCWludCByZXQgPSAwOw0KKw0KKwlzd2l0Y2ggKGN0cmwtPmlk KSB7DQorCWNhc2UgVjRMMl9DSURfSlBFR19SRVNUQVJUX0lOVEVSVkFMOg0KKwkJY3R4LT5yZXN0 YXJ0X2ludGVydmFsID0gY3RybC0+dmFsOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRMMl9DSURfSlBF R19DT01QUkVTU0lPTl9RVUFMSVRZOg0KKwkJY3R4LT5lbmNfcXVhbGl0eSA9IGN0cmwtPnZhbDsN CisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktFUjoNCisJCWN0eC0+ ZW5hYmxlX2V4aWYgPSBjdHJsLT52YWwgJiBWNEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxOw0K KwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0 cnVjdCB2NGwyX2N0cmxfb3BzIG10a19qcGVnX2N0cmxfb3BzID0gew0KKwkuc19jdHJsID0gdmlk aW9jX2pwZWdfc19jdHJsLA0KK307DQorDQorc3RhdGljIGludCBtdGtfanBlZ19jdHJsc19zZXR1 cChzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorew0KKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJs X29wcyAqb3BzID0gJm10a19qcGVnX2N0cmxfb3BzOw0KKwlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRs ZXIgKmhhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBl ZyA9IGN0eC0+anBlZzsNCisNCisJdjRsMl9jdHJsX2hhbmRsZXJfaW5pdChoYW5kbGVyLCAzKTsN CisNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQl2NGwyX2N0cmxfbmV3 X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfUkVTVEFSVF9JTlRFUlZBTCwNCisJCQkJ ICAwLCAxMDAsIDEsIDApOw0KKwkJdjRsMl9jdHJsX25ld19zdGQoaGFuZGxlciwgb3BzLA0KKwkJ CQkgIFY0TDJfQ0lEX0pQRUdfQ09NUFJFU1NJT05fUVVBTElUWSwgNDgsIDEwMCwgMSwNCisJCQkJ ICA5MCk7DQorCQl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdf QUNUSVZFX01BUktFUiwgMCwNCisJCQkJICBWNEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxLCAw LCAwKTsNCisNCisJCWlmIChoYW5kbGVyLT5lcnJvcikgew0KKwkJCXY0bDJfY3RybF9oYW5kbGVy X2ZyZWUoJmN0eC0+Y3RybF9oZGwpOw0KKwkJCXJldHVybiBoYW5kbGVyLT5lcnJvcjsNCisJCX0N CisJfQ0KKw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cCgmY3R4LT5jdHJsX2hkbCk7DQorDQor CXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IG10a19qcGVnX2VudW1fZm10KHN0cnVjdCBt dGtfanBlZ19mbXQgKm10a19qcGVnX2Zvcm1hdHMsIGludCBuLA0KIAkJCSAgICAgc3RydWN0IHY0 bDJfZm10ZGVzYyAqZiwgdTMyIHR5cGUpDQogew0KQEAgLTExOCwxOSArMjE3LDI3IEBAIHN0YXRp YyBpbnQgbXRrX2pwZWdfZW51bV9mbXQoc3RydWN0IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZm9y bWF0cywgaW50IG4sDQogc3RhdGljIGludCBtdGtfanBlZ19lbnVtX2ZtdF92aWRfY2FwKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkgICAgIHN0cnVjdCB2NGwyX2ZtdGRlc2Mg KmYpDQogew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgo cHJpdik7DQorDQogCXJldHVybiBtdGtfanBlZ19lbnVtX2ZtdChtdGtfanBlZ19mb3JtYXRzLCBN VEtfSlBFR19OVU1fRk9STUFUUywgZiwNCisJCQkJIGN0eC0+anBlZy0+bW9kZSA9PSBNVEtfSlBF R19FTkMgPw0KKwkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRVUkUgOg0KIAkJCQkgTVRL X0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUpOw0KIH0NCiANCiBzdGF0aWMgaW50IG10a19qcGVn X2VudW1fZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCSAg ICAgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikNCiB7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0 eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCisNCiAJcmV0dXJuIG10a19qcGVnX2VudW1f Zm10KG10a19qcGVnX2Zvcm1hdHMsIE1US19KUEVHX05VTV9GT1JNQVRTLCBmLA0KKwkJCQkgY3R4 LT5qcGVnLT5tb2RlID09IE1US19KUEVHX0VOQyA/DQorCQkJCSBNVEtfSlBFR19GTVRfRkxBR19F TkNfT1VUUFVUIDoNCiAJCQkJIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQpOw0KIH0NCiAN Ci1zdGF0aWMgc3RydWN0IG10a19qcGVnX3FfZGF0YSAqbXRrX2pwZWdfZ2V0X3FfZGF0YShzdHJ1 Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQotCQkJCQkJICAgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUp DQorc3RhdGljIHN0cnVjdCBtdGtfanBlZ19xX2RhdGEgKg0KK210a19qcGVnX2dldF9xX2RhdGEo c3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSkNCiB7DQog CWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHR5cGUpKQ0KIAkJcmV0dXJuICZjdHgtPm91dF9xOw0K QEAgLTE0Myw5ICsyNTAsMTQgQEAgc3RhdGljIHN0cnVjdCBtdGtfanBlZ19mbXQgKm10a19qcGVn X2ZpbmRfZm9ybWF0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiB7DQogCXVuc2lnbmVkIGlu dCBrLCBmbXRfZmxhZzsNCiANCi0JZm10X2ZsYWcgPSAoZm10X3R5cGUgPT0gTVRLX0pQRUdfRk1U X1RZUEVfT1VUUFVUKSA/DQotCQkgICBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUIDoNCi0J CSAgIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFOw0KKwlpZiAoY3R4LT5qcGVnLT5tb2Rl ID09ICBNVEtfSlBFR19FTkMpDQorCQlmbXRfZmxhZyA9IChmbXRfdHlwZSA9PSBNVEtfSlBFR19G TVRfVFlQRV9PVVRQVVQpID8NCisJCQkgICBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUIDoN CisJCQkgICBNVEtfSlBFR19GTVRfRkxBR19FTkNfQ0FQVFVSRTsNCisJZWxzZQ0KKwkJZm10X2Zs YWcgPSAoZm10X3R5cGUgPT0gTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKSA/DQorCQkJICAgTVRL X0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVCA6DQorCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVD X0NBUFRVUkU7DQogDQogCWZvciAoayA9IDA7IGsgPCBNVEtfSlBFR19OVU1fRk9STUFUUzsgaysr KSB7DQogCQlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQgPSAmbXRrX2pwZWdfZm9ybWF0c1trXTsN CkBAIC0xNzcsOSArMjg5LDczIEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2FkanVzdF9mbXRfbXBs YW5lKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJfQ0KIH0NCiANCi1zdGF0aWMgaW50IG10 a19qcGVnX3RyeV9mbXRfbXBsYW5lKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwNCi0JCQkJICAgc3Ry dWN0IG10a19qcGVnX2ZtdCAqZm10LA0KLQkJCQkgICBzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgs IGludCBxX3R5cGUpDQorc3RhdGljIGludCBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUoc3Ry dWN0IHY0bDJfZm9ybWF0ICpmLA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2ZtdCAqZm10 LA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBpbnQgcV90eXBlKQ0KK3sN CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQucGl4X21w Ow0KKwlpbnQgaTsNCisNCisJbWVtc2V0KHBpeF9tcC0+cmVzZXJ2ZWQsIDAsIHNpemVvZihwaXhf bXAtPnJlc2VydmVkKSk7DQorCXBpeF9tcC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQorDQor CWlmIChjdHgtPnN0YXRlICE9IE1US19KUEVHX0lOSVQpIHsNCisJCW10a19qcGVnX2FkanVzdF9m bXRfbXBsYW5lKGN0eCwgZik7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlwaXhfbXAtPm51bV9w bGFuZXMgPSBmbXQtPmNvbHBsYW5lczsNCisJcGl4X21wLT5waXhlbGZvcm1hdCA9IGZtdC0+Zm91 cmNjOw0KKw0KKwlpZiAocV90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkgew0KKwkJ aWYgKHBpeF9tcC0+bnVtX3BsYW5lcyA9PSAxVSkgew0KKwkJCXBpeF9tcC0+aGVpZ2h0ID0gY2xh bXAocm91bmRfdXAocGl4X21wLT5oZWlnaHQsIDgpLA0KKwkJCQkJICAgICAgIE1US19KUEVHX01J Tl9IRUlHSFQsDQorCQkJCQkgICAgICAgTVRLX0pQRUdfTUFYX0hFSUdIVCk7DQorCQkJcGl4X21w LT53aWR0aCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9tcC0+d2lkdGgsIDMyKSwNCisJCQkJCSAgICAg IE1US19KUEVHX01JTl9XSURUSCwNCisJCQkJCSAgICAgIE1US19KUEVHX01BWF9XSURUSCk7DQor CQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lID0gcGl4X21wLT53aWR0aCAqIDI7 DQorCQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID0NCisJCQkJcGl4X21wLT53aWR0 aCAqIHBpeF9tcC0+aGVpZ2h0ICogMjsNCisJCX0NCisJCWlmIChwaXhfbXAtPm51bV9wbGFuZXMg PT0gMlUpIHsNCisJCQlwaXhfbXAtPmhlaWdodCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9tcC0+aGVp Z2h0LCAxNiksDQorCQkJCQkgICAgICAgTVRLX0pQRUdfTUlOX0hFSUdIVCwNCisJCQkJCSAgICAg ICBNVEtfSlBFR19NQVhfSEVJR0hUKTsNCisJCQlwaXhfbXAtPndpZHRoID0gY2xhbXAocm91bmRf dXAocGl4X21wLT53aWR0aCwgMTYpLA0KKwkJCQkJICAgICAgTVRLX0pQRUdfTUlOX1dJRFRILA0K KwkJCQkJICAgICAgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCisJCQlmb3IgKGkgPSAwOyBpIDwgcGl4 X21wLT5udW1fcGxhbmVzOyBpKyspIHsNCisJCQkJcGl4X21wLT5wbGFuZV9mbXRbaV0uYnl0ZXNw ZXJsaW5lID0NCisJCQkJCXBpeF9tcC0+d2lkdGg7DQorCQkJCXBpeF9tcC0+cGxhbmVfZm10W2ld LnNpemVpbWFnZSA9DQorCQkJCQlwaXhfbXAtPndpZHRoICogcGl4X21wLT5oZWlnaHQgLw0KKwkJ CQkJKGkgKyAxKTsNCisJCQl9DQorCQl9DQorCX0gZWxzZSB7DQorCQlwaXhfbXAtPmhlaWdodCA9 IGNsYW1wKHBpeF9tcC0+aGVpZ2h0LCBNVEtfSlBFR19NSU5fSEVJR0hULA0KKwkJCQkgICAgICAg TVRLX0pQRUdfTUFYX0hFSUdIVCk7DQorCQlwaXhfbXAtPndpZHRoID0gY2xhbXAocGl4X21wLT53 aWR0aCwgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJCQkgICAgICBNVEtfSlBFR19NQVhfV0lEVEgp Ow0KKw0KKwkJaWYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9KUEVHKSB7DQorCQkJcGl4 X21wLT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lID0gMDsNCisJCQlwaXhfbXAtPnBsYW5lX2Zt dFswXS5zaXplaW1hZ2UgPQ0KKwkJCQlyb3VuZF91cChwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXpl aW1hZ2UsIDEyOCk7DQorCQkJaWYgKHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSA9PSAw KQ0KKwkJCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UgPQ0KKwkJCQkJTVRLX0pQRUdf REVGQVVMVF9TSVpFSU1BR0U7DQorCQl9DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0 YXRpYyBpbnQgbXRrX2pwZWdfdHJ5X2RlY19mbXRfbXBsYW5lKHN0cnVjdCB2NGwyX2Zvcm1hdCAq ZiwNCisJCQkJICAgICAgIHN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdCwNCisJCQkJICAgICAgIHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgaW50IHFfdHlwZSkNCiB7DQogCXN0cnVjdCB2NGwyX3Bp eF9mb3JtYXRfbXBsYW5lICpwaXhfbXAgPSAmZi0+Zm10LnBpeF9tcDsNCiAJaW50IGk7DQpAQCAt Mjg2LDYgKzQ2Miw3IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfdHJ5X2ZtdF92aWRfY2FwX21wbGFu ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19j dHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCiAJc3RydWN0IG10a19qcGVnX2Zt dCAqZm10Ow0KKwlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KIA0KIAlm bXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQs DQogCQkJCSAgIE1US19KUEVHX0ZNVF9UWVBFX0NBUFRVUkUpOw0KQEAgLTI5OSw3ICs0NzYsMTIg QEAgc3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X3ZpZF9jYXBfbXBsYW5lKHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpwcml2LA0KIAkJIChmbXQtPmZvdXJjYyA+PiAxNiAmIDB4ZmYpLA0KIAkJ IChmbXQtPmZvdXJjYyA+PiAyNCAmIDB4ZmYpKTsNCiANCi0JcmV0dXJuIG10a19qcGVnX3RyeV9m bXRfbXBsYW5lKGYsIGZtdCwgY3R4LCBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJaWYg KGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKQ0KKwkJcmV0dXJuIG10a19qcGVnX3RyeV9lbmNf Zm10X21wbGFuZShmLCBmbXQsIGN0eCwNCisJCQkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBU VVJFKTsNCisJZWxzZQ0KKwkJcmV0dXJuIG10a19qcGVnX3RyeV9kZWNfZm10X21wbGFuZShmLCBm bXQsIGN0eCwNCisJCQkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCiB9DQogDQog c3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X3ZpZF9vdXRfbXBsYW5lKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LA0KQEAgLTMwNyw2ICs0ODksNyBAQCBzdGF0aWMgaW50IG10a19qcGVn X3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQog ew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7 DQogCXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdDsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBl ZyA9IGN0eC0+anBlZzsNCiANCiAJZm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBmLT5m bXQucGl4X21wLnBpeGVsZm9ybWF0LA0KIAkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQp Ow0KQEAgLTMyMCw3ICs1MDMsMTIgQEAgc3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X3ZpZF9v dXRfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJIChmbXQtPmZvdXJj YyA+PiAxNiAmIDB4ZmYpLA0KIAkJIChmbXQtPmZvdXJjYyA+PiAyNCAmIDB4ZmYpKTsNCiANCi0J cmV0dXJuIG10a19qcGVnX3RyeV9mbXRfbXBsYW5lKGYsIGZtdCwgY3R4LCBNVEtfSlBFR19GTVRf VFlQRV9PVVRQVVQpOw0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpDQorCQlyZXR1 cm4gbXRrX2pwZWdfdHJ5X2VuY19mbXRfbXBsYW5lKGYsIGZtdCwgY3R4LA0KKwkJCQkJCSAgIE1U S19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWVsc2UNCisJCXJldHVybiBtdGtfanBlZ190cnlf ZGVjX2ZtdF9tcGxhbmUoZiwgZm10LCBjdHgsDQorCQkJCQkJICAgTVRLX0pQRUdfRk1UX1RZUEVf T1VUUFVUKTsNCiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19zX2ZtdF9tcGxhbmUoc3RydWN0 IG10a19qcGVnX2N0eCAqY3R4LA0KQEAgLTQyNSwyOCArNjEzLDQ4IEBAIHN0YXRpYyBpbnQgbXRr X2pwZWdfZ19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCXN0 cnVjdCB2NGwyX3NlbGVjdGlvbiAqcykNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9 IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9 IGN0eC0+anBlZzsNCiANCi0JaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBU VVJFKQ0KLQkJcmV0dXJuIC1FSU5WQUw7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VO Qykgew0KKwkJaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQpDQorCQkJ cmV0dXJuIC1FSU5WQUw7DQogDQotCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQotCWNhc2UgVjRMMl9T RUxfVEdUX0NPTVBPU0U6DQotCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0VfREVGQVVMVDoNCi0J CXMtPnIud2lkdGggPSBjdHgtPm91dF9xLnc7DQotCQlzLT5yLmhlaWdodCA9IGN0eC0+b3V0X3Eu aDsNCi0JCXMtPnIubGVmdCA9IDA7DQotCQlzLT5yLnRvcCA9IDA7DQotCQlicmVhazsNCi0JY2Fz ZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFM6DQotCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBP U0VfUEFEREVEOg0KLQkJcy0+ci53aWR0aCA9IGN0eC0+Y2FwX3EudzsNCi0JCXMtPnIuaGVpZ2h0 ID0gY3R4LT5jYXBfcS5oOw0KLQkJcy0+ci5sZWZ0ID0gMDsNCi0JCXMtPnIudG9wID0gMDsNCi0J CWJyZWFrOw0KLQlkZWZhdWx0Og0KLQkJcmV0dXJuIC1FSU5WQUw7DQorCQlzd2l0Y2ggKHMtPnRh cmdldCkgew0KKwkJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUDoNCisJCWNhc2UgVjRMMl9TRUxfVEdU X0NST1BfQk9VTkRTOg0KKwkJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUF9ERUZBVUxUOg0KKwkJCXMt PnIud2lkdGggPSBjdHgtPm91dF9xLnc7DQorCQkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7 DQorCQkJcy0+ci5sZWZ0ID0gMDsNCisJCQlzLT5yLnRvcCA9IDA7DQorCQkJYnJlYWs7DQorCQlk ZWZhdWx0Og0KKwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KKwl9IGVsc2Ugew0KKwkJaWYgKHMt PnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFKQ0KKwkJCXJldHVybiAtRUlOVkFM Ow0KKw0KKwkJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBP U0U6DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX0RFRkFVTFQ6DQorCQkJcy0+ci53aWR0 aCA9IGN0eC0+b3V0X3EudzsNCisJCQlzLT5yLmhlaWdodCA9IGN0eC0+b3V0X3EuaDsNCisJCQlz LT5yLmxlZnQgPSAwOw0KKwkJCXMtPnIudG9wID0gMDsNCisJCQlicmVhazsNCisJCWNhc2UgVjRM Ml9TRUxfVEdUX0NPTVBPU0VfQk9VTkRTOg0KKwkJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9Q QURERUQ6DQorCQkJcy0+ci53aWR0aCA9IGN0eC0+Y2FwX3EudzsNCisJCQlzLT5yLmhlaWdodCA9 IGN0eC0+Y2FwX3EuaDsNCisJCQlzLT5yLmxlZnQgPSAwOw0KKwkJCXMtPnIudG9wID0gMDsNCisJ CQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQogCX0NCisN CiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTQ1NCwyMCArNjYyLDM4IEBAIHN0YXRpYyBpbnQgbXRr X2pwZWdfc19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCXN0 cnVjdCB2NGwyX3NlbGVjdGlvbiAqcykNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9 IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9 IGN0eC0+anBlZzsNCiANCi0JaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBU VVJFKQ0KLQkJcmV0dXJuIC1FSU5WQUw7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VO Qykgew0KKwkJaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQpDQorCQkJ cmV0dXJuIC1FSU5WQUw7DQogDQotCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQotCWNhc2UgVjRMMl9T RUxfVEdUX0NPTVBPU0U6DQotCQlzLT5yLmxlZnQgPSAwOw0KLQkJcy0+ci50b3AgPSAwOw0KLQkJ Y3R4LT5vdXRfcS53ID0gcy0+ci53aWR0aDsNCi0JCWN0eC0+b3V0X3EuaCA9IHMtPnIuaGVpZ2h0 Ow0KLQkJYnJlYWs7DQotCWRlZmF1bHQ6DQotCQlyZXR1cm4gLUVJTlZBTDsNCisJCXN3aXRjaCAo cy0+dGFyZ2V0KSB7DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DUk9QOg0KKwkJCXMtPnIubGVmdCA9 IDA7DQorCQkJcy0+ci50b3AgPSAwOw0KKwkJCWN0eC0+b3V0X3EudyA9IHMtPnIud2lkdGg7DQor CQkJY3R4LT5vdXRfcS5oID0gcy0+ci5oZWlnaHQ7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0K KwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KKwl9IGVsc2Ugew0KKwkJaWYgKHMtPnR5cGUgIT0g VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFKQ0KKwkJCXJldHVybiAtRUlOVkFMOw0KKw0KKwkJ c3dpdGNoIChzLT50YXJnZXQpIHsNCisJCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0U6DQorCQkJ cy0+ci5sZWZ0ID0gMDsNCisJCQlzLT5yLnRvcCA9IDA7DQorCQkJY3R4LT5vdXRfcS53ID0gcy0+ ci53aWR0aDsNCisJCQljdHgtPm91dF9xLmggPSBzLT5yLmhlaWdodDsNCisJCQlicmVhazsNCisJ CWRlZmF1bHQ6DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQogCX0NCisNCiAJcmV0dXJuIDA7 DQogfQ0KIA0KQEAgLTY0MywyOSArODY5LDQyIEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2J1Zl9x dWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQogCQlnb3RvIGVuZDsNCiANCiAJanBlZ19zcmNf YnVmID0gbXRrX2pwZWdfdmIyX3RvX3NyY2J1Zih2Yik7DQotCXBhcmFtID0gJmpwZWdfc3JjX2J1 Zi0+ZGVjX3BhcmFtOw0KLQltZW1zZXQocGFyYW0sIDAsIHNpemVvZigqcGFyYW0pKTsNCi0NCi0J aWYgKGpwZWdfc3JjX2J1Zi0+ZmxhZ3MgJiBNVEtfSlBFR19CVUZfRkxBR1NfTEFTVF9GUkFNRSkg ew0KLQkJdjRsMl9kYmcoMSwgZGVidWcsICZqcGVnLT52NGwyX2RldiwgIkdvdCBlb3NcbiIpOw0K LQkJZ290byBlbmQ7DQotCX0NCi0JaGVhZGVyX3ZhbGlkID0gbXRrX2pwZWdfcGFyc2UocGFyYW0s ICh1OCAqKXZiMl9wbGFuZV92YWRkcih2YiwgMCksDQotCQkJCSAgICAgIHZiMl9nZXRfcGxhbmVf cGF5bG9hZCh2YiwgMCkpOw0KLQlpZiAoIWhlYWRlcl92YWxpZCkgew0KLQkJdjRsMl9lcnIoJmpw ZWctPnY0bDJfZGV2LCAiSGVhZGVyIGludmFsaWQuXG4iKTsNCi0JCXZiMl9idWZmZXJfZG9uZSh2 YiwgVkIyX0JVRl9TVEFURV9FUlJPUik7DQotCQlyZXR1cm47DQotCX0NCi0NCi0JaWYgKGN0eC0+ c3RhdGUgPT0gTVRLX0pQRUdfSU5JVCkgew0KLQkJc3RydWN0IHZiMl9xdWV1ZSAqZHN0X3ZxID0g djRsMl9tMm1fZ2V0X3ZxKA0KLQkJCWN0eC0+ZmgubTJtX2N0eCwgVjRMMl9CVUZfVFlQRV9WSURF T19DQVBUVVJFX01QTEFORSk7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykgew0K KwkJaWYgKGpwZWdfc3JjX2J1Zi0+ZmxhZ3MgJiBNVEtfSlBFR19CVUZfRkxBR1NfTEFTVF9GUkFN RSkgew0KKwkJCXY0bDJfZGJnKDEsIGRlYnVnLCAmanBlZy0+djRsMl9kZXYsICJHb3QgZW9zIik7 DQorCQkJZ290byBlbmQ7DQorCQl9DQorCQlpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfSlBFR19JTklU KQ0KKwkJCWN0eC0+c3RhdGUgPSBNVEtfSlBFR19SVU5OSU5HOw0KKwl9IGVsc2Ugew0KKwkJcGFy YW0gPSAmanBlZ19zcmNfYnVmLT5kZWNfcGFyYW07DQorCQltZW1zZXQocGFyYW0sIDAsIHNpemVv ZigqcGFyYW0pKTsNCisNCisJCWlmIChqcGVnX3NyY19idWYtPmZsYWdzICYgTVRLX0pQRUdfQlVG X0ZMQUdTX0xBU1RfRlJBTUUpIHsNCisJCQl2NGwyX2RiZygxLCBkZWJ1ZywgJmpwZWctPnY0bDJf ZGV2LCAiR290IGVvc1xuIik7DQorCQkJZ290byBlbmQ7DQorCQl9DQorCQloZWFkZXJfdmFsaWQg PSBtdGtfanBlZ19wYXJzZShwYXJhbSwNCisJCQkJCSAgICAgICh1OCAqKXZiMl9wbGFuZV92YWRk cih2YiwgMCksDQorCQkJCQkgICAgICB2YjJfZ2V0X3BsYW5lX3BheWxvYWQodmIsIDApKTsNCisJ CWlmICghaGVhZGVyX3ZhbGlkKSB7DQorCQkJdjRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAiSGVh ZGVyIGludmFsaWQuXG4iKTsNCisJCQl2YjJfYnVmZmVyX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVf RVJST1IpOw0KKwkJCXJldHVybjsNCisJCX0NCiANCi0JCW10a19qcGVnX3F1ZXVlX3NyY19jaGdf ZXZlbnQoY3R4KTsNCi0JCW10a19qcGVnX3NldF9xdWV1ZV9kYXRhKGN0eCwgcGFyYW0pOw0KLQkJ Y3R4LT5zdGF0ZSA9IHZiMl9pc19zdHJlYW1pbmcoZHN0X3ZxKSA/DQotCQkJCU1US19KUEVHX1NP VVJDRV9DSEFOR0UgOiBNVEtfSlBFR19SVU5OSU5HOw0KKwkJaWYgKGN0eC0+c3RhdGUgPT0gTVRL X0pQRUdfSU5JVCkgew0KKwkJCXN0cnVjdCB2YjJfcXVldWUgKmRzdF92cTsNCisNCisJCQlkc3Rf dnEgPSB2NGwyX20ybV9nZXRfdnENCisJCQkJCShjdHgtPmZoLm0ybV9jdHgsDQorCQkJCQkgVjRM Ml9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORSk7DQorCQkJbXRrX2pwZWdfcXVldWVfc3Jj X2NoZ19ldmVudChjdHgpOw0KKwkJCW10a19qcGVnX3NldF9xdWV1ZV9kYXRhKGN0eCwgcGFyYW0p Ow0KKwkJCWN0eC0+c3RhdGUgPSB2YjJfaXNfc3RyZWFtaW5nKGRzdF92cSkgPw0KKwkJCQkJTVRL X0pQRUdfU09VUkNFX0NIQU5HRSA6DQorCQkJCQlNVEtfSlBFR19SVU5OSU5HOw0KKwkJfQ0KIAl9 DQogZW5kOg0KIAl2NGwyX20ybV9idWZfcXVldWUoY3R4LT5maC5tMm1fY3R4LCB0b192YjJfdjRs Ml9idWZmZXIodmIpKTsNCkBAIC03MDgsMTYgKzk0NywxNiBAQCBzdGF0aWMgdm9pZCBtdGtfanBl Z19zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQ0KIAkgKiBzdWJzYW1wbGluZy4g VXBkYXRlIGNhcHR1cmUgcXVldWUgd2hlbiB0aGUgc3RyZWFtIGlzIG9mZi4NCiAJICovDQogCWlm IChjdHgtPnN0YXRlID09IE1US19KUEVHX1NPVVJDRV9DSEFOR0UgJiYNCi0JICAgICFWNEwyX1RZ UEVfSVNfT1VUUFVUKHEtPnR5cGUpKSB7DQorCSAgICAhVjRMMl9UWVBFX0lTX09VVFBVVChxLT50 eXBlKSAmJg0KKwkgICAgY3R4LT5qcGVnLT5tb2RlID09IE1US19KUEVHX0RFQykgew0KIAkJc3Ry dWN0IG10a19qcGVnX3NyY19idWYgKnNyY19idWY7DQogDQogCQl2YiA9IHY0bDJfbTJtX25leHRf c3JjX2J1ZihjdHgtPmZoLm0ybV9jdHgpOw0KIAkJc3JjX2J1ZiA9IG10a19qcGVnX3ZiMl90b19z cmNidWYoJnZiLT52YjJfYnVmKTsNCiAJCW10a19qcGVnX3NldF9xdWV1ZV9kYXRhKGN0eCwgJnNy Y19idWYtPmRlY19wYXJhbSk7DQogCQljdHgtPnN0YXRlID0gTVRLX0pQRUdfUlVOTklORzsNCi0J fSBlbHNlIGlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHEtPnR5cGUpKSB7DQorCX0gZWxzZSBpZiAo VjRMMl9UWVBFX0lTX09VVFBVVChxLT50eXBlKSkNCiAJCWN0eC0+c3RhdGUgPSBNVEtfSlBFR19J TklUOw0KLQl9DQogDQogCXdoaWxlICgodmIgPSBtdGtfanBlZ19idWZfcmVtb3ZlKGN0eCwgcS0+ dHlwZSkpKQ0KIAkJdjRsMl9tMm1fYnVmX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVfRVJST1IpOw0K QEAgLTc3Miw2ICsxMDExLDQ1IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfc2V0X2RlY19kc3Qoc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4LA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIHZvaWQg bXRrX2pwZWdfc2V0X2VuY19kc3Qoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCB2b2lkIF9faW9t ZW0gKmJhc2UsDQorCQkJCSBzdHJ1Y3QgdmIyX2J1ZmZlciAqZHN0X2J1ZiwNCisJCQkJIHN0cnVj dCBtdGtfanBlZ19lbmNfYnMgKmJzKQ0KK3sNCisJYnMtPmRtYV9hZGRyID0gdmIyX2RtYV9jb250 aWdfcGxhbmVfZG1hX2FkZHIoZHN0X2J1ZiwgMCk7DQorCWJzLT5kbWFfYWRkcl9vZmZzZXQgPSBj dHgtPmVuYWJsZV9leGlmID8gTVRLX0pQRUdfREVGQVVMVF9FWElGX1NJWkUgOiAwOw0KKwlicy0+ ZG1hX2FkZHJfb2Zmc2V0bWFzayA9IGJzLT5kbWFfYWRkciAmIEpQRUdfRU5DX0RTVF9BRERSX09G RlNFVF9NQVNLOw0KKwlicy0+c2l6ZSA9IHJvdW5kX3VwKHZiMl9wbGFuZV9zaXplKGRzdF9idWYs IDApLCAxMjgpOw0KKw0KKwltdGtfanBlZ19lbmNfc2V0X2RzdF9hZGRyKGJhc2UsIGJzLT5kbWFf YWRkciwgYnMtPnNpemUsDQorCQkJCSAgYnMtPmRtYV9hZGRyX29mZnNldCwNCisJCQkJICBicy0+ ZG1hX2FkZHJfb2Zmc2V0bWFzayk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3NldF9l bmNfc3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJ CQkgc3RydWN0IHZiMl9idWZmZXIgKnNyY19idWYsDQorCQkJCSBzdHJ1Y3QgbXRrX2pwZWdfZW5j X2ZiICpmYikNCit7DQorCWludCBpOw0KKw0KKwltdGtfanBlZ19lbmNfc2V0X2ltZ19zaXplKGJh c2UsIGN0eC0+b3V0X3EudywgY3R4LT5vdXRfcS5oKTsNCisJbXRrX2pwZWdfZW5jX3NldF9lbmNf Zm9ybWF0KGJhc2UsIGN0eC0+b3V0X3EuZm10LT5mb3VyY2MpOw0KKwltdGtfanBlZ19lbmNfc2V0 X2Jsa19udW0oYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJjYywgY3R4LT5vdXRfcS53LA0KKwkJ CQkgY3R4LT5vdXRfcS5oKTsNCisJbXRrX2pwZWdfZW5jX3NldF9zdHJpZGUoYmFzZSwgY3R4LT5v dXRfcS5mbXQtPmZvdXJjYywgY3R4LT5vdXRfcS53LA0KKwkJCQljdHgtPm91dF9xLmgsIGN0eC0+ b3V0X3EuYnl0ZXNwZXJsaW5lWzBdKTsNCisNCisJZm9yIChpID0gMDsgaSA8IHNyY19idWYtPm51 bV9wbGFuZXM7IGkrKykgew0KKwkJZmItPmZiX2FkZHJbaV0uZG1hX2FkZHIgPQ0KKwkJCXZiMl9k bWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHNyY19idWYsIGkpICsNCisJCQlzcmNfYnVmLT5wbGFu ZXNbaV0uZGF0YV9vZmZzZXQ7DQorCQlmYi0+ZmJfYWRkcltpXS5zaXplID0gdmIyX3BsYW5lX3Np emUoc3JjX2J1ZiwgaSkgLQ0KKwkJCQkgICAgICBzcmNfYnVmLT5wbGFuZXNbaV0uZGF0YV9vZmZz ZXQ7DQorCX0NCisNCisJbXRrX2pwZWdfZW5jX3NldF9zcmNfYWRkcihiYXNlLCBmYi0+ZmJfYWRk clswXS5kbWFfYWRkciwNCisJCQkJICBmYi0+ZmJfYWRkclsxXS5kbWFfYWRkcik7DQorfQ0KKw0K IHN0YXRpYyB2b2lkIG10a19qcGVnX2RldmljZV9ydW4odm9pZCAqcHJpdikNCiB7DQogCXN0cnVj dCBtdGtfanBlZ19jdHggKmN0eCA9IHByaXY7DQpAQCAtNzgxLDYgKzEwNTksOCBAQCBzdGF0aWMg dm9pZCBtdGtfanBlZ19kZXZpY2VfcnVuKHZvaWQgKnByaXYpDQogCXN0cnVjdCBtdGtfanBlZ19z cmNfYnVmICpqcGVnX3NyY19idWY7DQogCXN0cnVjdCBtdGtfanBlZ19icyBiczsNCiAJc3RydWN0 IG10a19qcGVnX2ZiIGZiOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzIGVuY19iczsNCisJc3Ry dWN0IG10a19qcGVnX2VuY19mYiBlbmNfZmI7DQogCWludCBpOw0KIA0KIAlzcmNfYnVmID0gdjRs Ml9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7DQpAQCAtNzkxLDI4ICsxMDcxLDQ0 IEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2RldmljZV9ydW4odm9pZCAqcHJpdikNCiAJCWZvciAo aSA9IDA7IGkgPCBkc3RfYnVmLT52YjJfYnVmLm51bV9wbGFuZXM7IGkrKykNCiAJCQl2YjJfc2V0 X3BsYW5lX3BheWxvYWQoJmRzdF9idWYtPnZiMl9idWYsIGksIDApOw0KIAkJYnVmX3N0YXRlID0g VkIyX0JVRl9TVEFURV9ET05FOw0KLQkJZ290byBkZWNfZW5kOw0KKwkJZ290byBkZXZpY2VfcnVu X2VuZDsNCiAJfQ0KIA0KLQlpZiAobXRrX2pwZWdfY2hlY2tfcmVzb2x1dGlvbl9jaGFuZ2UoY3R4 LCAmanBlZ19zcmNfYnVmLT5kZWNfcGFyYW0pKSB7DQotCQltdGtfanBlZ19xdWV1ZV9zcmNfY2hn X2V2ZW50KGN0eCk7DQotCQljdHgtPnN0YXRlID0gTVRLX0pQRUdfU09VUkNFX0NIQU5HRTsNCi0J CXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCi0J CXJldHVybjsNCi0JfQ0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCW10 a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQorCQltdGtfanBlZ19zZXRfZW5j X2RzdChjdHgsIGpwZWctPnJlZ19iYXNlLCAmZHN0X2J1Zi0+dmIyX2J1ZiwNCisJCQkJICAgICAm ZW5jX2JzKTsNCisJCW10a19qcGVnX3NldF9lbmNfc3JjKGN0eCwganBlZy0+cmVnX2Jhc2UsICZz cmNfYnVmLT52YjJfYnVmLA0KKwkJCQkgICAgICZlbmNfZmIpOw0KKwkJbXRrX2pwZWdfZW5jX3Nl dF9jdHJsX2NmZyhqcGVnLT5yZWdfYmFzZSwgY3R4LT5lbmFibGVfZXhpZiwNCisJCQkJCSAgY3R4 LT5lbmNfcXVhbGl0eSwNCisJCQkJCSAgY3R4LT5yZXN0YXJ0X2ludGVydmFsKTsNCisNCisJCW10 a19qcGVnX2VuY19zdGFydChqcGVnLT5yZWdfYmFzZSk7DQorCX0gZWxzZSB7DQorCQlpZiAobXRr X2pwZWdfY2hlY2tfcmVzb2x1dGlvbl9jaGFuZ2UNCisJCQkoY3R4LCAmanBlZ19zcmNfYnVmLT5k ZWNfcGFyYW0pKSB7DQorCQkJbXRrX2pwZWdfcXVldWVfc3JjX2NoZ19ldmVudChjdHgpOw0KKwkJ CWN0eC0+c3RhdGUgPSBNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFOw0KKwkJCXY0bDJfbTJtX2pvYl9m aW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCisJCQlyZXR1cm47DQorCQl9 DQogDQotCW10a19qcGVnX3NldF9kZWNfc3JjKGN0eCwgJnNyY19idWYtPnZiMl9idWYsICZicyk7 DQotCWlmIChtdGtfanBlZ19zZXRfZGVjX2RzdChjdHgsICZqcGVnX3NyY19idWYtPmRlY19wYXJh bSwgJmRzdF9idWYtPnZiMl9idWYsICZmYikpDQotCQlnb3RvIGRlY19lbmQ7DQorCQltdGtfanBl Z19zZXRfZGVjX3NyYyhjdHgsICZzcmNfYnVmLT52YjJfYnVmLCAmYnMpOw0KKwkJaWYgKG10a19q cGVnX3NldF9kZWNfZHN0KGN0eCwgJmpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLA0KKwkJCQkJICZk c3RfYnVmLT52YjJfYnVmLCAmZmIpKQ0KKwkJCWdvdG8gZGV2aWNlX3J1bl9lbmQ7DQogDQotCW10 a19qcGVnX2RlY19yZXNldChqcGVnLT5kZWNfcmVnX2Jhc2UpOw0KLQltdGtfanBlZ19kZWNfc2V0 X2NvbmZpZyhqcGVnLT5kZWNfcmVnX2Jhc2UsDQotCQkJCSZqcGVnX3NyY19idWYtPmRlY19wYXJh bSwgJmJzLCAmZmIpOw0KKwkJbXRrX2pwZWdfZGVjX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisJ CW10a19qcGVnX2RlY19zZXRfY29uZmlnKGpwZWctPnJlZ19iYXNlLA0KKwkJCQkJJmpwZWdfc3Jj X2J1Zi0+ZGVjX3BhcmFtLCAmYnMsICZmYik7DQogDQotCW10a19qcGVnX2RlY19zdGFydChqcGVn LT5kZWNfcmVnX2Jhc2UpOw0KKwkJbXRrX2pwZWdfZGVjX3N0YXJ0KGpwZWctPnJlZ19iYXNlKTsN CisJfQ0KIAlyZXR1cm47DQogDQotZGVjX2VuZDoNCitkZXZpY2VfcnVuX2VuZDoNCiAJdjRsMl9t Mm1fc3JjX2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCiAJdjRsMl9tMm1fZHN0X2J1Zl9y ZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCiAJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVm X3N0YXRlKTsNCkBAIC04NzIsMzAgKzExNjgsMzAgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xr X29uKHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQogCXJldCA9IG10a19zbWlfbGFyYl9nZXQo anBlZy0+bGFyYik7DQogCWlmIChyZXQpDQogCQlkZXZfZXJyKGpwZWctPmRldiwgIm10a19zbWlf bGFyYl9nZXQgbGFyYnZkZWMgZmFpbCAlZFxuIiwgcmV0KTsNCi0JY2xrX3ByZXBhcmVfZW5hYmxl KGpwZWctPmNsa19qZGVjX3NtaSk7DQotCWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRl Yyk7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0RFQykNCisJCWNsa19wcmVwYXJlX2Vu YWJsZShqcGVnLT5jbGtfanBlZ19zbWkpOw0KKwljbGtfcHJlcGFyZV9lbmFibGUoanBlZy0+Y2xr X2pwZWcpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBtdGtfanBlZ19jbGtfb2ZmKHN0cnVjdCBtdGtf anBlZ19kZXYgKmpwZWcpDQogew0KLQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xrX2pk ZWMpOw0KLQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xrX2pkZWNfc21pKTsNCisJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qcGVnKTsNCisJaWYgKGpwZWctPm1vZGUgPT0g TVRLX0pQRUdfREVDKQ0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qcGVnX3Nt aSk7DQogCW10a19zbWlfbGFyYl9wdXQoanBlZy0+bGFyYik7DQogfQ0KIA0KLXN0YXRpYyBpcnFy ZXR1cm5fdCBtdGtfanBlZ19kZWNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpDQorc3RhdGljIGly cXJldHVybl90IG10a19qcGVnX2lycShpbnQgaXJxLCB2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0 IG10a19qcGVnX2RldiAqanBlZyA9IHByaXY7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eDsN CiAJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7DQogCXN0cnVjdCBt dGtfanBlZ19zcmNfYnVmICpqcGVnX3NyY19idWY7DQogCWVudW0gdmIyX2J1ZmZlcl9zdGF0ZSBi dWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0VSUk9SOw0KLQl1MzIJZGVjX2lycV9yZXQ7DQotCXUz MiBkZWNfcmV0Ow0KKwl1MzIgaXJxX3JldDsNCisJdTMyIHJldCwgcmVzdWx0X3NpemU7DQogCWlu dCBpOw0KIA0KLQlkZWNfcmV0ID0gbXRrX2pwZWdfZGVjX2dldF9pbnRfc3RhdHVzKGpwZWctPmRl Y19yZWdfYmFzZSk7DQotCWRlY19pcnFfcmV0ID0gbXRrX2pwZWdfZGVjX2VudW1fcmVzdWx0KGRl Y19yZXQpOw0KIAljdHggPSB2NGwyX20ybV9nZXRfY3Vycl9wcml2KGpwZWctPm0ybV9kZXYpOw0K IAlpZiAoIWN0eCkgew0KIAkJdjRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAiQ29udGV4dCBpcyBO VUxMXG4iKTsNCkBAIC05MDYsMzIgKzEyMDIsODkgQEAgc3RhdGljIGlycXJldHVybl90IG10a19q cGVnX2RlY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCiAJZHN0X2J1ZiA9IHY0bDJfbTJtX2Rz dF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQogCWpwZWdfc3JjX2J1ZiA9IG10a19qcGVn X3ZiMl90b19zcmNidWYoJnNyY19idWYtPnZiMl9idWYpOw0KIA0KLQlpZiAoZGVjX2lycV9yZXQg Pj0gTVRLX0pQRUdfREVDX1JFU1VMVF9VTkRFUkZMT1cpDQotCQltdGtfanBlZ19kZWNfcmVzZXQo anBlZy0+ZGVjX3JlZ19iYXNlKTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7 DQorCQlyZXQgPSBtdGtfanBlZ19lbmNfZ2V0X2ludF9zdGF0dXMoanBlZy0+cmVnX2Jhc2UpOw0K KwkJaXJxX3JldCA9IG10a19qcGVnX2VuY19lbnVtX3Jlc3VsdChqcGVnLT5yZWdfYmFzZSwgcmV0 KTsNCiANCi0JaWYgKGRlY19pcnFfcmV0ICE9IE1US19KUEVHX0RFQ19SRVNVTFRfRU9GX0RPTkUp IHsNCi0JCWRldl9lcnIoanBlZy0+ZGV2LCAiZGVjb2RlIGZhaWxlZFxuIik7DQotCQlnb3RvIGRl Y19lbmQ7DQotCX0NCisJCWlmIChpcnFfcmV0ID49IE1US19KUEVHX0VOQ19SRVNVTFRfU1RBTEwp DQorCQkJbXRrX2pwZWdfZW5jX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisNCisJCWlmIChpcnFf cmV0ICE9IE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORSkgew0KKwkJCWRldl9lcnIoanBlZy0+ZGV2 LCAiZW5jb2RlIGZhaWxlZFxuIik7DQorCQkJZ290byBpcnFfZW5kOw0KKwkJfQ0KKw0KKwkJcmVz dWx0X3NpemUgPSBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZShqcGVnLT5yZWdfYmFzZSk7DQor CQl2YjJfc2V0X3BsYW5lX3BheWxvYWQoJmRzdF9idWYtPnZiMl9idWYsIDAsDQorCQkJCSAgICAg IHJlc3VsdF9zaXplKTsNCisJfSBlbHNlIHsNCisJCXJldCA9IG10a19qcGVnX2RlY19nZXRfaW50 X3N0YXR1cyhqcGVnLT5yZWdfYmFzZSk7DQorCQlpcnFfcmV0ID0gbXRrX2pwZWdfZGVjX2VudW1f cmVzdWx0KHJldCk7DQorDQorCQlpZiAoaXJxX3JldCA+PSBNVEtfSlBFR19ERUNfUkVTVUxUX1VO REVSRkxPVykNCisJCQltdGtfanBlZ19kZWNfcmVzZXQoanBlZy0+cmVnX2Jhc2UpOw0KIA0KLQlm b3IgKGkgPSAwOyBpIDwgZHN0X2J1Zi0+dmIyX2J1Zi5udW1fcGxhbmVzOyBpKyspDQotCQl2YjJf c2V0X3BsYW5lX3BheWxvYWQoJmRzdF9idWYtPnZiMl9idWYsIGksDQotCQkJCSAgICAgIGpwZWdf c3JjX2J1Zi0+ZGVjX3BhcmFtLmNvbXBfc2l6ZVtpXSk7DQorCQlpZiAoaXJxX3JldCAhPSBNVEtf SlBFR19ERUNfUkVTVUxUX0VPRl9ET05FKSB7DQorCQkJZGV2X2VycihqcGVnLT5kZXYsICJkZWNv ZGUgZmFpbGVkXG4iKTsNCisJCQlnb3RvIGlycV9lbmQ7DQorCQl9DQorDQorCQlmb3IgKGkgPSAw OyBpIDwgZHN0X2J1Zi0+dmIyX2J1Zi5udW1fcGxhbmVzOyBpKyspDQorCQkJdmIyX3NldF9wbGFu ZV9wYXlsb2FkDQorCQkJCSgmZHN0X2J1Zi0+dmIyX2J1ZiwgaSwNCisJCQkJIGpwZWdfc3JjX2J1 Zi0+ZGVjX3BhcmFtLmNvbXBfc2l6ZVtpXSk7DQorCX0NCiANCiAJYnVmX3N0YXRlID0gVkIyX0JV Rl9TVEFURV9ET05FOw0KIA0KLWRlY19lbmQ6DQoraXJxX2VuZDoNCiAJdjRsMl9tMm1fYnVmX2Rv bmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsNCiAJdjRsMl9tMm1fYnVmX2RvbmUoZHN0X2J1ZiwgYnVm X3N0YXRlKTsNCiAJdjRsMl9tMm1fam9iX2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0y bV9jdHgpOw0KIAlyZXR1cm4gSVJRX0hBTkRMRUQ7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG10a19q cGVnX3NldF9kZWZhdWx0X3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorc3RhdGlj IHZvaWQgbXRrX2pwZWdfc2V0X2VuY19kZWZhdWx0X3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4 ICpjdHgpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhICpxID0gJmN0eC0+b3V0X3E7DQor DQorCWN0eC0+ZmguY3RybF9oYW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7DQorDQorCWN0eC0+Y29s b3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9KUEVHLA0KKwljdHgtPnljYmNyX2VuYyA9IFY0TDJf WUNCQ1JfRU5DX0RFRkFVTFQ7DQorCWN0eC0+cXVhbnRpemF0aW9uID0gVjRMMl9RVUFOVElaQVRJ T05fREVGQVVMVDsNCisJY3R4LT54ZmVyX2Z1bmMgPSBWNEwyX1hGRVJfRlVOQ19ERUZBVUxUOw0K Kw0KKwlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KKwlxLT5oID0gTVRLX0pQRUdfTUlOX0hF SUdIVDsNCisNCisJcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBWNEwyX1BJWF9G TVRfWVVZViwNCisJCQkJICAgICAgTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCisNCisJcS0+ dyA9IGNsYW1wKHJvdW5kX3VwKHEtPncsIDMyKSwgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJICAg ICBNVEtfSlBFR19NQVhfV0lEVEgpOw0KKwlxLT5oID0gY2xhbXAocm91bmRfdXAocS0+aCwgOCks IE1US19KUEVHX01JTl9IRUlHSFQsDQorCQkgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKw0K KwlxLT5zaXplaW1hZ2VbMF0gPSBxLT53ICogcS0+aCAqIDI7DQorCXEtPmJ5dGVzcGVybGluZVsw XSA9IHEtPncgKiAyOw0KKw0KKwlxID0gJmN0eC0+Y2FwX3E7DQorCXEtPncgPSBNVEtfSlBFR19N SU5fV0lEVEg7DQorCXEtPmggPSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KKwlxLT5mbXQgPSBtdGtf anBlZ19maW5kX2Zvcm1hdChjdHgsIFY0TDJfUElYX0ZNVF9KUEVHLA0KKwkJCQkgICAgICBNVEtf SlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gMDsNCisJcS0+ c2l6ZWltYWdlWzBdID0gTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7DQorfQ0KKw0KK3N0YXRp YyB2b2lkIG10a19qcGVnX3NldF9kZWNfZGVmYXVsdF9wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX3FfZGF0YSAqcSA9ICZjdHgtPm91dF9xOw0K IAlpbnQgaTsNCiANCisJY3R4LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCisN CiAJY3R4LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQogCWN0eC0+eWNiY3Jf ZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCiAJY3R4LT5xdWFudGl6YXRpb24gPSBWNEwy X1FVQU5USVpBVElPTl9ERUZBVUxUOw0KQEAgLTk4Nyw3ICsxMzQwLDE4IEBAIHN0YXRpYyBpbnQg bXRrX2pwZWdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCiAJCWdvdG8gZXJyb3I7DQogCX0NCiAN Ci0JbXRrX2pwZWdfc2V0X2RlZmF1bHRfcGFyYW1zKGN0eCk7DQorCXJldCA9IG10a19qcGVnX2N0 cmxzX3NldHVwKGN0eCk7DQorCWlmIChyZXQpIHsNCisJCXY0bDJfZXJyKCZqcGVnLT52NGwyX2Rl diwgIkZhaWxlZCB0byBzZXR1cCBjb250cm9scygpICglZClcbiIsDQorCQkJIHJldCk7DQorCQln b3RvIGVycm9yOw0KKwl9DQorDQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykNCisJ CW10a19qcGVnX3NldF9lbmNfZGVmYXVsdF9wYXJhbXMoY3R4KTsNCisJZWxzZQ0KKwkJbXRrX2pw ZWdfc2V0X2RlY19kZWZhdWx0X3BhcmFtcyhjdHgpOw0KKw0KIAltdXRleF91bmxvY2soJmpwZWct PmxvY2spOw0KIAlyZXR1cm4gMDsNCiANCkBAIC0xMDA3LDYgKzEzNzEsNyBAQCBzdGF0aWMgaW50 IG10a19qcGVnX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpDQogDQogCW11dGV4X2xvY2soJmpw ZWctPmxvY2spOw0KIAl2NGwyX20ybV9jdHhfcmVsZWFzZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2 NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCiAJdjRsMl9maF9kZWwoJmN0 eC0+ZmgpOw0KIAl2NGwyX2ZoX2V4aXQoJmN0eC0+ZmgpOw0KIAlrZnJlZShjdHgpOw0KQEAgLTEw NDAsMTkgKzE0MDUsMjQgQEAgc3RhdGljIGludCBtdGtfanBlZ19jbGtfaW5pdChzdHJ1Y3QgbXRr X2pwZWdfZGV2ICpqcGVnKQ0KIA0KIAlqcGVnLT5sYXJiID0gJnBkZXYtPmRldjsNCiANCi0JanBl Zy0+Y2xrX2pkZWMgPSBkZXZtX2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjIik7DQotCWlmIChJ U19FUlIoanBlZy0+Y2xrX2pkZWMpKQ0KLQkJcmV0dXJuIFBUUl9FUlIoanBlZy0+Y2xrX2pkZWMp Ow0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCWpwZWctPmNsa19qcGVn ID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwgImpwZ2VuYyIpOw0KKwkJcmV0dXJuIFBUUl9FUlJf T1JfWkVSTyhqcGVnLT5jbGtfanBlZyk7DQorCX0NCisNCisJanBlZy0+Y2xrX2pwZWcgPSBkZXZt X2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjIik7DQorCWlmIChJU19FUlIoanBlZy0+Y2xrX2pw ZWcpKQ0KKwkJcmV0dXJuIFBUUl9FUlIoanBlZy0+Y2xrX2pwZWcpOw0KIA0KLQlqcGVnLT5jbGtf amRlY19zbWkgPSBkZXZtX2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KLQlyZXR1 cm4gUFRSX0VSUl9PUl9aRVJPKGpwZWctPmNsa19qZGVjX3NtaSk7DQorCWpwZWctPmNsa19qcGVn X3NtaSA9IGRldm1fY2xrX2dldChqcGVnLT5kZXYsICJqcGdkZWMtc21pIik7DQorCXJldHVybiBQ VFJfRVJSX09SX1pFUk8oanBlZy0+Y2xrX2pwZWdfc21pKTsNCiB9DQogDQogc3RhdGljIGludCBt dGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIHsNCiAJc3RydWN0 IG10a19qcGVnX2RldiAqanBlZzsNCiAJc3RydWN0IHJlc291cmNlICpyZXM7DQotCWludCBkZWNf aXJxOw0KKwlpbnQganBlZ19pcnE7DQogCWludCByZXQ7DQogDQogCWpwZWcgPSBkZXZtX2t6YWxs b2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpqcGVnKSwgR0ZQX0tFUk5FTCk7DQpAQCAtMTA2MiwyOCAr MTQzMiwyNiBAQCBzdGF0aWMgaW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQogCW11dGV4X2luaXQoJmpwZWctPmxvY2spOw0KIAlzcGluX2xvY2tfaW5pdCgm anBlZy0+aHdfbG9jayk7DQogCWpwZWctPmRldiA9ICZwZGV2LT5kZXY7DQorCWpwZWctPm1vZGUg PSAoZW51bSBtdGtfanBlZ19tb2RlKW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShqcGVnLT5kZXYp Ow0KIA0KIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOw0KLQlqcGVnLT5kZWNfcmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYt PmRldiwgcmVzKTsNCi0JaWYgKElTX0VSUihqcGVnLT5kZWNfcmVnX2Jhc2UpKSB7DQotCQlyZXQg PSBQVFJfRVJSKGpwZWctPmRlY19yZWdfYmFzZSk7DQorCWpwZWctPnJlZ19iYXNlID0gZGV2bV9p b3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQorCWlmIChJU19FUlIoanBlZy0+cmVn X2Jhc2UpKSB7DQorCQlyZXQgPSBQVFJfRVJSKGpwZWctPnJlZ19iYXNlKTsNCiAJCXJldHVybiBy ZXQ7DQogCX0NCiANCi0JcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS Q0VfSVJRLCAwKTsNCi0JZGVjX2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQotCWlm ICghcmVzIHx8IGRlY19pcnEgPCAwKSB7DQotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQg dG8gZ2V0IGRlY19pcnEgJWQuXG4iLCBkZWNfaXJxKTsNCi0JCXJldCA9IC1FSU5WQUw7DQotCQly ZXR1cm4gcmV0Ow0KKwlqcGVnX2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQorCWlm IChqcGVnX2lycSA8IDApIHsNCisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQg anBlZ19pcnEgJWQuXG4iLCBqcGVnX2lycSk7DQorCQlyZXR1cm4ganBlZ19pcnE7DQogCX0NCiAN Ci0JcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBkZWNfaXJxLCBtdGtfanBlZ19k ZWNfaXJxLCAwLA0KKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJx LCBtdGtfanBlZ19pcnEsIDAsDQogCQkJICAgICAgIHBkZXYtPm5hbWUsIGpwZWcpOw0KIAlpZiAo cmV0KSB7DQotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBkZWNfaXJx ICVkICglZClcbiIsDQotCQkJZGVjX2lycSwgcmV0KTsNCi0JCXJldCA9IC1FSU5WQUw7DQorCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBqcGVnX2lycSAlZCAoJWQpXG4i LA0KKwkJCWpwZWdfaXJxLCByZXQpOw0KIAkJZ290byBlcnJfcmVxX2lycTsNCiAJfQ0KIA0KQEAg LTExMDcsMzMgKzE0NzUsMzUgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KIAkJZ290byBlcnJfbTJtX2luaXQ7DQogCX0NCiANCi0JanBl Zy0+ZGVjX3ZkZXYgPSB2aWRlb19kZXZpY2VfYWxsb2MoKTsNCi0JaWYgKCFqcGVnLT5kZWNfdmRl dikgew0KKwlqcGVnLT52ZmRfanBlZyA9IHZpZGVvX2RldmljZV9hbGxvYygpOw0KKwlpZiAoIWpw ZWctPnZmZF9qcGVnKSB7DQogCQlyZXQgPSAtRU5PTUVNOw0KLQkJZ290byBlcnJfZGVjX3ZkZXZf YWxsb2M7DQorCQlnb3RvIGVycl92ZmRfanBlZ19hbGxvYzsNCiAJfQ0KLQlzbnByaW50ZihqcGVn LT5kZWNfdmRldi0+bmFtZSwgc2l6ZW9mKGpwZWctPmRlY192ZGV2LT5uYW1lKSwNCi0JCSAiJXMt ZGVjIiwgTVRLX0pQRUdfTkFNRSk7DQotCWpwZWctPmRlY192ZGV2LT5mb3BzID0gJm10a19qcGVn X2ZvcHM7DQotCWpwZWctPmRlY192ZGV2LT5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfaW9jdGxfb3Bz Ow0KLQlqcGVnLT5kZWNfdmRldi0+bWlub3IgPSAtMTsNCi0JanBlZy0+ZGVjX3ZkZXYtPnJlbGVh c2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsNCi0JanBlZy0+ZGVjX3ZkZXYtPmxvY2sgPSAmanBl Zy0+bG9jazsNCi0JanBlZy0+ZGVjX3ZkZXYtPnY0bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0K LQlqcGVnLT5kZWNfdmRldi0+dmZsX2RpciA9IFZGTF9ESVJfTTJNOw0KLQlqcGVnLT5kZWNfdmRl di0+ZGV2aWNlX2NhcHMgPSBWNEwyX0NBUF9TVFJFQU1JTkcgfA0KKwlzbnByaW50ZihqcGVnLT52 ZmRfanBlZy0+bmFtZSwgc2l6ZW9mKGpwZWctPnZmZF9qcGVnLT5uYW1lKSwNCisJCSAiJXMtJXMi LCBNVEtfSlBFR19OQU1FLA0KKwkJIGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8gImVuYyIg OiAiZGVjIik7DQorCWpwZWctPnZmZF9qcGVnLT5mb3BzID0gJm10a19qcGVnX2ZvcHM7DQorCWpw ZWctPnZmZF9qcGVnLT5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfaW9jdGxfb3BzOw0KKwlqcGVnLT52 ZmRfanBlZy0+bWlub3IgPSAtMTsNCisJanBlZy0+dmZkX2pwZWctPnJlbGVhc2UgPSB2aWRlb19k ZXZpY2VfcmVsZWFzZTsNCisJanBlZy0+dmZkX2pwZWctPmxvY2sgPSAmanBlZy0+bG9jazsNCisJ anBlZy0+dmZkX2pwZWctPnY0bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0KKwlqcGVnLT52ZmRf anBlZy0+dmZsX2RpciA9IFZGTF9ESVJfTTJNOw0KKwlqcGVnLT52ZmRfanBlZy0+ZGV2aWNlX2Nh cHMgPSBWNEwyX0NBUF9TVFJFQU1JTkcgfA0KIAkJCQkgICAgICBWNEwyX0NBUF9WSURFT19NMk1f TVBMQU5FOw0KIA0KLQlyZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoanBlZy0+ZGVjX3ZkZXYs IFZGTF9UWVBFX0dSQUJCRVIsIDMpOw0KKwlyZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoanBl Zy0+dmZkX2pwZWcsIFZGTF9UWVBFX0dSQUJCRVIsIC0xKTsNCiAJaWYgKHJldCkgew0KIAkJdjRs Ml9lcnIoJmpwZWctPnY0bDJfZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHZpZGVvIGRldmljZVxu Iik7DQotCQlnb3RvIGVycl9kZWNfdmRldl9yZWdpc3RlcjsNCisJCWdvdG8gZXJyX3ZmZF9qcGVn X3JlZ2lzdGVyOw0KIAl9DQogDQotCXZpZGVvX3NldF9kcnZkYXRhKGpwZWctPmRlY192ZGV2LCBq cGVnKTsNCisJdmlkZW9fc2V0X2RydmRhdGEoanBlZy0+dmZkX2pwZWcsIGpwZWcpOw0KIAl2NGwy X2luZm8oJmpwZWctPnY0bDJfZGV2LA0KLQkJICAiZGVjb2RlciBkZXZpY2UgcmVnaXN0ZXJlZCBh cyAvZGV2L3ZpZGVvJWQgKCVkLCVkKVxuIiwNCi0JCSAganBlZy0+ZGVjX3ZkZXYtPm51bSwgVklE RU9fTUFKT1IsIGpwZWctPmRlY192ZGV2LT5taW5vcik7DQorCQkgICJqcGVnIGRldmljZSAlZCBy ZWdpc3RlcmVkIGFzIC9kZXYvdmlkZW8lZCAoJWQsJWQpXG4iLA0KKwkJICBqcGVnLT5tb2RlLCBq cGVnLT52ZmRfanBlZy0+bnVtLCBWSURFT19NQUpPUiwNCisJCSAganBlZy0+dmZkX2pwZWctPm1p bm9yKTsNCiANCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwganBlZyk7DQogDQpAQCAtMTE0 MSwxMCArMTUxMSwxMCBAQCBzdGF0aWMgaW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQogDQogCXJldHVybiAwOw0KIA0KLWVycl9kZWNfdmRldl9yZWdpc3Rl cjoNCi0JdmlkZW9fZGV2aWNlX3JlbGVhc2UoanBlZy0+ZGVjX3ZkZXYpOw0KK2Vycl92ZmRfanBl Z19yZWdpc3RlcjoNCisJdmlkZW9fZGV2aWNlX3JlbGVhc2UoanBlZy0+dmZkX2pwZWcpOw0KIA0K LWVycl9kZWNfdmRldl9hbGxvYzoNCitlcnJfdmZkX2pwZWdfYWxsb2M6DQogCXY0bDJfbTJtX3Jl bGVhc2UoanBlZy0+bTJtX2Rldik7DQogDQogZXJyX20ybV9pbml0Og0KQEAgLTExNjQsOCArMTUz NCw4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0 YShwZGV2KTsNCiANCiAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KLQl2aWRlb191 bnJlZ2lzdGVyX2RldmljZShqcGVnLT5kZWNfdmRldik7DQotCXZpZGVvX2RldmljZV9yZWxlYXNl KGpwZWctPmRlY192ZGV2KTsNCisJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoanBlZy0+dmZkX2pw ZWcpOw0KKwl2aWRlb19kZXZpY2VfcmVsZWFzZShqcGVnLT52ZmRfanBlZyk7DQogCXY0bDJfbTJt X3JlbGVhc2UoanBlZy0+bTJtX2Rldik7DQogCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmpwZWct PnY0bDJfZGV2KTsNCiANCkBAIC0xMTc2LDcgKzE1NDYsMTEgQEAgc3RhdGljIF9fbWF5YmVfdW51 c2VkIGludCBtdGtfanBlZ19wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCiB7DQogCXN0 cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCiANCi0JbXRr X2pwZWdfZGVjX3Jlc2V0KGpwZWctPmRlY19yZWdfYmFzZSk7DQorCWlmIChqcGVnLT5tb2RlID09 IE1US19KUEVHX0VOQykNCisJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQor CWVsc2UNCisJCW10a19qcGVnX2RlY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQogCW10a19q cGVnX2Nsa19vZmYoanBlZyk7DQogDQogCXJldHVybiAwOw0KQEAgLTExODcsNyArMTU2MSwxMCBA QCBzdGF0aWMgX19tYXliZV91bnVzZWQgaW50IG10a19qcGVnX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2 aWNlICpkZXYpDQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsNCiANCiAJbXRrX2pwZWdfY2xrX29uKGpwZWcpOw0KLQltdGtfanBlZ19kZWNfcmVzZXQo anBlZy0+ZGVjX3JlZ19iYXNlKTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKQ0K KwkJbXRrX2pwZWdfZW5jX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisJZWxzZQ0KKwkJbXRrX2pw ZWdfZGVjX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTEy MjMsMTEgKzE2MDAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVn X3BtX29wcyA9IHsNCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfanBlZ19t YXRjaFtdID0gew0KIAl7DQogCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtanBnZGVj IiwNCi0JCS5kYXRhICAgICAgID0gTlVMTCwNCisJCS5kYXRhICAgICAgID0gKHZvaWQgKilNVEtf SlBFR19ERUMsDQogCX0sDQogCXsNCiAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1q cGdkZWMiLA0KLQkJLmRhdGEgICAgICAgPSBOVUxMLA0KKwkJLmRhdGEgICAgICAgPSAodm9pZCAq KU1US19KUEVHX0RFQywNCisJfSwNCisJew0KKwkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXRr LWpwZ2VuYyIsDQorCQkuZGF0YSAgICAgICA9ICh2b2lkICopTVRLX0pQRUdfRU5DLA0KIAl9LA0K IAl7fSwNCiB9Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcv bXRrX2pwZWdfY29yZS5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBl Z19jb3JlLmgNCmluZGV4IGQzMmE2ZmJhYTMxMS4uMDJhMzg3ZDhiZTVkIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCisrKyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oDQpAQCAtMyw2ICsz LDcgQEANCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWVkaWFUZWsgSW5jLg0KICAqIEF1dGhvcjog TWluZyBIc2l1IFRzYWkgPG1pbmdoc2l1LnRzYWlAbWVkaWF0ZWsuY29tPg0KICAqICAgICAgICAg UmljayBDaGFuZyA8cmljay5jaGFuZ0BtZWRpYXRlay5jb20+DQorICogICAgICAgICBYaWEgSmlh bmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQogICovDQogDQogI2lmbmRlZiBfTVRLX0pQRUdf Q09SRV9IDQpAQCAtMTksMTYgKzIwLDE5IEBADQogDQogI2RlZmluZSBNVEtfSlBFR19GTVRfRkxB R19ERUNfT1VUUFVUCUJJVCgwKQ0KICNkZWZpbmUgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRV UkUJQklUKDEpDQorI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgyKQ0K KyNkZWZpbmUgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRVUkUJQklUKDMpDQogDQogI2RlZmlu ZSBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQJMQ0KICNkZWZpbmUgTVRLX0pQRUdfRk1UX1RZUEVf Q0FQVFVSRQkyDQogDQotI2RlZmluZSBNVEtfSlBFR19NSU5fV0lEVEgJMzINCi0jZGVmaW5lIE1U S19KUEVHX01JTl9IRUlHSFQJMzINCi0jZGVmaW5lIE1US19KUEVHX01BWF9XSURUSAk4MTkyDQot I2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTgxOTINCisjZGVmaW5lIE1US19KUEVHX01JTl9X SURUSAkzMlUNCisjZGVmaW5lIE1US19KUEVHX01JTl9IRUlHSFQJMzJVDQorI2RlZmluZSBNVEtf SlBFR19NQVhfV0lEVEgJNjU1MzVVDQorI2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTY1NTM1 VQ0KIA0KICNkZWZpbmUgTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0UJKDEgKiAxMDI0ICogMTAy NCkNCisjZGVmaW5lIE1US19KUEVHX0RFRkFVTFRfRVhJRl9TSVpFCSg2NCAqIDEwMjQpDQogDQog LyoqDQogICogZW51bSBtdGtfanBlZ19jdHhfc3RhdGUgLSBjb250ZXggc3RhdGUgb2YganBlZw0K QEAgLTM5LDYgKzQzLDE0IEBAIGVudW0gbXRrX2pwZWdfY3R4X3N0YXRlIHsNCiAJTVRLX0pQRUdf U09VUkNFX0NIQU5HRSwNCiB9Ow0KIA0KKy8qKg0KKyAqIGVudW0gbXRrX2pwZWdfbW9kZSAtIG1v ZGUgb2YganBlZw0KKyAqLw0KK2VudW0gbXRrX2pwZWdfbW9kZSB7DQorCU1US19KUEVHX0VOQywN CisJTVRLX0pQRUdfREVDLA0KK307DQorDQogLyoqDQogICogc3RydWN0IG10X2pwZWcgLSBKUEVH IElQIGFic3RyYWN0aW9uDQogICogQGxvY2s6CQl0aGUgbXV0ZXggcHJvdGVjdGluZyB0aGlzIHN0 cnVjdHVyZQ0KQEAgLTQ4LDExICs2MCwxMiBAQCBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSB7DQog ICogQHY0bDJfZGV2OgkJdjRsMiBkZXZpY2UgZm9yIG1lbTJtZW0gbW9kZQ0KICAqIEBtMm1fZGV2 OgkJdjRsMiBtZW0ybWVtIGRldmljZSBkYXRhDQogICogQGFsbG9jX2N0eDoJCXZpZGVvYnVmMiBt ZW1vcnkgYWxsb2NhdG9yJ3MgY29udGV4dA0KLSAqIEBkZWNfdmRldjoJCXZpZGVvIGRldmljZSBu b2RlIGZvciBkZWNvZGVyIG1lbTJtZW0gbW9kZQ0KLSAqIEBkZWNfcmVnX2Jhc2U6CUpQRUcgcmVn aXN0ZXJzIG1hcHBpbmcNCi0gKiBAY2xrX2pkZWM6CQlKUEVHIGh3IHdvcmtpbmcgY2xvY2sNCi0g KiBAY2xrX2pkZWNfc21pOglKUEVHIFNNSSBidXMgY2xvY2sNCisgKiBAdmZkX2pwZWc6CQl2aWRl byBkZXZpY2Ugbm9kZSBmb3IganBlZyBtZW0ybWVtIG1vZGUNCisgKiBAcmVnX2Jhc2U6CQlKUEVH IHJlZ2lzdGVycyBtYXBwaW5nDQorICogQGNsa19qcGVnOgkJSlBFRyBodyB3b3JraW5nIGNsb2Nr DQorICogQGNsa19qcGVnX3NtaToJSlBFRyBTTUkgYnVzIGNsb2NrDQogICogQGxhcmI6CQlTTUkg ZGV2aWNlDQorICogQG1vZGU6CQljb21wcmVzc2lvbiAoZW5jb2RlKSBvcGVyYXRpb24gb3IgZGVj b21wcmVzc2lvbiAoZGVjb2RlKQ0KICAqLw0KIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIAlzdHJ1 Y3QgbXV0ZXgJCWxvY2s7DQpAQCAtNjIsMTEgKzc1LDEyIEBAIHN0cnVjdCBtdGtfanBlZ19kZXYg ew0KIAlzdHJ1Y3QgdjRsMl9kZXZpY2UJdjRsMl9kZXY7DQogCXN0cnVjdCB2NGwyX20ybV9kZXYJ Km0ybV9kZXY7DQogCXZvaWQJCQkqYWxsb2NfY3R4Ow0KLQlzdHJ1Y3QgdmlkZW9fZGV2aWNlCSpk ZWNfdmRldjsNCi0Jdm9pZCBfX2lvbWVtCQkqZGVjX3JlZ19iYXNlOw0KLQlzdHJ1Y3QgY2xrCQkq Y2xrX2pkZWM7DQotCXN0cnVjdCBjbGsJCSpjbGtfamRlY19zbWk7DQorCXN0cnVjdCB2aWRlb19k ZXZpY2UJKnZmZF9qcGVnOw0KKwl2b2lkIF9faW9tZW0JCSpyZWdfYmFzZTsNCisJc3RydWN0IGNs awkJKmNsa19qcGVnOw0KKwlzdHJ1Y3QgY2xrCQkqY2xrX2pwZWdfc21pOw0KIAlzdHJ1Y3QgZGV2 aWNlCQkqbGFyYjsNCisJZW51bSBtdGtfanBlZ19tb2RlCW1vZGU7DQogfTsNCiANCiAvKioNCkBA IC0xMTMsNiArMTI3LDcgQEAgc3RydWN0IG10a19qcGVnX3FfZGF0YSB7DQogICogQGNhcF9xOgkJ ZGVzdGluYXRpb24gKGNhcHR1cmUpIHF1ZXVlIHF1ZXVlIGluZm9ybWF0aW9uDQogICogQGZoOgkJ CVY0TDIgZmlsZSBoYW5kbGUNCiAgKiBAc3RhdGU6CQlzdGF0ZSBvZiB0aGUgY29udGV4dA0KKyAq IEBjdHJsX2hkbDoJCWNvbnRyb2xzIGhhbmRsZXINCiAgKiBAY29sb3JzcGFjZTogZW51bSB2NGwy X2NvbG9yc3BhY2U7IHN1cHBsZW1lbnRhbCB0byBwaXhlbGZvcm1hdA0KICAqIEB5Y2Jjcl9lbmM6 IGVudW0gdjRsMl95Y2Jjcl9lbmNvZGluZywgWSdDYkNyIGVuY29kaW5nDQogICogQHF1YW50aXph dGlvbjogZW51bSB2NGwyX3F1YW50aXphdGlvbiwgY29sb3JzcGFjZSBxdWFudGl6YXRpb24NCkBA IC0xMjQsNiArMTM5LDEwIEBAIHN0cnVjdCBtdGtfanBlZ19jdHggew0KIAlzdHJ1Y3QgbXRrX2pw ZWdfcV9kYXRhCQljYXBfcTsNCiAJc3RydWN0IHY0bDJfZmgJCQlmaDsNCiAJZW51bSBtdGtfanBl Z19jdHhfc3RhdGUJCXN0YXRlOw0KKwl1OAkJCQllbmFibGVfZXhpZjsNCisJdTgJCQkJZW5jX3F1 YWxpdHk7DQorCXU4CQkJCXJlc3RhcnRfaW50ZXJ2YWw7DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFu ZGxlcgljdHJsX2hkbDsNCiANCiAJZW51bSB2NGwyX2NvbG9yc3BhY2UgY29sb3JzcGFjZTsNCiAJ ZW51bSB2NGwyX3ljYmNyX2VuY29kaW5nIHljYmNyX2VuYzsNCmRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2RlY19ody5oIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19kZWNfaHcuaA0KaW5kZXggMWNjMzdkYmZjOGU3 Li5jZTI2M2RiNWYzMGEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1q cGVnL210a19qcGVnX2RlY19ody5oDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1q cGVnL210a19qcGVnX2RlY19ody5oDQpAQCAtMywxMCArMywxMSBAQA0KICAqIENvcHlyaWdodCAo YykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hz aXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5n QG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVr LmNvbT4NCiAgKi8NCiANCi0jaWZuZGVmIF9NVEtfSlBFR19IV19IDQotI2RlZmluZSBfTVRLX0pQ RUdfSFdfSA0KKyNpZm5kZWYgX01US19KUEVHX0RFQ19IV19IDQorI2RlZmluZSBfTVRLX0pQRUdf REVDX0hXX0gNCiANCiAjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4NCiANCkBAIC03 NSw0ICs3Niw0IEBAIHZvaWQgbXRrX2pwZWdfZGVjX3NldF9jb25maWcodm9pZCBfX2lvbWVtICpi YXNlLA0KIHZvaWQgbXRrX2pwZWdfZGVjX3Jlc2V0KHZvaWQgX19pb21lbSAqZGVjX3JlZ19iYXNl KTsNCiB2b2lkIG10a19qcGVnX2RlY19zdGFydCh2b2lkIF9faW9tZW0gKmRlY19yZWdfYmFzZSk7 DQogDQotI2VuZGlmIC8qIF9NVEtfSlBFR19IV19IICovDQorI2VuZGlmIC8qIF9NVEtfSlBFR19E RUNfSFdfSCAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcv bXRrX2pwZWdfZW5jX2h3LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19q cGVnX2VuY19ody5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5k YTNlN2E4M2E4MGENCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMNCkBAIC0wLDAgKzEsMjczIEBADQorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KKy8qDQorICogQ29weXJpZ2h0IChjKSAy MDE5IE1lZGlhVGVrIEluYy4NCisgKiBBdXRob3I6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlh dGVrLmNvbT4NCisgKg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4NCisN CisjaW5jbHVkZSAibXRrX2pwZWdfZW5jX2h3LmgiDQorDQorc3RhdGljIHN0cnVjdCBtdGtfanBl Z19lbmNfcWx0IG10a19qcGVnX2VuY19xdWFsaXR5W10gPSB7DQorCXsNCisJCS5xdWFsaXR5X3Bh cmFtCQk9IDk3LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTcsDQor CX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDk1LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0g SlBFR19FTkNfUVVBTElUWV9ROTUsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDky LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTIsDQorCX0sDQorCXsN CisJCS5xdWFsaXR5X3BhcmFtCQk9IDkwLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNf UVVBTElUWV9ROTAsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDg3LA0KKwkJLmhh cmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODcsDQorCX0sDQorCXsNCisJCS5xdWFs aXR5X3BhcmFtCQk9IDg0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9R ODQsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDgyLA0KKwkJLmhhcmR3YXJlX3Zh bHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODIsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFt CQk9IDgwLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODAsDQorCX0s DQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDc0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBF R19FTkNfUVVBTElUWV9RNzQsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDY4LA0K KwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNjgsDQorCX0sDQorCXsNCisJ CS5xdWFsaXR5X3BhcmFtCQk9IDY0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVB TElUWV9RNjQsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDYwLA0KKwkJLmhhcmR3 YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNjAsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5 X3BhcmFtCQk9IDQ4LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNDgs DQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDM5LA0KKwkJLmhhcmR3YXJlX3ZhbHVl CT0gSlBFR19FTkNfUVVBTElUWV9RMzksDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9 IDM0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RMzQsDQorCX0sDQor fTsNCisNCisjZGVmaW5lIE1US19KUEVHX0VOQ19OVU1fUVVBTElUWSBBUlJBWV9TSVpFKG10a19q cGVnX2VuY19xdWFsaXR5KQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21l bSAqYmFzZSkNCit7DQorCXdyaXRlbCgweDAwLCBiYXNlICsgSlBFR19FTkNfUlNUQik7DQorCXdy aXRlbChKUEVHX0VOQ19SRVNFVF9CSVQsIGJhc2UgKyBKUEVHX0VOQ19SU1RCKTsNCisJd3JpdGVs KDB4MDAsIGJhc2UgKyBKUEVHX0VOQ19DT0RFQ19TRUwpOw0KK30NCisNCit1MzIgbXRrX2pwZWdf ZW5jX2dldF9pbnRfc3RhdHVzKHZvaWQgX19pb21lbSAqYmFzZSkNCit7DQorCXUzMiByZXQ7DQor DQorCXJldCA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19JTlRfU1RTKSAmDQorCQkgICAgSlBFR19F TkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUTsNCisJaWYgKHJldCkNCisJCXdyaXRlbCgwLCBiYXNl ICsgSlBFR19FTkNfSU5UX1NUUyk7DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3UzMiBtdGtf anBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UpDQorew0KKwlyZXR1cm4g cmVhZGwoYmFzZSArIEpQRUdfRU5DX0RNQV9BRERSMCkgLQ0KKwkgICAgICAgcmVhZGwoYmFzZSAr IEpQRUdfRU5DX0RTVF9BRERSMCk7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1 bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgaXJxX3N0YXR1cykNCit7DQorCWlmIChpcnFfc3Rh dHVzICYgSlBFR19FTkNfSU5UX1NUQVRVU19ET05FKQ0KKwkJcmV0dXJuIE1US19KUEVHX0VOQ19S RVNVTFRfRE9ORTsNCisJZWxzZSBpZiAoaXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNf U1RBTEwpDQorCQlyZXR1cm4gTVRLX0pQRUdfRU5DX1JFU1VMVF9TVEFMTDsNCisJZWxzZSBpZiAo aXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfVkNPREVDX0lSUSkNCisJCXJldHVybiBN VEtfSlBFR19FTkNfUkVTVUxUX1ZDT0RFQ19JUlE7DQorCXJldHVybiBNVEtfSlBFR19FTkNfUkVT VUxUX0VSUk9SX1VOS05PV047DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6 ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCkNCit7DQorCXUzMiB2 YWx1ZTsNCisNCisJdmFsdWUgPSBKUEVHX0VOQ19XSURUSF9IRUlHSFQod2lkdGgsIGhlaWdodCk7 DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0lNR19TSVpFKTsNCit9DQorDQordm9p ZCBtdGtfanBlZ19lbmNfc2V0X2VuY19mb3JtYXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5j X2Zvcm1hdCkNCit7DQorCXUzMiB5dXZfZm9ybWF0LCB2YWx1ZTsNCisNCisJeXV2X2Zvcm1hdCA9 IEpQRUdfRU5DX1lVVl9GT1JNQVRfWVVZVjsNCisJc3dpdGNoIChlbmNfZm9ybWF0KSB7DQorCWNh c2UgVjRMMl9QSVhfRk1UX1lVWVY6DQorCQl5dXZfZm9ybWF0ID0gSlBFR19FTkNfWVVWX0ZPUk1B VF9ZVVlWOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRMMl9QSVhfRk1UX1lWWVU6DQorCQl5dXZfZm9y bWF0ID0gSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVllVOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRMMl9Q SVhfRk1UX05WMTJNOg0KKwkJeXV2X2Zvcm1hdCA9IEpQRUdfRU5DX1lVVl9GT1JNQVRfTlYxMjsN CisJCWJyZWFrOw0KKwljYXNlIFY0TDJfUElYX0ZNVF9OVjIxTToNCisJCXl1dl9mb3JtYXQgPSBK UEVHX0VOQ19ZVVZfRk9STUFUX05WMTI7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFr Ow0KKwl9DQorDQorCXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl2YWx1 ZSAmPSB+SlBFR19FTkNfQ1RSTF9ZVVZfRk9STUFUX01BU0s7DQorCXZhbHVlIHw9IEpQRUdfRU5D X0ZPUk1BVCh5dXZfZm9ybWF0KTsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfQ1RS TCk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9ibGtfbnVtKHZvaWQgX19pb21lbSAq YmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJCQkgICAgICB1MzIgaGVpZ2h0KQ0K K3sNCisJdTMyIGJsa19udW07DQorCXUzMiBpc180MjA7DQorCXUzMiBwYWRkaW5nX3dpZHRoOw0K Kwl1MzIgcGFkZGluZ19oZWlnaHQ7DQorDQorCWlzXzQyMCA9IChlbmNfZm9ybWF0ID09IFY0TDJf UElYX0ZNVF9OVjEyTSB8fA0KKwkJICBlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjIxTSkg PyAxIDogMDsNCisJcGFkZGluZ193aWR0aCA9IHJvdW5kX3VwKHdpZHRoLCAxNik7DQorCXBhZGRp bmdfaGVpZ2h0ID0gcm91bmRfdXAoaGVpZ2h0LCBpc180MjAgPyAxNiA6IDgpOw0KKw0KKwlibGtf bnVtID0gKHBhZGRpbmdfd2lkdGggPj4gNCkgKiAocGFkZGluZ19oZWlnaHQgPj4gKGlzXzQyMCA/ IDQgOiAzKSkgKg0KKwkJICAoaXNfNDIwID8gNiA6IDQpIC0gMTsNCisNCisJd3JpdGVsKGJsa19u dW0sIGJhc2UgKyBKUEVHX0VOQ19CTEtfTlVNKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNf c2V0X3N0cmlkZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1MzIgd2lkdGgs DQorCQkJICAgICB1MzIgaGVpZ2h0LCB1MzIgYnl0ZXNwZXJsaW5lKQ0KK3sNCisJdTMyIHdpZHRo X2V2ZW47DQorCXUzMiBpc180MjA7DQorCXUzMiBpbWdfc3RyaWRlOw0KKwl1MzIgbWVtX3N0cmlk ZTsNCisNCisJd2lkdGhfZXZlbiA9IHJvdW5kX3VwKHdpZHRoLCAyKTsNCisJaXNfNDIwID0gKGVu Y19mb3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMTJNIHx8DQorCQkgIGVuY19mb3JtYXQgPT0gVjRM Ml9QSVhfRk1UX05WMjFNKSA/IDEgOiAwOw0KKwlpZiAoIWlzXzQyMCkNCisJCXdpZHRoX2V2ZW4g PSB3aWR0aF9ldmVuIDw8IDE7DQorCWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aF9ldmVuLCAo aXNfNDIwID8gMTYgOiAzMikpOw0KKwltZW1fc3RyaWRlID0gaXNfNDIwID8gYnl0ZXNwZXJsaW5l IDogcm91bmRfdXAod2lkdGhfZXZlbiwgMzIpOw0KKw0KKwl3cml0ZWwoaW1nX3N0cmlkZSwgYmFz ZSArIEpQRUdfRU5DX0lNR19TVFJJREUpOw0KKwl3cml0ZWwobWVtX3N0cmlkZSwgYmFzZSArIEpQ RUdfRU5DX1NUUklERSk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9zcmNfYWRkcih2 b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBzcmNfYWRkciwNCisJCQkgICAgICAgdTMyIHNyY19hZGRy X2MpDQorew0KKwl3cml0ZWwoc3JjX2FkZHIsIGJhc2UgKyBKUEVHX0VOQ19TUkNfTFVNQV9BRERS KTsNCisJd3JpdGVsKHNyY19hZGRyX2MsIGJhc2UgKyBKUEVHX0VOQ19TUkNfQ0hST01BX0FERFIp Ow0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zZXRfZHN0X2FkZHIodm9pZCBfX2lvbWVtICpi YXNlLCB1MzIgZHN0X2FkZHIsDQorCQkJICAgICAgIHUzMiBzdGFsbF9zaXplLCB1MzIgaW5pdF9v ZmZzZXQsDQorCQkJICAgICAgIHUzMiBvZmZzZXRfbWFzaykNCit7DQorCXdyaXRlbChKUEVHX0VO Q19JTklUX09GRlNFVChpbml0X29mZnNldCksIGJhc2UgKyBKUEVHX0VOQ19PRkZTRVRfQUREUik7 DQorCXdyaXRlbChKUEVHX0VOQ19PRkZTRVRfTUFTSyhvZmZzZXRfbWFzayksDQorCSAgICAgICBi YXNlICsgSlBFR19FTkNfQllURV9PRkZTRVRfTUFTSyk7DQorCXdyaXRlbChKUEVHX0VOQ19EU1Rf QUREUihkc3RfYWRkciksIGJhc2UgKyBKUEVHX0VOQ19EU1RfQUREUjApOw0KKwl3cml0ZWwoSlBF R19FTkNfU1RBTExfQUREUihkc3RfYWRkciwgc3RhbGxfc2l6ZSksDQorCSAgICAgICBiYXNlICsg SlBFR19FTkNfU1RBTExfQUREUjApOw0KK30NCisNCitzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNf c2V0X3F1YWxpdHkodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgcXVhbGl0eSkNCit7DQorCXUzMiB2 YWx1ZTsNCisJdTMyIGksIGVuY19xdWFsaXR5Ow0KKw0KKwllbmNfcXVhbGl0eSA9IG10a19qcGVn X2VuY19xdWFsaXR5WzBdLmhhcmR3YXJlX3ZhbHVlOw0KKwlmb3IgKGkgPSAwOyBpIDwgTVRLX0pQ RUdfRU5DX05VTV9RVUFMSVRZOyBpKyspIHsNCisJCWlmIChxdWFsaXR5ID49IG10a19qcGVnX2Vu Y19xdWFsaXR5W2ldLnF1YWxpdHlfcGFyYW0pIHsNCisJCQllbmNfcXVhbGl0eSA9IG10a19qcGVn X2VuY19xdWFsaXR5W2ldLmhhcmR3YXJlX3ZhbHVlOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQor DQorCXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX1FVQUxJVFkpOw0KKwl2YWx1ZSA9IEpQ RUdfRU5DX1NFVF9RVUFMSVRZKHZhbHVlLCBlbmNfcXVhbGl0eSk7DQorCXdyaXRlbCh2YWx1ZSwg YmFzZSArIEpQRUdfRU5DX1FVQUxJVFkpOw0KK30NCisNCitzdGF0aWMgdm9pZCBtdGtfanBlZ19l bmNfc2V0X3Jlc3RhcnRfaW50ZXJ2YWwodm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkJICAgICAg dTMyIHJlc3RhcnRfaW50ZXJ2YWwpDQorew0KKwl1MzIgdmFsdWU7DQorDQorCXZhbHVlID0gcmVh ZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwlpZiAocmVzdGFydF9pbnRlcnZhbCkNCisJCXZh bHVlIHw9IEpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQ7DQorCWVsc2UNCisJCXZhbHVlICY9 IH5KUEVHX0VOQ19DVFJMX1JFU1RBUlRfRU5fQklUOw0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBK UEVHX0VOQ19DVFJMKTsNCisJd3JpdGVsKHJlc3RhcnRfaW50ZXJ2YWwsIGJhc2UgKyBKUEVHX0VO Q19SU1RfTUNVX05VTSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19zZXRfZW5j b2RlX21vZGUodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZXhpZl9lbikNCit7DQorCXUzMiB2YWx1 ZTsNCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVlICY9 IH5KUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJVDsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsg SlBFR19FTkNfQ1RSTCk7DQorDQorCWlmIChleGlmX2VuKSB7DQorCQl2YWx1ZSA9IHJlYWRsKGJh c2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJCXZhbHVlIHw9IEpQRUdfRU5DX0VOX0pGSUZfRVhJRjsN CisJCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl9DQorfQ0KKw0KK3Zv aWQgbXRrX2pwZWdfZW5jX3NldF9jdHJsX2NmZyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBleGlm X2VuLCB1MzIgcXVhbGl0eSwNCisJCQkgICAgICAgdTMyIHJlc3RhcnRfaW50ZXJ2YWwpDQorew0K KwltdGtfanBlZ19lbmNfc2V0X3F1YWxpdHkoYmFzZSwgcXVhbGl0eSk7DQorDQorCW10a19qcGVn X2VuY19zZXRfcmVzdGFydF9pbnRlcnZhbChiYXNlLCByZXN0YXJ0X2ludGVydmFsKTsNCisNCisJ bXRrX2pwZWdfZW5jX3NldF9lbmNvZGVfbW9kZShiYXNlLCBleGlmX2VuKTsNCit9DQorDQordm9p ZCBtdGtfanBlZ19lbmNfc3RhcnQodm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJdTMyIHZhbHVl Ow0KKw0KKwl2YWx1ZSA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJdmFsdWUgfD0g SlBFR19FTkNfQ1RSTF9JTlRfRU5fQklUIHwgSlBFR19FTkNfQ1RSTF9FTkFCTEVfQklUOw0KKwl3 cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaCBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmQwZDdkMjE4YTBjMg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0K QEAgLTAsMCArMSw4NiBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkgKi8NCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0 aG9yOiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQorICoNCisgKi8NCisNCisj aWZuZGVmIF9NVEtfSlBFR19FTkNfSFdfSA0KKyNkZWZpbmUgX01US19KUEVHX0VOQ19IV19IDQor DQorI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1jb3JlLmg+DQorDQorI2luY2x1ZGUgIm10a19q cGVnX2NvcmUuaCINCisjaW5jbHVkZSAibXRrX2pwZWdfZW5jX3JlZy5oIg0KKw0KK2VudW0gew0K KwlNVEtfSlBFR19FTkNfUkVTVUxUX0RPTkUJCT0gMCwNCisJTVRLX0pQRUdfRU5DX1JFU1VMVF9T VEFMTCwNCisJTVRLX0pQRUdfRU5DX1JFU1VMVF9WQ09ERUNfSVJRLA0KKwlNVEtfSlBFR19FTkNf UkVTVUxUX0VSUk9SX1VOS05PV04NCit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBtdGtfanBlZ19l bmNfcWx0IC0gSlBFRyBlbmNvZGVyIHF1YWxpdHkgZGF0YQ0KKyAqIEBxdWFsaXR5X3BhcmFtOglx dWFsaXR5IHZhbHVlDQorICogQGhhcmR3YXJlX3ZhbHVlOmhhcmR3YXJlIHZhbHVlIG9mIHF1YWxp dHkNCisgKi8NCitzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCB7DQorCXU4CXF1YWxpdHlfcGFyYW07 DQorCXU4CWhhcmR3YXJlX3ZhbHVlOw0KK307DQorDQorLyoqDQorICogc3RydWN0IG10X2pwZWdf ZW5jX2JzIC0gSlBFRyBlbmNvZGVyIGJpdHN0cmVhbSAgYnVmZmVyDQorICogQGRtYV9hZGRyOgkJ CUpQRUcgZW5jb2RlciBkZXN0aW5hdGlvbiBhZGRyZXNzDQorICogQHNpemU6CQkJSlBFRyBlbmNv ZGVyIGJpc3RyZWFtIHNpemUNCisgKiBAZG1hX2FkZHJfb2Zmc2V0OgkJSlBFRyBlbmNvZGVyIG9m ZnNldCBhZGRyZXNzDQorICogQGRtYV9hZGRyX29mZnNldG1hc2s6CUpQRUcgZW5jb2RlciBkZXN0 aW5hdGlvbiBhZGRyZXNzIG9mZnNldCBtYXNrDQorICovDQorc3RydWN0IG10a19qcGVnX2VuY19i cyB7DQorCWRtYV9hZGRyX3QJZG1hX2FkZHI7DQorCXNpemVfdAkJc2l6ZTsNCisJdTMyCQkJZG1h X2FkZHJfb2Zmc2V0Ow0KKwl1MzIJCQlkbWFfYWRkcl9vZmZzZXRtYXNrOw0KK307DQorDQorLyoq DQorICogc3RydWN0IG10a19qcGVnX21lbSAtIEpQRUcgbWVtb3J5DQorICogQGRtYV9hZGRyOgkJ bWVtb3J5IGFkZHJlc3MNCisgKiBAc2l6ZToJCW1lbW9yeSBzaXplDQorICovDQorc3RydWN0IG10 a19qcGVnX21lbSB7DQorCWRtYV9hZGRyX3QJZG1hX2FkZHI7DQorCXNpemVfdAkJc2l6ZTsNCit9 Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBtdGtfanBlZ19lbmNfZmIgLSBKUEVHIGVuY29kZXIgZnJh bWUgYnVmZmVyDQorICogQGZiX2FkZHI6CQlmcm1hZSBidWZmZXIgbWVtb3J5IGluZm9ybWF0aW9u DQorICogQG51bV9wbGFuZXM6CQludW1iZXIgb2YgcGxhbmVzDQorICovDQorc3RydWN0IG10a19q cGVnX2VuY19mYiB7DQorCXN0cnVjdCBtdGtfanBlZ19tZW0JZmJfYWRkcltNVEtfSlBFR19DT01Q X01BWF07DQorCXUzMgkJCW51bV9wbGFuZXM7DQorfTsNCisNCit2b2lkIG10a19qcGVnX2VuY19y ZXNldCh2b2lkIF9faW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ludF9zdGF0 dXModm9pZCBfX2lvbWVtICpiYXNlKTsNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9maWxlX3NpemUo dm9pZCBfX2lvbWVtICpiYXNlKTsNCit1MzIgbXRrX2pwZWdfZW5jX2VudW1fcmVzdWx0KHZvaWQg X19pb21lbSAqYmFzZSwgdTMyIGlycV9zdGF0dXMpOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9p bWdfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7DQordm9p ZCBtdGtfanBlZ19lbmNfc2V0X2VuY19mb3JtYXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5j X2Zvcm1hdCk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2Jsa19udW0odm9pZCBfX2lvbWVtICpi YXNlLCB1MzIgZW5jX2Zvcm1hdCwgdTMyIHdpZHRoLA0KKwkJCSAgICAgIHUzMiBoZWlnaHQpOw0K K3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9zdHJpZGUodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5j X2Zvcm1hdCwgdTMyIHdpZHRoLA0KKwkJCSAgICAgdTMyIGhlaWdodCwgdTMyIGJ5dGVzcGVybGlu ZSk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X3NyY19hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwg dTMyIHNyY19hZGRyLA0KKwkJCSAgICAgICB1MzIgc3JjX2FkZHJfYyk7DQordm9pZCBtdGtfanBl Z19lbmNfc2V0X2RzdF9hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGRzdF9hZGRyLA0KKwkJ CSAgICAgICB1MzIgc3RhbGxfc2l6ZSwgdTMyIGluaXRfb2Zmc2V0LA0KKwkJCSAgICAgICB1MzIg b2Zmc2V0X21hc2spOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9jdHJsX2NmZyh2b2lkIF9faW9t ZW0gKmJhc2UsIHUzMiBleGlmX2VuLCB1MzIgcXVhbGl0eSwNCisJCQkgICAgICAgdTMyIHJlc3Rh cnRfaW50ZXJ2YWwpOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3N0YXJ0KHZvaWQgX19pb21lbSAqZW5j X3JlZ19iYXNlKTsNCisNCisjZW5kaWYgLyogX01US19KUEVHX0VOQ19IV19IICovDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfcmVnLmgg Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19yZWcuaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uY2VjMzYzMWFkZGM1DQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2VuY19yZWcuaA0KQEAgLTAsMCArMSw3OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJ bmMuDQorICogQXV0aG9yOiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQorICoN CisgKi8NCisjaWZuZGVmIF9NVEtfSlBFR19FTkNfUkVHX0gNCisjZGVmaW5lIF9NVEtfSlBFR19F TkNfUkVHX0gNCisNCisjZGVmaW5lIEpQRUdfRU5DX0lOVF9TVEFUVVNfRE9ORQkJCUJJVCgwKQ0K KyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUQVRVU19TVEFMTAkJCUJJVCgxKQ0KKyNkZWZpbmUgSlBF R19FTkNfSU5UX1NUQVRVU19WQ09ERUNfSVJRCQlCSVQoNCkNCisjZGVmaW5lIEpQRUdfRU5DX0lO VF9TVEFUVVNfTUFTS19BTExJUlEJCTB4MTMNCisNCisjZGVmaW5lIEpQRUdfRU5DX0RTVF9BRERS X09GRlNFVF9NQVNLIEdFTk1BU0soMywgMCkNCisNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfWVVW X0ZPUk1BVF9NQVNLIDB4MTgNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQg ICAgICAgICAgICBCSVQoMTApDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJ VCAgICAgICAgICAgQklUKDUpDQorI2RlZmluZSBKUEVHX0VOQ19FTl9KRklGX0VYSUYgICAgICAg ICAgICAgICAgICAgQklUKDUpDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX0lOVF9FTl9CSVQgICAg ICAgICAgICAgICAgQklUKDIpDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX0VOQUJMRV9CSVQgICAg ICAgICAgICAgICAgQklUKDApDQorI2RlZmluZSBKUEVHX0VOQ19SRVNFVF9CSVQgICAgICAgICAg ICAgICAgICAgICAgQklUKDApDQorDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYg MA0KKyNkZWZpbmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVllVIDENCisjZGVmaW5lIEpQRUdfRU5D X1lVVl9GT1JNQVRfTlYxMiAyDQorI2RlZmluZSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEgMw0K Kw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjAgMHgwDQorI2RlZmluZSBKUEVHX0VOQ19R VUFMSVRZX1E4MCAweDENCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTkwIDB4Mg0KKyNkZWZp bmUgSlBFR19FTkNfUVVBTElUWV9ROTUgMHgzDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1Ez OSAweDQNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTY4IDB4NQ0KKyNkZWZpbmUgSlBFR19F TkNfUVVBTElUWV9RODQgMHg2DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5MiAweDcNCisj ZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTQ4IDB4OA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElU WV9RNzQgMHhhDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4NyAweGINCisjZGVmaW5lIEpQ RUdfRU5DX1FVQUxJVFlfUTM0IDB4Yw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjQgMHhl DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4MiAweGYNCisjZGVmaW5lIEpQRUdfRU5DX1FV QUxJVFlfUTk3IDB4MTANCisNCisjZGVmaW5lIEpQRUdfRU5DX1JTVEIJCQkJMHgxMDANCisjZGVm aW5lIEpQRUdfRU5DX0NUUkwJCQkJMHgxMDQNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFkJCQkw eDEwOA0KKyNkZWZpbmUgSlBFR19FTkNfQkxLX05VTQkJCTB4MTBDDQorI2RlZmluZSBKUEVHX0VO Q19CTEtfQ05UCQkJMHgxMTANCisjZGVmaW5lIEpQRUdfRU5DX0lOVF9TVFMJCQkweDExYw0KKyNk ZWZpbmUgSlBFR19FTkNfRFNUX0FERFIwCQkJMHgxMjANCisjZGVmaW5lIEpQRUdfRU5DX0RNQV9B RERSMAkJCTB4MTI0DQorI2RlZmluZSBKUEVHX0VOQ19TVEFMTF9BRERSMAkJMHgxMjgNCisjZGVm aW5lIEpQRUdfRU5DX09GRlNFVF9BRERSCQkweDEzOA0KKyNkZWZpbmUgSlBFR19FTkNfUlNUX01D VV9OVU0JCTB4MTUwDQorI2RlZmluZSBKUEVHX0VOQ19JTUdfU0laRQkJCTB4MTU0DQorI2RlZmlu ZSBKUEVHX0VOQ19ERUJVR19JTkZPMAkJMHgxNjANCisjZGVmaW5lIEpQRUdfRU5DX0RFQlVHX0lO Rk8xCQkweDE2NA0KKyNkZWZpbmUgSlBFR19FTkNfVE9UQUxfQ1lDTEUJCTB4MTY4DQorI2RlZmlu ZSBKUEVHX0VOQ19CWVRFX09GRlNFVF9NQVNLCTB4MTZjDQorI2RlZmluZSBKUEVHX0VOQ19TUkNf TFVNQV9BRERSCQkweDE3MA0KKyNkZWZpbmUgSlBFR19FTkNfU1JDX0NIUk9NQV9BRERSCTB4MTc0 DQorI2RlZmluZSBKUEVHX0VOQ19TVFJJREUJCQkJMHgxNzgNCisjZGVmaW5lIEpQRUdfRU5DX0lN R19TVFJJREUJCQkweDE3Yw0KKyNkZWZpbmUgSlBFR19FTkNfRENNX0NUUkwJCQkweDMwMA0KKyNk ZWZpbmUgSlBFR19FTkNfQ09ERUNfU0VMCQkJMHgzMTQNCisjZGVmaW5lIEpQRUdfRU5DX1VMVFJB X1RIUkVTCQkweDMxOA0KKw0KKyNkZWZpbmUgSlBFR19FTkNfRk9STUFUKHgpCQkoKCh4KSAmIDMp IDw8IDMpDQorI2RlZmluZSBKUEVHX0VOQ19XSURUSF9IRUlHSFQodywgaCkJKCgodykgPDwgMTYp IHwgKGgpKQ0KKyNkZWZpbmUgSlBFR19FTkNfSU5JVF9PRkZTRVQoeCkJCSgoeCkgJiAofjB4Zikp DQorI2RlZmluZSBKUEVHX0VOQ19PRkZTRVRfTUFTSyh4KQkJKCh4KSAmIDB4ZikNCisjZGVmaW5l IEpQRUdfRU5DX0RTVF9BRERSKHgpCQkoKHgpICYgKH4weGYpKQ0KKyNkZWZpbmUgSlBFR19FTkNf U1RBTExfQUREUih4LCB5KQkJKCgoeCkgKyAoeSkpICYgKH4weGYpKQ0KKyNkZWZpbmUgSlBFR19F TkNfU0VUX1FVQUxJVFkoeCwgeSkJKCgoeCkgJiAweGZmZmYwMDAwKSB8ICh5KSkNCisNCisjZW5k aWYgLyogX01US19KUEVHX0VOQ19SRUdfSCAqLw0KLS0gDQoyLjE4LjANCg==