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=-11.4 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 3968DC433E3 for ; Tue, 4 Aug 2020 03:42:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 214E320792 for ; Tue, 4 Aug 2020 03:42:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="gCHA6ekU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730575AbgHDDmt (ORCPT ); Mon, 3 Aug 2020 23:42:49 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:1834 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1730472AbgHDDmZ (ORCPT ); Mon, 3 Aug 2020 23:42:25 -0400 X-UUID: 94c9d9e0ad1141c9a98e1b3c2214865d-20200804 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=SpFqqLUUkY4Ljel2CZAAEYcJIdF758VqVPZWCHKu7uw=; b=gCHA6ekUeVQvIs2VUUY35sQVdKclsFYFp4Li9/QAJTMfdzIxUvHth1NTP18CqNQLN2VzgYFY6aQqXFBB6Jaaxxq07ow/L4mwcMfOtgPGdOMrs0xZ8e+CmF+5uCueBkEalcm5Ml1fCYnj7JOuwSaqYpf9qoJJenp8VExGu77i5E0=; X-UUID: 94c9d9e0ad1141c9a98e1b3c2214865d-20200804 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 82549380; Tue, 04 Aug 2020 11:42:17 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 4 Aug 2020 11:42:15 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 4 Aug 2020 11:42:14 +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 v11 28/28] media: platform: Add jpeg enc feature Date: Tue, 4 Aug 2020 11:41:02 +0800 Message-ID: <20200804034102.22983-29-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200804034102.22983-1-xia.jiang@mediatek.com> References: <20200804034102.22983-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 IHdpdGggZnVuY3Rpb24gb3BlcmF0aW9uLg0KDQpSZXZpZXdlZC1ieTogVG9tYXN6IEZpZ2EgPHRm aWdhQGNocm9taXVtLm9yZz4NClNpZ25lZC1vZmYtYnk6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1l ZGlhdGVrLmNvbT4NCi0tLQ0KdjExOiBubyBjaGFuZ2VzDQotLS0NCiBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay1qcGVnL01ha2VmaWxlICAgICAgfCAgIDUgKy0NCiAuLi4vbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jICAgfCAzNTEgKysrKysrKysrKysrKysrKystDQog Li4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuaCAgIHwgIDE3ICsNCiAu Li4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMgfCAxNTQgKysrKysr KysNCiAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmggfCAgOTEg KysrKysNCiA1IGZpbGVzIGNoYW5nZWQsIDYxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210 a19qcGVnX2VuY19ody5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay1qcGVnL01ha2VmaWxlDQppbmRleCA0ODUxNmRjZjk2ZTYuLjc2YzMzYWFkMGYzZiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCisrKyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCkBAIC0xLDMgKzEsNiBAQA0K ICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KLW10a19qcGVnLW9ianMg Oj0gbXRrX2pwZWdfY29yZS5vIG10a19qcGVnX2RlY19ody5vIG10a19qcGVnX2RlY19wYXJzZS5v DQorbXRrX2pwZWctb2JqcyA6PSBtdGtfanBlZ19jb3JlLm8gXA0KKwkJIG10a19qcGVnX2RlY19o dy5vIFwNCisJCSBtdGtfanBlZ19kZWNfcGFyc2UubyBcDQorCQkgbXRrX2pwZWdfZW5jX2h3Lm8N CiBvYmotJChDT05GSUdfVklERU9fTUVESUFURUtfSlBFRykgKz0gbXRrX2pwZWcubw0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCmluZGV4IDNk OTVjN2YwYTIyZC4uMWM3ZmZmNmE4NGRmIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jDQpAQCAtMyw2ICszLDcgQEANCiAgKiBDb3B5cmln aHQgKGMpIDIwMTYgTWVkaWFUZWsgSW5jLg0KICAqIEF1dGhvcjogTWluZyBIc2l1IFRzYWkgPG1p bmdoc2l1LnRzYWlAbWVkaWF0ZWsuY29tPg0KICAqICAgICAgICAgUmljayBDaGFuZyA8cmljay5j aGFuZ0BtZWRpYXRlay5jb20+DQorICogICAgICAgICBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRp YXRlay5jb20+DQogICovDQogDQogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KQEAgLTIzLDEwICsy NCw1OSBAQA0KICNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPg0KICNpbmNs dWRlIDxzb2MvbWVkaWF0ZWsvc21pLmg+DQogDQorI2luY2x1ZGUgIm10a19qcGVnX2VuY19ody5o Ig0KICNpbmNsdWRlICJtdGtfanBlZ19kZWNfaHcuaCINCiAjaW5jbHVkZSAibXRrX2pwZWdfY29y ZS5oIg0KICNpbmNsdWRlICJtdGtfanBlZ19kZWNfcGFyc2UuaCINCiANCitzdGF0aWMgc3RydWN0 IG10a19qcGVnX2ZtdCBtdGtfanBlZ19lbmNfZm9ybWF0c1tdID0gew0KKwl7DQorCQkuZm91cmNj CQk9IFY0TDJfUElYX0ZNVF9KUEVHLA0KKwkJLmNvbHBsYW5lcwk9IDEsDQorCQkuZmxhZ3MJCT0g TVRLX0pQRUdfRk1UX0ZMQUdfQ0FQVFVSRSwNCisJfSwNCisJew0KKwkJLmZvdXJjYwkJPSBWNEwy X1BJWF9GTVRfTlYxMk0sDQorCQkuaHdfZm9ybWF0CT0gSlBFR19FTkNfWVVWX0ZPUk1BVF9OVjEy LA0KKwkJLmhfc2FtcGxlCT0gezQsIDR9LA0KKwkJLnZfc2FtcGxlCT0gezQsIDJ9LA0KKwkJLmNv bHBsYW5lcwk9IDIsDQorCQkuaF9hbGlnbgk9IDQsDQorCQkudl9hbGlnbgk9IDQsDQorCQkuZmxh Z3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfT1VUUFVULA0KKwl9LA0KKwl7DQorCQkuZm91cmNjCQk9 IFY0TDJfUElYX0ZNVF9OVjIxTSwNCisJCS5od19mb3JtYXQJPSBKRVBHX0VOQ19ZVVZfRk9STUFU X05WMjEsDQorCQkuaF9zYW1wbGUJPSB7NCwgNH0sDQorCQkudl9zYW1wbGUJPSB7NCwgMn0sDQor CQkuY29scGxhbmVzCT0gMiwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2FsaWduCT0gNCwNCisJ CS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19PVVRQVVQsDQorCX0sDQorCXsNCisJCS5mb3Vy Y2MJCT0gVjRMMl9QSVhfRk1UX1lVWVYsDQorCQkuaHdfZm9ybWF0CT0gSlBFR19FTkNfWVVWX0ZP Uk1BVF9ZVVlWLA0KKwkJLmhfc2FtcGxlCT0gezh9LA0KKwkJLnZfc2FtcGxlCT0gezR9LA0KKwkJ LmNvbHBsYW5lcwk9IDEsDQorCQkuaF9hbGlnbgk9IDUsDQorCQkudl9hbGlnbgk9IDMsDQorCQku ZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfT1VUUFVULA0KKwl9LA0KKwl7DQorCQkuZm91cmNj CQk9IFY0TDJfUElYX0ZNVF9ZVllVLA0KKwkJLmh3X2Zvcm1hdAk9IEpQRUdfRU5DX1lVVl9GT1JN QVRfWVZZVSwNCisJCS5oX3NhbXBsZQk9IHs4fSwNCisJCS52X3NhbXBsZQk9IHs0fSwNCisJCS5j b2xwbGFuZXMJPSAxLA0KKwkJLmhfYWxpZ24JPSA1LA0KKwkJLnZfYWxpZ24JPSAzLA0KKwkJLmZs YWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX09VVFBVVCwNCisJfSwNCit9Ow0KKw0KIHN0YXRpYyBz dHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2RlY19mb3JtYXRzW10gPSB7DQogCXsNCiAJCS5m b3VyY2MJCT0gVjRMMl9QSVhfRk1UX0pQRUcsDQpAQCAtNTMsNiArMTAzLDcgQEAgc3RhdGljIHN0 cnVjdCBtdGtfanBlZ19mbXQgbXRrX2pwZWdfZGVjX2Zvcm1hdHNbXSA9IHsNCiAJfSwNCiB9Ow0K IA0KKyNkZWZpbmUgTVRLX0pQRUdfRU5DX05VTV9GT1JNQVRTIEFSUkFZX1NJWkUobXRrX2pwZWdf ZW5jX2Zvcm1hdHMpDQogI2RlZmluZSBNVEtfSlBFR19ERUNfTlVNX0ZPUk1BVFMgQVJSQVlfU0la RShtdGtfanBlZ19kZWNfZm9ybWF0cykNCiANCiBzdHJ1Y3QgbXRrX2pwZWdfc3JjX2J1ZiB7DQpA QCAtNjQsNiArMTE1LDExIEBAIHN0cnVjdCBtdGtfanBlZ19zcmNfYnVmIHsNCiBzdGF0aWMgaW50 IGRlYnVnOw0KIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsNCiANCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBtdGtfanBlZ19jdHggKmN0cmxfdG9fY3R4KHN0cnVjdCB2NGwyX2N0cmwgKmN0 cmwpDQorew0KKwlyZXR1cm4gY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCBtdGtf anBlZ19jdHgsIGN0cmxfaGRsKTsNCit9DQorDQogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2pw ZWdfY3R4ICptdGtfanBlZ19maF90b19jdHgoc3RydWN0IHY0bDJfZmggKmZoKQ0KIHsNCiAJcmV0 dXJuIGNvbnRhaW5lcl9vZihmaCwgc3RydWN0IG10a19qcGVnX2N0eCwgZmgpOw0KQEAgLTg4LDYg KzE0NCw1MyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpwcml2LA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIGludCB2aWRpb2NfanBl Z19lbmNfc19jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQorew0KKwlzdHJ1Y3QgbXRrX2pw ZWdfY3R4ICpjdHggPSBjdHJsX3RvX2N0eChjdHJsKTsNCisNCisJc3dpdGNoIChjdHJsLT5pZCkg ew0KKwljYXNlIFY0TDJfQ0lEX0pQRUdfUkVTVEFSVF9JTlRFUlZBTDoNCisJCWN0eC0+cmVzdGFy dF9pbnRlcnZhbCA9IGN0cmwtPnZhbDsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lEX0pQRUdf Q09NUFJFU1NJT05fUVVBTElUWToNCisJCWN0eC0+ZW5jX3F1YWxpdHkgPSBjdHJsLT52YWw7DQor CQlicmVhazsNCisJY2FzZSBWNEwyX0NJRF9KUEVHX0FDVElWRV9NQVJLRVI6DQorCQljdHgtPmVu YWJsZV9leGlmID0gY3RybC0+dmFsICYgVjRMMl9KUEVHX0FDVElWRV9NQVJLRVJfQVBQMTsNCisJ CWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0 IHY0bDJfY3RybF9vcHMgbXRrX2pwZWdfZW5jX2N0cmxfb3BzID0gew0KKwkuc19jdHJsID0gdmlk aW9jX2pwZWdfZW5jX3NfY3RybCwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX2N0 cmxzX3NldHVwKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCit7DQorCWNvbnN0IHN0cnVjdCB2 NGwyX2N0cmxfb3BzICpvcHMgPSAmbXRrX2pwZWdfZW5jX2N0cmxfb3BzOw0KKwlzdHJ1Y3QgdjRs Ml9jdHJsX2hhbmRsZXIgKmhhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCisNCisJdjRsMl9jdHJs X2hhbmRsZXJfaW5pdChoYW5kbGVyLCAzKTsNCisNCisJdjRsMl9jdHJsX25ld19zdGQoaGFuZGxl ciwgb3BzLCBWNEwyX0NJRF9KUEVHX1JFU1RBUlRfSU5URVJWQUwsIDAsIDEwMCwNCisJCQkgIDEs IDApOw0KKwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfQ09N UFJFU1NJT05fUVVBTElUWSwgNDgsDQorCQkJICAxMDAsIDEsIDkwKTsNCisJdjRsMl9jdHJsX25l d19zdGQoaGFuZGxlciwgb3BzLCBWNEwyX0NJRF9KUEVHX0FDVElWRV9NQVJLRVIsIDAsDQorCQkJ ICBWNEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxLCAwLCAwKTsNCisNCisJaWYgKGhhbmRsZXIt PmVycm9yKSB7DQorCQl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCisJ CXJldHVybiBoYW5kbGVyLT5lcnJvcjsNCisJfQ0KKw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9zZXR1 cCgmY3R4LT5jdHJsX2hkbCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IG10 a19qcGVnX2VudW1fZm10KHN0cnVjdCBtdGtfanBlZ19mbXQgKm10a19qcGVnX2Zvcm1hdHMsIGlu dCBuLA0KIAkJCSAgICAgc3RydWN0IHY0bDJfZm10ZGVzYyAqZiwgdTMyIHR5cGUpDQogew0KQEAg LTMzMSw2ICs0MzQsOCBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10X21wbGFuZShzdHJ1Y3Qg bXRrX2pwZWdfY3R4ICpjdHgsDQogCQkJCQkgICBwaXhfbXAtPnBpeGVsZm9ybWF0LCBmbXRfdHlw ZSk7DQogCXFfZGF0YS0+cGl4X21wLndpZHRoID0gcGl4X21wLT53aWR0aDsNCiAJcV9kYXRhLT5w aXhfbXAuaGVpZ2h0ID0gcGl4X21wLT5oZWlnaHQ7DQorCXFfZGF0YS0+ZW5jX2Nyb3BfcmVjdC53 aWR0aCA9IHBpeF9tcC0+d2lkdGg7DQorCXFfZGF0YS0+ZW5jX2Nyb3BfcmVjdC5oZWlnaHQgPSBw aXhfbXAtPmhlaWdodDsNCiAJcV9kYXRhLT5waXhfbXAuY29sb3JzcGFjZSA9IFY0TDJfQ09MT1JT UEFDRV9TUkdCOw0KIAlxX2RhdGEtPnBpeF9tcC55Y2Jjcl9lbmMgPSBWNEwyX1lDQkNSX0VOQ182 MDE7DQogCXFfZGF0YS0+cGl4X21wLnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DX1NSR0I7DQpA QCAtNDA3LDYgKzUxMiwzMCBAQCBzdGF0aWMgaW50IG10a19qcGVnX3N1YnNjcmliZV9ldmVudChz dHJ1Y3QgdjRsMl9maCAqZmgsDQogCXJldHVybiB2NGwyX2N0cmxfc3Vic2NyaWJlX2V2ZW50KGZo LCBzdWIpOw0KIH0NCiANCitzdGF0aWMgaW50IG10a19qcGVnX2VuY19nX3NlbGVjdGlvbihzdHJ1 Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJICAgIHN0cnVjdCB2NGwyX3NlbGVjdGlv biAqcykNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0 eChwcml2KTsNCisNCisJaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJY2FzZSBW NEwyX1NFTF9UR1RfQ1JPUDoNCisJCXMtPnIgPSBjdHgtPm91dF9xLmVuY19jcm9wX3JlY3Q7DQor CWNhc2UgVjRMMl9TRUxfVEdUX0NST1BfQk9VTkRTOg0KKwljYXNlIFY0TDJfU0VMX1RHVF9DUk9Q X0RFRkFVTFQ6DQorCQlzLT5yLndpZHRoID0gY3R4LT5vdXRfcS5waXhfbXAud2lkdGg7DQorCQlz LT5yLmhlaWdodCA9IGN0eC0+b3V0X3EucGl4X21wLmhlaWdodDsNCisJCXMtPnIubGVmdCA9IDA7 DQorCQlzLT5yLnRvcCA9IDA7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlO VkFMOw0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCiBzdGF0aWMgaW50IG10a19qcGVnX2RlY19n X3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCQkJICAgIHN0cnVj dCB2NGwyX3NlbGVjdGlvbiAqcykNCiB7DQpAQCAtNDM2LDYgKzU2NSw1NiBAQCBzdGF0aWMgaW50 IG10a19qcGVnX2RlY19nX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwN CiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3Nfc2VsZWN0aW9u KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCQkgICAgc3RydWN0IHY0bDJfc2Vs ZWN0aW9uICpzKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhf dG9fY3R4KHByaXYpOw0KKw0KKwlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09V VFBVVCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlzd2l0Y2ggKHMtPnRhcmdldCkgew0KKwlj YXNlIFY0TDJfU0VMX1RHVF9DUk9QOg0KKwkJcy0+ci5sZWZ0ID0gMDsNCisJCXMtPnIudG9wID0g MDsNCisJCXMtPnIud2lkdGggPSBtaW4ocy0+ci53aWR0aCwgY3R4LT5vdXRfcS5waXhfbXAud2lk dGgpOw0KKwkJcy0+ci5oZWlnaHQgPSBtaW4ocy0+ci5oZWlnaHQsIGN0eC0+b3V0X3EucGl4X21w LmhlaWdodCk7DQorCQljdHgtPm91dF9xLmVuY19jcm9wX3JlY3QgPSBzLT5yOw0KKwkJYnJlYWs7 DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcyBtdGtfanBlZ19lbmNfaW9j dGxfb3BzID0gew0KKwkudmlkaW9jX3F1ZXJ5Y2FwICAgICAgICAgICAgICAgID0gbXRrX2pwZWdf cXVlcnljYXAsDQorCS52aWRpb2NfZW51bV9mbXRfdmlkX2NhcAk9IG10a19qcGVnX2VudW1fZm10 X3ZpZF9jYXAsDQorCS52aWRpb2NfZW51bV9mbXRfdmlkX291dAk9IG10a19qcGVnX2VudW1fZm10 X3ZpZF9vdXQsDQorCS52aWRpb2NfdHJ5X2ZtdF92aWRfY2FwX21wbGFuZQk9IG10a19qcGVnX3Ry eV9mbXRfdmlkX2NhcF9tcGxhbmUsDQorCS52aWRpb2NfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZQk9 IG10a19qcGVnX3RyeV9mbXRfdmlkX291dF9tcGxhbmUsDQorCS52aWRpb2NfZ19mbXRfdmlkX2Nh cF9tcGxhbmUgICAgPSBtdGtfanBlZ19nX2ZtdF92aWRfbXBsYW5lLA0KKwkudmlkaW9jX2dfZm10 X3ZpZF9vdXRfbXBsYW5lICAgID0gbXRrX2pwZWdfZ19mbXRfdmlkX21wbGFuZSwNCisJLnZpZGlv Y19zX2ZtdF92aWRfY2FwX21wbGFuZSAgICA9IG10a19qcGVnX3NfZm10X3ZpZF9jYXBfbXBsYW5l LA0KKwkudmlkaW9jX3NfZm10X3ZpZF9vdXRfbXBsYW5lICAgID0gbXRrX2pwZWdfc19mbXRfdmlk X291dF9tcGxhbmUsDQorCS52aWRpb2NfcWJ1ZiAgICAgICAgICAgICAgICAgICAgPSB2NGwyX20y bV9pb2N0bF9xYnVmLA0KKwkudmlkaW9jX3N1YnNjcmliZV9ldmVudCAgICAgICAgID0gbXRrX2pw ZWdfc3Vic2NyaWJlX2V2ZW50LA0KKwkudmlkaW9jX2dfc2VsZWN0aW9uCQk9IG10a19qcGVnX2Vu Y19nX3NlbGVjdGlvbiwNCisJLnZpZGlvY19zX3NlbGVjdGlvbgkJPSBtdGtfanBlZ19lbmNfc19z ZWxlY3Rpb24sDQorDQorCS52aWRpb2NfY3JlYXRlX2J1ZnMJCT0gdjRsMl9tMm1faW9jdGxfY3Jl YXRlX2J1ZnMsDQorCS52aWRpb2NfcHJlcGFyZV9idWYJCT0gdjRsMl9tMm1faW9jdGxfcHJlcGFy ZV9idWYsDQorCS52aWRpb2NfcmVxYnVmcyAgICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0 bF9yZXFidWZzLA0KKwkudmlkaW9jX3F1ZXJ5YnVmICAgICAgICAgICAgICAgID0gdjRsMl9tMm1f aW9jdGxfcXVlcnlidWYsDQorCS52aWRpb2NfZHFidWYgICAgICAgICAgICAgICAgICAgPSB2NGwy X20ybV9pb2N0bF9kcWJ1ZiwNCisJLnZpZGlvY19leHBidWYgICAgICAgICAgICAgICAgICA9IHY0 bDJfbTJtX2lvY3RsX2V4cGJ1ZiwNCisJLnZpZGlvY19zdHJlYW1vbiAgICAgICAgICAgICAgICA9 IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9uLA0KKwkudmlkaW9jX3N0cmVhbW9mZiAgICAgICAgICAg ICAgID0gdjRsMl9tMm1faW9jdGxfc3RyZWFtb2ZmLA0KKw0KKwkudmlkaW9jX3Vuc3Vic2NyaWJl X2V2ZW50CT0gdjRsMl9ldmVudF91bnN1YnNjcmliZSwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdjRsMl9pb2N0bF9vcHMgbXRrX2pwZWdfZGVjX2lvY3RsX29wcyA9IHsNCiAJLnZpZGlv Y19xdWVyeWNhcCAgICAgICAgICAgICAgICA9IG10a19qcGVnX3F1ZXJ5Y2FwLA0KIAkudmlkaW9j X2VudW1fZm10X3ZpZF9jYXAJPSBtdGtfanBlZ19lbnVtX2ZtdF92aWRfY2FwLA0KQEAgLTUwMSwx NSArNjgwLDIyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfYnVmX3ByZXBhcmUoc3RydWN0IHZiMl9i dWZmZXIgKnZiKQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZf cHJpdih2Yi0+dmIyX3F1ZXVlKTsNCiAJc3RydWN0IG10a19qcGVnX3FfZGF0YSAqcV9kYXRhID0g TlVMTDsNCisJc3RydWN0IHY0bDJfcGxhbmVfcGl4X2Zvcm1hdCBwbGFuZV9mbXQgPSB7fTsNCiAJ aW50IGk7DQogDQogCXFfZGF0YSA9IG10a19qcGVnX2dldF9xX2RhdGEoY3R4LCB2Yi0+dmIyX3F1 ZXVlLT50eXBlKTsNCiAJaWYgKCFxX2RhdGEpDQogCQlyZXR1cm4gLUVJTlZBTDsNCiANCi0JZm9y IChpID0gMDsgaSA8IHFfZGF0YS0+Zm10LT5jb2xwbGFuZXM7IGkrKykNCi0JCXZiMl9zZXRfcGxh bmVfcGF5bG9hZCh2YiwgaSwNCi0JCQkJICAgICAgcV9kYXRhLT5waXhfbXAucGxhbmVfZm10W2ld LnNpemVpbWFnZSk7DQorCWZvciAoaSA9IDA7IGkgPCBxX2RhdGEtPmZtdC0+Y29scGxhbmVzOyBp KyspIHsNCisJCXBsYW5lX2ZtdCA9IHFfZGF0YS0+cGl4X21wLnBsYW5lX2ZtdFtpXTsNCisJCWlm IChjdHgtPmVuYWJsZV9leGlmICYmDQorCQkgICAgcV9kYXRhLT5mbXQtPmZvdXJjYyA9PSBWNEwy X1BJWF9GTVRfSlBFRykNCisJCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQodmIsIGksIHBsYW5lX2Zt dC5zaXplaW1hZ2UgKw0KKwkJCQkJICAgICAgTVRLX0pQRUdfTUFYX0VYSUZfU0laRSk7DQorCQll bHNlDQorCQkJdmIyX3NldF9wbGFuZV9wYXlsb2FkKHZiLCBpLCAgcGxhbmVfZm10LnNpemVpbWFn ZSk7DQorCX0NCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTU3Miw2ICs3NTgsMTcgQEAgc3RhdGlj IHZvaWQgbXRrX2pwZWdfc2V0X3F1ZXVlX2RhdGEoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0K IAkJIHBhcmFtLT5kZWNfdywgcGFyYW0tPmRlY19oKTsNCiB9DQogDQorc3RhdGljIHZvaWQgbXRr X2pwZWdfZW5jX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQorew0KKwlzdHJ1Y3Qg bXRrX2pwZWdfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOw0KKwlz dHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KKw0KKwl2NGwyX2RiZygyLCBk ZWJ1ZywgJmpwZWctPnY0bDJfZGV2LCAiKCVkKSBidWZfcSBpZD0lZCwgdmI9JXBcbiIsDQorCQkg dmItPnZiMl9xdWV1ZS0+dHlwZSwgdmItPmluZGV4LCB2Yik7DQorDQorCXY0bDJfbTJtX2J1Zl9x dWV1ZShjdHgtPmZoLm0ybV9jdHgsIHRvX3ZiMl92NGwyX2J1ZmZlcih2YikpOw0KK30NCisNCiBz dGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfYnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikN CiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYodmItPnZi Ml9xdWV1ZSk7DQpAQCAtNjIwLDYgKzgxNywxNSBAQCBzdGF0aWMgc3RydWN0IHZiMl92NGwyX2J1 ZmZlciAqbXRrX2pwZWdfYnVmX3JlbW92ZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCQly ZXR1cm4gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCiB9DQogDQor c3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX3N0b3Bfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUg KnEpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHEp Ow0KKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YjsNCisNCisJd2hpbGUgKCh2YiA9IG10a19q cGVnX2J1Zl9yZW1vdmUoY3R4LCBxLT50eXBlKSkpDQorCQl2NGwyX20ybV9idWZfZG9uZSh2Yiwg VkIyX0JVRl9TVEFURV9FUlJPUik7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIG10a19qcGVnX2RlY19z dG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQ0KIHsNCiAJc3RydWN0IG10a19qcGVn X2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsNCkBAIC02NTUsNiArODYxLDE1IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29wcyBtdGtfanBlZ19kZWNfcW9wcyA9IHsNCiAJLnN0b3Bf c3RyZWFtaW5nICAgICA9IG10a19qcGVnX2RlY19zdG9wX3N0cmVhbWluZywNCiB9Ow0KIA0KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29wcyBtdGtfanBlZ19lbmNfcW9wcyA9IHsNCisJLnF1ZXVl X3NldHVwICAgICAgICA9IG10a19qcGVnX3F1ZXVlX3NldHVwLA0KKwkuYnVmX3ByZXBhcmUgICAg ICAgID0gbXRrX2pwZWdfYnVmX3ByZXBhcmUsDQorCS5idWZfcXVldWUgICAgICAgICAgPSBtdGtf anBlZ19lbmNfYnVmX3F1ZXVlLA0KKwkud2FpdF9wcmVwYXJlICAgICAgID0gdmIyX29wc193YWl0 X3ByZXBhcmUsDQorCS53YWl0X2ZpbmlzaCAgICAgICAgPSB2YjJfb3BzX3dhaXRfZmluaXNoLA0K Kwkuc3RvcF9zdHJlYW1pbmcgICAgID0gbXRrX2pwZWdfZW5jX3N0b3Bfc3RyZWFtaW5nLA0KK307 DQorDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2RlY19zcmMoc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4LA0KIAkJCQkgc3RydWN0IHZiMl9idWZmZXIgKnNyY19idWYsDQogCQkJCSBzdHJ1Y3Qg bXRrX2pwZWdfYnMgKmJzKQ0KQEAgLTY5Miw2ICs5MDcsNTAgQEAgc3RhdGljIGludCBtdGtfanBl Z19zZXRfZGVjX2RzdChzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCXJldHVybiAwOw0KIH0N CiANCitzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfZGV2aWNlX3J1bih2b2lkICpwcml2KQ0KK3sN CisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gcHJpdjsNCisJc3RydWN0IG10a19qcGVnX2Rl diAqanBlZyA9IGN0eC0+anBlZzsNCisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1Ziwg KmRzdF9idWY7DQorCWVudW0gdmIyX2J1ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NU QVRFX0VSUk9SOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfc3Jj X2J1ZiAqanBlZ19zcmNfYnVmOw0KKwlpbnQgcmV0Ow0KKw0KKwlzcmNfYnVmID0gdjRsMl9tMm1f bmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7DQorCWRzdF9idWYgPSB2NGwyX20ybV9uZXh0 X2RzdF9idWYoY3R4LT5maC5tMm1fY3R4KTsNCisJanBlZ19zcmNfYnVmID0gbXRrX2pwZWdfdmIy X3RvX3NyY2J1Zigmc3JjX2J1Zi0+dmIyX2J1Zik7DQorDQorCXJldCA9IHBtX3J1bnRpbWVfZ2V0 X3N5bmMoanBlZy0+ZGV2KTsNCisJaWYgKHJldCA8IDApDQorCQlnb3RvIGVuY19lbmQ7DQorDQor CXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmanBlZy0+am9iX3RpbWVvdXRfd29yaywNCisJCQkgICAg ICBtc2Vjc190b19qaWZmaWVzKE1US19KUEVHX0hXX1RJTUVPVVRfTVNFQykpOw0KKw0KKwlzcGlu X2xvY2tfaXJxc2F2ZSgmanBlZy0+aHdfbG9jaywgZmxhZ3MpOw0KKw0KKwkvKg0KKwkgKiBSZXNl dHRpbmcgdGhlIGhhcmR3YXJlIGV2ZXJ5IGZyYW1lIGlzIHRvIGVuc3VyZSB0aGF0IGFsbCB0aGUN CisJICogcmVnaXN0ZXJzIGFyZSBjbGVhcmVkLiBUaGlzIGlzIGEgaGFyZHdhcmUgcmVxdWlyZW1l bnQuDQorCSAqLw0KKwltdGtfanBlZ19lbmNfcmVzZXQoanBlZy0+cmVnX2Jhc2UpOw0KKw0KKwlt dGtfanBlZ19zZXRfZW5jX3NyYyhjdHgsIGpwZWctPnJlZ19iYXNlLCAmc3JjX2J1Zi0+dmIyX2J1 Zik7DQorCW10a19qcGVnX3NldF9lbmNfZHN0KGN0eCwganBlZy0+cmVnX2Jhc2UsICZkc3RfYnVm LT52YjJfYnVmKTsNCisJbXRrX2pwZWdfc2V0X2VuY19wYXJhbXMoY3R4LCBqcGVnLT5yZWdfYmFz ZSk7DQorCW10a19qcGVnX2VuY19zdGFydChqcGVnLT5yZWdfYmFzZSk7DQorCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmpwZWctPmh3X2xvY2ssIGZsYWdzKTsNCisJcmV0dXJuOw0KKw0KK2VuY19l bmQ6DQorCXY0bDJfbTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQorCXY0bDJf bTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQorCXY0bDJfbTJtX2J1Zl9kb25l KHNyY19idWYsIGJ1Zl9zdGF0ZSk7DQorCXY0bDJfbTJtX2J1Zl9kb25lKGRzdF9idWYsIGJ1Zl9z dGF0ZSk7DQorCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1f Y3R4KTsNCit9DQorDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfZGVjX2RldmljZV9ydW4odm9pZCAq cHJpdikNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHByaXY7DQpAQCAtNzUwLDYg KzEwMDksMTAgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfam9iX3JlYWR5KHZvaWQgKnByaXYp DQogCXJldHVybiAoY3R4LT5zdGF0ZSA9PSBNVEtfSlBFR19SVU5OSU5HKSA/IDEgOiAwOw0KIH0N CiANCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfbTJtX29wcyBtdGtfanBlZ19lbmNfbTJtX29w cyA9IHsNCisJLmRldmljZV9ydW4gPSBtdGtfanBlZ19lbmNfZGV2aWNlX3J1biwNCit9Ow0KKw0K IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9tMm1fb3BzIG10a19qcGVnX2RlY19tMm1fb3BzID0g ew0KIAkuZGV2aWNlX3J1biA9IG10a19qcGVnX2RlY19kZXZpY2VfcnVuLA0KIAkuam9iX3JlYWR5 ICA9IG10a19qcGVnX2RlY19qb2JfcmVhZHksDQpAQCAtODEwLDYgKzEwNzMsNTQgQEAgc3RhdGlj IHZvaWQgbXRrX2pwZWdfY2xrX29mZihzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KIAltdGtf c21pX2xhcmJfcHV0KGpwZWctPmxhcmIpOw0KIH0NCiANCitzdGF0aWMgaXJxcmV0dXJuX3QgbXRr X2pwZWdfZW5jX2RvbmUoc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCit7DQorCXN0cnVjdCBt dGtfanBlZ19jdHggKmN0eDsNCisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjX2J1ZiwgKmRz dF9idWY7DQorCWVudW0gdmIyX2J1ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRF X0VSUk9SOw0KKwl1MzIgcmVzdWx0X3NpemU7DQorDQorCWN0eCA9IHY0bDJfbTJtX2dldF9jdXJy X3ByaXYoanBlZy0+bTJtX2Rldik7DQorCWlmICghY3R4KSB7DQorCQl2NGwyX2VycigmanBlZy0+ djRsMl9kZXYsICJDb250ZXh0IGlzIE5VTExcbiIpOw0KKwkJcmV0dXJuIElSUV9IQU5ETEVEOw0K Kwl9DQorDQorCXNyY19idWYgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9j dHgpOw0KKwlkc3RfYnVmID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4 KTsNCisNCisJcmVzdWx0X3NpemUgPSBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZShqcGVnLT5y ZWdfYmFzZSk7DQorCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCgmZHN0X2J1Zi0+dmIyX2J1ZiwgMCwg cmVzdWx0X3NpemUpOw0KKw0KKwlidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7DQorDQor CXY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIGJ1Zl9zdGF0ZSk7DQorCXY0bDJfbTJtX2J1Zl9k b25lKGRzdF9idWYsIGJ1Zl9zdGF0ZSk7DQorCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJt X2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCisJcG1fcnVudGltZV9wdXQoY3R4LT5qcGVnLT5kZXYp Ow0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorfQ0KKw0KK3N0YXRpYyBpcnFyZXR1cm5fdCBtdGtf anBlZ19lbmNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdf ZGV2ICpqcGVnID0gcHJpdjsNCisJdTMyIGlycV9zdGF0dXM7DQorCWlycXJldHVybl90IHJldCA9 IElSUV9OT05FOw0KKw0KKwljYW5jZWxfZGVsYXllZF93b3JrKCZqcGVnLT5qb2JfdGltZW91dF93 b3JrKTsNCisNCisJaXJxX3N0YXR1cyA9IHJlYWRsKGpwZWctPnJlZ19iYXNlICsgSlBFR19FTkNf SU5UX1NUUykgJg0KKwkJICAgICBKUEVHX0VOQ19JTlRfU1RBVFVTX01BU0tfQUxMSVJROw0KKwlp ZiAoaXJxX3N0YXR1cykNCisJCXdyaXRlbCgwLCBqcGVnLT5yZWdfYmFzZSArIEpQRUdfRU5DX0lO VF9TVFMpOw0KKw0KKwlpZiAoIShpcnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRVU19ET05F KSkNCisJCXJldHVybiByZXQ7DQorDQorCXJldCA9IG10a19qcGVnX2VuY19kb25lKGpwZWcpOw0K KwlyZXR1cm4gcmV0Ow0KK30NCisNCiBzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2pwZWdfZGVjX2ly cShpbnQgaXJxLCB2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9 IHByaXY7DQpAQCAtODYyLDYgKzExNzMsNyBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZGVm YXVsdF9wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KIAlzdHJ1Y3QgbXRrX2pwZWdf cV9kYXRhICpxID0gJmN0eC0+b3V0X3E7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBj dHgtPmpwZWc7DQogDQorCWN0eC0+ZmguY3RybF9oYW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7DQog CXEtPnBpeF9tcC5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NSR0I7DQogCXEtPnBpeF9t cC55Y2Jjcl9lbmMgPSBWNEwyX1lDQkNSX0VOQ182MDE7DQogCXEtPnBpeF9tcC5xdWFudGl6YXRp b24gPSBWNEwyX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFOw0KQEAgLTkxOCw2ICsxMjMwLDE1IEBA IHN0YXRpYyBpbnQgbXRrX2pwZWdfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCiAJCWdvdG8gZXJy b3I7DQogCX0NCiANCisJaWYgKGpwZWctPnZhcmlhbnQtPmNhcF9xX2RlZmF1bHRfZm91cmNjID09 IFY0TDJfUElYX0ZNVF9KUEVHKSB7DQorCQlyZXQgPSBtdGtfanBlZ19lbmNfY3RybHNfc2V0dXAo Y3R4KTsNCisJCWlmIChyZXQpIHsNCisJCQl2NGwyX2VycigmanBlZy0+djRsMl9kZXYsICJGYWls ZWQgdG8gc2V0dXAganBlZyBlbmMgY29udHJvbHNcbiIpOw0KKwkJCWdvdG8gZXJyb3I7DQorCQl9 DQorCX0gZWxzZSB7DQorCQl2NGwyX2N0cmxfaGFuZGxlcl9pbml0KCZjdHgtPmN0cmxfaGRsLCAw KTsNCisJfQ0KIAltdGtfanBlZ19zZXRfZGVmYXVsdF9wYXJhbXMoY3R4KTsNCiAJbXV0ZXhfdW5s b2NrKCZqcGVnLT5sb2NrKTsNCiAJcmV0dXJuIDA7DQpAQCAtOTM4LDYgKzEyNTksNyBAQCBzdGF0 aWMgaW50IG10a19qcGVnX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpDQogDQogCW11dGV4X2xv Y2soJmpwZWctPmxvY2spOw0KIAl2NGwyX20ybV9jdHhfcmVsZWFzZShjdHgtPmZoLm0ybV9jdHgp Ow0KKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCiAJdjRsMl9maF9k ZWwoJmN0eC0+ZmgpOw0KIAl2NGwyX2ZoX2V4aXQoJmN0eC0+ZmgpOw0KIAlrZnJlZShjdHgpOw0K QEAgLTk1OSw2ICsxMjgxLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgY2xrX2J1bGtfZGF0YSBtdDgxNzNf anBlZ19kZWNfY2xvY2tzW10gPSB7DQogCXsgLmlkID0gImpwZ2RlYyIgfSwNCiB9Ow0KIA0KK3N0 YXRpYyBzdHJ1Y3QgY2xrX2J1bGtfZGF0YSBtdGtfanBlZ19jbG9ja3NbXSA9IHsNCisJeyAuaWQg PSAianBnZW5jIiB9LA0KK307DQorDQogc3RhdGljIGludCBtdGtfanBlZ19jbGtfaW5pdChzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KIHsNCiAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0K QEAgLTExOTAsNiArMTUxNiwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19qcGVnX3Zhcmlh bnQgbXQ4MTczX2pwZWdfZHJ2ZGF0YSA9IHsNCiAJLmNhcF9xX2RlZmF1bHRfZm91cmNjID0gVjRM Ml9QSVhfRk1UX1lVVjQyME0sDQogfTsNCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19qcGVn X3ZhcmlhbnQgbXRrX2pwZWdfZHJ2ZGF0YSA9IHsNCisJLmNsa3MgPSBtdGtfanBlZ19jbG9ja3Ms DQorCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUobXRrX2pwZWdfY2xvY2tzKSwNCisJLmZvcm1hdHMg PSBtdGtfanBlZ19lbmNfZm9ybWF0cywNCisJLm51bV9mb3JtYXRzID0gTVRLX0pQRUdfRU5DX05V TV9GT1JNQVRTLA0KKwkucW9wcyA9ICZtdGtfanBlZ19lbmNfcW9wcywNCisJLmlycV9oYW5kbGVy ID0gbXRrX2pwZWdfZW5jX2lycSwNCisJLmh3X3Jlc2V0ID0gbXRrX2pwZWdfZW5jX3Jlc2V0LA0K KwkubTJtX29wcyA9ICZtdGtfanBlZ19lbmNfbTJtX29wcywNCisJLmRldl9uYW1lID0gIm10ay1q cGVnLWVuYyIsDQorCS5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfZW5jX2lvY3RsX29wcywNCisJLm91 dF9xX2RlZmF1bHRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1lVWVYsDQorCS5jYXBfcV9kZWZhdWx0 X2ZvdXJjYyA9IFY0TDJfUElYX0ZNVF9KUEVHLA0KK307DQorDQogc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgbXRrX2pwZWdfbWF0Y2hbXSA9IHsNCiAJew0KIAkJLmNvbXBhdGlibGUg PSAibWVkaWF0ZWssbXQ4MTczLWpwZ2RlYyIsDQpAQCAtMTE5OSw2ICsxNTQwLDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19qcGVnX21hdGNoW10gPSB7DQogCQkuY29t cGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtanBnZGVjIiwNCiAJCS5kYXRhID0gJm10ODE3M19q cGVnX2RydmRhdGEsDQogCX0sDQorCXsNCisJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ay1q cGdlbmMiLA0KKwkJLmRhdGEgPSAmbXRrX2pwZWdfZHJ2ZGF0YSwNCisJfSwNCiAJe30sDQogfTsN CiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2NvcmUuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5o DQppbmRleCBkMTFkMzY2YTI0N2UuLjUwZTEyYmFhMGI2MyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oDQorKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuaA0KQEAgLTMsNiArMyw3IEBADQog ICogQ29weXJpZ2h0IChjKSAyMDE2IE1lZGlhVGVrIEluYy4NCiAgKiBBdXRob3I6IE1pbmcgSHNp dSBUc2FpIDxtaW5naHNpdS50c2FpQG1lZGlhdGVrLmNvbT4NCiAgKiAgICAgICAgIFJpY2sgQ2hh bmcgPHJpY2suY2hhbmdAbWVkaWF0ZWsuY29tPg0KKyAqICAgICAgICAgWGlhIEppYW5nIDx4aWEu amlhbmdAbWVkaWF0ZWsuY29tPg0KICAqLw0KIA0KICNpZm5kZWYgX01US19KUEVHX0NPUkVfSA0K QEAgLTEyLDYgKzEzLDggQEANCiAjaW5jbHVkZSA8bWVkaWEvdjRsMi1jdHJscy5oPg0KICNpbmNs dWRlIDxtZWRpYS92NGwyLWRldmljZS5oPg0KICNpbmNsdWRlIDxtZWRpYS92NGwyLWZoLmg+DQor I2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5oPg0KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWlv Y3RsLmg+DQogDQogI2RlZmluZSBNVEtfSlBFR19OQU1FCQkibXRrLWpwZWciDQogDQpAQCAtMjks NiArMzIsOCBAQA0KIA0KICNkZWZpbmUgTVRLX0pQRUdfSFdfVElNRU9VVF9NU0VDIDEwMDANCiAN CisjZGVmaW5lIE1US19KUEVHX01BWF9FWElGX1NJWkUJKDY0ICogMTAyNCkNCisNCiAvKioNCiAg KiBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSAtIHN0YXRlcyBvZiB0aGUgY29udGV4dCBzdGF0ZSBt YWNoaW5lDQogICogQE1US19KUEVHX0lOSVQ6CQljdXJyZW50IHN0YXRlIGlzIGluaXRpYWxpemVk DQpAQCAtMTA0LDYgKzEwOSw3IEBAIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIC8qKg0KICAqIHN0 cnVjdCBqcGVnX2ZtdCAtIGRyaXZlcidzIGludGVybmFsIGNvbG9yIGZvcm1hdCBkYXRhDQogICog QGZvdXJjYzoJdGhlIGZvdXJjYyBjb2RlLCAwIGlmIG5vdCBhcHBsaWNhYmxlDQorICogQGh3X2Zv cm1hdDoJaGFyZHdhcmUgZm9ybWF0IHZhbHVlDQogICogQGhfc2FtcGxlOglob3Jpem9udGFsIHNh bXBsZSBjb3VudCBvZiBwbGFuZSBpbiA0ICogNCBwaXhlbCBpbWFnZQ0KICAqIEB2X3NhbXBsZToJ dmVydGljYWwgc2FtcGxlIGNvdW50IG9mIHBsYW5lIGluIDQgKiA0IHBpeGVsIGltYWdlDQogICog QGNvbHBsYW5lczoJbnVtYmVyIG9mIGNvbG9yIHBsYW5lcyAoMSBmb3IgcGFja2VkIGZvcm1hdHMp DQpAQCAtMTEzLDYgKzExOSw3IEBAIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KICAqLw0KIHN0cnVj dCBtdGtfanBlZ19mbXQgew0KIAl1MzIJZm91cmNjOw0KKwl1MzIJaHdfZm9ybWF0Ow0KIAlpbnQJ aF9zYW1wbGVbVklERU9fTUFYX1BMQU5FU107DQogCWludAl2X3NhbXBsZVtWSURFT19NQVhfUExB TkVTXTsNCiAJaW50CWNvbHBsYW5lczsNCkBAIC0xMjUsMTAgKzEzMiwxMiBAQCBzdHJ1Y3QgbXRr X2pwZWdfZm10IHsNCiAgKiBtdGtfanBlZ19xX2RhdGEgLSBwYXJhbWV0ZXJzIG9mIG9uZSBxdWV1 ZQ0KICAqIEBmbXQ6CSAgZHJpdmVyLXNwZWNpZmljIGZvcm1hdCBvZiB0aGlzIHF1ZXVlDQogICog QHBpeF9tcDoJICBtdWx0aXBsYW5hciBmb3JtYXQNCisgKiBAZW5jX2Nyb3BfcmVjdDoJanBlZyBl bmNvZGVyIGNyb3AgaW5mb3JtYXRpb24NCiAgKi8NCiBzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhIHsN CiAJc3RydWN0IG10a19qcGVnX2ZtdAkqZm10Ow0KIAlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21w bGFuZSBwaXhfbXA7DQorCXN0cnVjdCB2NGwyX3JlY3QgZW5jX2Nyb3BfcmVjdDsNCiB9Ow0KIA0K IC8qKg0KQEAgLTEzOCw2ICsxNDcsMTAgQEAgc3RydWN0IG10a19qcGVnX3FfZGF0YSB7DQogICog QGNhcF9xOgkJZGVzdGluYXRpb24gKGNhcHR1cmUpIHF1ZXVlIHF1ZXVlIGluZm9ybWF0aW9uDQog ICogQGZoOgkJCVY0TDIgZmlsZSBoYW5kbGUNCiAgKiBAc3RhdGU6CQlzdGF0ZSBvZiB0aGUgY29u dGV4dA0KKyAqIEBlbmFibGVfZXhpZjoJZW5hYmxlIGV4aWYgbW9kZSBvZiBqcGVnIGVuY29kZXIN CisgKiBAZW5jX3F1YWxpdHk6CWpwZWcgZW5jb2RlciBxdWFsaXR5DQorICogQHJlc3RhcnRfaW50 ZXJ2YWw6CWpwZWcgZW5jb2RlciByZXN0YXJ0IGludGVydmFsDQorICogQGN0cmxfaGRsOgkJY29u dHJvbHMgaGFuZGxlcg0KICAqLw0KIHN0cnVjdCBtdGtfanBlZ19jdHggew0KIAlzdHJ1Y3QgbXRr X2pwZWdfZGV2CQkqanBlZzsNCkBAIC0xNDUsNiArMTU4LDEwIEBAIHN0cnVjdCBtdGtfanBlZ19j dHggew0KIAlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhCQljYXBfcTsNCiAJc3RydWN0IHY0bDJfZmgJ CQlmaDsNCiAJZW51bSBtdGtfanBlZ19jdHhfc3RhdGUJCXN0YXRlOw0KKwlib29sIGVuYWJsZV9l eGlmOw0KKwl1OCBlbmNfcXVhbGl0eTsNCisJdTggcmVzdGFydF9pbnRlcnZhbDsNCisJc3RydWN0 IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGRsOw0KIH07DQogDQogI2VuZGlmIC8qIF9NVEtfSlBF R19DT1JFX0ggKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2VuY19ody5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19lbmNfaHcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u MWNmMDM3YmY3MmRkDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQpAQCAtMCwwICsxLDE1NCBAQA0KKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCisvKg0KKyAqIENvcHlyaWdodCAoYykg MjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRp YXRlay5jb20+DQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvaW8uaD4NCisjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1jb3JlLmg+DQor I2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+DQorDQorI2luY2x1ZGUgIm10 a19qcGVnX2VuY19ody5oIg0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3Fs dCBtdGtfanBlZ19lbmNfcXVhbGl0eVtdID0gew0KKwl7LnF1YWxpdHlfcGFyYW0gPSAzNCwgLmhh cmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RMzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0g PSAzOSwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RMzl9LA0KKwl7LnF1YWxp dHlfcGFyYW0gPSA0OCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNDh9LA0K Kwl7LnF1YWxpdHlfcGFyYW0gPSA2MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElU WV9RNjB9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA2NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19F TkNfUVVBTElUWV9RNjR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA2OCwgLmhhcmR3YXJlX3ZhbHVl ID0gSlBFR19FTkNfUVVBTElUWV9RNjh9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA3NCwgLmhhcmR3 YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4 MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODB9LA0KKwl7LnF1YWxpdHlf cGFyYW0gPSA4MiwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODJ9LA0KKwl7 LnF1YWxpdHlfcGFyYW0gPSA4NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9R ODR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4NywgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNf UVVBTElUWV9RODd9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5MCwgLmhhcmR3YXJlX3ZhbHVlID0g SlBFR19FTkNfUVVBTElUWV9ROTB9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5MiwgLmhhcmR3YXJl X3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9ROTJ9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5NSwg LmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9ROTV9LA0KKwl7LnF1YWxpdHlfcGFy YW0gPSA5NywgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9ROTd9LA0KK307DQor DQordm9pZCBtdGtfanBlZ19lbmNfcmVzZXQodm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJd3Jp dGVsKDAsIGJhc2UgKyBKUEVHX0VOQ19SU1RCKTsNCisJd3JpdGVsKEpQRUdfRU5DX1JFU0VUX0JJ VCwgYmFzZSArIEpQRUdfRU5DX1JTVEIpOw0KKwl3cml0ZWwoMCwgYmFzZSArIEpQRUdfRU5DX0NP REVDX1NFTCk7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9f aW9tZW0gKmJhc2UpDQorew0KKwlyZXR1cm4gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RNQV9BRERS MCkgLQ0KKwkgICAgICAgcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQorfQ0KKw0K K3ZvaWQgbXRrX2pwZWdfZW5jX3N0YXJ0KHZvaWQgX19pb21lbSAqYmFzZSkNCit7DQorCXUzMiB2 YWx1ZTsNCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVl IHw9IEpQRUdfRU5DX0NUUkxfSU5UX0VOX0JJVCB8IEpQRUdfRU5DX0NUUkxfRU5BQkxFX0JJVDsN CisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorfQ0KKw0KK3ZvaWQgbXRr X2pwZWdfc2V0X2VuY19zcmMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCAgdm9pZCBfX2lvbWVt ICpiYXNlLA0KKwkJCSAgc3RydWN0IHZiMl9idWZmZXIgKnNyY19idWYpDQorew0KKwlpbnQgaTsN CisJZG1hX2FkZHJfdCBkbWFfYWRkcjsNCisNCisJZm9yIChpID0gMDsgaSA8IHNyY19idWYtPm51 bV9wbGFuZXM7IGkrKykgew0KKwkJZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFf YWRkcihzcmNfYnVmLCBpKSArDQorCQkJICAgc3JjX2J1Zi0+cGxhbmVzW2ldLmRhdGFfb2Zmc2V0 Ow0KKwkJaWYgKCFpKQ0KKwkJCXdyaXRlbChkbWFfYWRkciwgYmFzZSArIEpQRUdfRU5DX1NSQ19M VU1BX0FERFIpOw0KKwkJZWxzZQ0KKwkJCXdyaXRlbChkbWFfYWRkciwgYmFzZSArIEpQRUdfRU5D X1NSQ19DSFJPTUFfQUREUik7DQorCX0NCit9DQorDQordm9pZCBtdGtfanBlZ19zZXRfZW5jX2Rz dChzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsIHZvaWQgX19pb21lbSAqYmFzZSwNCisJCQkgIHN0 cnVjdCB2YjJfYnVmZmVyICpkc3RfYnVmKQ0KK3sNCisJZG1hX2FkZHJfdCBkbWFfYWRkcjsNCisJ c2l6ZV90IHNpemU7DQorCXUzMiBkbWFfYWRkcl9vZmZzZXQ7DQorCXUzMiBkbWFfYWRkcl9vZmZz ZXRtYXNrOw0KKw0KKwlkbWFfYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKGRz dF9idWYsIDApOw0KKwlkbWFfYWRkcl9vZmZzZXQgPSBjdHgtPmVuYWJsZV9leGlmID8gTVRLX0pQ RUdfTUFYX0VYSUZfU0laRSA6IDA7DQorCWRtYV9hZGRyX29mZnNldG1hc2sgPSBkbWFfYWRkciAm IEpQRUdfRU5DX0RTVF9BRERSX09GRlNFVF9NQVNLOw0KKwlzaXplID0gdmIyX3BsYW5lX3NpemUo ZHN0X2J1ZiwgMCk7DQorDQorCXdyaXRlbChkbWFfYWRkcl9vZmZzZXQgJiB+MHhmLCBiYXNlICsg SlBFR19FTkNfT0ZGU0VUX0FERFIpOw0KKwl3cml0ZWwoZG1hX2FkZHJfb2Zmc2V0bWFzayAmIDB4 ZiwgYmFzZSArIEpQRUdfRU5DX0JZVEVfT0ZGU0VUX01BU0spOw0KKwl3cml0ZWwoZG1hX2FkZHIg JiB+MHhmLCBiYXNlICsgSlBFR19FTkNfRFNUX0FERFIwKTsNCisJd3JpdGVsKChkbWFfYWRkciAr IHNpemUpICYgfjB4ZiwgYmFzZSArIEpQRUdfRU5DX1NUQUxMX0FERFIwKTsNCit9DQorDQordm9p ZCBtdGtfanBlZ19zZXRfZW5jX3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsICB2b2lk IF9faW9tZW0gKmJhc2UpDQorew0KKwl1MzIgdmFsdWU7DQorCXUzMiB3aWR0aCA9IGN0eC0+b3V0 X3EuZW5jX2Nyb3BfcmVjdC53aWR0aDsNCisJdTMyIGhlaWdodCA9IGN0eC0+b3V0X3EuZW5jX2Ny b3BfcmVjdC5oZWlnaHQ7DQorCXUzMiBlbmNfZm9ybWF0ID0gY3R4LT5vdXRfcS5mbXQtPmZvdXJj YzsNCisJdTMyIGJ5dGVzcGVybGluZSA9IGN0eC0+b3V0X3EucGl4X21wLnBsYW5lX2ZtdFswXS5i eXRlc3BlcmxpbmU7DQorCXUzMiBibGtfbnVtOw0KKwl1MzIgaW1nX3N0cmlkZTsNCisJdTMyIG1l bV9zdHJpZGU7DQorCXUzMiBpLCBlbmNfcXVhbGl0eTsNCisNCisJdmFsdWUgPSB3aWR0aCA8PCAx NiB8IGhlaWdodDsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfSU1HX1NJWkUpOw0K Kw0KKwlpZiAoZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYxMk0gfHwNCisJICAgIGVuY19m b3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMjFNKQ0KKwkgICAgLyoNCisJICAgICAqIFRvdGFsIDgg eCA4IGJsb2NrIG51bWJlciBvZiBsdW1hIGFuZCBjaHJvbWEuDQorCSAgICAgKiBUaGUgbnVtYmVy IG9mIGJsb2NrcyBpcyBjb3VudGVkIGZyb20gMC4NCisJICAgICAqLw0KKwkJYmxrX251bSA9IERJ Vl9ST1VORF9VUCh3aWR0aCwgMTYpICoNCisJCQkgIERJVl9ST1VORF9VUChoZWlnaHQsIDE2KSAq IDYgLSAxOw0KKwllbHNlDQorCQlibGtfbnVtID0gRElWX1JPVU5EX1VQKHdpZHRoLCAxNikgKg0K KwkJCSAgRElWX1JPVU5EX1VQKGhlaWdodCwgOCkgKiA0IC0gMTsNCisJd3JpdGVsKGJsa19udW0s IGJhc2UgKyBKUEVHX0VOQ19CTEtfTlVNKTsNCisNCisJaWYgKGVuY19mb3JtYXQgPT0gVjRMMl9Q SVhfRk1UX05WMTJNIHx8DQorCSAgICBlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjIxTSkg ew0KKwkJLyogNDoyOjAgKi8NCisJCWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCwgMTYpOw0K KwkJbWVtX3N0cmlkZSA9IGJ5dGVzcGVybGluZTsNCisJfSBlbHNlIHsNCisJCS8qIDQ6MjoyICov DQorCQlpbWdfc3RyaWRlID0gcm91bmRfdXAod2lkdGggKiAyLCAzMik7DQorCQltZW1fc3RyaWRl ID0gaW1nX3N0cmlkZTsNCisJfQ0KKwl3cml0ZWwoaW1nX3N0cmlkZSwgYmFzZSArIEpQRUdfRU5D X0lNR19TVFJJREUpOw0KKwl3cml0ZWwobWVtX3N0cmlkZSwgYmFzZSArIEpQRUdfRU5DX1NUUklE RSk7DQorDQorCWVuY19xdWFsaXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbMF0uaGFyZHdhcmVf dmFsdWU7DQorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG10a19qcGVnX2VuY19xdWFsaXR5 KTsgaSsrKSB7DQorCQlpZiAoY3R4LT5lbmNfcXVhbGl0eSA8PSBtdGtfanBlZ19lbmNfcXVhbGl0 eVtpXS5xdWFsaXR5X3BhcmFtKSB7DQorCQkJZW5jX3F1YWxpdHkgPSBtdGtfanBlZ19lbmNfcXVh bGl0eVtpXS5oYXJkd2FyZV92YWx1ZTsNCisJCQlicmVhazsNCisJCX0NCisJfQ0KKwl3cml0ZWwo ZW5jX3F1YWxpdHksIGJhc2UgKyBKUEVHX0VOQ19RVUFMSVRZKTsNCisNCisJdmFsdWUgPSByZWFk bChiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX1lVVl9G T1JNQVRfTUFTSzsNCisJdmFsdWUgfD0gKGN0eC0+b3V0X3EuZm10LT5od19mb3JtYXQgJiAzKSA8 PCAzOw0KKwlpZiAoY3R4LT5lbmFibGVfZXhpZikNCisJCXZhbHVlIHw9IEpQRUdfRU5DX0NUUkxf RklMRV9GT1JNQVRfQklUOw0KKwllbHNlDQorCQl2YWx1ZSAmPSB+SlBFR19FTkNfQ1RSTF9GSUxF X0ZPUk1BVF9CSVQ7DQorCWlmIChjdHgtPnJlc3RhcnRfaW50ZXJ2YWwpDQorCQl2YWx1ZSB8PSBK UEVHX0VOQ19DVFJMX1JFU1RBUlRfRU5fQklUOw0KKwllbHNlDQorCQl2YWx1ZSAmPSB+SlBFR19F TkNfQ1RSTF9SRVNUQVJUX0VOX0JJVDsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNf Q1RSTCk7DQorDQorCXdyaXRlbChjdHgtPnJlc3RhcnRfaW50ZXJ2YWwsIGJhc2UgKyBKUEVHX0VO Q19SU1RfTUNVX05VTSk7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1q cGVnL210a19qcGVnX2VuY19ody5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAwLi42MWM2MGU0ZTU4ZWENCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgNCkBAIC0wLDAgKzEsOTEgQEANCisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLg0KKyAqIEF1dGhvcjogWGlhIEppYW5nIDx4aWEu amlhbmdAbWVkaWF0ZWsuY29tPg0KKyAqDQorICovDQorDQorI2lmbmRlZiBfTVRLX0pQRUdfRU5D X0hXX0gNCisjZGVmaW5lIF9NVEtfSlBFR19FTkNfSFdfSA0KKw0KKyNpbmNsdWRlIDxtZWRpYS92 aWRlb2J1ZjItY29yZS5oPg0KKw0KKyNpbmNsdWRlICJtdGtfanBlZ19jb3JlLmgiDQorDQorI2Rl ZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX0RPTkUJQklUKDApDQorI2RlZmluZSBKUEVHX0VOQ19J TlRfU1RBVFVTX01BU0tfQUxMSVJRCTB4MTMNCisNCisjZGVmaW5lIEpQRUdfRU5DX0RTVF9BRERS X09GRlNFVF9NQVNLCUdFTk1BU0soMywgMCkNCisNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfWVVW X0ZPUk1BVF9NQVNLCTB4MTgNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQJ QklUKDEwKQ0KKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9GSUxFX0ZPUk1BVF9CSVQJQklUKDUpDQor I2RlZmluZSBKUEVHX0VOQ19DVFJMX0lOVF9FTl9CSVQJQklUKDIpDQorI2RlZmluZSBKUEVHX0VO Q19DVFJMX0VOQUJMRV9CSVQJQklUKDApDQorI2RlZmluZSBKUEVHX0VOQ19SRVNFVF9CSVQJCUJJ VCgwKQ0KKw0KKyNkZWZpbmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVVlWCTANCisjZGVmaW5lIEpQ RUdfRU5DX1lVVl9GT1JNQVRfWVZZVQkxDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX05W MTIJMg0KKyNkZWZpbmUgSkVQR19FTkNfWVVWX0ZPUk1BVF9OVjIxCTMNCisNCisjZGVmaW5lIEpQ RUdfRU5DX1FVQUxJVFlfUTYwCQkweDANCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTgwCQkw eDENCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTkwCQkweDINCisjZGVmaW5lIEpQRUdfRU5D X1FVQUxJVFlfUTk1CQkweDMNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTM5CQkweDQNCisj ZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTY4CQkweDUNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJ VFlfUTg0CQkweDYNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTkyCQkweDcNCisjZGVmaW5l IEpQRUdfRU5DX1FVQUxJVFlfUTQ4CQkweDgNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTc0 CQkweGENCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTg3CQkweGINCisjZGVmaW5lIEpQRUdf RU5DX1FVQUxJVFlfUTM0CQkweGMNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTY0CQkweGUN CisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTgyCQkweGYNCisjZGVmaW5lIEpQRUdfRU5DX1FV QUxJVFlfUTk3CQkweDEwDQorDQorI2RlZmluZSBKUEVHX0VOQ19SU1RCCQkJMHgxMDANCisjZGVm aW5lIEpQRUdfRU5DX0NUUkwJCQkweDEwNA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWQkJMHgx MDgNCisjZGVmaW5lIEpQRUdfRU5DX0JMS19OVU0JCTB4MTBDDQorI2RlZmluZSBKUEVHX0VOQ19C TEtfQ05UCQkweDExMA0KKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUUwkJMHgxMWMNCisjZGVmaW5l IEpQRUdfRU5DX0RTVF9BRERSMAkJMHgxMjANCisjZGVmaW5lIEpQRUdfRU5DX0RNQV9BRERSMAkJ MHgxMjQNCisjZGVmaW5lIEpQRUdfRU5DX1NUQUxMX0FERFIwCQkweDEyOA0KKyNkZWZpbmUgSlBF R19FTkNfT0ZGU0VUX0FERFIJCTB4MTM4DQorI2RlZmluZSBKUEVHX0VOQ19SU1RfTUNVX05VTQkJ MHgxNTANCisjZGVmaW5lIEpQRUdfRU5DX0lNR19TSVpFCQkweDE1NA0KKyNkZWZpbmUgSlBFR19F TkNfREVCVUdfSU5GTzAJCTB4MTYwDQorI2RlZmluZSBKUEVHX0VOQ19ERUJVR19JTkZPMQkJMHgx NjQNCisjZGVmaW5lIEpQRUdfRU5DX1RPVEFMX0NZQ0xFCQkweDE2OA0KKyNkZWZpbmUgSlBFR19F TkNfQllURV9PRkZTRVRfTUFTSwkweDE2Yw0KKyNkZWZpbmUgSlBFR19FTkNfU1JDX0xVTUFfQURE UgkJMHgxNzANCisjZGVmaW5lIEpQRUdfRU5DX1NSQ19DSFJPTUFfQUREUgkweDE3NA0KKyNkZWZp bmUgSlBFR19FTkNfU1RSSURFCQkJMHgxNzgNCisjZGVmaW5lIEpQRUdfRU5DX0lNR19TVFJJREUJ CTB4MTdjDQorI2RlZmluZSBKUEVHX0VOQ19EQ01fQ1RSTAkJMHgzMDANCisjZGVmaW5lIEpQRUdf RU5DX0NPREVDX1NFTAkJMHgzMTQNCisjZGVmaW5lIEpQRUdfRU5DX1VMVFJBX1RIUkVTCQkweDMx OA0KKw0KKy8qKg0KKyAqIHN0cnVjdCBtdGtfanBlZ19lbmNfcWx0IC0gSlBFRyBlbmNvZGVyIHF1 YWxpdHkgZGF0YQ0KKyAqIEBxdWFsaXR5X3BhcmFtOglxdWFsaXR5IHZhbHVlDQorICogQGhhcmR3 YXJlX3ZhbHVlOgloYXJkd2FyZSB2YWx1ZSBvZiBxdWFsaXR5DQorICovDQorc3RydWN0IG10a19q cGVnX2VuY19xbHQgew0KKwl1OAlxdWFsaXR5X3BhcmFtOw0KKwl1OAloYXJkd2FyZV92YWx1ZTsN Cit9Ow0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAqYmFzZSk7DQor dTMyIG10a19qcGVnX2VuY19nZXRfZmlsZV9zaXplKHZvaWQgX19pb21lbSAqYmFzZSk7DQordm9p ZCBtdGtfanBlZ19lbmNfc3RhcnQodm9pZCBfX2lvbWVtICplbmNfcmVnX2Jhc2UpOw0KK3ZvaWQg bXRrX2pwZWdfc2V0X2VuY19zcmMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCAgdm9pZCBfX2lv bWVtICpiYXNlLA0KKwkJCSAgc3RydWN0IHZiMl9idWZmZXIgKnNyY19idWYpOw0KK3ZvaWQgbXRr X2pwZWdfc2V0X2VuY19kc3Qoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCB2b2lkIF9faW9tZW0g KmJhc2UsDQorCQkJICBzdHJ1Y3QgdmIyX2J1ZmZlciAqZHN0X2J1Zik7DQordm9pZCBtdGtfanBl Z19zZXRfZW5jX3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsICB2b2lkIF9faW9tZW0g KmJhc2UpOw0KKw0KKyNlbmRpZiAvKiBfTVRLX0pQRUdfRU5DX0hXX0ggKi8NCi0tIA0KMi4xOC4w DQo=