From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=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, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50848C43603 for ; Wed, 4 Dec 2019 09:45:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DCA7820637 for ; Wed, 4 Dec 2019 09:45:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="VNkh/hfN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727733AbfLDJp4 (ORCPT ); Wed, 4 Dec 2019 04:45:56 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:57995 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725971AbfLDJp4 (ORCPT ); Wed, 4 Dec 2019 04:45:56 -0500 X-UUID: 71addc16bd54414b99ca3167acd2e0bd-20191204 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=MD+xNNGYy473YVBvhwMzf5AJKpt7UJg8FotfZasHtoM=; b=VNkh/hfN7AyzkxgI+jYr3ZKvBjokGoHatzHQ9zBS9gJAfANURN6zeYRJge8Yz6F7gXj5mpMVFlP7Ir6iQ2xOISj/oCx7ZHlq2Lt0Ia36GMT/MMX9OMU5wkvl17rlcWM2oB9GVmjA13zJ6gfBdJ5yBjT69wK1P8gFUC4N9mKX7gs=; X-UUID: 71addc16bd54414b99ca3167acd2e0bd-20191204 Received: from mtkmrs01.mediatek.inc [(172.21.131.159)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1598996826; Wed, 04 Dec 2019 17:45:35 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 4 Dec 2019 17:45:22 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 4 Dec 2019 17:45:06 +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 v5 5/5] media: platform: Add jpeg dec/enc feature Date: Wed, 4 Dec 2019 17:44:29 +0800 Message-ID: <20191204094424.2562-6-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191204094424.2562-1-xia.jiang@mediatek.com> References: <20191204094424.2562-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+DQotLS0NCnY1OiBzdXBwb3J0IGNyb3AgZm9yIGVuY29kZXIg YW5kIGNvbXBvc2UgZm9yIGRlY29kZXIgaW4gc19zZWxlY3Rpb24gYW5kDQogICAgZ19zZWxlY3Rp b24gZnVuY3Rpb24uDQogICAgdXNlIGNsYW1wKCkgdG8gcmVwbGFjZSBtdGtfanBlZ19ib3VuZF9h bGlnbl9pbWFnZSgpIGFuZCByb3VuZF91cCgpDQogICAgdG8gcmVwbGFjZSBtdGtfanBlZ19hbGln bigpLg0KICAgIGRlbGV0ZSBqcGVnX2VuY19wYXJhbS9tdGtfanBlZ19lbmNfcGFyYW0gc3RydWN0 dXJlIGFuZA0KICAgIG10a19qcGVnX3NldF9wYXJhbSgpLCBwcm9ncmFtIHRoZSByZWdpc3RlcnMg ZGlyZWN0bHkgYmFzZWQgb24NCiAgICB0aGUgb3JpZ2luYWwgVjRMMiB2YWx1ZXMuDQogICAgbW92 ZSBtYWNybyBkZWZpbml0aW9uIGFib3V0IGh3IHRvIG10a19qcGVnX2VuY19yZWcuaC4NCiAgICBk ZWxldGUgdW5uZWNlc3NhcnkgVjRMMiBsb2dzIGluIGRyaXZlci4NCiAgICBjYW5jZWwgc3BpbiBs b2NrIGFuZCB1bmxvY2sgb3BlcmF0aW9uIGluIGRldmllYyBydW4gZnVuY3Rpb24uDQogICAgY2hh bmdlIGpwZWcgZW5jIHJlZ2lzdGVyIG9mZnNldCBoZXggbnVtYmVyYWxzIGZyb20gdXBlcmNhc2Ug dG8NCiAgICBsb3dlcmNhc2UuDQogIA0KdjQ6IHNwbGl0IG10a19qcGVnX3RyeV9mbXRfbXBsYW5l KCkgdG8gdHdvIGZ1bmN0aW9ucywgb25lIGZvciBlbmNvZGVyLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIG9uZSBmb3IgZGVjb2Rlci4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg DQogICAgc3BsaXQgbXRrX2pwZWdfc2V0X2RlZmF1bHRfcGFyYW1zKCkgdG8gdHdvIGZ1bmN0aW9u cywgb25lIGZvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANCiAgICBlbmNvZGVyLCBvbmUgZm9yIGRlY29kZXIuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGFkZCBjcm9w cGluZyBzdXBwb3J0IGZvciBlbmNvZGVyIGluIGcvc19zZWxlY3Rpb24gaW9jdGxzLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBj aGFuZ2UgZXhpZiBtb2RlIHN1cHBvcnQgYnkgdXNpbmcgVjRMMl9KUEVHX0FDVElWRV9NQVJLRVJf QVBQMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICANCiAgICBjaGFuZ2UgTVRLX0pQRUdfTUFYX1dJRFRIL01US19KUEVHX01BWF9IRUlHSCBm cm9tIDgxOTIgdG8gNjU1MzUgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICANCiAgICBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBtb3ZlIHdpZHRoIHNo aWZ0aW5nIG9wZXJhdGlvbiBiZWhpbmQgYWxpZ25pbmcgb3BlcmF0aW9uIGluICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIG10a19q cGVnX3RyeV9lbmNfZm10X21wbGFuZSgpIGZvciBidWcgZml4LiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBmaXggdXNlciBhYnVz ZWluZyBkYXRhX29mZnNldCBpc3N1ZSBmb3IgRE1BQlVGIGluICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIG10a19qcGVnX3NldF9l bmNfc3JjKCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIA0KICAgIGZpeCBrYnVpbGQgd2FyaW5nczogY2hhbmdlIE1US19KUEVHX01JTl9I RUlHSFQvTVRLX0pQRUdfTUFYX0hFSUdIVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIE1US19K UEVHX01JTl9XSURUSC9NVEtfSlBFR19NQVhfV0lEVEggZnJvbSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg ICAgJ2ludCcgdHlwZSB0byAndW5zaWduZWQgaW50JyB0eXBlLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg ICAgICAgIGZpeCBtc2xlYWRpbmdseSBpbmRlbnRlZCBvZiAnZWxzZScuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdjM6IGRlbGV0 ZSBDaGFuZ2UtSWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIA0KICAgIG9ubHkgdGVzdCBvbmNlIGhhbmRsZXItPmVycm9yIGFmdGVyIHRo ZSBsYXN0IHY0bDJfY3RybF9uZXdfc3RkKCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIHNlcGVyYXRlIGNoYW5nZXMgb2YgdjRsMi1j dHJscy5jIGFuZCB2NGwyLWNvbnRyb2xzLmggdG8gbmV3IHBhdGNoLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdjI6IGZpeCBjb21wbGlh bmNlIHRlc3QgZmFpbCwgY2hlY2sgY3JlYXRlZCBidWZmZXIgc2l6ZSBpbiBkcml2ZXIuIA0KLS0t DQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZSAgICAgIHwgICA1ICst DQogLi4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYyAgIHwgNjc4ICsr KysrKysrKysrKysrLS0tLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19j b3JlLmggICB8ICA0MyArLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19k ZWNfaHcuaCB8ICAgNyArLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19l bmNfaHcuYyB8IDI3MSArKysrKysrDQogLi4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19q cGVnX2VuY19ody5oIHwgIDg2ICsrKw0KIC4uLi9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19l bmNfcmVnLmggICAgICB8ICA3OCArKw0KIDcgZmlsZXMgY2hhbmdlZCwgMTAwNCBpbnNlcnRpb25z KCspLCAxNjQgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2Vu Y19yZWcuaA0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9N YWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCmluZGV4 IDQ4NTE2ZGNmOTZlNi4uNzZjMzNhYWQwZjNmIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9NYWtlZmlsZQ0KQEAgLTEsMyArMSw2IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5DQotbXRrX2pwZWctb2JqcyA6PSBtdGtfanBlZ19jb3JlLm8gbXRr X2pwZWdfZGVjX2h3Lm8gbXRrX2pwZWdfZGVjX3BhcnNlLm8NCittdGtfanBlZy1vYmpzIDo9IG10 a19qcGVnX2NvcmUubyBcDQorCQkgbXRrX2pwZWdfZGVjX2h3Lm8gXA0KKwkJIG10a19qcGVnX2Rl Y19wYXJzZS5vIFwNCisJCSBtdGtfanBlZ19lbmNfaHcubw0KIG9iai0kKENPTkZJR19WSURFT19N RURJQVRFS19KUEVHKSArPSBtdGtfanBlZy5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1qcGVnL210a19qcGVnX2NvcmUuYw0KaW5kZXggMDFjZTIwZTMyOTUzLi42ODJhZGIwMTA2 OTIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2NvcmUuYw0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19j b3JlLmMNCkBAIC0zLDYgKzMsNyBAQA0KICAqIENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJ bmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5j b20+DQogICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisg KiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCiAj aW5jbHVkZSA8bGludXgvY2xrLmg+DQpAQCAtMjMsNiArMjQsNyBAQA0KICNpbmNsdWRlIDxtZWRp YS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPg0KICNpbmNsdWRlIDxzb2MvbWVkaWF0ZWsvc21pLmg+ DQogDQorI2luY2x1ZGUgIm10a19qcGVnX2VuY19ody5oIg0KICNpbmNsdWRlICJtdGtfanBlZ19k ZWNfaHcuaCINCiAjaW5jbHVkZSAibXRrX2pwZWdfY29yZS5oIg0KICNpbmNsdWRlICJtdGtfanBl Z19kZWNfcGFyc2UuaCINCkBAIC0zMSw3ICszMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdf Zm10IG10a19qcGVnX2Zvcm1hdHNbXSA9IHsNCiAJew0KIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9G TVRfSlBFRywNCiAJCS5jb2xwbGFuZXMJPSAxLA0KLQkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9G TEFHX0RFQ19PVVRQVVQsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09VVFBV VCB8DQorCQkJCSAgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRVUkUsDQogCX0sDQogCXsNCiAJ CS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lVVjQyME0sDQpAQCAtNTEsNiArNTQsNDIgQEAgc3Rh dGljIHN0cnVjdCBtdGtfanBlZ19mbXQgbXRrX2pwZWdfZm9ybWF0c1tdID0gew0KIAkJLnZfYWxp Z24JPSAzLA0KIAkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFLA0KIAl9 LA0KKwl7DQorCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9OVjEyTSwNCisJCS5oX3NhbXBsZQk9 IHs0LCAyLCAyfSwNCisJCS52X3NhbXBsZQk9IHs0LCAyLCAyfSwNCisJCS5jb2xwbGFuZXMJPSAy LA0KKwkJLmhfYWxpZ24JPSA0LA0KKwkJLnZfYWxpZ24JPSA0LA0KKwkJLmZsYWdzCQk9IE1US19K UEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQsDQorCX0sDQorCXsNCisJCS5mb3VyY2MJCT0gVjRMMl9Q SVhfRk1UX05WMjFNLA0KKwkJLmhfc2FtcGxlCT0gezQsIDIsIDJ9LA0KKwkJLnZfc2FtcGxlCT0g ezQsIDIsIDJ9LA0KKwkJLmNvbHBsYW5lcwk9IDIsDQorCQkuaF9hbGlnbgk9IDQsDQorCQkudl9h bGlnbgk9IDQsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCwNCisJ fSwNCisJew0KKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCisJCS5oX3NhbXBsZQk9 IHs0LCAyLCAyfSwNCisJCS52X3NhbXBsZQk9IHs0LCA0LCA0fSwNCisJCS5jb2xwbGFuZXMJPSAx LA0KKwkJLmhfYWxpZ24JPSA0LA0KKwkJLnZfYWxpZ24JPSAzLA0KKwkJLmZsYWdzCQk9IE1US19K UEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQsDQorCX0sDQorCXsNCisJCS5mb3VyY2MJCT0gVjRMMl9Q SVhfRk1UX1lWWVUsDQorCQkuaF9zYW1wbGUJPSB7NCwgMiwgMn0sDQorCQkudl9zYW1wbGUJPSB7 NCwgNCwgNH0sDQorCQkuY29scGxhbmVzCT0gMSwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2Fs aWduCT0gMywNCisJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KKwl9 LA0KIH07DQogDQogI2RlZmluZSBNVEtfSlBFR19OVU1fRk9STUFUUyBBUlJBWV9TSVpFKG10a19q cGVnX2Zvcm1hdHMpDQpAQCAtNzAsNiArMTA5LDExIEBAIHN0cnVjdCBtdGtfanBlZ19zcmNfYnVm IHsNCiBzdGF0aWMgaW50IGRlYnVnOw0KIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsN CiANCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfanBlZ19jdHggKmN0cmxfdG9fY3R4KHN0cnVj dCB2NGwyX2N0cmwgKmN0cmwpDQorew0KKwlyZXR1cm4gY29udGFpbmVyX29mKGN0cmwtPmhhbmRs ZXIsIHN0cnVjdCBtdGtfanBlZ19jdHgsIGN0cmxfaGRsKTsNCit9DQorDQogc3RhdGljIGlubGlu ZSBzdHJ1Y3QgbXRrX2pwZWdfY3R4ICptdGtfanBlZ19maF90b19jdHgoc3RydWN0IHY0bDJfZmgg KmZoKQ0KIHsNCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihmaCwgc3RydWN0IG10a19qcGVnX2N0eCwg ZmgpOw0KQEAgLTg2LDE0ICsxMzAsNzAgQEAgc3RhdGljIGludCBtdGtfanBlZ19xdWVyeWNhcChz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYg KmpwZWcgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KIA0KLQlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBN VEtfSlBFR19OQU1FICIgZGVjb2RlciIsIHNpemVvZihjYXAtPmRyaXZlcikpOw0KLQlzdHJzY3B5 KGNhcC0+Y2FyZCwgTVRLX0pQRUdfTkFNRSAiIGRlY29kZXIiLCBzaXplb2YoY2FwLT5jYXJkKSk7 DQorCXN0cnNjcHkoY2FwLT5kcml2ZXIsIE1US19KUEVHX05BTUUsIHNpemVvZihjYXAtPmRyaXZl cikpOw0KKwlpZiAoanBlZy0+bW9kZSA9PSAgTVRLX0pQRUdfRU5DKQ0KKwkJc3Ryc2NweShjYXAt PmNhcmQsIE1US19KUEVHX05BTUUgIiBlbmNvZGVyIiwgc2l6ZW9mKGNhcC0+Y2FyZCkpOw0KKwll bHNlDQorCQlzdHJzY3B5KGNhcC0+Y2FyZCwgTVRLX0pQRUdfTkFNRSAiIGRlY29kZXIiLCBzaXpl b2YoY2FwLT5jYXJkKSk7DQogCXNucHJpbnRmKGNhcC0+YnVzX2luZm8sIHNpemVvZihjYXAtPmJ1 c19pbmZvKSwgInBsYXRmb3JtOiVzIiwNCiAJCSBkZXZfbmFtZShqcGVnLT5kZXYpKTsNCiANCiAJ cmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgdmlkaW9jX2pwZWdfc19jdHJsKHN0cnVjdCB2 NGwyX2N0cmwgKmN0cmwpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBjdHJsX3Rv X2N0eChjdHJsKTsNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IGN0eC0+anBlZzsNCisJ aW50IHJldCA9IDA7DQorDQorCXN3aXRjaCAoY3RybC0+aWQpIHsNCisJY2FzZSBWNEwyX0NJRF9K UEVHX1JFU1RBUlRfSU5URVJWQUw6DQorCQljdHgtPnJlc3RhcnRfaW50ZXJ2YWwgPSBjdHJsLT52 YWw7DQorCQlicmVhazsNCisJY2FzZSBWNEwyX0NJRF9KUEVHX0NPTVBSRVNTSU9OX1FVQUxJVFk6 DQorCQljdHgtPmVuY19xdWFsaXR5ID0gY3RybC0+dmFsOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRM Ml9DSURfSlBFR19BQ1RJVkVfTUFSS0VSOg0KKwkJY3R4LT5lbmFibGVfZXhpZiA9IGN0cmwtPnZh bCAmIFY0TDJfSlBFR19BQ1RJVkVfTUFSS0VSX0FQUDE7DQorCQlicmVhazsNCisJfQ0KKw0KKwly ZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgbXRr X2pwZWdfY3RybF9vcHMgPSB7DQorCS5zX2N0cmwgPSB2aWRpb2NfanBlZ19zX2N0cmwsDQorfTsN CisNCitpbnQgbXRrX2pwZWdfY3RybHNfc2V0dXAoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0K K3sNCisJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgKm9wcyA9ICZtdGtfanBlZ19jdHJsX29w czsNCisJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyICpoYW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7 DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQorDQorCXY0bDJfY3Ry bF9oYW5kbGVyX2luaXQoaGFuZGxlciwgMyk7DQorDQorCWlmIChqcGVnLT5tb2RlID09IE1US19K UEVHX0VOQykgew0KKwkJdjRsMl9jdHJsX25ld19zdGQoaGFuZGxlciwgb3BzLCBWNEwyX0NJRF9K UEVHX1JFU1RBUlRfSU5URVJWQUwsDQorCQkJCSAgMCwgMTAwLCAxLCAwKTsNCisJCXY0bDJfY3Ry bF9uZXdfc3RkKGhhbmRsZXIsIG9wcywNCisJCQkJICBWNEwyX0NJRF9KUEVHX0NPTVBSRVNTSU9O X1FVQUxJVFksIDQ4LCAxMDAsIDEsDQorCQkJCSAgOTApOw0KKwkJdjRsMl9jdHJsX25ld19zdGQo aGFuZGxlciwgb3BzLCBWNEwyX0NJRF9KUEVHX0FDVElWRV9NQVJLRVIsIDAsDQorCQkJCSAgVjRM Ml9KUEVHX0FDVElWRV9NQVJLRVJfQVBQMSwgMCwgMCk7DQorDQorCQlpZiAoaGFuZGxlci0+ZXJy b3IpIHsNCisJCQl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCisJCQly ZXR1cm4gaGFuZGxlci0+ZXJyb3I7DQorCQl9DQorCX0NCisNCisJdjRsMl9jdHJsX2hhbmRsZXJf c2V0dXAoJmN0eC0+Y3RybF9oZGwpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGlu dCBtdGtfanBlZ19lbnVtX2ZtdChzdHJ1Y3QgbXRrX2pwZWdfZm10ICptdGtfanBlZ19mb3JtYXRz LCBpbnQgbiwNCiAJCQkgICAgIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYsIHUzMiB0eXBlKQ0KIHsN CkBAIC0xMTgsMTkgKzIxOCwyNyBAQCBzdGF0aWMgaW50IG10a19qcGVnX2VudW1fZm10KHN0cnVj dCBtdGtfanBlZ19mbXQgKm10a19qcGVnX2Zvcm1hdHMsIGludCBuLA0KIHN0YXRpYyBpbnQgbXRr X2pwZWdfZW51bV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJ CQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KIHsNCisJc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKw0KIAlyZXR1cm4gbXRrX2pwZWdf ZW51bV9mbXQobXRrX2pwZWdfZm9ybWF0cywgTVRLX0pQRUdfTlVNX0ZPUk1BVFMsIGYsDQorCQkJ CSBjdHgtPmpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8NCisJCQkJIE1US19KUEVHX0ZNVF9G TEFHX0VOQ19DQVBUVVJFIDoNCiAJCQkJIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsN CiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19lbnVtX2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkgICAgIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpDQog ew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7 DQorDQogCXJldHVybiBtdGtfanBlZ19lbnVtX2ZtdChtdGtfanBlZ19mb3JtYXRzLCBNVEtfSlBF R19OVU1fRk9STUFUUywgZiwNCisJCQkJIGN0eC0+anBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMg Pw0KKwkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCA6DQogCQkJCSBNVEtfSlBFR19G TVRfRkxBR19ERUNfT1VUUFVUKTsNCiB9DQogDQotc3RhdGljIHN0cnVjdCBtdGtfanBlZ19xX2Rh dGEgKm10a19qcGVnX2dldF9xX2RhdGEoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KLQkJCQkJ CSAgIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQ0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfcV9k YXRhICoNCittdGtfanBlZ19nZXRfcV9kYXRhKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgZW51 bSB2NGwyX2J1Zl90eXBlIHR5cGUpDQogew0KIAlpZiAoVjRMMl9UWVBFX0lTX09VVFBVVCh0eXBl KSkNCiAJCXJldHVybiAmY3R4LT5vdXRfcTsNCkBAIC0xNDMsOSArMjUxLDE0IEBAIHN0YXRpYyBz dHJ1Y3QgbXRrX2pwZWdfZm10ICptdGtfanBlZ19maW5kX2Zvcm1hdChzdHJ1Y3QgbXRrX2pwZWdf Y3R4ICpjdHgsDQogew0KIAl1bnNpZ25lZCBpbnQgaywgZm10X2ZsYWc7DQogDQotCWZtdF9mbGFn ID0gKGZtdF90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkgPw0KLQkJICAgTVRLX0pQ RUdfRk1UX0ZMQUdfREVDX09VVFBVVCA6DQotCQkgICBNVEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQ VFVSRTsNCisJaWYgKGN0eC0+anBlZy0+bW9kZSA9PSAgTVRLX0pQRUdfRU5DKQ0KKwkJZm10X2Zs YWcgPSAoZm10X3R5cGUgPT0gTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKSA/DQorCQkJICAgTVRL X0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCA6DQorCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfRU5D X0NBUFRVUkU7DQorCWVsc2UNCisJCWZtdF9mbGFnID0gKGZtdF90eXBlID09IE1US19KUEVHX0ZN VF9UWVBFX09VVFBVVCkgPw0KKwkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQgOg0K KwkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFOw0KIA0KIAlmb3IgKGsgPSAwOyBr IDwgTVRLX0pQRUdfTlVNX0ZPUk1BVFM7IGsrKykgew0KIAkJc3RydWN0IG10a19qcGVnX2ZtdCAq Zm10ID0gJm10a19qcGVnX2Zvcm1hdHNba107DQpAQCAtMTc3LDcgKzI5MCw3MSBAQCBzdGF0aWMg dm9pZCBtdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgs DQogCX0NCiB9DQogDQotc3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X21wbGFuZShzdHJ1Y3Qg djRsMl9mb3JtYXQgKmYsDQorc3RhdGljIGludCBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUo c3RydWN0IHY0bDJfZm9ybWF0ICpmLA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2ZtdCAq Zm10LA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBpbnQgcV90eXBlKQ0K K3sNCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQucGl4 X21wOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KKwlpbnQgaSwg YWxpZ25fdywgYWxpZ25faDsNCisNCisJbWVtc2V0KHBpeF9tcC0+cmVzZXJ2ZWQsIDAsIHNpemVv ZihwaXhfbXAtPnJlc2VydmVkKSk7DQorCXBpeF9tcC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7 DQorDQorCWlmIChjdHgtPnN0YXRlICE9IE1US19KUEVHX0lOSVQpIHsNCisJCW10a19qcGVnX2Fk anVzdF9mbXRfbXBsYW5lKGN0eCwgZik7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlwaXhfbXAt Pm51bV9wbGFuZXMgPSBmbXQtPmNvbHBsYW5lczsNCisJcGl4X21wLT5waXhlbGZvcm1hdCA9IGZt dC0+Zm91cmNjOw0KKw0KKwlpZiAocV90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkg ew0KKwkJaWYgKHBpeF9tcC0+bnVtX3BsYW5lcyA9PSAxVSkgew0KKwkJCXBpeF9tcC0+aGVpZ2h0 ID0gY2xhbXAocm91bmRfdXAocGl4X21wLT5oZWlnaHQsIDgpLA0KKwkJCQkJICAgICAgIE1US19K UEVHX01JTl9IRUlHSFQsDQorCQkJCQkgICAgICAgTVRLX0pQRUdfTUFYX0hFSUdIVCk7DQorCQkJ cGl4X21wLT53aWR0aCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9tcC0+d2lkdGgsIDMyKSwNCisJCQkJ CSAgICAgIE1US19KUEVHX01JTl9XSURUSCwNCisJCQkJCSAgICAgIE1US19KUEVHX01BWF9XSURU SCk7DQorCQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lID0gcGl4X21wLT53aWR0 aCAqIDI7DQorCQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID0NCisJCQkJcGl4X21w LT53aWR0aCAqIHBpeF9tcC0+aGVpZ2h0ICogMjsNCisJCX0NCisJCWlmIChwaXhfbXAtPm51bV9w bGFuZXMgPT0gMlUpIHsNCisJCQlwaXhfbXAtPmhlaWdodCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9t cC0+aGVpZ2h0LCAxNiksDQorCQkJCQkgICAgICAgTVRLX0pQRUdfTUlOX0hFSUdIVCwNCisJCQkJ CSAgICAgICBNVEtfSlBFR19NQVhfSEVJR0hUKTsNCisJCQlwaXhfbXAtPndpZHRoID0gY2xhbXAo cm91bmRfdXAocGl4X21wLT53aWR0aCwgMTYpLA0KKwkJCQkJICAgICAgTVRLX0pQRUdfTUlOX1dJ RFRILA0KKwkJCQkJICAgICAgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCisJCQlmb3IgKGkgPSAwOyBp IDwgcGl4X21wLT5udW1fcGxhbmVzOyBpKyspIHsNCisJCQkJcGl4X21wLT5wbGFuZV9mbXRbaV0u Ynl0ZXNwZXJsaW5lID0NCisJCQkJCXBpeF9tcC0+d2lkdGg7DQorCQkJCXBpeF9tcC0+cGxhbmVf Zm10W2ldLnNpemVpbWFnZSA9DQorCQkJCQlwaXhfbXAtPndpZHRoICogcGl4X21wLT5oZWlnaHQg LyAoaSsxKTsNCisJCQl9DQorCQl9DQorCX0gZWxzZSB7DQorCQlwaXhfbXAtPmhlaWdodCA9IGNs YW1wKHBpeF9tcC0+aGVpZ2h0LCBNVEtfSlBFR19NSU5fSEVJR0hULA0KKwkJCQkgICAgICAgTVRL X0pQRUdfTUFYX0hFSUdIVCk7DQorCQlwaXhfbXAtPndpZHRoID0gY2xhbXAocGl4X21wLT53aWR0 aCwgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJCQkgICAgICBNVEtfSlBFR19NQVhfV0lEVEgpOw0K Kw0KKwkJaWYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9KUEVHKSB7DQorCQkJcGl4X21w LT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJsaW5lID0gMDsNCisJCQlwaXhfbXAtPnBsYW5lX2ZtdFsw XS5zaXplaW1hZ2UgPQ0KKwkJCQlyb3VuZF91cChwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1h Z2UsIDEyOCk7DQorCQkJaWYgKHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSA9PSAwKQ0K KwkJCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UgPQ0KKwkJCQkJTVRLX0pQRUdfREVG QVVMVF9TSVpFSU1BR0U7DQorCQl9DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBpbnQgbXRrX2pwZWdfdHJ5X2RlY19mbXRfbXBsYW5lKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwN CiAJCQkJICAgc3RydWN0IG10a19qcGVnX2ZtdCAqZm10LA0KIAkJCQkgICBzdHJ1Y3QgbXRrX2pw ZWdfY3R4ICpjdHgsIGludCBxX3R5cGUpDQogew0KQEAgLTI4Nyw2ICs0NjQsNyBAQCBzdGF0aWMg aW50IG10a19qcGVnX3RyeV9mbXRfdmlkX2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKnByaXYsDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90 b19jdHgocHJpdik7DQogCXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdDsNCisJc3RydWN0IG10a19q cGVnX2RldiAqanBlZyA9IGN0eC0+anBlZzsNCiANCiAJZm10ID0gbXRrX2pwZWdfZmluZF9mb3Jt YXQoY3R4LCBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0LA0KIAkJCQkgICBNVEtfSlBFR19GTVRf VFlQRV9DQVBUVVJFKTsNCkBAIC0zMDAsNyArNDc4LDEyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdf dHJ5X2ZtdF92aWRfY2FwX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJ CSAoZm10LT5mb3VyY2MgPj4gMTYgJiAweGZmKSwNCiAJCSAoZm10LT5mb3VyY2MgPj4gMjQgJiAw eGZmKSk7DQogDQotCXJldHVybiBtdGtfanBlZ190cnlfZm10X21wbGFuZShmLCBmbXQsIGN0eCwg TVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSk7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVH X0VOQykNCisJCXJldHVybiBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUoZiwgZm10LCBjdHgs DQorCQkJCQkJICAgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSk7DQorCWVsc2UNCisJCXJldHVy biBtdGtfanBlZ190cnlfZGVjX2ZtdF9tcGxhbmUoZiwgZm10LCBjdHgsDQorCQkJCQkJICAgTVRL X0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfdHJ5 X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCkBAIC0z MDgsNiArNDkxLDcgQEAgc3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X3ZpZF9vdXRfbXBsYW5l KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIHsNCiAJc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KIAlzdHJ1Y3QgbXRrX2pwZWdfZm10 ICpmbXQ7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQogDQogCWZt dCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwN CiAJCQkJICAgTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCkBAIC0zMjEsNyArNTA1LDEyIEBA IHN0YXRpYyBpbnQgbXRrX2pwZWdfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgdm9pZCAqcHJpdiwNCiAJCSAoZm10LT5mb3VyY2MgPj4gMTYgJiAweGZmKSwNCiAJCSAo Zm10LT5mb3VyY2MgPj4gMjQgJiAweGZmKSk7DQogDQotCXJldHVybiBtdGtfanBlZ190cnlfZm10 X21wbGFuZShmLCBmbXQsIGN0eCwgTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCisJaWYgKGpw ZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKQ0KKwkJcmV0dXJuIG10a19qcGVnX3RyeV9lbmNfZm10 X21wbGFuZShmLCBmbXQsIGN0eCwNCisJCQkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQp Ow0KKwllbHNlDQorCQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2RlY19mbXRfbXBsYW5lKGYsIGZtdCwg Y3R4LA0KKwkJCQkJCSAgIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQogfQ0KIA0KIHN0YXRp YyBpbnQgbXRrX2pwZWdfc19mbXRfbXBsYW5lKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCkBA IC00MjYsMjggKzYxNSw0OCBAQCBzdGF0aWMgaW50IG10a19qcGVnX2dfc2VsZWN0aW9uKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQlzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMp DQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJp dik7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQogDQotCWlmIChz LT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSkNCi0JCXJldHVybiAtRUlOVkFM Ow0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCWlmIChzLT50eXBlICE9 IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUKQ0KKwkJCXJldHVybiAtRUlOVkFMOw0KIA0KLQlz d2l0Y2ggKHMtPnRhcmdldCkgew0KLQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFOg0KLQljYXNl IFY0TDJfU0VMX1RHVF9DT01QT1NFX0RFRkFVTFQ6DQotCQlzLT5yLndpZHRoID0gY3R4LT5vdXRf cS53Ow0KLQkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7DQotCQlzLT5yLmxlZnQgPSAwOw0K LQkJcy0+ci50b3AgPSAwOw0KLQkJYnJlYWs7DQotCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0Vf Qk9VTkRTOg0KLQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX1BBRERFRDoNCi0JCXMtPnIud2lk dGggPSBjdHgtPmNhcF9xLnc7DQotCQlzLT5yLmhlaWdodCA9IGN0eC0+Y2FwX3EuaDsNCi0JCXMt PnIubGVmdCA9IDA7DQotCQlzLT5yLnRvcCA9IDA7DQotCQlicmVhazsNCi0JZGVmYXVsdDoNCi0J CXJldHVybiAtRUlOVkFMOw0KKwkJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJCWNhc2UgVjRMMl9T RUxfVEdUX0NST1A6DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DUk9QX0JPVU5EUzoNCisJCWNhc2Ug VjRMMl9TRUxfVEdUX0NST1BfREVGQVVMVDoNCisJCQlzLT5yLndpZHRoID0gY3R4LT5vdXRfcS53 Ow0KKwkJCXMtPnIuaGVpZ2h0ID0gY3R4LT5vdXRfcS5oOw0KKwkJCXMtPnIubGVmdCA9IDA7DQor CQkJcy0+ci50b3AgPSAwOw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlyZXR1cm4gLUVJ TlZBTDsNCisJCX0NCisJfSBlbHNlIHsNCisJCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVf VklERU9fQ0FQVFVSRSkNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJCXN3aXRjaCAocy0+dGFy Z2V0KSB7DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFOg0KKwkJY2FzZSBWNEwyX1NFTF9U R1RfQ09NUE9TRV9ERUZBVUxUOg0KKwkJCXMtPnIud2lkdGggPSBjdHgtPm91dF9xLnc7DQorCQkJ cy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7DQorCQkJcy0+ci5sZWZ0ID0gMDsNCisJCQlzLT5y LnRvcCA9IDA7DQorCQkJYnJlYWs7DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX0JPVU5E UzoNCisJCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0VfUEFEREVEOg0KKwkJCXMtPnIud2lkdGgg PSBjdHgtPmNhcF9xLnc7DQorCQkJcy0+ci5oZWlnaHQgPSBjdHgtPmNhcF9xLmg7DQorCQkJcy0+ ci5sZWZ0ID0gMDsNCisJCQlzLT5yLnRvcCA9IDA7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0K KwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KIAl9DQorDQogCXJldHVybiAwOw0KIH0NCiANCkBA IC00NTUsMjAgKzY2NCwzOCBAQCBzdGF0aWMgaW50IG10a19qcGVnX3Nfc2VsZWN0aW9uKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQlzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMp DQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJp dik7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBjdHgtPmpwZWc7DQogDQotCWlmIChz LT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSkNCi0JCXJldHVybiAtRUlOVkFM Ow0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCWlmIChzLT50eXBlICE9 IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUKQ0KKwkJCXJldHVybiAtRUlOVkFMOw0KIA0KLQlz d2l0Y2ggKHMtPnRhcmdldCkgew0KLQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFOg0KLQkJcy0+ ci5sZWZ0ID0gMDsNCi0JCXMtPnIudG9wID0gMDsNCi0JCWN0eC0+b3V0X3EudyA9IHMtPnIud2lk dGg7DQotCQljdHgtPm91dF9xLmggPSBzLT5yLmhlaWdodDsNCi0JCWJyZWFrOw0KLQlkZWZhdWx0 Og0KLQkJcmV0dXJuIC1FSU5WQUw7DQorCQlzd2l0Y2ggKHMtPnRhcmdldCkgew0KKwkJY2FzZSBW NEwyX1NFTF9UR1RfQ1JPUDoNCisJCQlzLT5yLmxlZnQgPSAwOw0KKwkJCXMtPnIudG9wID0gMDsN CisJCQljdHgtPm91dF9xLncgPSBzLT5yLndpZHRoOw0KKwkJCWN0eC0+b3V0X3EuaCA9IHMtPnIu aGVpZ2h0Ow0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisJ CX0NCisJfSBlbHNlIHsNCisJCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQ VFVSRSkNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQor CQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFOg0KKwkJCXMtPnIubGVmdCA9IDA7DQorCQkJcy0+ ci50b3AgPSAwOw0KKwkJCWN0eC0+b3V0X3EudyA9IHMtPnIud2lkdGg7DQorCQkJY3R4LT5vdXRf cS5oID0gcy0+ci5oZWlnaHQ7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCXJldHVybiAt RUlOVkFMOw0KKwkJfQ0KIAl9DQorDQogCXJldHVybiAwOw0KIH0NCiANCkBAIC02NDQsMjkgKzg3 MSw0MiBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19idWZfcXVldWUoc3RydWN0IHZiMl9idWZmZXIg KnZiKQ0KIAkJZ290byBlbmQ7DQogDQogCWpwZWdfc3JjX2J1ZiA9IG10a19qcGVnX3ZiMl90b19z cmNidWYodmIpOw0KLQlwYXJhbSA9ICZqcGVnX3NyY19idWYtPmRlY19wYXJhbTsNCi0JbWVtc2V0 KHBhcmFtLCAwLCBzaXplb2YoKnBhcmFtKSk7DQotDQotCWlmIChqcGVnX3NyY19idWYtPmZsYWdz ICYgTVRLX0pQRUdfQlVGX0ZMQUdTX0xBU1RfRlJBTUUpIHsNCi0JCXY0bDJfZGJnKDEsIGRlYnVn LCAmanBlZy0+djRsMl9kZXYsICJHb3QgZW9zXG4iKTsNCi0JCWdvdG8gZW5kOw0KLQl9DQotCWhl YWRlcl92YWxpZCA9IG10a19qcGVnX3BhcnNlKHBhcmFtLCAodTggKil2YjJfcGxhbmVfdmFkZHIo dmIsIDApLA0KLQkJCQkgICAgICB2YjJfZ2V0X3BsYW5lX3BheWxvYWQodmIsIDApKTsNCi0JaWYg KCFoZWFkZXJfdmFsaWQpIHsNCi0JCXY0bDJfZXJyKCZqcGVnLT52NGwyX2RldiwgIkhlYWRlciBp bnZhbGlkLlxuIik7DQotCQl2YjJfYnVmZmVyX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVfRVJST1Ip Ow0KLQkJcmV0dXJuOw0KLQl9DQotDQotCWlmIChjdHgtPnN0YXRlID09IE1US19KUEVHX0lOSVQp IHsNCi0JCXN0cnVjdCB2YjJfcXVldWUgKmRzdF92cSA9IHY0bDJfbTJtX2dldF92cSgNCi0JCQlj dHgtPmZoLm0ybV9jdHgsIFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkUpOw0KKwlp ZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCWlmIChqcGVnX3NyY19idWYtPmZs YWdzICYgTVRLX0pQRUdfQlVGX0ZMQUdTX0xBU1RfRlJBTUUpIHsNCisJCQl2NGwyX2RiZygxLCBk ZWJ1ZywgJmpwZWctPnY0bDJfZGV2LCAiR290IGVvcyIpOw0KKwkJCWdvdG8gZW5kOw0KKwkJfQ0K KwkJaWYgKGN0eC0+c3RhdGUgPT0gTVRLX0pQRUdfSU5JVCkNCisJCQljdHgtPnN0YXRlID0gTVRL X0pQRUdfUlVOTklORzsNCisJfSBlbHNlIHsNCisJCXBhcmFtID0gJmpwZWdfc3JjX2J1Zi0+ZGVj X3BhcmFtOw0KKwkJbWVtc2V0KHBhcmFtLCAwLCBzaXplb2YoKnBhcmFtKSk7DQorDQorCQlpZiAo anBlZ19zcmNfYnVmLT5mbGFncyAmIE1US19KUEVHX0JVRl9GTEFHU19MQVNUX0ZSQU1FKSB7DQor CQkJdjRsMl9kYmcoMSwgZGVidWcsICZqcGVnLT52NGwyX2RldiwgIkdvdCBlb3NcbiIpOw0KKwkJ CWdvdG8gZW5kOw0KKwkJfQ0KKwkJaGVhZGVyX3ZhbGlkID0gbXRrX2pwZWdfcGFyc2UocGFyYW0s DQorCQkJCQkgICAgICAodTggKil2YjJfcGxhbmVfdmFkZHIodmIsIDApLA0KKwkJCQkJICAgICAg dmIyX2dldF9wbGFuZV9wYXlsb2FkKHZiLCAwKSk7DQorCQlpZiAoIWhlYWRlcl92YWxpZCkgew0K KwkJCXY0bDJfZXJyKCZqcGVnLT52NGwyX2RldiwgIkhlYWRlciBpbnZhbGlkLlxuIik7DQorCQkJ dmIyX2J1ZmZlcl9kb25lKHZiLCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsNCisJCQlyZXR1cm47DQor CQl9DQogDQotCQltdGtfanBlZ19xdWV1ZV9zcmNfY2hnX2V2ZW50KGN0eCk7DQotCQltdGtfanBl Z19zZXRfcXVldWVfZGF0YShjdHgsIHBhcmFtKTsNCi0JCWN0eC0+c3RhdGUgPSB2YjJfaXNfc3Ry ZWFtaW5nKGRzdF92cSkgPw0KLQkJCQlNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFIDogTVRLX0pQRUdf UlVOTklORzsNCisJCWlmIChjdHgtPnN0YXRlID09IE1US19KUEVHX0lOSVQpIHsNCisJCQlzdHJ1 Y3QgdmIyX3F1ZXVlICpkc3RfdnE7DQorDQorCQkJZHN0X3ZxID0gdjRsMl9tMm1fZ2V0X3ZxDQor CQkJCQkoY3R4LT5maC5tMm1fY3R4LA0KKwkJCQkJIFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVS RV9NUExBTkUpOw0KKwkJCW10a19qcGVnX3F1ZXVlX3NyY19jaGdfZXZlbnQoY3R4KTsNCisJCQlt dGtfanBlZ19zZXRfcXVldWVfZGF0YShjdHgsIHBhcmFtKTsNCisJCQljdHgtPnN0YXRlID0gdmIy X2lzX3N0cmVhbWluZyhkc3RfdnEpID8NCisJCQkJCU1US19KUEVHX1NPVVJDRV9DSEFOR0UgOg0K KwkJCQkJTVRLX0pQRUdfUlVOTklORzsNCisJCX0NCiAJfQ0KIGVuZDoNCiAJdjRsMl9tMm1fYnVm X3F1ZXVlKGN0eC0+ZmgubTJtX2N0eCwgdG9fdmIyX3Y0bDJfYnVmZmVyKHZiKSk7DQpAQCAtNzA5 LDE2ICs5NDksMTYgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfc3RvcF9zdHJlYW1pbmcoc3RydWN0 IHZiMl9xdWV1ZSAqcSkNCiAJICogc3Vic2FtcGxpbmcuIFVwZGF0ZSBjYXB0dXJlIHF1ZXVlIHdo ZW4gdGhlIHN0cmVhbSBpcyBvZmYuDQogCSAqLw0KIAlpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfSlBF R19TT1VSQ0VfQ0hBTkdFICYmDQotCSAgICAhVjRMMl9UWVBFX0lTX09VVFBVVChxLT50eXBlKSkg ew0KKwkgICAgIVY0TDJfVFlQRV9JU19PVVRQVVQocS0+dHlwZSkgJiYNCisJICAgIGN0eC0+anBl Zy0+bW9kZSA9PSBNVEtfSlBFR19ERUMpIHsNCiAJCXN0cnVjdCBtdGtfanBlZ19zcmNfYnVmICpz cmNfYnVmOw0KIA0KIAkJdmIgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1fY3R4 KTsNCiAJCXNyY19idWYgPSBtdGtfanBlZ192YjJfdG9fc3JjYnVmKCZ2Yi0+dmIyX2J1Zik7DQog CQltdGtfanBlZ19zZXRfcXVldWVfZGF0YShjdHgsICZzcmNfYnVmLT5kZWNfcGFyYW0pOw0KIAkJ Y3R4LT5zdGF0ZSA9IE1US19KUEVHX1JVTk5JTkc7DQotCX0gZWxzZSBpZiAoVjRMMl9UWVBFX0lT X09VVFBVVChxLT50eXBlKSkgew0KKwl9IGVsc2UgaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQocS0+ dHlwZSkpDQogCQljdHgtPnN0YXRlID0gTVRLX0pQRUdfSU5JVDsNCi0JfQ0KIA0KIAl3aGlsZSAo KHZiID0gbXRrX2pwZWdfYnVmX3JlbW92ZShjdHgsIHEtPnR5cGUpKSkNCiAJCXY0bDJfbTJtX2J1 Zl9kb25lKHZiLCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsNCkBAIC03NzMsNiArMTAxMyw0NSBAQCBz dGF0aWMgaW50IG10a19qcGVnX3NldF9kZWNfZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwN CiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3NldF9lbmNfZHN0KHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkgc3RydWN0 IHZiMl9idWZmZXIgKmRzdF9idWYsDQorCQkJCSBzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzICpicykN Cit7DQorCWJzLT5kbWFfYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKGRzdF9i dWYsIDApOw0KKwlicy0+ZG1hX2FkZHJfb2Zmc2V0ID0gY3R4LT5lbmFibGVfZXhpZiA/IE1US19K UEVHX0RFRkFVTFRfRVhJRl9TSVpFIDogMDsNCisJYnMtPmRtYV9hZGRyX29mZnNldG1hc2sgPSBi cy0+ZG1hX2FkZHIgJiBKUEVHX0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSzsNCisJYnMtPnNpemUg PSByb3VuZF91cCh2YjJfcGxhbmVfc2l6ZShkc3RfYnVmLCAwKSwgMTI4KTsNCisNCisJbXRrX2pw ZWdfZW5jX3NldF9kc3RfYWRkcihiYXNlLCBicy0+ZG1hX2FkZHIsIGJzLT5zaXplLA0KKwkJCQkg IGJzLT5kbWFfYWRkcl9vZmZzZXQsDQorCQkJCSAgYnMtPmRtYV9hZGRyX29mZnNldG1hc2spOw0K K30NCisNCitzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZW5jX3NyYyhzdHJ1Y3QgbXRrX2pwZWdf Y3R4ICpjdHgsIHZvaWQgX19pb21lbSAqYmFzZSwNCisJCQkJIHN0cnVjdCB2YjJfYnVmZmVyICpz cmNfYnVmLA0KKwkJCQkgc3RydWN0IG10a19qcGVnX2VuY19mYiAqZmIpDQorew0KKwlpbnQgaTsN CisNCisJbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZShiYXNlLCBjdHgtPm91dF9xLncsIGN0eC0+ b3V0X3EuaCk7DQorCW10a19qcGVnX2VuY19zZXRfZW5jRm9ybWF0KGJhc2UsIGN0eC0+b3V0X3Eu Zm10LT5mb3VyY2MpOw0KKwltdGtfanBlZ19lbmNfc2V0X2Jsa19udW0oYmFzZSwgY3R4LT5vdXRf cS5mbXQtPmZvdXJjYywgY3R4LT5vdXRfcS53LA0KKwkJCQkgY3R4LT5vdXRfcS5oKTsNCisJbXRr X2pwZWdfZW5jX3NldF9zdHJpZGUoYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJjYywgY3R4LT5v dXRfcS53LA0KKwkJCQljdHgtPm91dF9xLmgsIGN0eC0+b3V0X3EuYnl0ZXNwZXJsaW5lWzBdKTsN CisNCisJZm9yIChpID0gMDsgaSA8IHNyY19idWYtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJZmIt PmZiX2FkZHJbaV0uZG1hX2FkZHIgPQ0KKwkJCXZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRy KHNyY19idWYsIGkpICsNCisJCQlzcmNfYnVmLT5wbGFuZXNbaV0uZGF0YV9vZmZzZXQ7DQorCQlm Yi0+ZmJfYWRkcltpXS5zaXplID0gdmIyX3BsYW5lX3NpemUoc3JjX2J1ZiwgaSkgLQ0KKwkJCQkg ICAgICBzcmNfYnVmLT5wbGFuZXNbaV0uZGF0YV9vZmZzZXQ7DQorCX0NCisNCisJbXRrX2pwZWdf ZW5jX3NldF9zcmNfYWRkcihiYXNlLCBmYi0+ZmJfYWRkclswXS5kbWFfYWRkciwNCisJCQkJICBm Yi0+ZmJfYWRkclsxXS5kbWFfYWRkcik7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIG10a19qcGVnX2Rl dmljZV9ydW4odm9pZCAqcHJpdikNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHBy aXY7DQpAQCAtNzgzLDYgKzEwNjIsOCBAQCBzdGF0aWMgdm9pZCBtdGtfanBlZ19kZXZpY2VfcnVu KHZvaWQgKnByaXYpDQogCXN0cnVjdCBtdGtfanBlZ19zcmNfYnVmICpqcGVnX3NyY19idWY7DQog CXN0cnVjdCBtdGtfanBlZ19icyBiczsNCiAJc3RydWN0IG10a19qcGVnX2ZiIGZiOw0KKwlzdHJ1 Y3QgbXRrX2pwZWdfZW5jX2JzIGVuY19iczsNCisJc3RydWN0IG10a19qcGVnX2VuY19mYiBlbmNf ZmI7DQogCWludCBpOw0KIA0KIAlzcmNfYnVmID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ ZmgubTJtX2N0eCk7DQpAQCAtNzkzLDI4ICsxMDc0LDQ0IEBAIHN0YXRpYyB2b2lkIG10a19qcGVn X2RldmljZV9ydW4odm9pZCAqcHJpdikNCiAJCWZvciAoaSA9IDA7IGkgPCBkc3RfYnVmLT52YjJf YnVmLm51bV9wbGFuZXM7IGkrKykNCiAJCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQoJmRzdF9idWYt PnZiMl9idWYsIGksIDApOw0KIAkJYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9ET05FOw0KLQkJ Z290byBkZWNfZW5kOw0KKwkJZ290byBkZXZpY2VfcnVuX2VuZDsNCiAJfQ0KIA0KLQlpZiAobXRr X2pwZWdfY2hlY2tfcmVzb2x1dGlvbl9jaGFuZ2UoY3R4LCAmanBlZ19zcmNfYnVmLT5kZWNfcGFy YW0pKSB7DQotCQltdGtfanBlZ19xdWV1ZV9zcmNfY2hnX2V2ZW50KGN0eCk7DQotCQljdHgtPnN0 YXRlID0gTVRLX0pQRUdfU09VUkNFX0NIQU5HRTsNCi0JCXY0bDJfbTJtX2pvYl9maW5pc2goanBl Zy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCi0JCXJldHVybjsNCi0JfQ0KKwlpZiAoanBl Zy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5y ZWdfYmFzZSk7DQorDQorCQltdGtfanBlZ19zZXRfZW5jX2RzdChjdHgsIGpwZWctPnJlZ19iYXNl LCAmZHN0X2J1Zi0+dmIyX2J1ZiwNCisJCQkJICAgICAmZW5jX2JzKTsNCisJCW10a19qcGVnX3Nl dF9lbmNfc3JjKGN0eCwganBlZy0+cmVnX2Jhc2UsICZzcmNfYnVmLT52YjJfYnVmLA0KKwkJCQkg ICAgICZlbmNfZmIpOw0KKwkJbXRrX2pwZWdfZW5jX3NldF9jdHJsX2NmZyhqcGVnLT5yZWdfYmFz ZSwgY3R4LT5lbmFibGVfZXhpZiwNCisJCQkJCSAgY3R4LT5lbmNfcXVhbGl0eSwNCisJCQkJCSAg Y3R4LT5yZXN0YXJ0X2ludGVydmFsKTsNCisNCisJCW10a19qcGVnX2VuY19zdGFydChqcGVnLT5y ZWdfYmFzZSk7DQorCX0gZWxzZSB7DQorCQlpZiAobXRrX2pwZWdfY2hlY2tfcmVzb2x1dGlvbl9j aGFuZ2UNCisJCQkoY3R4LCAmanBlZ19zcmNfYnVmLT5kZWNfcGFyYW0pKSB7DQorCQkJbXRrX2pw ZWdfcXVldWVfc3JjX2NoZ19ldmVudChjdHgpOw0KKwkJCWN0eC0+c3RhdGUgPSBNVEtfSlBFR19T T1VSQ0VfQ0hBTkdFOw0KKwkJCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4 LT5maC5tMm1fY3R4KTsNCisJCQlyZXR1cm47DQorCQl9DQogDQotCW10a19qcGVnX3NldF9kZWNf c3JjKGN0eCwgJnNyY19idWYtPnZiMl9idWYsICZicyk7DQotCWlmIChtdGtfanBlZ19zZXRfZGVj X2RzdChjdHgsICZqcGVnX3NyY19idWYtPmRlY19wYXJhbSwgJmRzdF9idWYtPnZiMl9idWYsICZm YikpDQotCQlnb3RvIGRlY19lbmQ7DQorCQltdGtfanBlZ19zZXRfZGVjX3NyYyhjdHgsICZzcmNf YnVmLT52YjJfYnVmLCAmYnMpOw0KKwkJaWYgKG10a19qcGVnX3NldF9kZWNfZHN0KGN0eCwgJmpw ZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLA0KKwkJCQkJICZkc3RfYnVmLT52YjJfYnVmLCAmZmIpKQ0K KwkJCWdvdG8gZGV2aWNlX3J1bl9lbmQ7DQogDQotCW10a19qcGVnX2RlY19yZXNldChqcGVnLT5k ZWNfcmVnX2Jhc2UpOw0KLQltdGtfanBlZ19kZWNfc2V0X2NvbmZpZyhqcGVnLT5kZWNfcmVnX2Jh c2UsDQotCQkJCSZqcGVnX3NyY19idWYtPmRlY19wYXJhbSwgJmJzLCAmZmIpOw0KKwkJbXRrX2pw ZWdfZGVjX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisJCW10a19qcGVnX2RlY19zZXRfY29uZmln KGpwZWctPnJlZ19iYXNlLA0KKwkJCQkJJmpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLCAmYnMsICZm Yik7DQogDQotCW10a19qcGVnX2RlY19zdGFydChqcGVnLT5kZWNfcmVnX2Jhc2UpOw0KKwkJbXRr X2pwZWdfZGVjX3N0YXJ0KGpwZWctPnJlZ19iYXNlKTsNCisJfQ0KIAlyZXR1cm47DQogDQotZGVj X2VuZDoNCitkZXZpY2VfcnVuX2VuZDoNCiAJdjRsMl9tMm1fc3JjX2J1Zl9yZW1vdmUoY3R4LT5m aC5tMm1fY3R4KTsNCiAJdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsN CiAJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsNCkBAIC04NzQsMzAgKzEx NzEsMzAgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xrX29uKHN0cnVjdCBtdGtfanBlZ19kZXYg KmpwZWcpDQogCXJldCA9IG10a19zbWlfbGFyYl9nZXQoanBlZy0+bGFyYik7DQogCWlmIChyZXQp DQogCQlkZXZfZXJyKGpwZWctPmRldiwgIm10a19zbWlfbGFyYl9nZXQgbGFyYnZkZWMgZmFpbCAl ZFxuIiwgcmV0KTsNCi0JY2xrX3ByZXBhcmVfZW5hYmxlKGpwZWctPmNsa19qZGVjX3NtaSk7DQot CWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRlYyk7DQorCWlmIChqcGVnLT5tb2RlID09 IE1US19KUEVHX0RFQykNCisJCWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfanBlZ19zbWkp Ow0KKwljbGtfcHJlcGFyZV9lbmFibGUoanBlZy0+Y2xrX2pwZWcpOw0KIH0NCiANCiBzdGF0aWMg dm9pZCBtdGtfanBlZ19jbGtfb2ZmKHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQogew0KLQlj bGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xrX2pkZWMpOw0KLQljbGtfZGlzYWJsZV91bnBy ZXBhcmUoanBlZy0+Y2xrX2pkZWNfc21pKTsNCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWct PmNsa19qcGVnKTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfREVDKQ0KKwkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qcGVnX3NtaSk7DQogCW10a19zbWlfbGFyYl9wdXQo anBlZy0+bGFyYik7DQogfQ0KIA0KLXN0YXRpYyBpcnFyZXR1cm5fdCBtdGtfanBlZ19kZWNfaXJx KGludCBpcnEsIHZvaWQgKnByaXYpDQorc3RhdGljIGlycXJldHVybl90IG10a19qcGVnX2lycShp bnQgaXJxLCB2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IHBy aXY7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eDsNCiAJc3RydWN0IHZiMl92NGwyX2J1ZmZl ciAqc3JjX2J1ZiwgKmRzdF9idWY7DQogCXN0cnVjdCBtdGtfanBlZ19zcmNfYnVmICpqcGVnX3Ny Y19idWY7DQogCWVudW0gdmIyX2J1ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRF X0VSUk9SOw0KLQl1MzIJZGVjX2lycV9yZXQ7DQotCXUzMiBkZWNfcmV0Ow0KKwl1MzIgaXJxX3Jl dDsNCisJdTMyIHJldCwgcmVzdWx0X3NpemU7DQogCWludCBpOw0KIA0KLQlkZWNfcmV0ID0gbXRr X2pwZWdfZGVjX2dldF9pbnRfc3RhdHVzKGpwZWctPmRlY19yZWdfYmFzZSk7DQotCWRlY19pcnFf cmV0ID0gbXRrX2pwZWdfZGVjX2VudW1fcmVzdWx0KGRlY19yZXQpOw0KIAljdHggPSB2NGwyX20y bV9nZXRfY3Vycl9wcml2KGpwZWctPm0ybV9kZXYpOw0KIAlpZiAoIWN0eCkgew0KIAkJdjRsMl9l cnIoJmpwZWctPnY0bDJfZGV2LCAiQ29udGV4dCBpcyBOVUxMXG4iKTsNCkBAIC05MDgsMzIgKzEy MDUsODkgQEAgc3RhdGljIGlycXJldHVybl90IG10a19qcGVnX2RlY19pcnEoaW50IGlycSwgdm9p ZCAqcHJpdikNCiAJZHN0X2J1ZiA9IHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJt X2N0eCk7DQogCWpwZWdfc3JjX2J1ZiA9IG10a19qcGVnX3ZiMl90b19zcmNidWYoJnNyY19idWYt PnZiMl9idWYpOw0KIA0KLQlpZiAoZGVjX2lycV9yZXQgPj0gTVRLX0pQRUdfREVDX1JFU1VMVF9V TkRFUkZMT1cpDQotCQltdGtfanBlZ19kZWNfcmVzZXQoanBlZy0+ZGVjX3JlZ19iYXNlKTsNCisJ aWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQlyZXQgPSBtdGtfanBlZ19lbmNf Z2V0X2ludF9zdGF0dXMoanBlZy0+cmVnX2Jhc2UpOw0KKwkJaXJxX3JldCA9IG10a19qcGVnX2Vu Y19lbnVtX3Jlc3VsdChqcGVnLT5yZWdfYmFzZSwgcmV0KTsNCiANCi0JaWYgKGRlY19pcnFfcmV0 ICE9IE1US19KUEVHX0RFQ19SRVNVTFRfRU9GX0RPTkUpIHsNCi0JCWRldl9lcnIoanBlZy0+ZGV2 LCAiZGVjb2RlIGZhaWxlZFxuIik7DQotCQlnb3RvIGRlY19lbmQ7DQotCX0NCisJCWlmIChpcnFf cmV0ID49IE1US19KUEVHX0VOQ19SRVNVTFRfU1RBTEwpDQorCQkJbXRrX2pwZWdfZW5jX3Jlc2V0 KGpwZWctPnJlZ19iYXNlKTsNCisNCisJCWlmIChpcnFfcmV0ICE9IE1US19KUEVHX0VOQ19SRVNV TFRfRE9ORSkgew0KKwkJCWRldl9lcnIoanBlZy0+ZGV2LCAiZW5jb2RlIGZhaWxlZFxuIik7DQor CQkJZ290byBpcnFfZW5kOw0KKwkJfQ0KKw0KKwkJcmVzdWx0X3NpemUgPSBtdGtfanBlZ19lbmNf Z2V0X2ZpbGVfc2l6ZShqcGVnLT5yZWdfYmFzZSk7DQorCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQo JmRzdF9idWYtPnZiMl9idWYsIDAsDQorCQkJCSAgICAgIHJlc3VsdF9zaXplKTsNCisJfSBlbHNl IHsNCisJCXJldCA9IG10a19qcGVnX2RlY19nZXRfaW50X3N0YXR1cyhqcGVnLT5yZWdfYmFzZSk7 DQorCQlpcnFfcmV0ID0gbXRrX2pwZWdfZGVjX2VudW1fcmVzdWx0KHJldCk7DQorDQorCQlpZiAo aXJxX3JldCA+PSBNVEtfSlBFR19ERUNfUkVTVUxUX1VOREVSRkxPVykNCisJCQltdGtfanBlZ19k ZWNfcmVzZXQoanBlZy0+cmVnX2Jhc2UpOw0KIA0KLQlmb3IgKGkgPSAwOyBpIDwgZHN0X2J1Zi0+ dmIyX2J1Zi5udW1fcGxhbmVzOyBpKyspDQotCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQoJmRzdF9i dWYtPnZiMl9idWYsIGksDQotCQkJCSAgICAgIGpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLmNvbXBf c2l6ZVtpXSk7DQorCQlpZiAoaXJxX3JldCAhPSBNVEtfSlBFR19ERUNfUkVTVUxUX0VPRl9ET05F KSB7DQorCQkJZGV2X2VycihqcGVnLT5kZXYsICJkZWNvZGUgZmFpbGVkXG4iKTsNCisJCQlnb3Rv IGlycV9lbmQ7DQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgZHN0X2J1Zi0+dmIyX2J1Zi5u dW1fcGxhbmVzOyBpKyspDQorCQkJdmIyX3NldF9wbGFuZV9wYXlsb2FkDQorCQkJCSgmZHN0X2J1 Zi0+dmIyX2J1ZiwgaSwNCisJCQkJIGpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLmNvbXBfc2l6ZVtp XSk7DQorCX0NCiANCiAJYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9ET05FOw0KIA0KLWRlY19l bmQ6DQoraXJxX2VuZDoNCiAJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsN CiAJdjRsMl9tMm1fYnVmX2RvbmUoZHN0X2J1ZiwgYnVmX3N0YXRlKTsNCiAJdjRsMl9tMm1fam9i X2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KIAlyZXR1cm4gSVJRX0hB TkRMRUQ7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG10a19qcGVnX3NldF9kZWZhdWx0X3BhcmFtcyhz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X2VuY19k ZWZhdWx0X3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorew0KKwlzdHJ1Y3QgbXRr X2pwZWdfcV9kYXRhICpxID0gJmN0eC0+b3V0X3E7DQorDQorCWN0eC0+ZmguY3RybF9oYW5kbGVy ID0gJmN0eC0+Y3RybF9oZGw7DQorDQorCWN0eC0+Y29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFD RV9KUEVHLA0KKwljdHgtPnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RFRkFVTFQ7DQorCWN0 eC0+cXVhbnRpemF0aW9uID0gVjRMMl9RVUFOVElaQVRJT05fREVGQVVMVDsNCisJY3R4LT54ZmVy X2Z1bmMgPSBWNEwyX1hGRVJfRlVOQ19ERUZBVUxUOw0KKw0KKwlxLT53ID0gTVRLX0pQRUdfTUlO X1dJRFRIOw0KKwlxLT5oID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisNCisJcS0+Zm10ID0gbXRr X2pwZWdfZmluZF9mb3JtYXQoY3R4LCBWNEwyX1BJWF9GTVRfWVVZViwNCisJCQkJICAgICAgTVRL X0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCisNCisJcS0+dyA9IGNsYW1wKHJvdW5kX3VwKHEtPncs IDMyKSwgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJICAgICBNVEtfSlBFR19NQVhfV0lEVEgpOw0K KwlxLT5oID0gY2xhbXAocm91bmRfdXAocS0+aCwgOCksIE1US19KUEVHX01JTl9IRUlHSFQsDQor CQkgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKw0KKwlxLT5zaXplaW1hZ2VbMF0gPSBxLT53 ICogcS0+aCAqIDI7DQorCXEtPmJ5dGVzcGVybGluZVswXSA9IHEtPncgKiAyOw0KKw0KKwlxID0g JmN0eC0+Y2FwX3E7DQorCXEtPncgPSBNVEtfSlBFR19NSU5fV0lEVEg7DQorCXEtPmggPSBNVEtf SlBFR19NSU5fSEVJR0hUOw0KKwlxLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIFY0 TDJfUElYX0ZNVF9KUEVHLA0KKwkJCQkgICAgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsN CisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gMDsNCisJcS0+c2l6ZWltYWdlWzBdID0gTVRLX0pQRUdf REVGQVVMVF9TSVpFSU1BR0U7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3NldF9kZWNf ZGVmYXVsdF9wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KIHsNCiAJc3RydWN0IG10 a19qcGVnX3FfZGF0YSAqcSA9ICZjdHgtPm91dF9xOw0KIAlpbnQgaTsNCiANCisJY3R4LT5maC5j dHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCisNCiAJY3R4LT5jb2xvcnNwYWNlID0gVjRM Ml9DT0xPUlNQQUNFX0pQRUcsDQogCWN0eC0+eWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVG QVVMVDsNCiAJY3R4LT5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElPTl9ERUZBVUxUOw0K QEAgLTk4OSw3ICsxMzQzLDE4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfb3BlbihzdHJ1Y3QgZmls ZSAqZmlsZSkNCiAJCWdvdG8gZXJyb3I7DQogCX0NCiANCi0JbXRrX2pwZWdfc2V0X2RlZmF1bHRf cGFyYW1zKGN0eCk7DQorCXJldCA9IG10a19qcGVnX2N0cmxzX3NldHVwKGN0eCk7DQorCWlmIChy ZXQpIHsNCisJCXY0bDJfZXJyKCZqcGVnLT52NGwyX2RldiwgIkZhaWxlZCB0byBzZXR1cCBjb250 cm9scygpICglZClcbiIsDQorCQkJIHJldCk7DQorCQlnb3RvIGVycm9yOw0KKwl9DQorDQorCWlm IChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykNCisJCW10a19qcGVnX3NldF9lbmNfZGVmYXVs dF9wYXJhbXMoY3R4KTsNCisJZWxzZQ0KKwkJbXRrX2pwZWdfc2V0X2RlY19kZWZhdWx0X3BhcmFt cyhjdHgpOw0KKw0KIAltdXRleF91bmxvY2soJmpwZWctPmxvY2spOw0KIAlyZXR1cm4gMDsNCiAN CkBAIC0xMDA5LDYgKzEzNzQsNyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVhc2Uoc3RydWN0 IGZpbGUgKmZpbGUpDQogDQogCW11dGV4X2xvY2soJmpwZWctPmxvY2spOw0KIAl2NGwyX20ybV9j dHhfcmVsZWFzZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZj dHgtPmN0cmxfaGRsKTsNCiAJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOw0KIAl2NGwyX2ZoX2V4aXQo JmN0eC0+ZmgpOw0KIAlrZnJlZShjdHgpOw0KQEAgLTEwNDIsMTkgKzE0MDgsMjQgQEAgc3RhdGlj IGludCBtdGtfanBlZ19jbGtfaW5pdChzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KIA0KIAlq cGVnLT5sYXJiID0gJnBkZXYtPmRldjsNCiANCi0JanBlZy0+Y2xrX2pkZWMgPSBkZXZtX2Nsa19n ZXQoanBlZy0+ZGV2LCAianBnZGVjIik7DQotCWlmIChJU19FUlIoanBlZy0+Y2xrX2pkZWMpKQ0K LQkJcmV0dXJuIFBUUl9FUlIoanBlZy0+Y2xrX2pkZWMpOw0KKwlpZiAoanBlZy0+bW9kZSA9PSBN VEtfSlBFR19FTkMpIHsNCisJCWpwZWctPmNsa19qcGVnID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRl diwgImpwZ2VuYyIpOw0KKwkJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhqcGVnLT5jbGtfanBlZyk7 DQorCX0NCisNCisJanBlZy0+Y2xrX2pwZWcgPSBkZXZtX2Nsa19nZXQoanBlZy0+ZGV2LCAianBn ZGVjIik7DQorCWlmIChJU19FUlIoanBlZy0+Y2xrX2pwZWcpKQ0KKwkJcmV0dXJuIFBUUl9FUlIo anBlZy0+Y2xrX2pwZWcpOw0KIA0KLQlqcGVnLT5jbGtfamRlY19zbWkgPSBkZXZtX2Nsa19nZXQo anBlZy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KLQlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGpwZWct PmNsa19qZGVjX3NtaSk7DQorCWpwZWctPmNsa19qcGVnX3NtaSA9IGRldm1fY2xrX2dldChqcGVn LT5kZXYsICJqcGdkZWMtc21pIik7DQorCXJldHVybiBQVFJfRVJSX09SX1pFUk8oanBlZy0+Y2xr X2pwZWdfc21pKTsNCiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBlZzsNCiAJ c3RydWN0IHJlc291cmNlICpyZXM7DQotCWludCBkZWNfaXJxOw0KKwlpbnQganBlZ19pcnE7DQog CWludCByZXQ7DQogDQogCWpwZWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpq cGVnKSwgR0ZQX0tFUk5FTCk7DQpAQCAtMTA2NCwyOCArMTQzNSwyNiBAQCBzdGF0aWMgaW50IG10 a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCW11dGV4X2luaXQo JmpwZWctPmxvY2spOw0KIAlzcGluX2xvY2tfaW5pdCgmanBlZy0+aHdfbG9jayk7DQogCWpwZWct PmRldiA9ICZwZGV2LT5kZXY7DQorCWpwZWctPm1vZGUgPSAoZW51bSBtdGtfanBlZ19tb2RlKW9m X2RldmljZV9nZXRfbWF0Y2hfZGF0YShqcGVnLT5kZXYpOw0KIA0KIAlyZXMgPSBwbGF0Zm9ybV9n ZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KLQlqcGVnLT5kZWNfcmVnX2Jh c2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCi0JaWYgKElTX0VS UihqcGVnLT5kZWNfcmVnX2Jhc2UpKSB7DQotCQlyZXQgPSBQVFJfRVJSKGpwZWctPmRlY19yZWdf YmFzZSk7DQorCWpwZWctPnJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5k ZXYsIHJlcyk7DQorCWlmIChJU19FUlIoanBlZy0+cmVnX2Jhc2UpKSB7DQorCQlyZXQgPSBQVFJf RVJSKGpwZWctPnJlZ19iYXNlKTsNCiAJCXJldHVybiByZXQ7DQogCX0NCiANCi0JcmVzID0gcGxh dGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCAwKTsNCi0JZGVjX2lycSA9 IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQotCWlmICghcmVzIHx8IGRlY19pcnEgPCAwKSB7 DQotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGRlY19pcnEgJWQuXG4iLCBk ZWNfaXJxKTsNCi0JCXJldCA9IC1FSU5WQUw7DQotCQlyZXR1cm4gcmV0Ow0KKwlqcGVnX2lycSA9 IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQorCWlmIChqcGVnX2lycSA8IDApIHsNCisJCWRl dl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQganBlZ19pcnEgJWQuXG4iLCBqcGVnX2ly cSk7DQorCQlyZXR1cm4ganBlZ19pcnE7DQogCX0NCiANCi0JcmV0ID0gZGV2bV9yZXF1ZXN0X2ly cSgmcGRldi0+ZGV2LCBkZWNfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAwLA0KKwlyZXQgPSBkZXZt X3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19pcnEsIDAsDQogCQkJ ICAgICAgIHBkZXYtPm5hbWUsIGpwZWcpOw0KIAlpZiAocmV0KSB7DQotCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBkZWNfaXJxICVkICglZClcbiIsDQotCQkJZGVjX2ly cSwgcmV0KTsNCi0JCXJldCA9IC1FSU5WQUw7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWls ZWQgdG8gcmVxdWVzdCBqcGVnX2lycSAlZCAoJWQpXG4iLA0KKwkJCWpwZWdfaXJxLCByZXQpOw0K IAkJZ290byBlcnJfcmVxX2lycTsNCiAJfQ0KIA0KQEAgLTExMDksMzMgKzE0NzgsMzUgQEAgc3Rh dGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAkJ Z290byBlcnJfbTJtX2luaXQ7DQogCX0NCiANCi0JanBlZy0+ZGVjX3ZkZXYgPSB2aWRlb19kZXZp Y2VfYWxsb2MoKTsNCi0JaWYgKCFqcGVnLT5kZWNfdmRldikgew0KKwlqcGVnLT52ZmRfanBlZyA9 IHZpZGVvX2RldmljZV9hbGxvYygpOw0KKwlpZiAoIWpwZWctPnZmZF9qcGVnKSB7DQogCQlyZXQg PSAtRU5PTUVNOw0KLQkJZ290byBlcnJfZGVjX3ZkZXZfYWxsb2M7DQorCQlnb3RvIGVycl92ZmRf anBlZ19hbGxvYzsNCiAJfQ0KLQlzbnByaW50ZihqcGVnLT5kZWNfdmRldi0+bmFtZSwgc2l6ZW9m KGpwZWctPmRlY192ZGV2LT5uYW1lKSwNCi0JCSAiJXMtZGVjIiwgTVRLX0pQRUdfTkFNRSk7DQot CWpwZWctPmRlY192ZGV2LT5mb3BzID0gJm10a19qcGVnX2ZvcHM7DQotCWpwZWctPmRlY192ZGV2 LT5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfaW9jdGxfb3BzOw0KLQlqcGVnLT5kZWNfdmRldi0+bWlu b3IgPSAtMTsNCi0JanBlZy0+ZGVjX3ZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFz ZTsNCi0JanBlZy0+ZGVjX3ZkZXYtPmxvY2sgPSAmanBlZy0+bG9jazsNCi0JanBlZy0+ZGVjX3Zk ZXYtPnY0bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0KLQlqcGVnLT5kZWNfdmRldi0+dmZsX2Rp ciA9IFZGTF9ESVJfTTJNOw0KLQlqcGVnLT5kZWNfdmRldi0+ZGV2aWNlX2NhcHMgPSBWNEwyX0NB UF9TVFJFQU1JTkcgfA0KKwlzbnByaW50ZihqcGVnLT52ZmRfanBlZy0+bmFtZSwgc2l6ZW9mKGpw ZWctPnZmZF9qcGVnLT5uYW1lKSwNCisJCSAiJXMtJXMiLCBNVEtfSlBFR19OQU1FLA0KKwkJIGpw ZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8gImVuYyIgOiAiZGVjIik7DQorCWpwZWctPnZmZF9q cGVnLT5mb3BzID0gJm10a19qcGVnX2ZvcHM7DQorCWpwZWctPnZmZF9qcGVnLT5pb2N0bF9vcHMg PSAmbXRrX2pwZWdfaW9jdGxfb3BzOw0KKwlqcGVnLT52ZmRfanBlZy0+bWlub3IgPSAtMTsNCisJ anBlZy0+dmZkX2pwZWctPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsNCisJanBlZy0+ dmZkX2pwZWctPmxvY2sgPSAmanBlZy0+bG9jazsNCisJanBlZy0+dmZkX2pwZWctPnY0bDJfZGV2 ID0gJmpwZWctPnY0bDJfZGV2Ow0KKwlqcGVnLT52ZmRfanBlZy0+dmZsX2RpciA9IFZGTF9ESVJf TTJNOw0KKwlqcGVnLT52ZmRfanBlZy0+ZGV2aWNlX2NhcHMgPSBWNEwyX0NBUF9TVFJFQU1JTkcg fA0KIAkJCQkgICAgICBWNEwyX0NBUF9WSURFT19NMk1fTVBMQU5FOw0KIA0KLQlyZXQgPSB2aWRl b19yZWdpc3Rlcl9kZXZpY2UoanBlZy0+ZGVjX3ZkZXYsIFZGTF9UWVBFX0dSQUJCRVIsIDMpOw0K KwlyZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoanBlZy0+dmZkX2pwZWcsIFZGTF9UWVBFX0dS QUJCRVIsIC0xKTsNCiAJaWYgKHJldCkgew0KIAkJdjRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAi RmFpbGVkIHRvIHJlZ2lzdGVyIHZpZGVvIGRldmljZVxuIik7DQotCQlnb3RvIGVycl9kZWNfdmRl dl9yZWdpc3RlcjsNCisJCWdvdG8gZXJyX3ZmZF9qcGVnX3JlZ2lzdGVyOw0KIAl9DQogDQotCXZp ZGVvX3NldF9kcnZkYXRhKGpwZWctPmRlY192ZGV2LCBqcGVnKTsNCisJdmlkZW9fc2V0X2RydmRh dGEoanBlZy0+dmZkX2pwZWcsIGpwZWcpOw0KIAl2NGwyX2luZm8oJmpwZWctPnY0bDJfZGV2LA0K LQkJICAiZGVjb2RlciBkZXZpY2UgcmVnaXN0ZXJlZCBhcyAvZGV2L3ZpZGVvJWQgKCVkLCVkKVxu IiwNCi0JCSAganBlZy0+ZGVjX3ZkZXYtPm51bSwgVklERU9fTUFKT1IsIGpwZWctPmRlY192ZGV2 LT5taW5vcik7DQorCQkgICJqcGVnIGRldmljZSAlZCByZWdpc3RlcmVkIGFzIC9kZXYvdmlkZW8l ZCAoJWQsJWQpXG4iLA0KKwkJICBqcGVnLT5tb2RlLCBqcGVnLT52ZmRfanBlZy0+bnVtLCBWSURF T19NQUpPUiwNCisJCSAganBlZy0+dmZkX2pwZWctPm1pbm9yKTsNCiANCiAJcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwganBlZyk7DQogDQpAQCAtMTE0MywxMCArMTUxNCwxMCBAQCBzdGF0aWMg aW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogDQogCXJl dHVybiAwOw0KIA0KLWVycl9kZWNfdmRldl9yZWdpc3RlcjoNCi0JdmlkZW9fZGV2aWNlX3JlbGVh c2UoanBlZy0+ZGVjX3ZkZXYpOw0KK2Vycl92ZmRfanBlZ19yZWdpc3RlcjoNCisJdmlkZW9fZGV2 aWNlX3JlbGVhc2UoanBlZy0+dmZkX2pwZWcpOw0KIA0KLWVycl9kZWNfdmRldl9hbGxvYzoNCitl cnJfdmZkX2pwZWdfYWxsb2M6DQogCXY0bDJfbTJtX3JlbGVhc2UoanBlZy0+bTJtX2Rldik7DQog DQogZXJyX20ybV9pbml0Og0KQEAgLTExNjYsOCArMTUzNyw4IEBAIHN0YXRpYyBpbnQgbXRrX2pw ZWdfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCXN0cnVjdCBtdGtfanBl Z19kZXYgKmpwZWcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCiANCiAJcG1fcnVudGlt ZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KLQl2aWRlb191bnJlZ2lzdGVyX2RldmljZShqcGVnLT5k ZWNfdmRldik7DQotCXZpZGVvX2RldmljZV9yZWxlYXNlKGpwZWctPmRlY192ZGV2KTsNCisJdmlk ZW9fdW5yZWdpc3Rlcl9kZXZpY2UoanBlZy0+dmZkX2pwZWcpOw0KKwl2aWRlb19kZXZpY2VfcmVs ZWFzZShqcGVnLT52ZmRfanBlZyk7DQogCXY0bDJfbTJtX3JlbGVhc2UoanBlZy0+bTJtX2Rldik7 DQogCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmpwZWctPnY0bDJfZGV2KTsNCiANCkBAIC0xMTc4 LDcgKzE1NDksMTEgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtdGtfanBlZ19wbV9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCiANCi0JbXRrX2pwZWdfZGVjX3Jlc2V0KGpwZWctPmRl Y19yZWdfYmFzZSk7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykNCisJCW10a19q cGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorCWVsc2UNCisJCW10a19qcGVnX2RlY19y ZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQogCW10a19qcGVnX2Nsa19vZmYoanBlZyk7DQogDQog CXJldHVybiAwOw0KQEAgLTExODksNyArMTU2NCwxMCBAQCBzdGF0aWMgX19tYXliZV91bnVzZWQg aW50IG10a19qcGVnX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQogCXN0cnVjdCBtdGtf anBlZ19kZXYgKmpwZWcgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCiANCiAJbXRrX2pwZWdfY2xr X29uKGpwZWcpOw0KLQltdGtfanBlZ19kZWNfcmVzZXQoanBlZy0+ZGVjX3JlZ19iYXNlKTsNCisJ aWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKQ0KKwkJbXRrX2pwZWdfZW5jX3Jlc2V0KGpw ZWctPnJlZ19iYXNlKTsNCisJZWxzZQ0KKwkJbXRrX2pwZWdfZGVjX3Jlc2V0KGpwZWctPnJlZ19i YXNlKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTEyMjUsMTEgKzE2MDMsMTUgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVnX3BtX29wcyA9IHsNCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfanBlZ19tYXRjaFtdID0gew0KIAl7DQogCQkuY29t cGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtanBnZGVjIiwNCi0JCS5kYXRhICAgICAgID0gTlVM TCwNCisJCS5kYXRhICAgICAgID0gKHZvaWQgKilNVEtfSlBFR19ERUMsDQogCX0sDQogCXsNCiAJ CS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1qcGdkZWMiLA0KLQkJLmRhdGEgICAgICAg PSBOVUxMLA0KKwkJLmRhdGEgICAgICAgPSAodm9pZCAqKU1US19KUEVHX0RFQywNCisJfSwNCisJ ew0KKwkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXRrLWpwZ2VuYyIsDQorCQkuZGF0YSAgICAg ICA9ICh2b2lkICopTVRLX0pQRUdfRU5DLA0KIAl9LA0KIAl7fSwNCiB9Ow0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCmluZGV4IGQzMmE2ZmJh YTMxMS4uMjIwMjIyNGQ2OTlhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9tdGtfanBlZ19jb3JlLmgNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWpwZWcvbXRrX2pwZWdfY29yZS5oDQpAQCAtMyw2ICszLDcgQEANCiAgKiBDb3B5cmlnaHQgKGMp IDIwMTYgTWVkaWFUZWsgSW5jLg0KICAqIEF1dGhvcjogTWluZyBIc2l1IFRzYWkgPG1pbmdoc2l1 LnRzYWlAbWVkaWF0ZWsuY29tPg0KICAqICAgICAgICAgUmljayBDaGFuZyA8cmljay5jaGFuZ0Bt ZWRpYXRlay5jb20+DQorICogICAgICAgICBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5j b20+DQogICovDQogDQogI2lmbmRlZiBfTVRLX0pQRUdfQ09SRV9IDQpAQCAtMTksMTYgKzIwLDE5 IEBADQogDQogI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUCUJJVCgwKQ0KICNk ZWZpbmUgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUJQklUKDEpDQorI2RlZmluZSBNVEtf SlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgyKQ0KKyNkZWZpbmUgTVRLX0pQRUdfRk1UX0ZM QUdfRU5DX0NBUFRVUkUJQklUKDMpDQogDQogI2RlZmluZSBNVEtfSlBFR19GTVRfVFlQRV9PVVRQ VVQJMQ0KICNkZWZpbmUgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRQkyDQogDQotI2RlZmluZSBN VEtfSlBFR19NSU5fV0lEVEgJMzINCi0jZGVmaW5lIE1US19KUEVHX01JTl9IRUlHSFQJMzINCi0j ZGVmaW5lIE1US19KUEVHX01BWF9XSURUSAk4MTkyDQotI2RlZmluZSBNVEtfSlBFR19NQVhfSEVJ R0hUCTgxOTINCisjZGVmaW5lIE1US19KUEVHX01JTl9XSURUSAkzMlUNCisjZGVmaW5lIE1US19K UEVHX01JTl9IRUlHSFQJMzJVDQorI2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEgJNjU1MzVVDQor I2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTY1NTM1VQ0KIA0KICNkZWZpbmUgTVRLX0pQRUdf REVGQVVMVF9TSVpFSU1BR0UJKDEgKiAxMDI0ICogMTAyNCkNCisjZGVmaW5lIE1US19KUEVHX0RF RkFVTFRfRVhJRl9TSVpFCSg2NCAqIDEwMjQpDQogDQogLyoqDQogICogZW51bSBtdGtfanBlZ19j dHhfc3RhdGUgLSBjb250ZXggc3RhdGUgb2YganBlZw0KQEAgLTM5LDYgKzQzLDE0IEBAIGVudW0g bXRrX2pwZWdfY3R4X3N0YXRlIHsNCiAJTVRLX0pQRUdfU09VUkNFX0NIQU5HRSwNCiB9Ow0KIA0K Ky8qKg0KKyAqIGVudW0gbXRrX2pwZWdfbW9kZSAtIG1vZGUgb2YganBlZw0KKyAqLw0KK2VudW0g bXRrX2pwZWdfbW9kZSB7DQorCU1US19KUEVHX0VOQywNCisJTVRLX0pQRUdfREVDLA0KK307DQor DQogLyoqDQogICogc3RydWN0IG10X2pwZWcgLSBKUEVHIElQIGFic3RyYWN0aW9uDQogICogQGxv Y2s6CQl0aGUgbXV0ZXggcHJvdGVjdGluZyB0aGlzIHN0cnVjdHVyZQ0KQEAgLTQ4LDExICs2MCwx MiBAQCBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSB7DQogICogQHY0bDJfZGV2OgkJdjRsMiBkZXZp Y2UgZm9yIG1lbTJtZW0gbW9kZQ0KICAqIEBtMm1fZGV2OgkJdjRsMiBtZW0ybWVtIGRldmljZSBk YXRhDQogICogQGFsbG9jX2N0eDoJCXZpZGVvYnVmMiBtZW1vcnkgYWxsb2NhdG9yJ3MgY29udGV4 dA0KLSAqIEBkZWNfdmRldjoJCXZpZGVvIGRldmljZSBub2RlIGZvciBkZWNvZGVyIG1lbTJtZW0g bW9kZQ0KLSAqIEBkZWNfcmVnX2Jhc2U6CUpQRUcgcmVnaXN0ZXJzIG1hcHBpbmcNCi0gKiBAY2xr X2pkZWM6CQlKUEVHIGh3IHdvcmtpbmcgY2xvY2sNCi0gKiBAY2xrX2pkZWNfc21pOglKUEVHIFNN SSBidXMgY2xvY2sNCisgKiBAdmZkX2pwZWc6CQl2aWRlbyBkZXZpY2Ugbm9kZSBmb3IganBlZyBt ZW0ybWVtIG1vZGUNCisgKiBAcmVnX2Jhc2U6CQlKUEVHIHJlZ2lzdGVycyBtYXBwaW5nDQorICog QGNsa19qcGVnOgkJSlBFRyBodyB3b3JraW5nIGNsb2NrDQorICogQGNsa19qcGVnX3NtaToJSlBF RyBTTUkgYnVzIGNsb2NrDQogICogQGxhcmI6CQlTTUkgZGV2aWNlDQorICogQG1vZGU6CQljb21w cmVzc2lvbiAoZW5jb2RlKSBvcGVyYXRpb24gb3IgZGVjb21wcmVzc2lvbiAoZGVjb2RlKQ0KICAq Lw0KIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIAlzdHJ1Y3QgbXV0ZXgJCWxvY2s7DQpAQCAtNjIs MTEgKzc1LDEyIEBAIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIAlzdHJ1Y3QgdjRsMl9kZXZpY2UJ djRsMl9kZXY7DQogCXN0cnVjdCB2NGwyX20ybV9kZXYJKm0ybV9kZXY7DQogCXZvaWQJCQkqYWxs b2NfY3R4Ow0KLQlzdHJ1Y3QgdmlkZW9fZGV2aWNlCSpkZWNfdmRldjsNCi0Jdm9pZCBfX2lvbWVt CQkqZGVjX3JlZ19iYXNlOw0KLQlzdHJ1Y3QgY2xrCQkqY2xrX2pkZWM7DQotCXN0cnVjdCBjbGsJ CSpjbGtfamRlY19zbWk7DQorCXN0cnVjdCB2aWRlb19kZXZpY2UJKnZmZF9qcGVnOw0KKwl2b2lk IF9faW9tZW0JCSpyZWdfYmFzZTsNCisJc3RydWN0IGNsawkJKmNsa19qcGVnOw0KKwlzdHJ1Y3Qg Y2xrCQkqY2xrX2pwZWdfc21pOw0KIAlzdHJ1Y3QgZGV2aWNlCQkqbGFyYjsNCisJZW51bSBtdGtf anBlZ19tb2RlCW1vZGU7DQogfTsNCiANCiAvKioNCkBAIC0xMTMsNiArMTI3LDcgQEAgc3RydWN0 IG10a19qcGVnX3FfZGF0YSB7DQogICogQGNhcF9xOgkJZGVzdGluYXRpb24gKGNhcHR1cmUpIHF1 ZXVlIHF1ZXVlIGluZm9ybWF0aW9uDQogICogQGZoOgkJCVY0TDIgZmlsZSBoYW5kbGUNCiAgKiBA c3RhdGU6CQlzdGF0ZSBvZiB0aGUgY29udGV4dA0KKyAqIEBjdHJsX2hkbDoJCWNvbnRyb2xzIGhh bmRsZXINCiAgKiBAY29sb3JzcGFjZTogZW51bSB2NGwyX2NvbG9yc3BhY2U7IHN1cHBsZW1lbnRh bCB0byBwaXhlbGZvcm1hdA0KICAqIEB5Y2Jjcl9lbmM6IGVudW0gdjRsMl95Y2Jjcl9lbmNvZGlu ZywgWSdDYkNyIGVuY29kaW5nDQogICogQHF1YW50aXphdGlvbjogZW51bSB2NGwyX3F1YW50aXph dGlvbiwgY29sb3JzcGFjZSBxdWFudGl6YXRpb24NCkBAIC0xMjQsNiArMTM5LDEwIEBAIHN0cnVj dCBtdGtfanBlZ19jdHggew0KIAlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhCQljYXBfcTsNCiAJc3Ry dWN0IHY0bDJfZmgJCQlmaDsNCiAJZW51bSBtdGtfanBlZ19jdHhfc3RhdGUJCXN0YXRlOw0KKwl1 OCBlbmFibGVfZXhpZjsNCisJdTggZW5jX3F1YWxpdHk7DQorCXU4IHJlc3RhcnRfaW50ZXJ2YWw7 DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlcgljdHJsX2hkbDsNCiANCiAJZW51bSB2NGwyX2Nv bG9yc3BhY2UgY29sb3JzcGFjZTsNCiAJZW51bSB2NGwyX3ljYmNyX2VuY29kaW5nIHljYmNyX2Vu YzsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVn X2RlY19ody5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19kZWNf aHcuaA0KaW5kZXggMWNjMzdkYmZjOGU3Li5jZTI2M2RiNWYzMGEgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2RlY19ody5oDQorKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2RlY19ody5oDQpAQCAtMywxMCAr MywxMSBAQA0KICAqIENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9y OiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAg ICBSaWNrIENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBK aWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCi0jaWZuZGVmIF9NVEtfSlBF R19IV19IDQotI2RlZmluZSBfTVRLX0pQRUdfSFdfSA0KKyNpZm5kZWYgX01US19KUEVHX0RFQ19I V19IDQorI2RlZmluZSBfTVRLX0pQRUdfREVDX0hXX0gNCiANCiAjaW5jbHVkZSA8bWVkaWEvdmlk ZW9idWYyLWNvcmUuaD4NCiANCkBAIC03NSw0ICs3Niw0IEBAIHZvaWQgbXRrX2pwZWdfZGVjX3Nl dF9jb25maWcodm9pZCBfX2lvbWVtICpiYXNlLA0KIHZvaWQgbXRrX2pwZWdfZGVjX3Jlc2V0KHZv aWQgX19pb21lbSAqZGVjX3JlZ19iYXNlKTsNCiB2b2lkIG10a19qcGVnX2RlY19zdGFydCh2b2lk IF9faW9tZW0gKmRlY19yZWdfYmFzZSk7DQogDQotI2VuZGlmIC8qIF9NVEtfSlBFR19IV19IICov DQorI2VuZGlmIC8qIF9NVEtfSlBFR19ERUNfSFdfSCAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwLi41MzBlMzFhYWYxODUNCi0tLSAvZGV2L251bGwNCisrKyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMNCkBAIC0w LDAgKzEsMjcxIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0K Ky8qDQorICogQ29weXJpZ2h0IChjKSAyMDE5IE1lZGlhVGVrIEluYy4NCisgKiBBdXRob3I6IFhp YSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCisgKg0KKyAqLw0KKw0KKyNpbmNsdWRl IDxsaW51eC9pby5oPg0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bWVk aWEvdmlkZW9idWYyLWNvcmUuaD4NCisNCisjaW5jbHVkZSAibXRrX2pwZWdfZW5jX2h3LmgiDQor DQorc3RhdGljIHN0cnVjdCBtdGtfanBlZ19lbmNfcWx0IG10a19qcGVnX2VuY19xdWFsaXR5W10g PSB7DQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDk3LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0g SlBFR19FTkNfUVVBTElUWV9ROTcsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDk1 LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTUsDQorCX0sDQorCXsN CisJCS5xdWFsaXR5X3BhcmFtCQk9IDkyLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNf UVVBTElUWV9ROTIsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDkwLA0KKwkJLmhh cmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTAsDQorCX0sDQorCXsNCisJCS5xdWFs aXR5X3BhcmFtCQk9IDg3LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9R ODcsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDg0LA0KKwkJLmhhcmR3YXJlX3Zh bHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODQsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFt CQk9IDgyLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODIsDQorCX0s DQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDgwLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBF R19FTkNfUVVBTElUWV9RODAsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDc0LA0K KwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNzQsDQorCX0sDQorCXsNCisJ CS5xdWFsaXR5X3BhcmFtCQk9IDY4LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVB TElUWV9RNjgsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDY0LA0KKwkJLmhhcmR3 YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNjQsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5 X3BhcmFtCQk9IDYwLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNjAs DQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDQ4LA0KKwkJLmhhcmR3YXJlX3ZhbHVl CT0gSlBFR19FTkNfUVVBTElUWV9RNDgsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9 IDM5LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RMzksDQorCX0sDQor CXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDM0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19F TkNfUVVBTElUWV9RMzQsDQorCX0sDQorfTsNCisNCisjZGVmaW5lIE1US19KUEVHX0VOQ19OVU1f UVVBTElUWSBBUlJBWV9TSVpFKG10a19qcGVnX2VuY19xdWFsaXR5KQ0KKw0KK3ZvaWQgbXRrX2pw ZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAqYmFzZSkNCit7DQorCXdyaXRlbCgweDAwLCBiYXNl ICsgSlBFR19FTkNfUlNUQik7DQorCXdyaXRlbChKUEVHX0VOQ19SRVNFVF9CSVQsIGJhc2UgKyBK UEVHX0VOQ19SU1RCKTsNCisJd3JpdGVsKDB4MDAsIGJhc2UgKyBKUEVHX0VOQ19DT0RFQ19TRUwp Ow0KK30NCisNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9pbnRfc3RhdHVzKHZvaWQgX19pb21lbSAq YmFzZSkNCit7DQorCXUzMiByZXQ7DQorDQorCXJldCA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19J TlRfU1RTKSAmDQorCQkgICAgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUTsNCisJaWYg KHJldCkNCisJCXdyaXRlbCgwLCBiYXNlICsgSlBFR19FTkNfSU5UX1NUUyk7DQorDQorCXJldHVy biByZXQ7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9faW9t ZW0gKmJhc2UpDQorew0KKwlyZXR1cm4gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RNQV9BRERSMCkg LQ0KKwkgICAgICAgcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQorfQ0KKw0KK3Uz MiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgaXJxX3N0 YXR1cykNCit7DQorCWlmIChpcnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRVU19ET05FKQ0K KwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORTsNCisJZWxzZSBpZiAoaXJxX3N0YXR1 cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfU1RBTEwpDQorCQlyZXR1cm4gTVRLX0pQRUdfRU5DX1JF U1VMVF9TVEFMTDsNCisJZWxzZSBpZiAoaXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNf VkNPREVDX0lSUSkNCisJCXJldHVybiBNVEtfSlBFR19FTkNfUkVTVUxUX1ZDT0RFQ19JUlE7DQor CXJldHVybiBNVEtfSlBFR19FTkNfUkVTVUxUX0VSUk9SX1VOS05PV047DQorfQ0KKw0KK3ZvaWQg bXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiB3aWR0aCwg dTMyIGhlaWdodCkNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSBKUEVHX0VOQ19XSURU SF9IRUlHSFQod2lkdGgsIGhlaWdodCk7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5D X0lNR19TSVpFKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2VuY0Zvcm1hdCh2b2lk IF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0KQ0KK3sNCisJdTMyIHl1dl9mb3JtYXQsIHZh bHVlOw0KKw0KKwlzd2l0Y2ggKGVuY19mb3JtYXQpIHsNCisJY2FzZSBWNEwyX1BJWF9GTVRfWVVZ VjoNCisJCXl1dl9mb3JtYXQgPSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVY7DQorCQlicmVhazsN CisJY2FzZSBWNEwyX1BJWF9GTVRfWVZZVToNCisJCXl1dl9mb3JtYXQgPSBKUEVHX0VOQ19ZVVZf Rk9STUFUX1lWWVU7DQorCQlicmVhazsNCisJY2FzZSBWNEwyX1BJWF9GTVRfTlYxMk06DQorCQl5 dXZfZm9ybWF0ID0gSlBFR19FTkNfWVVWX0ZPUk1BVF9OVjEyOw0KKwkJYnJlYWs7DQorCWNhc2Ug VjRMMl9QSVhfRk1UX05WMjFNOg0KKwkJeXV2X2Zvcm1hdCA9IEpQRUdfRU5DX1lVVl9GT1JNQVRf TlYxMjsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJdmFsdWUg PSByZWFkbChiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJM X1lVVl9GT1JNQVRfTUFTSzsNCisJdmFsdWUgfD0gSlBFR19FTkNfRk9STUFUKHl1dl9mb3JtYXQp Ow0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCit9DQorDQordm9pZCBt dGtfanBlZ19lbmNfc2V0X2Jsa19udW0odm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1h dCwgdTMyIHdpZHRoLA0KKwkJCSAgICAgIHUzMiBoZWlnaHQpDQorew0KKwl1MzIgYmxrX251bTsN CisJdTMyIGlzXzQyMDsNCisJdTMyIHBhZGRpbmdfd2lkdGg7DQorCXUzMiBwYWRkaW5nX2hlaWdo dDsNCisNCisJaXNfNDIwID0gKGVuY19mb3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMTJNIHx8DQor CQkgIGVuY19mb3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMjFNKSA/IDEgOiAwOw0KKwlwYWRkaW5n X3dpZHRoID0gcm91bmRfdXAod2lkdGgsIDE2KTsNCisJcGFkZGluZ19oZWlnaHQgPSByb3VuZF91 cChoZWlnaHQsIGlzXzQyMCA/IDE2IDogOCk7DQorDQorCWJsa19udW0gPSAocGFkZGluZ193aWR0 aCA+PiA0KSAqIChwYWRkaW5nX2hlaWdodCA+PiAoaXNfNDIwID8gNCA6IDMpKSAqDQorCQkgIChp c180MjAgPyA2IDogNCkgLSAxOw0KKw0KKwl3cml0ZWwoYmxrX251bSwgYmFzZSArIEpQRUdfRU5D X0JMS19OVU0pOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zZXRfc3RyaWRlKHZvaWQgX19p b21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJCQkgICAgIHUzMiBoZWln aHQsIHUzMiBieXRlc3BlcmxpbmUpDQorew0KKwl1MzIgd2lkdGhfZXZlbjsNCisJdTMyIGlzXzQy MDsNCisJdTMyIGltZ19zdHJpZGU7DQorCXUzMiBtZW1fc3RyaWRlOw0KKw0KKwl3aWR0aF9ldmVu ID0gcm91bmRfdXAod2lkdGgsIDIpOw0KKwlpc180MjAgPSAoZW5jX2Zvcm1hdCA9PSBWNEwyX1BJ WF9GTVRfTlYxMk0gfHwNCisJCSAgZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pID8g MSA6IDA7DQorCWlmICghaXNfNDIwKQ0KKwkJd2lkdGhfZXZlbiA9IHdpZHRoX2V2ZW4gPDwgMTsN CisJaW1nX3N0cmlkZSA9IHJvdW5kX3VwKHdpZHRoX2V2ZW4sIChpc180MjAgPyAxNiA6IDMyKSk7 DQorCW1lbV9zdHJpZGUgPSBpc180MjAgPyBieXRlc3BlcmxpbmUgOiByb3VuZF91cCh3aWR0aF9l dmVuLCAzMik7DQorDQorCXdyaXRlbChpbWdfc3RyaWRlLCBiYXNlICsgSlBFR19FTkNfSU1HX1NU UklERSk7DQorCXdyaXRlbChtZW1fc3RyaWRlLCBiYXNlICsgSlBFR19FTkNfU1RSSURFKTsNCit9 DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X3NyY19hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwg dTMyIHNyY19hZGRyLA0KKwkJCSAgICAgICB1MzIgc3JjX2FkZHJfYykNCit7DQorCXdyaXRlbChz cmNfYWRkciwgYmFzZSArIEpQRUdfRU5DX1NSQ19MVU1BX0FERFIpOw0KKwl3cml0ZWwoc3JjX2Fk ZHJfYywgYmFzZSArIEpQRUdfRU5DX1NSQ19DSFJPTUFfQUREUik7DQorfQ0KKw0KK3ZvaWQgbXRr X2pwZWdfZW5jX3NldF9kc3RfYWRkcih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBkc3RfYWRkciwN CisJCQkgICAgICAgdTMyIHN0YWxsX3NpemUsIHUzMiBpbml0X29mZnNldCwNCisJCQkgICAgICAg dTMyIG9mZnNldF9tYXNrKQ0KK3sNCisJd3JpdGVsKEpQRUdfRU5DX0lOSVRfT0ZGU0VUKGluaXRf b2Zmc2V0KSwgYmFzZSArIEpQRUdfRU5DX09GRlNFVF9BRERSKTsNCisJd3JpdGVsKEpQRUdfRU5D X09GRlNFVF9NQVNLKG9mZnNldF9tYXNrKSwNCisJICAgICAgIGJhc2UgKyBKUEVHX0VOQ19CWVRF X09GRlNFVF9NQVNLKTsNCisJd3JpdGVsKEpQRUdfRU5DX0RTVF9BRERSKGRzdF9hZGRyKSwgYmFz ZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQorCXdyaXRlbChKUEVHX0VOQ19TVEFMTF9BRERSKGRz dF9hZGRyLCBzdGFsbF9zaXplKSwNCisJICAgICAgIGJhc2UgKyBKUEVHX0VOQ19TVEFMTF9BRERS MCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19zZXRfcXVhbGl0eSh2b2lkIF9f aW9tZW0gKmJhc2UsIHUzMiBxdWFsaXR5KQ0KK3sNCisJdTMyIHZhbHVlOw0KKwl1MzIgaSwgZW5j X3F1YWxpdHk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBNVEtfSlBFR19FTkNfTlVNX1FVQUxJVFk7 IGkrKykgew0KKwkJaWYgKHF1YWxpdHkgPj0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0ucXVhbGl0 eV9wYXJhbSkgew0KKwkJCWVuY19xdWFsaXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0uaGFy ZHdhcmVfdmFsdWU7DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCisNCisJdmFsdWUgPSByZWFkbChi YXNlICsgSlBFR19FTkNfUVVBTElUWSk7DQorCXZhbHVlID0gSlBFR19FTkNfU0VUX1FVQUxJVFko dmFsdWUsIGVuY19xdWFsaXR5KTsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfUVVB TElUWSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19zZXRfcmVzdGFydF9pbnRl cnZhbCh2b2lkIF9faW9tZW0gKmJhc2UsDQorCQkJCQkgICAgICB1MzIgcmVzdGFydF9pbnRlcnZh bCkNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsgSlBFR19FTkNf Q1RSTCk7DQorCWlmIChyZXN0YXJ0X2ludGVydmFsKQ0KKwkJdmFsdWUgfD0gSlBFR19FTkNfQ1RS TF9SRVNUQVJUX0VOX0JJVDsNCisJZWxzZQ0KKwkJdmFsdWUgJj0gfkpQRUdfRU5DX0NUUkxfUkVT VEFSVF9FTl9CSVQ7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl3 cml0ZWwocmVzdGFydF9pbnRlcnZhbCwgYmFzZSArIEpQRUdfRU5DX1JTVF9NQ1VfTlVNKTsNCit9 DQorDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX3NldF9lbmNvZGVfbW9kZSh2b2lkIF9faW9t ZW0gKmJhc2UsIHUzMiBleGlmX2VuKQ0KK3sNCisJdTMyIHZhbHVlOw0KKw0KKwl2YWx1ZSA9IHJl YWRsKGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJdmFsdWUgJj0gfkpQRUdfRU5DX0NUUkxfRklM RV9GT1JNQVRfQklUOw0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisN CisJaWYgKGV4aWZfZW4pIHsNCisJCXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwp Ow0KKwkJdmFsdWUgfD0gSlBFR19FTkNfRU5fSkZJRl9FWElGOw0KKwkJd3JpdGVsKHZhbHVlLCBi YXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCX0NCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0 X2N0cmxfY2ZnKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGV4aWZfZW4sIHUzMiBxdWFsaXR5LA0K KwkJCSAgICAgICB1MzIgcmVzdGFydF9pbnRlcnZhbCkNCit7DQorCW10a19qcGVnX2VuY19zZXRf cXVhbGl0eShiYXNlLCBxdWFsaXR5KTsNCisNCisJbXRrX2pwZWdfZW5jX3NldF9yZXN0YXJ0X2lu dGVydmFsKGJhc2UsIHJlc3RhcnRfaW50ZXJ2YWwpOw0KKw0KKwltdGtfanBlZ19lbmNfc2V0X2Vu Y29kZV9tb2RlKGJhc2UsIGV4aWZfZW4pOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zdGFy dCh2b2lkIF9faW9tZW0gKmJhc2UpDQorew0KKwl1MzIgdmFsdWU7DQorDQorCXZhbHVlID0gcmVh ZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl2YWx1ZSB8PSBKUEVHX0VOQ19DVFJMX0lOVF9F Tl9CSVQgfCBKUEVHX0VOQ19DVFJMX0VOQUJMRV9CSVQ7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSAr IEpQRUdfRU5DX0NUUkwpOw0KK30NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1qcGVnL210a19qcGVnX2VuY19ody5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst anBlZy9tdGtfanBlZ19lbmNfaHcuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwMC4uN2Q0NmJkZWU4ZWEyDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5oDQpAQCAtMCwwICsxLDg2IEBADQor LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KKy8qDQorICogQ29w eXJpZ2h0IChjKSAyMDE5IE1lZGlhVGVrIEluYy4NCisgKiBBdXRob3I6IFhpYSBKaWFuZyA8eGlh LmppYW5nQG1lZGlhdGVrLmNvbT4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgX01US19KUEVHX0VO Q19IV19IDQorI2RlZmluZSBfTVRLX0pQRUdfRU5DX0hXX0gNCisNCisjaW5jbHVkZSA8bWVkaWEv dmlkZW9idWYyLWNvcmUuaD4NCisNCisjaW5jbHVkZSAibXRrX2pwZWdfY29yZS5oIg0KKyNpbmNs dWRlICJtdGtfanBlZ19lbmNfcmVnLmgiDQorDQorZW51bSB7DQorCU1US19KUEVHX0VOQ19SRVNV TFRfRE9ORQkJPSAwLA0KKwlNVEtfSlBFR19FTkNfUkVTVUxUX1NUQUxMLA0KKwlNVEtfSlBFR19F TkNfUkVTVUxUX1ZDT0RFQ19JUlEsDQorCU1US19KUEVHX0VOQ19SRVNVTFRfRVJST1JfVU5LTk9X Tg0KK307DQorDQorLyoqDQorICogc3RydWN0IG10a19qcGVnX2VuY19xbHQgLSBKUEVHIGVuY29k ZXIgcXVhbGl0eSBkYXRhDQorICogQHF1YWxpdHlfcGFyYW06CXF1YWxpdHkgdmFsdWUNCisgKiBA aGFyZHdhcmVfdmFsdWU6aGFyZHdhcmUgdmFsdWUgb2YgcXVhbGl0eQ0KKyAqLw0KK3N0cnVjdCBt dGtfanBlZ19lbmNfcWx0IHsNCisJdTgJcXVhbGl0eV9wYXJhbTsNCisJdTgJaGFyZHdhcmVfdmFs dWU7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3QgbXRfanBlZ19lbmNfYnMgLSBKUEVHIGVuY29k ZXIgYml0c3RyZWFtICBidWZmZXINCisgKiBAZG1hX2FkZHI6CQkJSlBFRyBlbmNvZGVyIGRlc3Rp bmF0aW9uIGFkZHJlc3MNCisgKiBAc2l6ZToJCQlKUEVHIGVuY29kZXIgYmlzdHJlYW0gc2l6ZQ0K KyAqIEBkbWFfYWRkcl9vZmZzZXQ6CQlKUEVHIGVuY29kZXIgb2Zmc2V0IGFkZHJlc3MNCisgKiBA ZG1hX2FkZHJfb2Zmc2V0bWFzazoJSlBFRyBlbmNvZGVyIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2Zm c2V0IG1hc2sNCisgKi8NCitzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzIHsNCisJZG1hX2FkZHJfdAlk bWFfYWRkcjsNCisJc2l6ZV90CQlzaXplOw0KKwl1MzIJCQlkbWFfYWRkcl9vZmZzZXQ7DQorCXUz MgkJCWRtYV9hZGRyX29mZnNldG1hc2s7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3QgbXRrX2pw ZWdfbWVtIC0gSlBFRyBtZW1vcnkNCisgKiBAZG1hX2FkZHI6CQltZW1vcnkgYWRkcmVzcw0KKyAq IEBzaXplOgkJbWVtb3J5IHNpemUNCisgKi8NCitzdHJ1Y3QgbXRrX2pwZWdfbWVtIHsNCisJZG1h X2FkZHJfdAlkbWFfYWRkcjsNCisJc2l6ZV90CQlzaXplOw0KK307DQorDQorLyoqDQorICogc3Ry dWN0IG10a19qcGVnX2VuY19mYiAtIEpQRUcgZW5jb2RlciBmcmFtZSBidWZmZXINCisgKiBAZmJf YWRkcjoJCWZybWFlIGJ1ZmZlciBtZW1vcnkgaW5mb3JtYXRpb24NCisgKiBAbnVtX3BsYW5lczoJ CW51bWJlciBvZiBwbGFuZXMNCisgKi8NCitzdHJ1Y3QgbXRrX2pwZWdfZW5jX2ZiIHsNCisJc3Ry dWN0IG10a19qcGVnX21lbQlmYl9hZGRyW01US19KUEVHX0NPTVBfTUFYXTsNCisJdTMyCQkJbnVt X3BsYW5lczsNCit9Ow0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAq YmFzZSk7DQordTMyIG10a19qcGVnX2VuY19nZXRfaW50X3N0YXR1cyh2b2lkIF9faW9tZW0gKmJh c2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2Up Ow0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIg aXJxX3N0YXR1cyk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2ltZ19zaXplKHZvaWQgX19pb21l bSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsNCit2b2lkIG10a19qcGVnX2VuY19zZXRf ZW5jRm9ybWF0KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQpOw0KK3ZvaWQgbXRr X2pwZWdfZW5jX3NldF9ibGtfbnVtKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQs IHUzMiB3aWR0aCwNCisJCQkgICAgICB1MzIgaGVpZ2h0KTsNCit2b2lkIG10a19qcGVnX2VuY19z ZXRfc3RyaWRlKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwN CisJCQkgICAgIHUzMiBoZWlnaHQsIHUzMiBieXRlc3BlcmxpbmUpOw0KK3ZvaWQgbXRrX2pwZWdf ZW5jX3NldF9zcmNfYWRkcih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBzcmNfYWRkciwNCisJCQkg ICAgICAgdTMyIHNyY19hZGRyX2MpOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9kc3RfYWRkcih2 b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBkc3RfYWRkciwNCisJCQkgICAgICAgdTMyIHN0YWxsX3Np emUsIHUzMiBpbml0X29mZnNldCwNCisJCQkgICAgICAgdTMyIG9mZnNldF9tYXNrKTsNCit2b2lk IG10a19qcGVnX2VuY19zZXRfY3RybF9jZmcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZXhpZl9l biwgdTMyIHF1YWxpdHksDQorCQkJICAgICAgIHUzMiByZXN0YXJ0X2ludGVydmFsKTsNCit2b2lk IG10a19qcGVnX2VuY19zdGFydCh2b2lkIF9faW9tZW0gKmVuY19yZWdfYmFzZSk7DQorDQorI2Vu ZGlmIC8qIF9NVEtfSlBFR19FTkNfSFdfSCAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX3JlZy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfcmVnLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLmNlYzM2MzFhZGRjNQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfcmVnLmgNCkBAIC0wLDAg KzEsNzggQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQor LyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLg0KKyAqIEF1dGhvcjogWGlh IEppYW5nIDx4aWEuamlhbmdAbWVkaWF0ZWsuY29tPg0KKyAqDQorICovDQorI2lmbmRlZiBfTVRL X0pQRUdfRU5DX1JFR19IDQorI2RlZmluZSBfTVRLX0pQRUdfRU5DX1JFR19IDQorDQorI2RlZmlu ZSBKUEVHX0VOQ19JTlRfU1RBVFVTX0RPTkUJCQlCSVQoMCkNCisjZGVmaW5lIEpQRUdfRU5DX0lO VF9TVEFUVVNfU1RBTEwJCQlCSVQoMSkNCisjZGVmaW5lIEpQRUdfRU5DX0lOVF9TVEFUVVNfVkNP REVDX0lSUQkJQklUKDQpDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX01BU0tfQUxMSVJR CQkweDEzDQorDQorI2RlZmluZSBKUEVHX0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSyBHRU5NQVNL KDMsIDApDQorDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX1lVVl9GT1JNQVRfTUFTSyAweDE4DQor I2RlZmluZSBKUEVHX0VOQ19DVFJMX1JFU1RBUlRfRU5fQklUICAgICAgICAgICAgQklUKDEwKQ0K KyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9GSUxFX0ZPUk1BVF9CSVQgICAgICAgICAgIEJJVCg1KQ0K KyNkZWZpbmUgSlBFR19FTkNfRU5fSkZJRl9FWElGICAgICAgICAgICAgICAgICAgIEJJVCg1KQ0K KyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9JTlRfRU5fQklUICAgICAgICAgICAgICAgIEJJVCgyKQ0K KyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9FTkFCTEVfQklUICAgICAgICAgICAgICAgIEJJVCgwKQ0K KyNkZWZpbmUgSlBFR19FTkNfUkVTRVRfQklUICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0K Kw0KKyNkZWZpbmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVVlWIDANCisjZGVmaW5lIEpQRUdfRU5D X1lVVl9GT1JNQVRfWVZZVSAxDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX05WMTIgMg0K KyNkZWZpbmUgSkVQR19FTkNfWVVWX0ZPUk1BVF9OVjIxIDMNCisNCisjZGVmaW5lIEpQRUdfRU5D X1FVQUxJVFlfUTYwIDB4MA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODAgMHgxDQorI2Rl ZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5MCAweDINCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlf UTk1IDB4Mw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RMzkgMHg0DQorI2RlZmluZSBKUEVH X0VOQ19RVUFMSVRZX1E2OCAweDUNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTg0IDB4Ng0K KyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTIgMHg3DQorI2RlZmluZSBKUEVHX0VOQ19RVUFM SVRZX1E0OCAweDgNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTc0IDB4YQ0KKyNkZWZpbmUg SlBFR19FTkNfUVVBTElUWV9RODcgMHhiDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1EzNCAw eGMNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTY0IDB4ZQ0KKyNkZWZpbmUgSlBFR19FTkNf UVVBTElUWV9RODIgMHhmDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5NyAweDEwDQorDQor I2RlZmluZSBKUEVHX0VOQ19SU1RCCQkJCTB4MTAwDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMCQkJ CTB4MTA0DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZCQkJMHgxMDgNCisjZGVmaW5lIEpQRUdf RU5DX0JMS19OVU0JCQkweDEwQw0KKyNkZWZpbmUgSlBFR19FTkNfQkxLX0NOVAkJCTB4MTEwDQor I2RlZmluZSBKUEVHX0VOQ19JTlRfU1RTCQkJMHgxMWMNCisjZGVmaW5lIEpQRUdfRU5DX0RTVF9B RERSMAkJCTB4MTIwDQorI2RlZmluZSBKUEVHX0VOQ19ETUFfQUREUjAJCQkweDEyNA0KKyNkZWZp bmUgSlBFR19FTkNfU1RBTExfQUREUjAJCTB4MTI4DQorI2RlZmluZSBKUEVHX0VOQ19PRkZTRVRf QUREUgkJMHgxMzgNCisjZGVmaW5lIEpQRUdfRU5DX1JTVF9NQ1VfTlVNCQkweDE1MA0KKyNkZWZp bmUgSlBFR19FTkNfSU1HX1NJWkUJCQkweDE1NA0KKyNkZWZpbmUgSlBFR19FTkNfREVCVUdfSU5G TzAJCTB4MTYwDQorI2RlZmluZSBKUEVHX0VOQ19ERUJVR19JTkZPMQkJMHgxNjQNCisjZGVmaW5l IEpQRUdfRU5DX1RPVEFMX0NZQ0xFCQkweDE2OA0KKyNkZWZpbmUgSlBFR19FTkNfQllURV9PRkZT RVRfTUFTSwkweDE2Yw0KKyNkZWZpbmUgSlBFR19FTkNfU1JDX0xVTUFfQUREUgkJMHgxNzANCisj ZGVmaW5lIEpQRUdfRU5DX1NSQ19DSFJPTUFfQUREUgkweDE3NA0KKyNkZWZpbmUgSlBFR19FTkNf U1RSSURFCQkJCTB4MTc4DQorI2RlZmluZSBKUEVHX0VOQ19JTUdfU1RSSURFCQkJMHgxN2MNCisj ZGVmaW5lIEpQRUdfRU5DX0RDTV9DVFJMCQkJMHgzMDANCisjZGVmaW5lIEpQRUdfRU5DX0NPREVD X1NFTAkJCTB4MzE0DQorI2RlZmluZSBKUEVHX0VOQ19VTFRSQV9USFJFUwkJMHgzMTgNCisNCisj ZGVmaW5lIEpQRUdfRU5DX0ZPUk1BVCh4KQkJKCgoeCkgJiAzKSA8PCAzKQ0KKyNkZWZpbmUgSlBF R19FTkNfV0lEVEhfSEVJR0hUKHcsIGgpCSgoKHcpIDw8IDE2KSB8IChoKSkNCisjZGVmaW5lIEpQ RUdfRU5DX0lOSVRfT0ZGU0VUKHgpCQkoKHgpICYgKH4weGYpKQ0KKyNkZWZpbmUgSlBFR19FTkNf T0ZGU0VUX01BU0soeCkJCSgoeCkgJiAweGYpDQorI2RlZmluZSBKUEVHX0VOQ19EU1RfQUREUih4 KQkJKCh4KSAmICh+MHhmKSkNCisjZGVmaW5lIEpQRUdfRU5DX1NUQUxMX0FERFIoeCwgeSkJCSgo KHgpICsgKHkpKSAmICh+MHhmKSkNCisjZGVmaW5lIEpQRUdfRU5DX1NFVF9RVUFMSVRZKHgsIHkp CSgoKHgpICYgMHhmZmZmMDAwMCkgfCAoeSkpDQorDQorI2VuZGlmIC8qIF9NVEtfSlBFR19FTkNf UkVHX0ggKi8NCi0tIA0KMi4xOC4wDQo=