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, URIBL_BLOCKED,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 62FE8C433DF for ; Thu, 4 Jun 2020 09:08:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1F6292065C for ; Thu, 4 Jun 2020 09:08:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="C7Xd4XzA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726666AbgFDJIx (ORCPT ); Thu, 4 Jun 2020 05:08:53 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:27147 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728402AbgFDJIq (ORCPT ); Thu, 4 Jun 2020 05:08:46 -0400 X-UUID: 6444e3af8bfe4433a9037f9948d7fe56-20200604 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=Zr0Xwge2gQD5+SgvajXCHyHKKDYAQoOL+XH1xIgW8wU=; b=C7Xd4XzAkizVwBhwuxKX3f6ffpK9nFsJQXSJxHKSVool+EUJyGbvKLcYhK04KteqtxTuM+8YWkeaWXFGhiS+PbGWhSNdj+bWpuEgu40fT8l7kV2H/UJRFaso9dZgTy4a5n8t6kyxQWRbRvve66UaKffXSqFmc7F8GXFRSOfkw2k=; X-UUID: 6444e3af8bfe4433a9037f9948d7fe56-20200604 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 493520696; Thu, 04 Jun 2020 17:08:28 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs05n2.mediatek.inc (172.21.101.140) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 4 Jun 2020 17:08:26 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 4 Jun 2020 17:08:24 +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 RESEND v9 18/18] media: platform: Add jpeg enc feature Date: Thu, 4 Jun 2020 17:05:53 +0800 Message-ID: <20200604090553.10861-20-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200604090553.10861-1-xia.jiang@mediatek.com> References: <20200604090553.10861-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org QWRkIG10ayBqcGVnIGVuY29kZSB2NGwyIGRyaXZlciBiYXNlZCBvbiBqcGVnIGRlY29kZSwgYmVj YXVzZSB0aGF0IGpwZWcNCmRlY29kZSBhbmQgZW5jb2RlIGhhdmUgZ3JlYXQgc2ltaWxhcml0aWVz IHdpdGggZnVuY3Rpb24gb3BlcmF0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBYaWEgSmlhbmcgPHhp YS5qaWFuZ0BtZWRpYXRlay5jb20+DQotLS0NCnY5OiBhZGQgbWVtYmVyIHZhcmlhYmxlKHN0cnVj dCB2NGwyX3JlY3QpIGluIG91dF9xIHN0cnVjdHVyZSBmb3Igc3RvcmluZw0KICAgIHRoZSBhY3Rp dmUgY3JvcCBpbmZvcm1hdGlvbi4NCiAgICBtb3ZlIHRoZSByZW5hbWluZyBleHN0aW5nIGZ1bmN0 aW9ucy9kZWZpbmVzL3ZhcmlhYmxlcyB0byBhIHNlcGFyYXRlIHBhdGNoLg0KLS0tDQogZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZSAgICAgIHwgICA1ICstDQogLi4uL21l ZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYyAgIHwgODQ1ICsrKysrKysrKysr KysrKy0tLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggICB8 ICA0NCArLQ0KIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuYyB8 IDE5MyArKysrDQogLi4uL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5o IHwgMTIzICsrKw0KIDUgZmlsZXMgY2hhbmdlZCwgMTA4NCBpbnNlcnRpb25zKCspLCAxMjYgZGVs ZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCmluZGV4IDQ4NTE2ZGNmOTZlNi4uNzZjMzNhYWQwZjNm IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0K KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0KQEAgLTEsMyAr MSw2IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQotbXRrX2pw ZWctb2JqcyA6PSBtdGtfanBlZ19jb3JlLm8gbXRrX2pwZWdfZGVjX2h3Lm8gbXRrX2pwZWdfZGVj X3BhcnNlLm8NCittdGtfanBlZy1vYmpzIDo9IG10a19qcGVnX2NvcmUubyBcDQorCQkgbXRrX2pw ZWdfZGVjX2h3Lm8gXA0KKwkJIG10a19qcGVnX2RlY19wYXJzZS5vIFwNCisJCSBtdGtfanBlZ19l bmNfaHcubw0KIG9iai0kKENPTkZJR19WSURFT19NRURJQVRFS19KUEVHKSArPSBtdGtfanBlZy5v DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19j b3JlLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0K aW5kZXggMjliOGI4MmM2MDZjLi5kN2VmNjk5MjA1MzAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0KKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCkBAIC0zLDYgKzMsNyBAQA0KICAq IENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUg VHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNrIENoYW5n IDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmpp YW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+DQpAQCAt MjMsMTAgKzI0LDU5IEBADQogI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+ DQogI2luY2x1ZGUgPHNvYy9tZWRpYXRlay9zbWkuaD4NCiANCisjaW5jbHVkZSAibXRrX2pwZWdf ZW5jX2h3LmgiDQogI2luY2x1ZGUgIm10a19qcGVnX2RlY19ody5oIg0KICNpbmNsdWRlICJtdGtf anBlZ19jb3JlLmgiDQogI2luY2x1ZGUgIm10a19qcGVnX2RlY19wYXJzZS5oIg0KIA0KK3N0YXRp YyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2VuY19mb3JtYXRzW10gPSB7DQorCXsNCisJ CS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX0pQRUcsDQorCQkuY29scGxhbmVzCT0gMSwNCisJCS5m bGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19FTkNfQ0FQVFVSRSwNCisJfSwNCisJew0KKwkJLmZv dXJjYwkJPSBWNEwyX1BJWF9GTVRfTlYxMk0sDQorCQkuaHdfZm9ybWF0CT0gSlBFR19FTkNfWVVW X0ZPUk1BVF9OVjEyLA0KKwkJLmhfc2FtcGxlCT0gezQsIDR9LA0KKwkJLnZfc2FtcGxlCT0gezQs IDJ9LA0KKwkJLmNvbHBsYW5lcwk9IDIsDQorCQkuaF9hbGlnbgk9IDQsDQorCQkudl9hbGlnbgk9 IDQsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCwNCisJfSwNCisJ ew0KKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfTlYyMU0sDQorCQkuaHdfZm9ybWF0CT0gSkVQ R19FTkNfWVVWX0ZPUk1BVF9OVjIxLA0KKwkJLmhfc2FtcGxlCT0gezQsIDR9LA0KKwkJLnZfc2Ft cGxlCT0gezQsIDJ9LA0KKwkJLmNvbHBsYW5lcwk9IDIsDQorCQkuaF9hbGlnbgk9IDQsDQorCQku dl9hbGlnbgk9IDQsDQorCQkuZmxhZ3MJCT0gTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCwN CisJfSwNCisJew0KKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCisJCS5od19mb3Jt YXQJPSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYsDQorCQkuaF9zYW1wbGUJPSB7OH0sDQorCQku dl9zYW1wbGUJPSB7NH0sDQorCQkuY29scGxhbmVzCT0gMSwNCisJCS5oX2FsaWduCT0gNSwNCisJ CS52X2FsaWduCT0gMywNCisJCS5mbGFncwkJPSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVU LA0KKwl9LA0KKwl7DQorCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVllVLA0KKwkJLmh3X2Zv cm1hdAk9IEpQRUdfRU5DX1lVVl9GT1JNQVRfWVZZVSwNCisJCS5oX3NhbXBsZQk9IHs4fSwNCisJ CS52X3NhbXBsZQk9IHs0fSwNCisJCS5jb2xwbGFuZXMJPSAxLA0KKwkJLmhfYWxpZ24JPSA1LA0K KwkJLnZfYWxpZ24JPSAzLA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQ VVQsDQorCX0sDQorfTsNCisNCiBzdGF0aWMgc3RydWN0IG10a19qcGVnX2ZtdCBtdGtfanBlZ19k ZWNfZm9ybWF0c1tdID0gew0KIAl7DQogCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9KUEVHLA0K QEAgLTUzLDYgKzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2Rl Y19mb3JtYXRzW10gPSB7DQogCX0sDQogfTsNCiANCisjZGVmaW5lIE1US19KUEVHX0VOQ19OVU1f Rk9STUFUUyBBUlJBWV9TSVpFKG10a19qcGVnX2VuY19mb3JtYXRzKQ0KICNkZWZpbmUgTVRLX0pQ RUdfREVDX05VTV9GT1JNQVRTIEFSUkFZX1NJWkUobXRrX2pwZWdfZGVjX2Zvcm1hdHMpDQogDQog c3RydWN0IG10a19qcGVnX3NyY19idWYgew0KQEAgLTY0LDYgKzExNSwxMSBAQCBzdHJ1Y3QgbXRr X2pwZWdfc3JjX2J1ZiB7DQogc3RhdGljIGludCBkZWJ1ZzsNCiBtb2R1bGVfcGFyYW0oZGVidWcs IGludCwgMDY0NCk7DQogDQorc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHJs X3RvX2N0eChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KK3sNCisJcmV0dXJuIGNvbnRhaW5lcl9v ZihjdHJsLT5oYW5kbGVyLCBzdHJ1Y3QgbXRrX2pwZWdfY3R4LCBjdHJsX2hkbCk7DQorfQ0KKw0K IHN0YXRpYyBpbmxpbmUgc3RydWN0IG10a19qcGVnX2N0eCAqbXRrX2pwZWdfZmhfdG9fY3R4KHN0 cnVjdCB2NGwyX2ZoICpmaCkNCiB7DQogCXJldHVybiBjb250YWluZXJfb2YoZmgsIHN0cnVjdCBt dGtfanBlZ19jdHgsIGZoKTsNCkBAIC03NSw2ICsxMzEsMTkgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgbXRrX2pwZWdfc3JjX2J1ZiAqbXRrX2pwZWdfdmIyX3RvX3NyY2J1ZigNCiAJcmV0dXJuIGNv bnRhaW5lcl9vZih0b192YjJfdjRsMl9idWZmZXIodmIpLCBzdHJ1Y3QgbXRrX2pwZWdfc3JjX2J1 ZiwgYik7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3F1ZXJ5Y2FwKHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCQkgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAqY2Fw KQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IHZpZGVvX2RydmRhdGEoZmlsZSk7 DQorDQorCXN0cnNjcHkoY2FwLT5kcml2ZXIsIE1US19KUEVHX05BTUUsIHNpemVvZihjYXAtPmRy aXZlcikpOw0KKwlzdHJzY3B5KGNhcC0+Y2FyZCwgTVRLX0pQRUdfTkFNRSAiIGVuY29kZXIiLCBz aXplb2YoY2FwLT5jYXJkKSk7DQorCXNucHJpbnRmKGNhcC0+YnVzX2luZm8sIHNpemVvZihjYXAt PmJ1c19pbmZvKSwgInBsYXRmb3JtOiVzIiwNCisJCSBkZXZfbmFtZShqcGVnLT5kZXYpKTsNCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3F1ZXJ5Y2FwKHN0 cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkgc3RydWN0IHY0bDJfY2FwYWJpbGl0 eSAqY2FwKQ0KIHsNCkBAIC04OCw2ICsxNTcsNTQgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNf cXVlcnljYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXJldHVybiAwOw0KIH0N CiANCitzdGF0aWMgaW50IHZpZGlvY19qcGVnX2VuY19zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAq Y3RybCkNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IGN0cmxfdG9fY3R4KGN0cmwp Ow0KKw0KKwlzd2l0Y2ggKGN0cmwtPmlkKSB7DQorCWNhc2UgVjRMMl9DSURfSlBFR19SRVNUQVJU X0lOVEVSVkFMOg0KKwkJY3R4LT5yZXN0YXJ0X2ludGVydmFsID0gY3RybC0+dmFsOw0KKwkJYnJl YWs7DQorCWNhc2UgVjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZOg0KKwkJY3R4LT5l bmNfcXVhbGl0eSA9IGN0cmwtPnZhbDsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lEX0pQRUdf QUNUSVZFX01BUktFUjoNCisJCWN0eC0+ZW5hYmxlX2V4aWYgPSBjdHJsLT52YWwgJiBWNEwyX0pQ RUdfQUNUSVZFX01BUktFUl9BUFAxID8NCisJCQkJICAgdHJ1ZSA6IGZhbHNlOw0KKwkJYnJlYWs7 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9j dHJsX29wcyBtdGtfanBlZ19lbmNfY3RybF9vcHMgPSB7DQorCS5zX2N0cmwgPSB2aWRpb2NfanBl Z19lbmNfc19jdHJsLA0KK307DQorDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfY3RybHNfc2V0 dXAoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KK3sNCisJY29uc3Qgc3RydWN0IHY0bDJfY3Ry bF9vcHMgKm9wcyA9ICZtdGtfanBlZ19lbmNfY3RybF9vcHM7DQorCXN0cnVjdCB2NGwyX2N0cmxf aGFuZGxlciAqaGFuZGxlciA9ICZjdHgtPmN0cmxfaGRsOw0KKw0KKwl2NGwyX2N0cmxfaGFuZGxl cl9pbml0KGhhbmRsZXIsIDMpOw0KKw0KKwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVyLCBvcHMs IFY0TDJfQ0lEX0pQRUdfUkVTVEFSVF9JTlRFUlZBTCwgMCwgMTAwLA0KKwkJCSAgMSwgMCk7DQor CXY0bDJfY3RybF9uZXdfc3RkKGhhbmRsZXIsIG9wcywgVjRMMl9DSURfSlBFR19DT01QUkVTU0lP Tl9RVUFMSVRZLCA0OCwNCisJCQkgIDEwMCwgMSwgOTApOw0KKwl2NGwyX2N0cmxfbmV3X3N0ZCho YW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktFUiwgMCwNCisJCQkgIFY0TDJf SlBFR19BQ1RJVkVfTUFSS0VSX0FQUDEsIDAsIDApOw0KKw0KKwlpZiAoaGFuZGxlci0+ZXJyb3Ip IHsNCisJCXY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmN0eC0+Y3RybF9oZGwpOw0KKwkJcmV0dXJu IGhhbmRsZXItPmVycm9yOw0KKwl9DQorDQorCXY0bDJfY3RybF9oYW5kbGVyX3NldHVwKCZjdHgt PmN0cmxfaGRsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX2pwZWdf ZW51bV9mbXQoc3RydWN0IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZm9ybWF0cywgaW50IG4sDQog CQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmLCB1MzIgdHlwZSkNCiB7DQpAQCAtMTA5LDYg KzIyNiwxNCBAQCBzdGF0aWMgaW50IG10a19qcGVnX2VudW1fZm10KHN0cnVjdCBtdGtfanBlZ19m bXQgKm10a19qcGVnX2Zvcm1hdHMsIGludCBuLA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3RhdGlj IGludCBtdGtfanBlZ19lbmNfZW51bV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqcHJpdiwNCisJCQkJCSBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KK3sNCisJcmV0dXJuIG10 a19qcGVnX2VudW1fZm10KG10a19qcGVnX2VuY19mb3JtYXRzLA0KKwkJCQkgTVRLX0pQRUdfRU5D X05VTV9GT1JNQVRTLCBmLA0KKwkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRVUkUpOw0K K30NCisNCiBzdGF0aWMgaW50IG10a19qcGVnX2RlY19lbnVtX2ZtdF92aWRfY2FwKHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkJIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpDQog ew0KQEAgLTExNyw2ICsyNDIsMTQgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfZW51bV9mbXRf dmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCQkJIE1US19KUEVHX0ZN VF9GTEFHX0RFQ19DQVBUVVJFKTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfZW51 bV9mbXRfdmlkX291dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJCSBzdHJ1 Y3QgdjRsMl9mbXRkZXNjICpmKQ0KK3sNCisJcmV0dXJuIG10a19qcGVnX2VudW1fZm10KG10a19q cGVnX2VuY19mb3JtYXRzLA0KKwkJCQkgTVRLX0pQRUdfRU5DX05VTV9GT1JNQVRTLCBmLA0KKwkJ CQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCk7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRr X2pwZWdfZGVjX2VudW1fZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYs DQogCQkJCQkgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikNCiB7DQpAQCAtMTMyLDkzICsyNjUsNjYg QEAgbXRrX2pwZWdfZ2V0X3FfZGF0YShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsIGVudW0gdjRs Ml9idWZfdHlwZSB0eXBlKQ0KIAlyZXR1cm4gJmN0eC0+Y2FwX3E7DQogfQ0KIA0KLXN0YXRpYyBz dHJ1Y3QgbXRrX2pwZWdfZm10ICptdGtfanBlZ19maW5kX2Zvcm1hdChzdHJ1Y3QgbXRrX2pwZWdf Y3R4ICpjdHgsDQotCQkJCQkJIHUzMiBwaXhlbGZvcm1hdCwNCitzdGF0aWMgc3RydWN0IG10a19q cGVnX2ZtdCAqbXRrX2pwZWdfZmluZF9mb3JtYXQodTMyIHBpeGVsZm9ybWF0LA0KIAkJCQkJCSB1 bnNpZ25lZCBpbnQgZm10X3R5cGUpDQogew0KLQl1bnNpZ25lZCBpbnQgaywgZm10X2ZsYWc7DQor CXVuc2lnbmVkIGludCBrOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQ7DQogDQotCWZtdF9m bGFnID0gKGZtdF90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkgPw0KLQkJICAgTVRL X0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVCA6DQotCQkgICBNVEtfSlBFR19GTVRfRkxBR19ERUNf Q0FQVFVSRTsNCisJZm9yIChrID0gMDsgayA8IE1US19KUEVHX0VOQ19OVU1fRk9STUFUUzsgaysr KSB7DQorCQlmbXQgPSAmbXRrX2pwZWdfZW5jX2Zvcm1hdHNba107DQorDQorCQlpZiAoZm10LT5m b3VyY2MgPT0gcGl4ZWxmb3JtYXQgJiYgZm10LT5mbGFncyAmIGZtdF90eXBlKQ0KKwkJCXJldHVy biBmbXQ7DQorCX0NCiANCiAJZm9yIChrID0gMDsgayA8IE1US19KUEVHX0RFQ19OVU1fRk9STUFU UzsgaysrKSB7DQotCQlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQgPSAmbXRrX2pwZWdfZGVjX2Zv cm1hdHNba107DQorCQlmbXQgPSAmbXRrX2pwZWdfZGVjX2Zvcm1hdHNba107DQogDQotCQlpZiAo Zm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQgJiYgZm10LT5mbGFncyAmIGZtdF9mbGFnKQ0KKwkJ aWYgKGZtdC0+Zm91cmNjID09IHBpeGVsZm9ybWF0ICYmIGZtdC0+ZmxhZ3MgJiBmbXRfdHlwZSkN CiAJCQlyZXR1cm4gZm10Ow0KIAl9DQogDQogCXJldHVybiBOVUxMOw0KIH0NCiANCi1zdGF0aWMg dm9pZCBtdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgs DQotCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQotew0KLQlzdHJ1Y3QgdjRsMl9w aXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZtdC5waXhfbXA7DQotCXN0cnVjdCBtdGtf anBlZ19xX2RhdGEgKnFfZGF0YTsNCi0JaW50IGk7DQotDQotCXFfZGF0YSA9IG10a19qcGVnX2dl dF9xX2RhdGEoY3R4LCBmLT50eXBlKTsNCi0NCi0JcGl4X21wLT53aWR0aCA9IHFfZGF0YS0+dzsN Ci0JcGl4X21wLT5oZWlnaHQgPSBxX2RhdGEtPmg7DQotCXBpeF9tcC0+cGl4ZWxmb3JtYXQgPSBx X2RhdGEtPmZtdC0+Zm91cmNjOw0KLQlwaXhfbXAtPm51bV9wbGFuZXMgPSBxX2RhdGEtPmZtdC0+ Y29scGxhbmVzOw0KLQ0KLQlmb3IgKGkgPSAwOyBpIDwgcGl4X21wLT5udW1fcGxhbmVzOyBpKysp IHsNCi0JCXBpeF9tcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSA9IHFfZGF0YS0+Ynl0ZXNw ZXJsaW5lW2ldOw0KLQkJcGl4X21wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0gcV9kYXRhLT5z aXplaW1hZ2VbaV07DQotCX0NCi19DQotDQotc3RhdGljIGludCBtdGtfanBlZ190cnlfZm10X21w bGFuZShzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsDQotCQkJCSAgIHN0cnVjdCBtdGtfanBlZ19mbXQg KmZtdCwNCi0JCQkJICAgc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBpbnQgcV90eXBlKQ0KK3N0 YXRpYyBpbnQgdmlkaW9jX3RyeV9mbXQoc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3QgbXRr X2pwZWdfZm10ICpmbXQpDQogew0KIAlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4 X21wID0gJmYtPmZtdC5waXhfbXA7DQogCWludCBpOw0KIA0KIAlwaXhfbXAtPmZpZWxkID0gVjRM Ml9GSUVMRF9OT05FOw0KLQ0KLQlpZiAoY3R4LT5zdGF0ZSAhPSBNVEtfSlBFR19JTklUKSB7DQot CQltdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShjdHgsIGYpOw0KLQkJcmV0dXJuIDA7DQotCX0N Ci0NCiAJcGl4X21wLT5udW1fcGxhbmVzID0gZm10LT5jb2xwbGFuZXM7DQogCXBpeF9tcC0+cGl4 ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsNCiANCi0JaWYgKHFfdHlwZSA9PSBNVEtfSlBFR19GTVRf VFlQRV9PVVRQVVQpIHsNCi0JCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9mb3JtYXQgKnBmbXQgPSAm cGl4X21wLT5wbGFuZV9mbXRbMF07DQotDQorCWlmIChmbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9G TVRfSlBFRykgew0KIAkJcGl4X21wLT5oZWlnaHQgPSBjbGFtcChwaXhfbXAtPmhlaWdodCwgTVRL X0pQRUdfTUlOX0hFSUdIVCwNCiAJCQkJICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KIAkJ cGl4X21wLT53aWR0aCA9IGNsYW1wKHBpeF9tcC0+d2lkdGgsIE1US19KUEVHX01JTl9XSURUSCwN CiAJCQkJICAgICAgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCi0NCi0JCXBmbXQtPmJ5dGVzcGVybGlu ZSA9IDA7DQotCQkvKiBTb3VyY2Ugc2l6ZSBtdXN0IGJlIGFsaWduZWQgdG8gMTI4ICovDQotCQlw Zm10LT5zaXplaW1hZ2UgPSByb3VuZF91cChwZm10LT5zaXplaW1hZ2UsIDEyOCk7DQotCQlpZiAo cGZtdC0+c2l6ZWltYWdlID09IDApDQotCQkJcGZtdC0+c2l6ZWltYWdlID0gTVRLX0pQRUdfREVG QVVMVF9TSVpFSU1BR0U7DQotCQlyZXR1cm4gMDsNCisJCXBpeF9tcC0+cGxhbmVfZm10WzBdLmJ5 dGVzcGVybGluZSA9IDA7DQorCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UgPQ0KKwkJ CQlyb3VuZF91cChwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UsIDEyOCk7DQorCQlpZiAo cGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID09IDApDQorCQkJcGl4X21wLT5wbGFuZV9m bXRbMF0uc2l6ZWltYWdlID0NCisJCQkJTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7DQorCX0g ZWxzZSB7DQorCQlwaXhfbXAtPmhlaWdodCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9tcC0+aGVpZ2h0 LCBmbXQtPnZfYWxpZ24pLA0KKwkJCQkgICAgICAgTVRLX0pQRUdfTUlOX0hFSUdIVCwNCisJCQkJ ICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKwkJcGl4X21wLT53aWR0aCA9IGNsYW1wKHJv dW5kX3VwKHBpeF9tcC0+d2lkdGgsIGZtdC0+aF9hbGlnbiksDQorCQkJCSAgICAgIE1US19KUEVH X01JTl9XSURUSCwgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCisJCWZvciAoaSA9IDA7IGkgPCBwaXhf bXAtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9mb3JtYXQg KnBmbXQgPQ0KKwkJCQkJCQkmcGl4X21wLT5wbGFuZV9mbXRbaV07DQorCQkJdTMyIHN0cmlkZSA9 IHBpeF9tcC0+d2lkdGggKiBmbXQtPmhfc2FtcGxlW2ldIC8gNDsNCisJCQl1MzIgaCA9IHBpeF9t cC0+aGVpZ2h0ICogZm10LT52X3NhbXBsZVtpXSAvIDQ7DQorDQorCQkJcGZtdC0+Ynl0ZXNwZXJs aW5lID0gc3RyaWRlOw0KKwkJCXBmbXQtPnNpemVpbWFnZSA9IHN0cmlkZSAqIGg7DQorCQl9DQog CX0NCiANCi0JLyogdHlwZSBpcyBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFICovDQotCXBpeF9t cC0+aGVpZ2h0ID0gY2xhbXAocm91bmRfdXAocGl4X21wLT5oZWlnaHQsIGZtdC0+dl9hbGlnbiks DQotCQkJICAgICAgIE1US19KUEVHX01JTl9IRUlHSFQsIE1US19KUEVHX01BWF9IRUlHSFQpOw0K LQlwaXhfbXAtPndpZHRoID0gY2xhbXAocm91bmRfdXAocGl4X21wLT53aWR0aCwgZm10LT5oX2Fs aWduKSwNCi0JCQkgICAgICBNVEtfSlBFR19NSU5fV0lEVEgsIE1US19KUEVHX01BWF9XSURUSCk7 DQotDQotCWZvciAoaSA9IDA7IGkgPCBmbXQtPmNvbHBsYW5lczsgaSsrKSB7DQotCQlzdHJ1Y3Qg djRsMl9wbGFuZV9waXhfZm9ybWF0ICpwZm10ID0gJnBpeF9tcC0+cGxhbmVfZm10W2ldOw0KLQkJ dTMyIHN0cmlkZSA9IHBpeF9tcC0+d2lkdGggKiBmbXQtPmhfc2FtcGxlW2ldIC8gNDsNCi0JCXUz MiBoID0gcGl4X21wLT5oZWlnaHQgKiBmbXQtPnZfc2FtcGxlW2ldIC8gNDsNCi0NCi0JCXBmbXQt PmJ5dGVzcGVybGluZSA9IHN0cmlkZTsNCi0JCXBmbXQtPnNpemVpbWFnZSA9IHN0cmlkZSAqIGg7 DQotCX0NCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTI3MSwxNCArMzc3LDM1IEBAIHN0YXRpYyBp bnQgbXRrX2pwZWdfZ19mbXRfdmlkX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJp diwNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3RyeV9mbXRf dmlkX2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQorCQkJCQkgICAg ICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4 ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQ7 DQorDQorCWZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGYtPmZtdC5waXhfbXAucGl4ZWxmb3Jt YXQsDQorCQkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFKTsNCisJaWYgKCFmbXQp DQorCQlmbXQgPSBjdHgtPmNhcF9xLmZtdDsNCisNCisJdjRsMl9kYmcoMiwgZGVidWcsICZjdHgt PmpwZWctPnY0bDJfZGV2LCAiKCVkKSB0cnlfZm10OiVjJWMlYyVjXG4iLA0KKwkJIGYtPnR5cGUs DQorCQkgKGZtdC0+Zm91cmNjICYgMHhmZiksDQorCQkgKGZtdC0+Zm91cmNjID4+ICA4ICYgMHhm ZiksDQorCQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQorCQkgKGZtdC0+Zm91cmNjID4+ IDI0ICYgMHhmZikpOw0KKw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10KTsNCit9DQor DQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfdHJ5X2ZtdF92aWRfY2FwX21wbGFuZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQg KmYpDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgo cHJpdik7DQogCXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdDsNCiANCi0JZm10ID0gbXRrX2pwZWdf ZmluZF9mb3JtYXQoY3R4LCBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0LA0KLQkJCQkgICBNVEtf SlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJZm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoZi0+ Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCisJCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NB UFRVUkUpOw0KIAlpZiAoIWZtdCkNCiAJCWZtdCA9IGN0eC0+Y2FwX3EuZm10Ow0KIA0KQEAgLTI4 OSw3ICs0MTYsMzMgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfdHJ5X2ZtdF92aWRfY2FwX21w bGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCSAoZm10LT5mb3VyY2MgPj4g MTYgJiAweGZmKSwNCiAJCSAoZm10LT5mb3VyY2MgPj4gMjQgJiAweGZmKSk7DQogDQotCXJldHVy biBtdGtfanBlZ190cnlfZm10X21wbGFuZShmLCBmbXQsIGN0eCwgTVRLX0pQRUdfRk1UX1RZUEVf Q0FQVFVSRSk7DQorCWlmIChjdHgtPnN0YXRlICE9IE1US19KUEVHX0lOSVQpIHsNCisJCW10a19q cGVnX2dfZm10X3ZpZF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQorCQlyZXR1cm4gMDsNCisJfQ0K Kw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10KTsNCit9DQorDQorc3RhdGljIGludCBt dGtfanBlZ19lbmNfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqcHJpdiwNCisJCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQorew0KKwlzdHJ1 Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7DQorCXN0cnVj dCBtdGtfanBlZ19mbXQgKmZtdDsNCisNCisJZm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoZi0+ Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCisJCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09V VFBVVCk7DQorCWlmICghZm10KQ0KKwkJZm10ID0gY3R4LT5vdXRfcS5mbXQ7DQorDQorCXY0bDJf ZGJnKDIsIGRlYnVnLCAmY3R4LT5qcGVnLT52NGwyX2RldiwgIiglZCkgdHJ5X2ZtdDolYyVjJWMl Y1xuIiwNCisJCSBmLT50eXBlLA0KKwkJIChmbXQtPmZvdXJjYyAmIDB4ZmYpLA0KKwkJIChmbXQt PmZvdXJjYyA+PiAgOCAmIDB4ZmYpLA0KKwkJIChmbXQtPmZvdXJjYyA+PiAxNiAmIDB4ZmYpLA0K KwkJIChmbXQtPmZvdXJjYyA+PiAyNCAmIDB4ZmYpKTsNCisNCisJcmV0dXJuIHZpZGlvY190cnlf Zm10KGYsIGZtdCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3RyeV9mbXRfdmlk X291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQpAQCAtMjk4LDggKzQ1 MSw4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9 IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCiAJc3RydWN0IG10a19qcGVnX2ZtdCAqZm10Ow0K IA0KLQlmbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIGYtPmZtdC5waXhfbXAucGl4ZWxm b3JtYXQsDQotCQkJCSAgIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWZtdCA9IG10a19q cGVnX2ZpbmRfZm9ybWF0KGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQsDQorCQkJCSAgIE1US19K UEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQpOw0KIAlpZiAoIWZtdCkNCiAJCWZtdCA9IGN0eC0+b3V0 X3EuZm10Ow0KIA0KQEAgLTMxMCwxNyArNDYzLDIxIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVj X3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQog CQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQogCQkgKGZtdC0+Zm91cmNjID4+IDI0ICYg MHhmZikpOw0KIA0KLQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoZiwgZm10LCBjdHgs IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWlmIChjdHgtPnN0YXRlICE9IE1US19KUEVH X0lOSVQpIHsNCisJCW10a19qcGVnX2dfZm10X3ZpZF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQor CQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10KTsNCiB9 DQogDQogc3RhdGljIGludCBtdGtfanBlZ19zX2ZtdF9tcGxhbmUoc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4LA0KLQkJCQkgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KKwkJCQkgc3RydWN0IHY0bDJf Zm9ybWF0ICpmLCB1bnNpZ25lZCBpbnQgZm10X3R5cGUpDQogew0KIAlzdHJ1Y3QgdmIyX3F1ZXVl ICp2cTsNCiAJc3RydWN0IG10a19qcGVnX3FfZGF0YSAqcV9kYXRhID0gTlVMTDsNCiAJc3RydWN0 IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQucGl4X21wOw0KIAlzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KLQl1bnNpZ25lZCBpbnQgZl90eXBl Ow0KIAlpbnQgaTsNCiANCiAJdnEgPSB2NGwyX20ybV9nZXRfdnEoY3R4LT5maC5tMm1fY3R4LCBm LT50eXBlKTsNCkBAIC0zMzQsMTIgKzQ5MSwxMSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10 X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCQlyZXR1cm4gLUVCVVNZOw0KIAl9 DQogDQotCWZfdHlwZSA9IFY0TDJfVFlQRV9JU19PVVRQVVQoZi0+dHlwZSkgPw0KLQkJCSBNVEtf SlBFR19GTVRfVFlQRV9PVVRQVVQgOiBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFOw0KLQ0KLQlx X2RhdGEtPmZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGl4X21wLT5waXhlbGZvcm1h dCwgZl90eXBlKTsNCisJcV9kYXRhLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChwaXhfbXAt PnBpeGVsZm9ybWF0LCBmbXRfdHlwZSk7DQogCXFfZGF0YS0+dyA9IHBpeF9tcC0+d2lkdGg7DQog CXFfZGF0YS0+aCA9IHBpeF9tcC0+aGVpZ2h0Ow0KKwlxX2RhdGEtPmNyb3BfcmVjdC53aWR0aCA9 IHBpeF9tcC0+d2lkdGg7DQorCXFfZGF0YS0+Y3JvcF9yZWN0LmhlaWdodCA9IHBpeF9tcC0+aGVp Z2h0Ow0KIAljdHgtPmNvbG9yc3BhY2UgPSBwaXhfbXAtPmNvbG9yc3BhY2U7DQogCWN0eC0+eWNi Y3JfZW5jID0gcGl4X21wLT55Y2Jjcl9lbmM7DQogCWN0eC0+eGZlcl9mdW5jID0gcGl4X21wLT54 ZmVyX2Z1bmM7DQpAQCAtMzY1LDYgKzUyMSwxOSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10 X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCXJldHVybiAwOw0KIH0NCiANCitz dGF0aWMgaW50IG10a19qcGVnX2VuY19zX2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJCSAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KK3sN CisJaW50IHJldDsNCisNCisJcmV0ID0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX291dF9tcGxh bmUoZmlsZSwgcHJpdiwgZik7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwlyZXR1 cm4gbXRrX2pwZWdfc19mbXRfbXBsYW5lKG10a19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZiwNCisJ CQkJICAgICBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUKTsNCit9DQorDQogc3RhdGljIGlu dCBtdGtfanBlZ19kZWNfc19mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKnByaXYsDQogCQkJCQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikNCiB7DQpAQCAtMzc0 LDcgKzU0MywyMSBAQCBzdGF0aWMgaW50IG10a19qcGVnX2RlY19zX2ZtdF92aWRfb3V0X21wbGFu ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJaWYgKHJldCkNCiAJCXJldHVybiBy ZXQ7DQogDQotCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUobXRrX2pwZWdfZmhfdG9fY3R4 KHByaXYpLCBmKTsNCisJcmV0dXJuIG10a19qcGVnX3NfZm10X21wbGFuZShtdGtfanBlZ19maF90 b19jdHgocHJpdiksIGYsDQorCQkJCSAgICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVCk7 DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3NfZm10X3ZpZF9jYXBfbXBsYW5lKHN0 cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3Jt YXQgKmYpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwlyZXQgPSBtdGtfanBlZ19lbmNfdHJ5X2ZtdF92 aWRfY2FwX21wbGFuZShmaWxlLCBwcml2LCBmKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7 DQorDQorCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUobXRrX2pwZWdfZmhfdG9fY3R4KHBy aXYpLCBmLA0KKwkJCQkgICAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFKTsNCiB9DQog DQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfc19mbXRfdmlkX2NhcF9tcGxhbmUoc3RydWN0IGZp bGUgKmZpbGUsIHZvaWQgKnByaXYsDQpAQCAtMzg2LDcgKzU2OSw4IEBAIHN0YXRpYyBpbnQgbXRr X2pwZWdfZGVjX3NfZm10X3ZpZF9jYXBfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpw cml2LA0KIAlpZiAocmV0KQ0KIAkJcmV0dXJuIHJldDsNCiANCi0JcmV0dXJuIG10a19qcGVnX3Nf Zm10X21wbGFuZShtdGtfanBlZ19maF90b19jdHgocHJpdiksIGYpOw0KKwlyZXR1cm4gbXRrX2pw ZWdfc19mbXRfbXBsYW5lKG10a19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZiwNCisJCQkJICAgICBN VEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQVFVSRSk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG10a19q cGVnX3F1ZXVlX3NyY19jaGdfZXZlbnQoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KQEAgLTQx MSw2ICs1OTUsMjkgQEAgc3RhdGljIGludCBtdGtfanBlZ19zdWJzY3JpYmVfZXZlbnQoc3RydWN0 IHY0bDJfZmggKmZoLA0KIAlyZXR1cm4gdjRsMl9jdHJsX3N1YnNjcmliZV9ldmVudChmaCwgc3Vi KTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfZ19zZWxlY3Rpb24oc3RydWN0IGZp bGUgKmZpbGUsIHZvaWQgKnByaXYsDQorCQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKnMp DQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJp dik7DQorDQorCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUKQ0KKwkJ cmV0dXJuIC1FSU5WQUw7DQorDQorCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQorCWNhc2UgVjRMMl9T RUxfVEdUX0NST1A6DQorCWNhc2UgVjRMMl9TRUxfVEdUX0NST1BfQk9VTkRTOg0KKwljYXNlIFY0 TDJfU0VMX1RHVF9DUk9QX0RFRkFVTFQ6DQorCQlzLT5yLndpZHRoID0gY3R4LT5vdXRfcS53Ow0K KwkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7DQorCQlzLT5yLmxlZnQgPSAwOw0KKwkJcy0+ ci50b3AgPSAwOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJ fQ0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfZ19zZWxlY3Rp b24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCSAgICBzdHJ1Y3QgdjRsMl9z ZWxlY3Rpb24gKnMpDQogew0KQEAgLTQ0MCw2ICs2NDcsMjkgQEAgc3RhdGljIGludCBtdGtfanBl Z19kZWNfZ19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXJldHVy biAwOw0KIH0NCiANCitzdGF0aWMgaW50IG10a19qcGVnX2VuY19zX3NlbGVjdGlvbihzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJICAgIHN0cnVjdCB2NGwyX3NlbGVjdGlvbiAq cykNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChw cml2KTsNCisNCisJaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQpDQor CQlyZXR1cm4gLUVJTlZBTDsNCisNCisJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJY2FzZSBWNEwy X1NFTF9UR1RfQ1JPUDoNCisJCXMtPnIubGVmdCA9IDA7DQorCQlzLT5yLnRvcCA9IDA7DQorCQlz LT5yLndpZHRoID0gbWluKHMtPnIud2lkdGgsIGN0eC0+b3V0X3Eudyk7DQorCQlzLT5yLmhlaWdo dCA9IG1pbihzLT5yLmhlaWdodCwgY3R4LT5vdXRfcS5oKTsNCisJCWN0eC0+b3V0X3EuY3JvcF9y ZWN0ID0gcy0+cjsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcmV0dXJuIC1FSU5WQUw7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3Nfc2Vs ZWN0aW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkgICAgc3RydWN0IHY0 bDJfc2VsZWN0aW9uICpzKQ0KIHsNCkBAIC00ODQsNiArNzE0LDMzIEBAIHN0YXRpYyBpbnQgbXRr X2pwZWdfcWJ1ZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwgc3RydWN0IHY0bDJfYnVm ZmVyICpidWYpDQogCXJldHVybiB2NGwyX20ybV9xYnVmKGZpbGUsIGZoLT5tMm1fY3R4LCBidWYp Ow0KIH0NCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIG10a19qcGVnX2Vu Y19pb2N0bF9vcHMgPSB7DQorCS52aWRpb2NfcXVlcnljYXAgICAgICAgICAgICAgICAgPSBtdGtf anBlZ19lbmNfcXVlcnljYXAsDQorCS52aWRpb2NfZW51bV9mbXRfdmlkX2NhcAk9IG10a19qcGVn X2VuY19lbnVtX2ZtdF92aWRfY2FwLA0KKwkudmlkaW9jX2VudW1fZm10X3ZpZF9vdXQJPSBtdGtf anBlZ19lbmNfZW51bV9mbXRfdmlkX291dCwNCisJLnZpZGlvY190cnlfZm10X3ZpZF9jYXBfbXBs YW5lCT0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX2NhcF9tcGxhbmUsDQorCS52aWRpb2NfdHJ5 X2ZtdF92aWRfb3V0X21wbGFuZQk9IG10a19qcGVnX2VuY190cnlfZm10X3ZpZF9vdXRfbXBsYW5l LA0KKwkudmlkaW9jX2dfZm10X3ZpZF9jYXBfbXBsYW5lICAgID0gbXRrX2pwZWdfZ19mbXRfdmlk X21wbGFuZSwNCisJLnZpZGlvY19nX2ZtdF92aWRfb3V0X21wbGFuZSAgICA9IG10a19qcGVnX2df Zm10X3ZpZF9tcGxhbmUsDQorCS52aWRpb2Nfc19mbXRfdmlkX2NhcF9tcGxhbmUgICAgPSBtdGtf anBlZ19lbmNfc19mbXRfdmlkX2NhcF9tcGxhbmUsDQorCS52aWRpb2Nfc19mbXRfdmlkX291dF9t cGxhbmUgICAgPSBtdGtfanBlZ19lbmNfc19mbXRfdmlkX291dF9tcGxhbmUsDQorCS52aWRpb2Nf cWJ1ZiAgICAgICAgICAgICAgICAgICAgPSBtdGtfanBlZ19xYnVmLA0KKwkudmlkaW9jX3N1YnNj cmliZV9ldmVudCAgICAgICAgID0gbXRrX2pwZWdfc3Vic2NyaWJlX2V2ZW50LA0KKwkudmlkaW9j X2dfc2VsZWN0aW9uCQk9IG10a19qcGVnX2VuY19nX3NlbGVjdGlvbiwNCisJLnZpZGlvY19zX3Nl bGVjdGlvbgkJPSBtdGtfanBlZ19lbmNfc19zZWxlY3Rpb24sDQorDQorCS52aWRpb2NfY3JlYXRl X2J1ZnMJCT0gdjRsMl9tMm1faW9jdGxfY3JlYXRlX2J1ZnMsDQorCS52aWRpb2NfcHJlcGFyZV9i dWYJCT0gdjRsMl9tMm1faW9jdGxfcHJlcGFyZV9idWYsDQorCS52aWRpb2NfcmVxYnVmcyAgICAg ICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9yZXFidWZzLA0KKwkudmlkaW9jX3F1ZXJ5YnVm ICAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfcXVlcnlidWYsDQorCS52aWRpb2NfZHFi dWYgICAgICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9kcWJ1ZiwNCisJLnZpZGlvY19l eHBidWYgICAgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX2V4cGJ1ZiwNCisJLnZpZGlv Y19zdHJlYW1vbiAgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9uLA0KKwku dmlkaW9jX3N0cmVhbW9mZiAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfc3RyZWFtb2Zm LA0KKw0KKwkudmlkaW9jX3Vuc3Vic2NyaWJlX2V2ZW50CT0gdjRsMl9ldmVudF91bnN1YnNjcmli ZSwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgbXRrX2pwZWdf ZGVjX2lvY3RsX29wcyA9IHsNCiAJLnZpZGlvY19xdWVyeWNhcCAgICAgICAgICAgICAgICA9IG10 a19qcGVnX2RlY19xdWVyeWNhcCwNCiAJLnZpZGlvY19lbnVtX2ZtdF92aWRfY2FwCT0gbXRrX2pw ZWdfZGVjX2VudW1fZm10X3ZpZF9jYXAsDQpAQCAtNTc1LDggKzgzMiw5IEBAIHN0YXRpYyBib29s IG10a19qcGVnX2NoZWNrX3Jlc29sdXRpb25fY2hhbmdlKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0 eCwNCiAJfQ0KIA0KIAlxX2RhdGEgPSAmY3R4LT5jYXBfcTsNCi0JaWYgKHFfZGF0YS0+Zm10ICE9 IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGFyYW0tPmRzdF9mb3VyY2MsDQotCQkJCQkJTVRL X0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSkpIHsNCisJaWYgKHFfZGF0YS0+Zm10ICE9DQorCSAgICBt dGtfanBlZ19maW5kX2Zvcm1hdChwYXJhbS0+ZHN0X2ZvdXJjYywNCisJCQkJIE1US19KUEVHX0ZN VF9GTEFHX0RFQ19DQVBUVVJFKSkgew0KIAkJdjRsMl9kYmcoMSwgZGVidWcsICZqcGVnLT52NGwy X2RldiwgImZvcm1hdCBjaGFuZ2VcbiIpOw0KIAkJcmV0dXJuIHRydWU7DQogCX0NCkBAIC01OTcs OSArODU1LDggQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X3F1ZXVlX2RhdGEoc3RydWN0IG10 a19qcGVnX2N0eCAqY3R4LA0KIAlxX2RhdGEgPSAmY3R4LT5jYXBfcTsNCiAJcV9kYXRhLT53ID0g cGFyYW0tPmRlY193Ow0KIAlxX2RhdGEtPmggPSBwYXJhbS0+ZGVjX2g7DQotCXFfZGF0YS0+Zm10 ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LA0KLQkJCQkJICAgcGFyYW0tPmRzdF9mb3VyY2Ms DQotCQkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJcV9kYXRhLT5mbXQgPSBt dGtfanBlZ19maW5kX2Zvcm1hdChwYXJhbS0+ZHN0X2ZvdXJjYywNCisJCQkJCSAgIE1US19KUEVH X0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsNCiANCiAJZm9yIChpID0gMDsgaSA8IHFfZGF0YS0+Zm10 LT5jb2xwbGFuZXM7IGkrKykgew0KIAkJcV9kYXRhLT5ieXRlc3BlcmxpbmVbaV0gPSBwYXJhbS0+ bWVtX3N0cmlkZVtpXTsNCkBAIC02MTYsNiArODczLDE3IEBAIHN0YXRpYyB2b2lkIG10a19qcGVn X3NldF9xdWV1ZV9kYXRhKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCSBwYXJhbS0+ZGVj X3csIHBhcmFtLT5kZWNfaCk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19idWZf cXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0eCAq Y3R4ID0gdmIyX2dldF9kcnZfcHJpdih2Yi0+dmIyX3F1ZXVlKTsNCisJc3RydWN0IG10a19qcGVn X2RldiAqanBlZyA9IGN0eC0+anBlZzsNCisNCisJdjRsMl9kYmcoMiwgZGVidWcsICZqcGVnLT52 NGwyX2RldiwgIiglZCkgYnVmX3EgaWQ9JWQsIHZiPSVwXG4iLA0KKwkJIHZiLT52YjJfcXVldWUt PnR5cGUsIHZiLT5pbmRleCwgdmIpOw0KKw0KKwl2NGwyX20ybV9idWZfcXVldWUoY3R4LT5maC5t Mm1fY3R4LCB0b192YjJfdjRsMl9idWZmZXIodmIpKTsNCit9DQorDQogc3RhdGljIHZvaWQgbXRr X2pwZWdfZGVjX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQogew0KIAlzdHJ1Y3Qg bXRrX2pwZWdfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOw0KQEAg LTY2NCw2ICs5MzIsMTUgQEAgc3RhdGljIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm10a19qcGVn X2J1Zl9yZW1vdmUoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KIAkJcmV0dXJuIHY0bDJfbTJt X2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10 a19qcGVnX2VuY19zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQ0KK3sNCisJc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsNCisJc3RydWN0IHZi Ml92NGwyX2J1ZmZlciAqdmI7DQorDQorCXdoaWxlICgodmIgPSBtdGtfanBlZ19idWZfcmVtb3Zl KGN0eCwgcS0+dHlwZSkpKQ0KKwkJdjRsMl9tMm1fYnVmX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVf RVJST1IpOw0KK30NCisNCiBzdGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfc3RvcF9zdHJlYW1pbmco c3RydWN0IHZiMl9xdWV1ZSAqcSkNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHZi Ml9nZXRfZHJ2X3ByaXYocSk7DQpAQCAtNjk5LDYgKzk3NiwxNSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHZiMl9vcHMgbXRrX2pwZWdfZGVjX3FvcHMgPSB7DQogCS5zdG9wX3N0cmVhbWluZyAgICAg PSBtdGtfanBlZ19kZWNfc3RvcF9zdHJlYW1pbmcsDQogfTsNCiANCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHZiMl9vcHMgbXRrX2pwZWdfZW5jX3FvcHMgPSB7DQorCS5xdWV1ZV9zZXR1cCAgICAgICAg PSBtdGtfanBlZ19xdWV1ZV9zZXR1cCwNCisJLmJ1Zl9wcmVwYXJlICAgICAgICA9IG10a19qcGVn X2J1Zl9wcmVwYXJlLA0KKwkuYnVmX3F1ZXVlICAgICAgICAgID0gbXRrX2pwZWdfZW5jX2J1Zl9x dWV1ZSwNCisJLndhaXRfcHJlcGFyZSAgICAgICA9IHZiMl9vcHNfd2FpdF9wcmVwYXJlLA0KKwku d2FpdF9maW5pc2ggICAgICAgID0gdmIyX29wc193YWl0X2ZpbmlzaCwNCisJLnN0b3Bfc3RyZWFt aW5nICAgICA9IG10a19qcGVnX2VuY19zdG9wX3N0cmVhbWluZywNCit9Ow0KKw0KIHN0YXRpYyB2 b2lkIG10a19qcGVnX3NldF9kZWNfc3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCQkJ IHN0cnVjdCB2YjJfYnVmZmVyICpzcmNfYnVmLA0KIAkJCQkgc3RydWN0IG10a19qcGVnX2JzICpi cykNCkBAIC03MzYsNiArMTAyMiw4NSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NldF9kZWNfZHN0 KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyB2 b2lkIG10a19qcGVnX3NldF9lbmNfZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgdm9pZCBf X2lvbWVtICpiYXNlLA0KKwkJCQkgc3RydWN0IHZiMl9idWZmZXIgKmRzdF9idWYsDQorCQkJCSBz dHJ1Y3QgbXRrX2pwZWdfZW5jX2JzICpicykNCit7DQorCWJzLT5kbWFfYWRkciA9IHZiMl9kbWFf Y29udGlnX3BsYW5lX2RtYV9hZGRyKGRzdF9idWYsIDApOw0KKwlicy0+ZG1hX2FkZHJfb2Zmc2V0 ID0gY3R4LT5lbmFibGVfZXhpZiA/IE1US19KUEVHX01BWF9FWElGX1NJWkUgOiAwOw0KKwlicy0+ ZG1hX2FkZHJfb2Zmc2V0bWFzayA9IGJzLT5kbWFfYWRkciAmIEpQRUdfRU5DX0RTVF9BRERSX09G RlNFVF9NQVNLOw0KKwlicy0+c2l6ZSA9IHZiMl9wbGFuZV9zaXplKGRzdF9idWYsIDApOw0KKw0K KwltdGtfanBlZ19lbmNfc2V0X2RzdF9hZGRyKGJhc2UsIGJzLT5kbWFfYWRkciwgYnMtPnNpemUs DQorCQkJCSAgYnMtPmRtYV9hZGRyX29mZnNldCwNCisJCQkJICBicy0+ZG1hX2FkZHJfb2Zmc2V0 bWFzayk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3NldF9lbmNfc3JjKHN0cnVjdCBt dGtfanBlZ19jdHggKmN0eCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkgc3RydWN0IHZiMl9i dWZmZXIgKnNyY19idWYpDQorew0KKwlpbnQgaTsNCisJZG1hX2FkZHJfdAlkbWFfYWRkcjsNCisN CisJbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZShiYXNlLCBjdHgtPm91dF9xLmNyb3BfcmVjdC53 aWR0aCwNCisJCQkJICBjdHgtPm91dF9xLmNyb3BfcmVjdC5oZWlnaHQpOw0KKwltdGtfanBlZ19l bmNfc2V0X2Jsa19udW0oYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJjYywNCisJCQkJIGN0eC0+ b3V0X3EuY3JvcF9yZWN0LndpZHRoLA0KKwkJCQkgY3R4LT5vdXRfcS5jcm9wX3JlY3QuaGVpZ2h0 KTsNCisJbXRrX2pwZWdfZW5jX3NldF9zdHJpZGUoYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJj YywgY3R4LT5vdXRfcS53LA0KKwkJCQljdHgtPm91dF9xLmgsIGN0eC0+b3V0X3EuYnl0ZXNwZXJs aW5lWzBdKTsNCisNCisJZm9yIChpID0gMDsgaSA8IHNyY19idWYtPm51bV9wbGFuZXM7IGkrKykg ew0KKwkJZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihzcmNfYnVmLCBp KSArDQorCQkJICAgc3JjX2J1Zi0+cGxhbmVzW2ldLmRhdGFfb2Zmc2V0Ow0KKwkJbXRrX2pwZWdf ZW5jX3NldF9zcmNfYWRkcihiYXNlLCBkbWFfYWRkciwgaSk7DQorCX0NCit9DQorDQorc3RhdGlj IHZvaWQgbXRrX2pwZWdfZW5jX2RldmljZV9ydW4odm9pZCAqcHJpdikNCit7DQorCXN0cnVjdCBt dGtfanBlZ19jdHggKmN0eCA9IHByaXY7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBj dHgtPmpwZWc7DQorCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOw0K KwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9FUlJPUjsN CisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJc3RydWN0IG10a19qcGVnX3NyY19idWYgKmpwZWdf c3JjX2J1ZjsNCisJc3RydWN0IG10a19qcGVnX2VuY19icyBlbmNfYnM7DQorCWludCByZXQ7DQor DQorCXNyY19idWYgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1fY3R4KTsNCisJ ZHN0X2J1ZiA9IHY0bDJfbTJtX25leHRfZHN0X2J1ZihjdHgtPmZoLm0ybV9jdHgpOw0KKwlqcGVn X3NyY19idWYgPSBtdGtfanBlZ192YjJfdG9fc3JjYnVmKCZzcmNfYnVmLT52YjJfYnVmKTsNCisN CisJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhqcGVnLT5kZXYpOw0KKwlpZiAocmV0IDwgMCkN CisJCWdvdG8gZW5jX2VuZDsNCisNCisJc3Bpbl9sb2NrX2lycXNhdmUoJmpwZWctPmh3X2xvY2ss IGZsYWdzKTsNCisNCisJLyoNCisJICogUmVzZXR0aW5nIHRoZSBoYXJkd2FyZSBldmVyeSBmcmFt ZSBpcyB0byBlbnN1cmUgdGhhdCBhbGwgdGhlDQorCSAqIHJlZ2lzdGVycyBhcmUgY2xlYXJlZC4g VGhpcyBpcyBhIGhhcmR3YXJlIHJlcXVpcmVtZW50Lg0KKwkgKi8NCisJbXRrX2pwZWdfZW5jX3Jl c2V0KGpwZWctPnJlZ19iYXNlKTsNCisNCisJbXRrX2pwZWdfc2V0X2VuY19kc3QoY3R4LCBqcGVn LT5yZWdfYmFzZSwgJmRzdF9idWYtPnZiMl9idWYsICZlbmNfYnMpOw0KKwltdGtfanBlZ19zZXRf ZW5jX3NyYyhjdHgsIGpwZWctPnJlZ19iYXNlLCAmc3JjX2J1Zi0+dmIyX2J1Zik7DQorCW10a19q cGVnX2VuY19zZXRfY29uZmlnKGpwZWctPnJlZ19iYXNlLCBjdHgtPm91dF9xLmZtdC0+aHdfZm9y bWF0LA0KKwkJCQljdHgtPmVuYWJsZV9leGlmLCBjdHgtPmVuY19xdWFsaXR5LA0KKwkJCQljdHgt PnJlc3RhcnRfaW50ZXJ2YWwpOw0KKwltdGtfanBlZ19lbmNfc3RhcnQoanBlZy0+cmVnX2Jhc2Up Ow0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZqcGVnLT5od19sb2NrLCBmbGFncyk7DQorCXJl dHVybjsNCisNCitlbmNfZW5kOg0KKwl2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0y bV9jdHgpOw0KKwl2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2 NGwyX20ybV9idWZfZG9uZShzcmNfYnVmLCBidWZfc3RhdGUpOw0KKwl2NGwyX20ybV9idWZfZG9u ZShkc3RfYnVmLCBidWZfc3RhdGUpOw0KKwl2NGwyX20ybV9qb2JfZmluaXNoKGpwZWctPm0ybV9k ZXYsIGN0eC0+ZmgubTJtX2N0eCk7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIG10a19qcGVnX2RlY19k ZXZpY2VfcnVuKHZvaWQgKnByaXYpDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBw cml2Ow0KQEAgLTc4NSw2ICsxMTUwLDExIEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2RlY19kZXZp Y2VfcnVuKHZvaWQgKnByaXYpDQogCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2Rldiwg Y3R4LT5maC5tMm1fY3R4KTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfam9iX3Jl YWR5KHZvaWQgKnByaXYpDQorew0KKwkJcmV0dXJuIDE7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRr X2pwZWdfZGVjX2pvYl9yZWFkeSh2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4ID0gcHJpdjsNCkBAIC03OTIsNiArMTE2MiwxMSBAQCBzdGF0aWMgaW50IG10a19qcGVn X2RlY19qb2JfcmVhZHkodm9pZCAqcHJpdikNCiAJcmV0dXJuIChjdHgtPnN0YXRlID09IE1US19K UEVHX1JVTk5JTkcpID8gMSA6IDA7DQogfQ0KIA0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9t Mm1fb3BzIG10a19qcGVnX2VuY19tMm1fb3BzID0gew0KKwkuZGV2aWNlX3J1biA9IG10a19qcGVn X2VuY19kZXZpY2VfcnVuLA0KKwkuam9iX3JlYWR5ICA9IG10a19qcGVnX2VuY19qb2JfcmVhZHks DQorfTsNCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfbTJtX29wcyBtdGtfanBlZ19kZWNf bTJtX29wcyA9IHsNCiAJLmRldmljZV9ydW4gPSBtdGtfanBlZ19kZWNfZGV2aWNlX3J1biwNCiAJ LmpvYl9yZWFkeSAgPSBtdGtfanBlZ19kZWNfam9iX3JlYWR5LA0KQEAgLTgzMCwyNCArMTIwNSwx MDkgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfcXVldWVfaW5pdCh2b2lkICpwcml2LCBzdHJ1 Y3QgdmIyX3F1ZXVlICpzcmNfdnEsDQogCXJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRpYyB2b2lk IG10a19qcGVnX2Nsa19vbihzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KK3N0YXRpYyBpbnQg bXRrX2pwZWdfZW5jX3F1ZXVlX2luaXQodm9pZCAqcHJpdiwgc3RydWN0IHZiMl9xdWV1ZSAqc3Jj X3ZxLA0KKwkJCQkgICBzdHJ1Y3QgdmIyX3F1ZXVlICpkc3RfdnEpDQogew0KKwlzdHJ1Y3QgbXRr X2pwZWdfY3R4ICpjdHggPSBwcml2Ow0KIAlpbnQgcmV0Ow0KIA0KKwlzcmNfdnEtPnR5cGUgPSBW NEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU7DQorCXNyY192cS0+aW9fbW9kZXMgPSBW QjJfRE1BQlVGIHwgVkIyX01NQVA7DQorCXNyY192cS0+ZHJ2X3ByaXYgPSBjdHg7DQorCXNyY192 cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBtdGtfanBlZ19zcmNfYnVmKTsNCisJ c3JjX3ZxLT5vcHMgPSAmbXRrX2pwZWdfZW5jX3FvcHM7DQorCXNyY192cS0+bWVtX29wcyA9ICZ2 YjJfZG1hX2NvbnRpZ19tZW1vcHM7DQorCXNyY192cS0+dGltZXN0YW1wX2ZsYWdzID0gVjRMMl9C VUZfRkxBR19USU1FU1RBTVBfQ09QWTsNCisJc3JjX3ZxLT5sb2NrID0gJmN0eC0+anBlZy0+bG9j azsNCisJc3JjX3ZxLT5kZXYgPSBjdHgtPmpwZWctPmRldjsNCisJcmV0ID0gdmIyX3F1ZXVlX2lu aXQoc3JjX3ZxKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCWRzdF92cS0+dHlw ZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkU7DQorCWRzdF92cS0+aW9fbW9k ZXMgPSBWQjJfRE1BQlVGIHwgVkIyX01NQVA7DQorCWRzdF92cS0+ZHJ2X3ByaXYgPSBjdHg7DQor CWRzdF92cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX20ybV9idWZmZXIp Ow0KKwlkc3RfdnEtPm9wcyA9ICZtdGtfanBlZ19lbmNfcW9wczsNCisJZHN0X3ZxLT5tZW1fb3Bz ID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsNCisJZHN0X3ZxLT50aW1lc3RhbXBfZmxhZ3MgPSBW NEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9DT1BZOw0KKwlkc3RfdnEtPmxvY2sgPSAmY3R4LT5qcGVn LT5sb2NrOw0KKwlkc3RfdnEtPmRldiA9IGN0eC0+anBlZy0+ZGV2Ow0KKwlyZXQgPSB2YjJfcXVl dWVfaW5pdChkc3RfdnEpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgdm9pZCBt dGtfanBlZ19jbGtfb24oc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCit7DQorCWludCByZXQs IGk7DQorDQogCXJldCA9IG10a19zbWlfbGFyYl9nZXQoanBlZy0+bGFyYik7DQogCWlmIChyZXQp DQogCQlkZXZfZXJyKGpwZWctPmRldiwgIm10a19zbWlfbGFyYl9nZXQgbGFyYnZkZWMgZmFpbCAl ZFxuIiwgcmV0KTsNCi0JY2xrX3ByZXBhcmVfZW5hYmxlKGpwZWctPmNsa19qZGVjX3NtaSk7DQot CWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRlYyk7DQorDQorCWZvciAoaSA9IDA7IGkg PCBqcGVnLT52YXJpYW50LT5udW1fY2xvY2tzOyBpKyspIHsNCisJCXJldCA9IGNsa19wcmVwYXJl X2VuYWJsZShqcGVnLT5jbG9ja3NbaV0pOw0KKwkJaWYgKHJldCkgew0KKwkJCXdoaWxlICgtLWkg Pj0gMCkNCisJCQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsb2Nrc1tpXSk7DQorCQl9 DQorCX0NCiB9DQogDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xrX29mZihzdHJ1Y3QgbXRrX2pw ZWdfZGV2ICpqcGVnKQ0KIHsNCi0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qZGVj KTsNCi0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qZGVjX3NtaSk7DQorCWludCBp Ow0KKw0KKwlmb3IgKGkgPSBqcGVnLT52YXJpYW50LT5udW1fY2xvY2tzIC0gMTsgaSA+PSAwOyBp LS0pDQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xvY2tzW2ldKTsNCiAJbXRrX3Nt aV9sYXJiX3B1dChqcGVnLT5sYXJiKTsNCiB9DQogDQorc3RhdGljIGlycXJldHVybl90IG10a19q cGVnX2VuY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCit7DQorCXN0cnVjdCBtdGtfanBlZ19k ZXYgKmpwZWcgPSBwcml2Ow0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHg7DQorCXN0cnVjdCB2 YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfc3Jj X2J1ZiAqanBlZ19zcmNfYnVmOw0KKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVmX3N0YXRlID0g VkIyX0JVRl9TVEFURV9FUlJPUjsNCisJdTMyIGVuY19pcnFfcmV0Ow0KKwl1MzIgZW5jX3JldCwg cmVzdWx0X3NpemU7DQorDQorCWN0eCA9IHY0bDJfbTJtX2dldF9jdXJyX3ByaXYoanBlZy0+bTJt X2Rldik7DQorCWlmICghY3R4KSB7DQorCQl2NGwyX2VycigmanBlZy0+djRsMl9kZXYsICJDb250 ZXh0IGlzIE5VTExcbiIpOw0KKwkJcmV0dXJuIElSUV9IQU5ETEVEOw0KKwl9DQorDQorCXNyY19i dWYgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOw0KKwlkc3RfYnVm ID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCisJanBlZ19zcmNf YnVmID0gbXRrX2pwZWdfdmIyX3RvX3NyY2J1Zigmc3JjX2J1Zi0+dmIyX2J1Zik7DQorDQorCWVu Y19yZXQgPSBtdGtfanBlZ19lbmNfZ2V0X2FuZF9jbGVhcl9pbnRfc3RhdHVzKGpwZWctPnJlZ19i YXNlKTsNCisJZW5jX2lycV9yZXQgPSBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQoanBlZy0+cmVn X2Jhc2UsIGVuY19yZXQpOw0KKw0KKwlpZiAoZW5jX2lycV9yZXQgPj0gTVRLX0pQRUdfRU5DX1JF U1VMVF9TVEFMTCkNCisJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQor CWlmIChlbmNfaXJxX3JldCAhPSBNVEtfSlBFR19FTkNfUkVTVUxUX0RPTkUpIHsNCisJCWRldl9l cnIoanBlZy0+ZGV2LCAiZW5jb2RlIGZhaWxlZFxuIik7DQorCQlnb3RvIGVuY19lbmQ7DQorCX0N CisNCisJcmVzdWx0X3NpemUgPSBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZShqcGVnLT5yZWdf YmFzZSk7DQorCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCgmZHN0X2J1Zi0+dmIyX2J1ZiwgMCwgcmVz dWx0X3NpemUpOw0KKw0KKwlidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7DQorDQorZW5j X2VuZDoNCisJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsNCisJdjRsMl9t Mm1fYnVmX2RvbmUoZHN0X2J1ZiwgYnVmX3N0YXRlKTsNCisJdjRsMl9tMm1fam9iX2ZpbmlzaChq cGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KKwlwbV9ydW50aW1lX3B1dChjdHgtPmpw ZWctPmRldik7DQorCXJldHVybiBJUlFfSEFORExFRDsNCit9DQorDQogc3RhdGljIGlycXJldHVy bl90IG10a19qcGVnX2RlY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCiB7DQogCXN0cnVjdCBt dGtfanBlZ19kZXYgKmpwZWcgPSBwcml2Ow0KQEAgLTg5MywzNiArMTM1MywxMzAgQEAgc3RhdGlj IGlycXJldHVybl90IG10a19qcGVnX2RlY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCiAJcmV0 dXJuIElSUV9IQU5ETEVEOw0KIH0NCiANCitzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZW5jX2Rl ZmF1bHRfcGFyYW1zKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCit7DQorCXN0cnVjdCBtdGtf anBlZ19xX2RhdGEgKnEgPSAmY3R4LT5vdXRfcTsNCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9t cGxhbmUgKnBpeF9tcDsNCisNCisJcGl4X21wID0ga21hbGxvYyhzaXplb2YoKnBpeF9tcCksIEdG UF9LRVJORUwpOw0KKw0KKwljdHgtPmZoLmN0cmxfaGFuZGxlciA9ICZjdHgtPmN0cmxfaGRsOw0K KwljdHgtPmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfSlBFRywNCisJY3R4LT55Y2Jjcl9l bmMgPSBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUOw0KKwljdHgtPnF1YW50aXphdGlvbiA9IFY0TDJf UVVBTlRJWkFUSU9OX0RFRkFVTFQ7DQorCWN0eC0+eGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZVTkNf REVGQVVMVDsNCisJcGl4X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsNCisJcGl4X21w LT5oZWlnaHQgPSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KKw0KKwlxLT5mbXQgPSBtdGtfanBlZ19m aW5kX2Zvcm1hdChWNEwyX1BJWF9GTVRfWVVZViwNCisJCQkJICAgICAgTVRLX0pQRUdfRk1UX0ZM QUdfRU5DX09VVFBVVCk7DQorCXZpZGlvY190cnlfZm10KGNvbnRhaW5lcl9vZihwaXhfbXAsIHN0 cnVjdCB2NGwyX2Zvcm1hdCwNCisJCQkJICAgIGZtdC5waXhfbXApLCBxLT5mbXQpOw0KKwlxLT53 ID0gcGl4X21wLT53aWR0aDsNCisJcS0+aCA9IHBpeF9tcC0+aGVpZ2h0Ow0KKwlxLT5jcm9wX3Jl Y3Qud2lkdGggPSBwaXhfbXAtPndpZHRoOw0KKwlxLT5jcm9wX3JlY3QuaGVpZ2h0ID0gcGl4X21w LT5oZWlnaHQ7DQorCXEtPnNpemVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVp bWFnZTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcGl4X21wLT5wbGFuZV9mbXRbMF0uYnl0ZXNw ZXJsaW5lOw0KKw0KKwlxID0gJmN0eC0+Y2FwX3E7DQorCXEtPmZtdCA9IG10a19qcGVnX2ZpbmRf Zm9ybWF0KFY0TDJfUElYX0ZNVF9KUEVHLA0KKwkJCQkgICAgICBNVEtfSlBFR19GTVRfRkxBR19F TkNfQ0FQVFVSRSk7DQorCXBpeF9tcC0+d2lkdGggPSBNVEtfSlBFR19NSU5fV0lEVEg7DQorCXBp eF9tcC0+aGVpZ2h0ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisJdmlkaW9jX3RyeV9mbXQoY29u dGFpbmVyX29mKHBpeF9tcCwgc3RydWN0IHY0bDJfZm9ybWF0LA0KKwkJCQkgICAgZm10LnBpeF9t cCksIHEtPmZtdCk7DQorCXEtPncgPSBwaXhfbXAtPndpZHRoOw0KKwlxLT5oID0gcGl4X21wLT5o ZWlnaHQ7DQorCXEtPnNpemVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFn ZTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcGl4X21wLT5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJs aW5lOw0KK30NCisNCiBzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZGVjX2RlZmF1bHRfcGFyYW1z KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19xX2RhdGEg KnEgPSAmY3R4LT5vdXRfcTsNCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9t cDsNCiAJaW50IGk7DQogDQorCXBpeF9tcCA9IGttYWxsb2Moc2l6ZW9mKCpwaXhfbXApLCBHRlBf S0VSTkVMKTsNCisNCisJY3R4LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCiAJ Y3R4LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQogCWN0eC0+eWNiY3JfZW5j ID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCiAJY3R4LT5xdWFudGl6YXRpb24gPSBWNEwyX1FV QU5USVpBVElPTl9ERUZBVUxUOw0KIAljdHgtPnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DX0RF RkFVTFQ7DQotDQotCXEtPmZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgVjRMMl9QSVhf Rk1UX0pQRUcsDQotCQkJCQkgICAgICBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQpOw0KLQlxLT53 ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KLQlxLT5oID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCi0J cS0+Ynl0ZXNwZXJsaW5lWzBdID0gMDsNCi0JcS0+c2l6ZWltYWdlWzBdID0gTVRLX0pQRUdfREVG QVVMVF9TSVpFSU1BR0U7DQorCXBpeF9tcC0+d2lkdGggPSBNVEtfSlBFR19NSU5fV0lEVEg7DQor CXBpeF9tcC0+aGVpZ2h0ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisNCisJcS0+Zm10ID0gbXRr X2pwZWdfZmluZF9mb3JtYXQoVjRMMl9QSVhfRk1UX0pQRUcsDQorCQkJCSAgICAgIE1US19KUEVH X0ZNVF9GTEFHX0RFQ19PVVRQVVQpOw0KKwl2aWRpb2NfdHJ5X2ZtdChjb250YWluZXJfb2YocGl4 X21wLCBzdHJ1Y3QgdjRsMl9mb3JtYXQsDQorCQkJCSAgICBmbXQucGl4X21wKSwgcS0+Zm10KTsN CisJcS0+dyA9IHBpeF9tcC0+d2lkdGg7DQorCXEtPmggPSBwaXhfbXAtPmhlaWdodDsNCisJcS0+ c2l6ZWltYWdlWzBdID0gcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlOw0KKwlxLT5ieXRl c3BlcmxpbmVbMF0gPSBwaXhfbXAtPnBsYW5lX2ZtdFswXS5ieXRlc3BlcmxpbmU7DQogDQogCXEg PSAmY3R4LT5jYXBfcTsNCi0JcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBWNEwy X1BJWF9GTVRfWVVWNDIwTSwNCi0JCQkJCSAgICAgIE1US19KUEVHX0ZNVF9UWVBFX0NBUFRVUkUp Ow0KLQlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KLQlxLT5oID0gTVRLX0pQRUdfTUlOX0hF SUdIVDsNCi0NCisJcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoVjRMMl9QSVhfRk1UX1lV VjQyME0sDQorCQkJCSAgICAgIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsNCisJcGl4 X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsNCisJcGl4X21wLT5oZWlnaHQgPSBNVEtf SlBFR19NSU5fSEVJR0hUOw0KKwl2aWRpb2NfdHJ5X2ZtdChjb250YWluZXJfb2YocGl4X21wLCBz dHJ1Y3QgdjRsMl9mb3JtYXQsDQorCQkJCSAgICBmbXQucGl4X21wKSwgcS0+Zm10KTsNCisJcS0+ dyA9IHBpeF9tcC0+d2lkdGg7DQorCXEtPmggPSBwaXhfbXAtPmhlaWdodDsNCiAJZm9yIChpID0g MDsgaSA8IHEtPmZtdC0+Y29scGxhbmVzOyBpKyspIHsNCi0JCXUzMiBzdHJpZGUgPSBxLT53ICog cS0+Zm10LT5oX3NhbXBsZVtpXSAvIDQ7DQotCQl1MzIgaCA9IHEtPmggKiBxLT5mbXQtPnZfc2Ft cGxlW2ldIC8gNDsNCisJCXEtPnNpemVpbWFnZVtpXSA9IHBpeF9tcC0+cGxhbmVfZm10W2ldLnNp emVpbWFnZTsNCisJCXEtPmJ5dGVzcGVybGluZVtpXSA9IHBpeF9tcC0+cGxhbmVfZm10W2ldLmJ5 dGVzcGVybGluZTsNCisJfQ0KK30NCiANCi0JCXEtPmJ5dGVzcGVybGluZVtpXSA9IHN0cmlkZTsN Ci0JCXEtPnNpemVpbWFnZVtpXSA9IHN0cmlkZSAqIGg7DQorc3RhdGljIGludCBtdGtfanBlZ19l bmNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCit7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpw ZWcgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZmQgPSB2 aWRlb19kZXZkYXRhKGZpbGUpOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHg7DQorCWludCBy ZXQgPSAwOw0KKw0KKwljdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7DQor CWlmICghY3R4KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWlmIChtdXRleF9sb2NrX2ludGVy cnVwdGlibGUoJmpwZWctPmxvY2spKSB7DQorCQlyZXQgPSAtRVJFU1RBUlRTWVM7DQorCQlnb3Rv IGZyZWU7DQorCX0NCisNCisJdjRsMl9maF9pbml0KCZjdHgtPmZoLCB2ZmQpOw0KKwlmaWxlLT5w cml2YXRlX2RhdGEgPSAmY3R4LT5maDsNCisJdjRsMl9maF9hZGQoJmN0eC0+ZmgpOw0KKw0KKwlj dHgtPmpwZWcgPSBqcGVnOw0KKwljdHgtPmZoLm0ybV9jdHggPSB2NGwyX20ybV9jdHhfaW5pdChq cGVnLT5tMm1fZGV2LCBjdHgsDQorCQkJCQkgICAgbXRrX2pwZWdfZW5jX3F1ZXVlX2luaXQpOw0K KwlpZiAoSVNfRVJSKGN0eC0+ZmgubTJtX2N0eCkpIHsNCisJCXJldCA9IFBUUl9FUlIoY3R4LT5m aC5tMm1fY3R4KTsNCisJCWdvdG8gZXJyb3I7DQogCX0NCisNCisJcmV0ID0gbXRrX2pwZWdfZW5j X2N0cmxzX3NldHVwKGN0eCk7DQorCWlmIChyZXQpIHsNCisJCXY0bDJfZXJyKCZqcGVnLT52NGwy X2RldiwgIkZhaWxlZCB0byBzZXR1cCBqcGVnIGVuYyBjb250cm9sc1xuIik7DQorCQlnb3RvIGVy cm9yOw0KKwl9DQorCW10a19qcGVnX3NldF9lbmNfZGVmYXVsdF9wYXJhbXMoY3R4KTsNCisNCisJ bXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCisJcmV0dXJuIDA7DQorDQorZXJyb3I6DQorCXY0 bDJfZmhfZGVsKCZjdHgtPmZoKTsNCisJdjRsMl9maF9leGl0KCZjdHgtPmZoKTsNCisJbXV0ZXhf dW5sb2NrKCZqcGVnLT5sb2NrKTsNCitmcmVlOg0KKwlrZnJlZShjdHgpOw0KKwlyZXR1cm4gcmV0 Ow0KIH0NCiANCiBzdGF0aWMgaW50IG10a19qcGVnX2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxl KQ0KQEAgLTk1Myw2ICsxNTA3LDEyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX29wZW4oc3Ry dWN0IGZpbGUgKmZpbGUpDQogCQlnb3RvIGVycm9yOw0KIAl9DQogDQorCXY0bDJfY3RybF9oYW5k bGVyX2luaXQoJmN0eC0+Y3RybF9oZGwsIDApOw0KKwlyZXQgPSB2NGwyX2N0cmxfaGFuZGxlcl9z ZXR1cCgmY3R4LT5jdHJsX2hkbCk7DQorCWlmIChyZXQpIHsNCisJCXY0bDJfZXJyKCZqcGVnLT52 NGwyX2RldiwgIkZhaWxlZCB0byBzZXR1cCBqcGVnIGRlYyBjb250cm9sc1xuIik7DQorCQlnb3Rv IGVycm9yOw0KKwl9DQogCW10a19qcGVnX3NldF9kZWNfZGVmYXVsdF9wYXJhbXMoY3R4KTsNCiAJ bXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCiAJcmV0dXJuIDA7DQpAQCAtOTczLDYgKzE1MzMs NyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpDQogDQog CW11dGV4X2xvY2soJmpwZWctPmxvY2spOw0KIAl2NGwyX20ybV9jdHhfcmVsZWFzZShjdHgtPmZo Lm0ybV9jdHgpOw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxfaGRsKTsNCiAJ djRsMl9maF9kZWwoJmN0eC0+ZmgpOw0KIAl2NGwyX2ZoX2V4aXQoJmN0eC0+ZmgpOw0KIAlrZnJl ZShjdHgpOw0KQEAgLTk4MCw2ICsxNTQxLDE1IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcmVsZWFz ZShzdHJ1Y3QgZmlsZSAqZmlsZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgbXRrX2pwZWdfZW5jX2ZvcHMgPSB7DQorCS5vd25l ciAgICAgICAgICA9IFRISVNfTU9EVUxFLA0KKwkub3BlbiAgICAgICAgICAgPSBtdGtfanBlZ19l bmNfb3BlbiwNCisJLnJlbGVhc2UgICAgICAgID0gbXRrX2pwZWdfcmVsZWFzZSwNCisJLnBvbGwg ICAgICAgICAgID0gdjRsMl9tMm1fZm9wX3BvbGwsDQorCS51bmxvY2tlZF9pb2N0bCA9IHZpZGVv X2lvY3RsMiwNCisJLm1tYXAgICAgICAgICAgID0gdjRsMl9tMm1fZm9wX21tYXAsDQorfTsNCisN CiBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIG10a19qcGVnX2RlY19m b3BzID0gew0KIAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwNCiAJLm9wZW4gICAgICAg ICAgID0gbXRrX2pwZWdfZGVjX29wZW4sDQpAQCAtOTkzLDYgKzE1NjMsNyBAQCBzdGF0aWMgaW50 IG10a19qcGVnX2Nsa19pbml0KHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQogew0KIAlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQor CWludCBpOw0KIA0KIAlub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShqcGVnLT5kZXYtPm9mX25vZGUs ICJtZWRpYXRlayxsYXJiIiwgMCk7DQogCWlmICghbm9kZSkNCkBAIC0xMDA2LDEyICsxNTc3LDE3 IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfY2xrX2luaXQoc3RydWN0IG10a19qcGVnX2RldiAqanBl ZykNCiANCiAJanBlZy0+bGFyYiA9ICZwZGV2LT5kZXY7DQogDQotCWpwZWctPmNsa19qZGVjID0g ZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwgImpwZ2RlYyIpOw0KLQlpZiAoSVNfRVJSKGpwZWctPmNs a19qZGVjKSkNCi0JCXJldHVybiBQVFJfRVJSKGpwZWctPmNsa19qZGVjKTsNCisJZm9yIChpID0g MDsgaSA8IGpwZWctPnZhcmlhbnQtPm51bV9jbG9ja3M7IGkrKykgew0KKwkJanBlZy0+Y2xvY2tz W2ldID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwNCisJCQkJCSAgICAgICBqcGVnLT52YXJpYW50 LT5jbGtfbmFtZXNbaV0pOw0KKwkJaWYgKElTX0VSUihqcGVnLT5jbG9ja3NbaV0pKSB7DQorCQkJ ZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBjbG9jazogJXNcbiIsDQorCQkJCWpw ZWctPnZhcmlhbnQtPmNsa19uYW1lc1tpXSk7DQorCQkJcmV0dXJuIFBUUl9FUlIoanBlZy0+Y2xv Y2tzW2ldKTsNCisJCX0NCisJfQ0KIA0KLQlqcGVnLT5jbGtfamRlY19zbWkgPSBkZXZtX2Nsa19n ZXQoanBlZy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KLQlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGpw ZWctPmNsa19qZGVjX3NtaSk7DQorCXJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMgaW50IG10a19q cGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQpAQCAtMTAyOCw2ICsxNjA0 LDcgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KIAltdXRleF9pbml0KCZqcGVnLT5sb2NrKTsNCiAJc3Bpbl9sb2NrX2luaXQoJmpwZWct Pmh3X2xvY2spOw0KIAlqcGVnLT5kZXYgPSAmcGRldi0+ZGV2Ow0KKwlqcGVnLT52YXJpYW50ID0g b2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGpwZWctPmRldik7DQogDQogCXJlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQogCWpwZWctPnJlZ19iYXNl ID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQpAQCAtMTA0Miw4ICsx NjE5LDEyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikNCiAJCXJldHVybiBqcGVnX2lycTsNCiAJfQ0KIA0KLQlyZXQgPSBkZXZtX3JlcXVl c3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAwLA0KLQkJCSAg ICAgICBwZGV2LT5uYW1lLCBqcGVnKTsNCisJaWYgKGpwZWctPnZhcmlhbnQtPmlzX2VuY29kZXIp DQorCQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBl Z19lbmNfaXJxLA0KKwkJCQkgICAgICAgMCwgcGRldi0+bmFtZSwganBlZyk7DQorCWVsc2UNCisJ CXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwganBlZ19pcnEsIG10a19qcGVnX2Rl Y19pcnEsDQorCQkJCSAgICAgICAwLCBwZGV2LT5uYW1lLCBqcGVnKTsNCiAJaWYgKHJldCkgew0K IAkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QganBlZ19pcnEgJWQgKCVk KVxuIiwNCiAJCQlqcGVnX2lycSwgcmV0KTsNCkBAIC0xMDYzLDcgKzE2NDQsMTAgQEAgc3RhdGlj IGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAkJZ290 byBlcnJfZGV2X3JlZ2lzdGVyOw0KIAl9DQogDQotCWpwZWctPm0ybV9kZXYgPSB2NGwyX20ybV9p bml0KCZtdGtfanBlZ19kZWNfbTJtX29wcyk7DQorCWlmIChqcGVnLT52YXJpYW50LT5pc19lbmNv ZGVyKQ0KKwkJanBlZy0+bTJtX2RldiA9IHY0bDJfbTJtX2luaXQoJm10a19qcGVnX2VuY19tMm1f b3BzKTsNCisJZWxzZQ0KKwkJanBlZy0+bTJtX2RldiA9IHY0bDJfbTJtX2luaXQoJm10a19qcGVn X2RlY19tMm1fb3BzKTsNCiAJaWYgKElTX0VSUihqcGVnLT5tMm1fZGV2KSkgew0KIAkJdjRsMl9l cnIoJmpwZWctPnY0bDJfZGV2LCAiRmFpbGVkIHRvIGluaXQgbWVtMm1lbSBkZXZpY2VcbiIpOw0K IAkJcmV0ID0gUFRSX0VSUihqcGVnLT5tMm1fZGV2KTsNCkBAIC0xMDc2LDkgKzE2NjAsMTUgQEAg c3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K IAkJZ290byBlcnJfdmZkX2pwZWdfYWxsb2M7DQogCX0NCiAJc25wcmludGYoanBlZy0+dmRldi0+ bmFtZSwgc2l6ZW9mKGpwZWctPnZkZXYtPm5hbWUpLA0KLQkJICIlcy1kZWMiLCBNVEtfSlBFR19O QU1FKTsNCi0JanBlZy0+dmRldi0+Zm9wcyA9ICZtdGtfanBlZ19kZWNfZm9wczsNCi0JanBlZy0+ dmRldi0+aW9jdGxfb3BzID0gJm10a19qcGVnX2RlY19pb2N0bF9vcHM7DQorCQkgIiVzLSVzIiwg TVRLX0pQRUdfTkFNRSwNCisJCSBqcGVnLT52YXJpYW50LT5pc19lbmNvZGVyID8gImVuYyIgOiAi ZGVjIik7DQorCWlmIChqcGVnLT52YXJpYW50LT5pc19lbmNvZGVyKSB7DQorCQlqcGVnLT52ZGV2 LT5mb3BzID0gJm10a19qcGVnX2VuY19mb3BzOw0KKwkJanBlZy0+dmRldi0+aW9jdGxfb3BzID0g Jm10a19qcGVnX2VuY19pb2N0bF9vcHM7DQorCX0gZWxzZSB7DQorCQlqcGVnLT52ZGV2LT5mb3Bz ID0gJm10a19qcGVnX2RlY19mb3BzOw0KKwkJanBlZy0+dmRldi0+aW9jdGxfb3BzID0gJm10a19q cGVnX2RlY19pb2N0bF9vcHM7DQorCX0NCiAJanBlZy0+dmRldi0+bWlub3IgPSAtMTsNCiAJanBl Zy0+dmRldi0+cmVsZWFzZSA9IHZpZGVvX2RldmljZV9yZWxlYXNlOw0KIAlqcGVnLT52ZGV2LT5s b2NrID0gJmpwZWctPmxvY2s7DQpAQCAtMTA5NSw4ICsxNjg1LDkgQEAgc3RhdGljIGludCBtdGtf anBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIA0KIAl2aWRlb19zZXRf ZHJ2ZGF0YShqcGVnLT52ZGV2LCBqcGVnKTsNCiAJdjRsMl9pbmZvKCZqcGVnLT52NGwyX2RldiwN Ci0JCSAgImRlY29kZXIgZGV2aWNlIHJlZ2lzdGVyZWQgYXMgL2Rldi92aWRlbyVkICglZCwlZClc biIsDQotCQkgIGpwZWctPnZkZXYtPm51bSwgVklERU9fTUFKT1IsIGpwZWctPnZkZXYtPm1pbm9y KTsNCisJCSAgImpwZWcgJXMgZGV2aWNlIHJlZ2lzdGVyZWQgYXMgL2Rldi92aWRlbyVkICglZCwl ZClcbiIsDQorCQkgIGpwZWctPnZhcmlhbnQtPmlzX2VuY29kZXIgPyAiZW5jIiA6ICJkZWMiLCBq cGVnLT52ZGV2LT5udW0sDQorCQkgIFZJREVPX01BSk9SLCBqcGVnLT52ZGV2LT5taW5vcik7DQog DQogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGpwZWcpOw0KIA0KQEAgLTExODcsMTQgKzE3 NzgsMzYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVnX3BtX29wcyA9 IHsNCiAJU0VUX1JVTlRJTUVfUE1fT1BTKG10a19qcGVnX3BtX3N1c3BlbmQsIG10a19qcGVnX3Bt X3Jlc3VtZSwgTlVMTCkNCiB9Ow0KIA0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfdmFyaWFudCBt dDgxNzNfanBlZ19kcnZkYXRhID0gew0KKwkuaXNfZW5jb2Rlcgk9IGZhbHNlLA0KKwkuY2xrX25h bWVzCT0geyJqcGdkZWMtc21pIiwgImpwZ2RlYyJ9LA0KKwkubnVtX2Nsb2Nrcwk9IDIsDQorfTsN CisNCitzdGF0aWMgc3RydWN0IG10a19qcGVnX3ZhcmlhbnQgbXQyNzAxX2pwZWdfZHJ2ZGF0YSA9 IHsNCisJLmlzX2VuY29kZXIJPSBmYWxzZSwNCisJLmNsa19uYW1lcwk9IHsianBnZGVjLXNtaSIs ICJqcGdkZWMifSwNCisJLm51bV9jbG9ja3MJPSAyLA0KK307DQorDQorc3RhdGljIHN0cnVjdCBt dGtfanBlZ192YXJpYW50IG10a19qcGVnX2RydmRhdGEgPSB7DQorCS5pc19lbmNvZGVyCT0gdHJ1 ZSwNCisJLmNsa19uYW1lcwk9IHsianBnZW5jIn0sDQorCS5udW1fY2xvY2tzCT0gMSwNCit9Ow0K Kw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19qcGVnX21hdGNoW10gPSB7 DQogCXsNCiAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1qcGdkZWMiLA0KLQkJLmRh dGEgICAgICAgPSBOVUxMLA0KKwkJLmRhdGEgPSAmbXQ4MTczX2pwZWdfZHJ2ZGF0YSwNCiAJfSwN CiAJew0KIAkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQyNzAxLWpwZ2RlYyIsDQotCQkuZGF0 YSAgICAgICA9IE5VTEwsDQorCQkuZGF0YSA9ICZtdDI3MDFfanBlZ19kcnZkYXRhLA0KKwl9LA0K Kwl7DQorCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdGstanBnZW5jIiwNCisJCS5kYXRhID0g Jm10a19qcGVnX2RydmRhdGEsDQogCX0sDQogCXt9LA0KIH07DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuaA0KaW5kZXggMGI1OWU0ODQ5NWQ1Li45 ZWMyYzMzNTBhMTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2NvcmUuaA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9t dGtfanBlZ19jb3JlLmgNCkBAIC0zLDYgKzMsNyBAQA0KICAqIENvcHlyaWdodCAoYykgMjAxNiBN ZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hzaXUudHNhaUBt ZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVr LmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCiAg Ki8NCiANCiAjaWZuZGVmIF9NVEtfSlBFR19DT1JFX0gNCkBAIC0xNiwxOSArMTcsMjEgQEANCiAj ZGVmaW5lIE1US19KUEVHX05BTUUJCSJtdGstanBlZyINCiANCiAjZGVmaW5lIE1US19KUEVHX0NP TVBfTUFYCQkzDQorI2RlZmluZSBNVEtfSlBFR19NQVhfQ0xPQ0tTCQkyDQorDQogDQogI2RlZmlu ZSBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUCUJJVCgwKQ0KICNkZWZpbmUgTVRLX0pQRUdf Rk1UX0ZMQUdfREVDX0NBUFRVUkUJQklUKDEpDQotDQotI2RlZmluZSBNVEtfSlBFR19GTVRfVFlQ RV9PVVRQVVQJMQ0KLSNkZWZpbmUgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRQkyDQorI2RlZmlu ZSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgyKQ0KKyNkZWZpbmUgTVRLX0pQRUdf Rk1UX0ZMQUdfRU5DX0NBUFRVUkUJQklUKDMpDQogDQogI2RlZmluZSBNVEtfSlBFR19NSU5fV0lE VEgJMzJVDQogI2RlZmluZSBNVEtfSlBFR19NSU5fSEVJR0hUCTMyVQ0KLSNkZWZpbmUgTVRLX0pQ RUdfTUFYX1dJRFRICTgxOTJVDQotI2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTgxOTJVDQor I2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEgJNjU1MzVVDQorI2RlZmluZSBNVEtfSlBFR19NQVhf SEVJR0hUCTY1NTM1VQ0KIA0KICNkZWZpbmUgTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0UJKDEg KiAxMDI0ICogMTAyNCkNCisjZGVmaW5lIE1US19KUEVHX01BWF9FWElGX1NJWkUJKDY0ICogMTAy NCkNCiANCiAvKioNCiAgKiBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSAtIHN0YXRlcyBvZiB0aGUg Y29udGV4dCBzdGF0ZSBtYWNoaW5lDQpAQCAtNDIsNiArNDUsMTggQEAgZW51bSBtdGtfanBlZ19j dHhfc3RhdGUgew0KIAlNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFLA0KIH07DQogDQorLyoqDQorICog bXRrX2pwZWdfdmFyaWFudCAtIG10ayBqcGVnIGRyaXZlciB2YXJpYW50DQorICogQGlzX2VuY29k ZXI6CQlkcml2ZXIgbW9kZSBpcyBqcGVnIGVuY29kZXINCisgKiBAY2xrX25hbWVzOgkJY2xvY2sg bmFtZXMNCisgKiBAbnVtX2Nsb2NrczoJCW51bWJlcnMgb2YgY2xvY2sNCisgKi8NCitzdHJ1Y3Qg bXRrX2pwZWdfdmFyaWFudCB7DQorCWJvb2wgaXNfZW5jb2RlcjsNCisJY29uc3QgY2hhcgkJKmNs a19uYW1lc1tNVEtfSlBFR19NQVhfQ0xPQ0tTXTsNCisJaW50CQkJbnVtX2Nsb2NrczsNCit9Ow0K Kw0KIC8qKg0KICAqIHN0cnVjdCBtdF9qcGVnIC0gSlBFRyBJUCBhYnN0cmFjdGlvbg0KICAqIEBs b2NrOgkJdGhlIG11dGV4IHByb3RlY3RpbmcgdGhpcyBzdHJ1Y3R1cmUNCkBAIC01Myw5ICs2OCw5 IEBAIGVudW0gbXRrX2pwZWdfY3R4X3N0YXRlIHsNCiAgKiBAYWxsb2NfY3R4OgkJdmlkZW9idWYy IG1lbW9yeSBhbGxvY2F0b3IncyBjb250ZXh0DQogICogQHZkZXY6CQl2aWRlbyBkZXZpY2Ugbm9k ZSBmb3IganBlZyBtZW0ybWVtIG1vZGUNCiAgKiBAcmVnX2Jhc2U6CQlKUEVHIHJlZ2lzdGVycyBt YXBwaW5nDQotICogQGNsa19qZGVjOgkJSlBFRyBodyB3b3JraW5nIGNsb2NrDQotICogQGNsa19q ZGVjX3NtaToJSlBFRyBTTUkgYnVzIGNsb2NrDQogICogQGxhcmI6CQlTTUkgZGV2aWNlDQorICog QGNsb2NrczoJCUpQRUcgSVAgY2xvY2socykNCisgKiBAdmFyaWFudDoJCWRyaXZlciB2YXJpYW50 IHRvIGJlIHVzZWQNCiAgKi8NCiBzdHJ1Y3QgbXRrX2pwZWdfZGV2IHsNCiAJc3RydWN0IG11dGV4 CQlsb2NrOw0KQEAgLTY3LDE0ICs4MiwxNSBAQCBzdHJ1Y3QgbXRrX2pwZWdfZGV2IHsNCiAJdm9p ZAkJCSphbGxvY19jdHg7DQogCXN0cnVjdCB2aWRlb19kZXZpY2UJKnZkZXY7DQogCXZvaWQgX19p b21lbQkJKnJlZ19iYXNlOw0KLQlzdHJ1Y3QgY2xrCQkqY2xrX2pkZWM7DQotCXN0cnVjdCBjbGsJ CSpjbGtfamRlY19zbWk7DQogCXN0cnVjdCBkZXZpY2UJCSpsYXJiOw0KKwlzdHJ1Y3QgY2xrCQkq Y2xvY2tzW01US19KUEVHX01BWF9DTE9DS1NdOw0KKwljb25zdCBzdHJ1Y3QgbXRrX2pwZWdfdmFy aWFudCAqdmFyaWFudDsNCiB9Ow0KIA0KIC8qKg0KICAqIHN0cnVjdCBqcGVnX2ZtdCAtIGRyaXZl cidzIGludGVybmFsIGNvbG9yIGZvcm1hdCBkYXRhDQogICogQGZvdXJjYzoJdGhlIGZvdXJjYyBj b2RlLCAwIGlmIG5vdCBhcHBsaWNhYmxlDQorICogQGh3X2Zvcm1hdDoJaGFyZHdhcmUgZm9ybWF0 IHZhbHVlDQogICogQGhfc2FtcGxlOglob3Jpem9udGFsIHNhbXBsZSBjb3VudCBvZiBwbGFuZSBp biA0ICogNCBwaXhlbCBpbWFnZQ0KICAqIEB2X3NhbXBsZToJdmVydGljYWwgc2FtcGxlIGNvdW50 IG9mIHBsYW5lIGluIDQgKiA0IHBpeGVsIGltYWdlDQogICogQGNvbHBsYW5lczoJbnVtYmVyIG9m IGNvbG9yIHBsYW5lcyAoMSBmb3IgcGFja2VkIGZvcm1hdHMpDQpAQCAtODQsNiArMTAwLDcgQEAg c3RydWN0IG10a19qcGVnX2RldiB7DQogICovDQogc3RydWN0IG10a19qcGVnX2ZtdCB7DQogCXUz Mglmb3VyY2M7DQorCXUzMglod19mb3JtYXQ7DQogCWludAloX3NhbXBsZVtWSURFT19NQVhfUExB TkVTXTsNCiAJaW50CXZfc2FtcGxlW1ZJREVPX01BWF9QTEFORVNdOw0KIAlpbnQJY29scGxhbmVz Ow0KQEAgLTEwNyw2ICsxMjQsNyBAQCBzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhIHsNCiAJdTMyCQkJ aDsNCiAJdTMyCQkJYnl0ZXNwZXJsaW5lW1ZJREVPX01BWF9QTEFORVNdOw0KIAl1MzIJCQlzaXpl aW1hZ2VbVklERU9fTUFYX1BMQU5FU107DQorCXN0cnVjdCB2NGwyX3JlY3QJY3JvcF9yZWN0Ow0K IH07DQogDQogLyoqDQpAQCAtMTE2LDYgKzEzNCwxMCBAQCBzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRh IHsNCiAgKiBAY2FwX3E6CQlkZXN0aW5hdGlvbiAoY2FwdHVyZSkgcXVldWUgcXVldWUgaW5mb3Jt YXRpb24NCiAgKiBAZmg6CQkJVjRMMiBmaWxlIGhhbmRsZQ0KICAqIEBzdGF0ZToJCXN0YXRlIG9m IHRoZSBjb250ZXh0DQorICogQGVuYWJsZV9leGlmOgllbmFibGUgZXhpZiBtb2RlIG9mIGpwZWcg ZW5jb2Rlcg0KKyAqIEBlbmNfcXVhbGl0eToJanBlZyBlbmNvZGVyIHF1YWxpdHkNCisgKiBAcmVz dGFydF9pbnRlcnZhbDoJanBlZyBlbmNvZGVyIHJlc3RhcnQgaW50ZXJ2YWwNCisgKiBAY3RybF9o ZGw6CQljb250cm9scyBoYW5kbGVyDQogICogQGNvbG9yc3BhY2U6IGVudW0gdjRsMl9jb2xvcnNw YWNlOyBzdXBwbGVtZW50YWwgdG8gcGl4ZWxmb3JtYXQNCiAgKiBAeWNiY3JfZW5jOiBlbnVtIHY0 bDJfeWNiY3JfZW5jb2RpbmcsIFknQ2JDciBlbmNvZGluZw0KICAqIEBxdWFudGl6YXRpb246IGVu dW0gdjRsMl9xdWFudGl6YXRpb24sIGNvbG9yc3BhY2UgcXVhbnRpemF0aW9uDQpAQCAtMTI3LDYg KzE0OSwxMCBAQCBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0IG10a19qcGVnX3FfZGF0 YQkJY2FwX3E7DQogCXN0cnVjdCB2NGwyX2ZoCQkJZmg7DQogCWVudW0gbXRrX2pwZWdfY3R4X3N0 YXRlCQlzdGF0ZTsNCisJYm9vbAkJCQllbmFibGVfZXhpZjsNCisJdTgJCQkJZW5jX3F1YWxpdHk7 DQorCXU4CQkJCXJlc3RhcnRfaW50ZXJ2YWw7DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlcglj dHJsX2hkbDsNCiANCiAJZW51bSB2NGwyX2NvbG9yc3BhY2UgY29sb3JzcGFjZTsNCiAJZW51bSB2 NGwyX3ljYmNyX2VuY29kaW5nIHljYmNyX2VuYzsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAwMC4uN2ZjMWRlOTIwYTc1DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQpAQCAtMCwwICsx LDE5MyBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCisvKg0K KyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBYaWEgSmlh bmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8bGlu dXgvaW8uaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPG1lZGlhL3Zp ZGVvYnVmMi1jb3JlLmg+DQorDQorI2luY2x1ZGUgIm10a19qcGVnX2VuY19ody5oIg0KKw0KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCBtdGtfanBlZ19lbmNfcXVhbGl0eVtd ID0gew0KKwl7LnF1YWxpdHlfcGFyYW0gPSAzNCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNf UVVBTElUWV9RMzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSAzOSwgLmhhcmR3YXJlX3ZhbHVlID0g SlBFR19FTkNfUVVBTElUWV9RMzl9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA0OCwgLmhhcmR3YXJl X3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNDh9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA2MCwg LmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNjB9LA0KKwl7LnF1YWxpdHlfcGFy YW0gPSA2NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNjR9LA0KKwl7LnF1 YWxpdHlfcGFyYW0gPSA2OCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNjh9 LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA3NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVB TElUWV9RNzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBF R19FTkNfUVVBTElUWV9RODB9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4MiwgLmhhcmR3YXJlX3Zh bHVlID0gSlBFR19FTkNfUVVBTElUWV9RODJ9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4NCwgLmhh cmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODR9LA0KKwl7LnF1YWxpdHlfcGFyYW0g PSA4NywgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODd9LA0KKwl7LnF1YWxp dHlfcGFyYW0gPSA5MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9ROTB9LA0K Kwl7LnF1YWxpdHlfcGFyYW0gPSA5MiwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElU WV9ROTJ9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5NSwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19F TkNfUVVBTElUWV9ROTV9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5NywgLmhhcmR3YXJlX3ZhbHVl ID0gSlBFR19FTkNfUVVBTElUWV9ROTd9LA0KK307DQorDQordm9pZCBtdGtfanBlZ19lbmNfcmVz ZXQodm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJd3JpdGVsKDB4MDAsIGJhc2UgKyBKUEVHX0VO Q19SU1RCKTsNCisJd3JpdGVsKEpQRUdfRU5DX1JFU0VUX0JJVCwgYmFzZSArIEpQRUdfRU5DX1JT VEIpOw0KKwl3cml0ZWwoMHgwMCwgYmFzZSArIEpQRUdfRU5DX0NPREVDX1NFTCk7DQorfQ0KKw0K K3UzMiBtdGtfanBlZ19lbmNfZ2V0X2FuZF9jbGVhcl9pbnRfc3RhdHVzKHZvaWQgX19pb21lbSAq YmFzZSkNCit7DQorCXUzMiByZXQ7DQorDQorCXJldCA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19J TlRfU1RTKSAmDQorCQkgICAgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUTsNCisJaWYg KHJldCkNCisJCXdyaXRlbCgwLCBiYXNlICsgSlBFR19FTkNfSU5UX1NUUyk7DQorDQorCXJldHVy biByZXQ7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9faW9t ZW0gKmJhc2UpDQorew0KKwlyZXR1cm4gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RNQV9BRERSMCkg LQ0KKwkgICAgICAgcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQorfQ0KKw0KK3Uz MiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgaXJxX3N0 YXR1cykNCit7DQorCWlmIChpcnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRVU19ET05FKQ0K KwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORTsNCisJZWxzZSBpZiAoaXJxX3N0YXR1 cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfU1RBTEwpDQorCQlyZXR1cm4gTVRLX0pQRUdfRU5DX1JF U1VMVF9TVEFMTDsNCisJZWxzZQ0KKwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNVTFRfVkNPREVD X0lSUTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2ltZ19zaXplKHZvaWQgX19pb21l bSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQ0KK3sNCisJdTMyIHZhbHVlOw0KKw0KKwl2 YWx1ZSA9IHdpZHRoIDw8IDE2IHwgaGVpZ2h0Ow0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVH X0VOQ19JTUdfU0laRSk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9ibGtfbnVtKHZv aWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJCQkgICAgICB1 MzIgaGVpZ2h0KQ0KK3sNCisJdTMyIGJsa19udW07DQorCXUzMiBpc180MjA7DQorCXUzMiBwYWRk aW5nX3dpZHRoOw0KKwl1MzIgcGFkZGluZ19oZWlnaHQ7DQorCXUzMiBsdW1hX2Jsb2NrczsNCisJ dTMyIGNocm9tYV9ibG9ja3M7DQorDQorCWlzXzQyMCA9IChlbmNfZm9ybWF0ID09IFY0TDJfUElY X0ZNVF9OVjEyTSB8fA0KKwkJICBlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjIxTSkgPyAx IDogMDsNCisJcGFkZGluZ193aWR0aCA9IHJvdW5kX3VwKHdpZHRoLCAxNik7DQorCXBhZGRpbmdf aGVpZ2h0ID0gcm91bmRfdXAoaGVpZ2h0LCBpc180MjAgPyAxNiA6IDgpOw0KKw0KKwlsdW1hX2Js b2NrcyA9IHBhZGRpbmdfd2lkdGggLyA4ICogcGFkZGluZ19oZWlnaHQgLyA4Ow0KKwlpZiAoaXNf NDIwKQ0KKwkJY2hyb21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tzIC8gNDsNCisJZWxzZQ0KKwkJY2hy b21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tzIC8gMjsNCisNCisJYmxrX251bSA9IGx1bWFfYmxvY2tz ICsgMiAqIGNocm9tYV9ibG9ja3MgLSAxOw0KKw0KKwl3cml0ZWwoYmxrX251bSwgYmFzZSArIEpQ RUdfRU5DX0JMS19OVU0pOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zZXRfc3RyaWRlKHZv aWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJCQkgICAgIHUz MiBoZWlnaHQsIHUzMiBieXRlc3BlcmxpbmUpDQorew0KKwl1MzIgaW1nX3N0cmlkZTsNCisJdTMy IG1lbV9zdHJpZGU7DQorDQorCWlmIChlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjEyTSB8 fA0KKwkgICAgZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pIHsNCisJCWltZ19zdHJp ZGUgPSByb3VuZF91cCh3aWR0aCwgMTYpOw0KKwkJbWVtX3N0cmlkZSA9IGJ5dGVzcGVybGluZTsN CisJfSBlbHNlIHsNCisJCWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCAqIDIsIDMyKTsNCisJ CW1lbV9zdHJpZGUgPSBpbWdfc3RyaWRlOw0KKwl9DQorDQorCXdyaXRlbChpbWdfc3RyaWRlLCBi YXNlICsgSlBFR19FTkNfSU1HX1NUUklERSk7DQorCXdyaXRlbChtZW1fc3RyaWRlLCBiYXNlICsg SlBFR19FTkNfU1RSSURFKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X3NyY19hZGRy KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHNyY19hZGRyLA0KKwkJCSAgICAgICB1MzIgcGxhbmVf aW5kZXgpDQorew0KKwlpZiAoIXBsYW5lX2luZGV4KQ0KKwkJd3JpdGVsKHNyY19hZGRyLCBiYXNl ICsgSlBFR19FTkNfU1JDX0xVTUFfQUREUik7DQorCWVsc2UNCisJCXdyaXRlbChzcmNfYWRkciwg YmFzZSArIEpQRUdfRU5DX1NSQ19DSFJPTUFfQUREUik7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdf ZW5jX3NldF9kc3RfYWRkcih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBkc3RfYWRkciwNCisJCQkg ICAgICAgdTMyIHN0YWxsX3NpemUsIHUzMiBpbml0X29mZnNldCwNCisJCQkgICAgICAgdTMyIG9m ZnNldF9tYXNrKQ0KK3sNCisJd3JpdGVsKGluaXRfb2Zmc2V0ICYgfjB4ZiwgYmFzZSArIEpQRUdf RU5DX09GRlNFVF9BRERSKTsNCisJd3JpdGVsKG9mZnNldF9tYXNrICYgMHhmLCBiYXNlICsgSlBF R19FTkNfQllURV9PRkZTRVRfTUFTSyk7DQorCXdyaXRlbChkc3RfYWRkciAmIH4weGYsIGJhc2Ug KyBKUEVHX0VOQ19EU1RfQUREUjApOw0KKwl3cml0ZWwoKGRzdF9hZGRyICsgc3RhbGxfc2l6ZSkg JiB+MHhmLCBiYXNlICsgSlBFR19FTkNfU1RBTExfQUREUjApOw0KK30NCisNCitzdGF0aWMgdm9p ZCBtdGtfanBlZ19lbmNfc2V0X3F1YWxpdHkodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgcXVhbGl0 eSkNCit7DQorCXUzMiB2YWx1ZTsNCisJdTMyIGksIGVuY19xdWFsaXR5Ow0KKw0KKwllbmNfcXVh bGl0eSA9IG10a19qcGVnX2VuY19xdWFsaXR5WzBdLmhhcmR3YXJlX3ZhbHVlOw0KKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShtdGtfanBlZ19lbmNfcXVhbGl0eSk7IGkrKykgew0KKwkJaWYg KHF1YWxpdHkgPD0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0ucXVhbGl0eV9wYXJhbSkgew0KKwkJ CWVuY19xdWFsaXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0uaGFyZHdhcmVfdmFsdWU7DQor CQkJYnJlYWs7DQorCQl9DQorCX0NCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsgSlBFR19FTkNf UVVBTElUWSk7DQorCXZhbHVlID0gKHZhbHVlICYgSlBFR19FTkNfUVVBTElUWV9NQVNLKSB8IGVu Y19xdWFsaXR5Ow0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19RVUFMSVRZKTsNCit9 DQorDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX3NldF9jdHJsKHZvaWQgX19pb21lbSAqYmFz ZSwgdTMyIGVuY19mb3JtYXQsDQorCQkJCSAgYm9vbCBleGlmX2VuLCB1MzIgcmVzdGFydF9pbnRl cnZhbCkNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsgSlBFR19F TkNfQ1RSTCk7DQorCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX1lVVl9GT1JNQVRfTUFTSzsNCisJ dmFsdWUgfD0gKGVuY19mb3JtYXQgJiAzKSA8PCAzOw0KKwlpZiAoZXhpZl9lbikNCisJCXZhbHVl IHw9IEpQRUdfRU5DX0NUUkxfRklMRV9GT1JNQVRfQklUOw0KKwllbHNlDQorCQl2YWx1ZSAmPSB+ SlBFR19FTkNfQ1RSTF9GSUxFX0ZPUk1BVF9CSVQ7DQorCWlmIChyZXN0YXJ0X2ludGVydmFsKQ0K KwkJdmFsdWUgfD0gSlBFR19FTkNfQ1RSTF9SRVNUQVJUX0VOX0JJVDsNCisJZWxzZQ0KKwkJdmFs dWUgJj0gfkpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQ7DQorCXdyaXRlbCh2YWx1ZSwgYmFz ZSArIEpQRUdfRU5DX0NUUkwpOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zZXRfY29uZmln KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIGJvb2wgZXhpZl9lbiwNCisJCQkg ICAgIHUzMiBxdWFsaXR5LCB1MzIgcmVzdGFydF9pbnRlcnZhbCkNCit7DQorCW10a19qcGVnX2Vu Y19zZXRfcXVhbGl0eShiYXNlLCBxdWFsaXR5KTsNCisNCisJbXRrX2pwZWdfZW5jX3NldF9jdHJs KGJhc2UsIGVuY19mb3JtYXQsIGV4aWZfZW4sIHJlc3RhcnRfaW50ZXJ2YWwpOw0KKw0KKwl3cml0 ZWwocmVzdGFydF9pbnRlcnZhbCwgYmFzZSArIEpQRUdfRU5DX1JTVF9NQ1VfTlVNKTsNCit9DQor DQordm9pZCBtdGtfanBlZ19lbmNfc3RhcnQodm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJdTMy IHZhbHVlOw0KKw0KKwl2YWx1ZSA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJdmFs dWUgfD0gSlBFR19FTkNfQ1RSTF9JTlRfRU5fQklUIHwgSlBFR19FTkNfQ1RSTF9FTkFCTEVfQklU Ow0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCit9DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaCBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjczZmFmNDliNjY3Yw0KLS0tIC9kZXYv bnVsbA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNf aHcuaA0KQEAgLTAsMCArMSwxMjMgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5ICovDQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFUZWsgSW5jLg0K KyAqIEF1dGhvcjogWGlhIEppYW5nIDx4aWEuamlhbmdAbWVkaWF0ZWsuY29tPg0KKyAqDQorICov DQorDQorI2lmbmRlZiBfTVRLX0pQRUdfRU5DX0hXX0gNCisjZGVmaW5lIF9NVEtfSlBFR19FTkNf SFdfSA0KKw0KKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItY29yZS5oPg0KKw0KKyNpbmNsdWRl ICJtdGtfanBlZ19jb3JlLmgiDQorDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX0RPTkUJ QklUKDApDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX1NUQUxMCUJJVCgxKQ0KKyNkZWZp bmUgSlBFR19FTkNfSU5UX1NUQVRVU19WQ09ERUNfSVJRCUJJVCg0KQ0KKyNkZWZpbmUgSlBFR19F TkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUQkweDEzDQorDQorI2RlZmluZSBKUEVHX0VOQ19EU1Rf QUREUl9PRkZTRVRfTUFTSwlHRU5NQVNLKDMsIDApDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZ X01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KKw0KKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9ZVVZfRk9S TUFUX01BU0sJMHgxOA0KKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9SRVNUQVJUX0VOX0JJVAlCSVQo MTApDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJVAlCSVQoNSkNCisjZGVm aW5lIEpQRUdfRU5DX0NUUkxfSU5UX0VOX0JJVAlCSVQoMikNCisjZGVmaW5lIEpQRUdfRU5DX0NU UkxfRU5BQkxFX0JJVAlCSVQoMCkNCisjZGVmaW5lIEpQRUdfRU5DX1JFU0VUX0JJVAkJQklUKDAp DQorDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYJMA0KKyNkZWZpbmUgSlBFR19F TkNfWVVWX0ZPUk1BVF9ZVllVCTENCisjZGVmaW5lIEpQRUdfRU5DX1lVVl9GT1JNQVRfTlYxMgky DQorI2RlZmluZSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEJMw0KKw0KKyNkZWZpbmUgSlBFR19F TkNfUVVBTElUWV9RNjAJCTB4MA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODAJCTB4MQ0K KyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTAJCTB4Mg0KKyNkZWZpbmUgSlBFR19FTkNfUVVB TElUWV9ROTUJCTB4Mw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RMzkJCTB4NA0KKyNkZWZp bmUgSlBFR19FTkNfUVVBTElUWV9RNjgJCTB4NQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9R ODQJCTB4Ng0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTIJCTB4Nw0KKyNkZWZpbmUgSlBF R19FTkNfUVVBTElUWV9RNDgJCTB4OA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNzQJCTB4 YQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODcJCTB4Yg0KKyNkZWZpbmUgSlBFR19FTkNf UVVBTElUWV9RMzQJCTB4Yw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjQJCTB4ZQ0KKyNk ZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODIJCTB4Zg0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElU WV9ROTcJCTB4MTANCisNCisjZGVmaW5lIEpQRUdfRU5DX1JTVEIJCQkweDEwMA0KKyNkZWZpbmUg SlBFR19FTkNfQ1RSTAkJCTB4MTA0DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZCQkweDEwOA0K KyNkZWZpbmUgSlBFR19FTkNfQkxLX05VTQkJMHgxMEMNCisjZGVmaW5lIEpQRUdfRU5DX0JMS19D TlQJCTB4MTEwDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RTCQkweDExYw0KKyNkZWZpbmUgSlBF R19FTkNfRFNUX0FERFIwCQkweDEyMA0KKyNkZWZpbmUgSlBFR19FTkNfRE1BX0FERFIwCQkweDEy NA0KKyNkZWZpbmUgSlBFR19FTkNfU1RBTExfQUREUjAJCTB4MTI4DQorI2RlZmluZSBKUEVHX0VO Q19PRkZTRVRfQUREUgkJMHgxMzgNCisjZGVmaW5lIEpQRUdfRU5DX1JTVF9NQ1VfTlVNCQkweDE1 MA0KKyNkZWZpbmUgSlBFR19FTkNfSU1HX1NJWkUJCTB4MTU0DQorI2RlZmluZSBKUEVHX0VOQ19E RUJVR19JTkZPMAkJMHgxNjANCisjZGVmaW5lIEpQRUdfRU5DX0RFQlVHX0lORk8xCQkweDE2NA0K KyNkZWZpbmUgSlBFR19FTkNfVE9UQUxfQ1lDTEUJCTB4MTY4DQorI2RlZmluZSBKUEVHX0VOQ19C WVRFX09GRlNFVF9NQVNLCTB4MTZjDQorI2RlZmluZSBKUEVHX0VOQ19TUkNfTFVNQV9BRERSCQkw eDE3MA0KKyNkZWZpbmUgSlBFR19FTkNfU1JDX0NIUk9NQV9BRERSCTB4MTc0DQorI2RlZmluZSBK UEVHX0VOQ19TVFJJREUJCQkweDE3OA0KKyNkZWZpbmUgSlBFR19FTkNfSU1HX1NUUklERQkJMHgx N2MNCisjZGVmaW5lIEpQRUdfRU5DX0RDTV9DVFJMCQkweDMwMA0KKyNkZWZpbmUgSlBFR19FTkNf Q09ERUNfU0VMCQkweDMxNA0KKyNkZWZpbmUgSlBFR19FTkNfVUxUUkFfVEhSRVMJCTB4MzE4DQor DQorZW51bSB7DQorCU1US19KUEVHX0VOQ19SRVNVTFRfRE9ORSwNCisJTVRLX0pQRUdfRU5DX1JF U1VMVF9TVEFMTCwNCisJTVRLX0pQRUdfRU5DX1JFU1VMVF9WQ09ERUNfSVJRDQorfTsNCisNCisv KioNCisgKiBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCAtIEpQRUcgZW5jb2RlciBxdWFsaXR5IGRh dGENCisgKiBAcXVhbGl0eV9wYXJhbToJcXVhbGl0eSB2YWx1ZQ0KKyAqIEBoYXJkd2FyZV92YWx1 ZToJaGFyZHdhcmUgdmFsdWUgb2YgcXVhbGl0eQ0KKyAqLw0KK3N0cnVjdCBtdGtfanBlZ19lbmNf cWx0IHsNCisJdTgJcXVhbGl0eV9wYXJhbTsNCisJdTgJaGFyZHdhcmVfdmFsdWU7DQorfTsNCisN CisvKioNCisgKiBzdHJ1Y3QgbXRfanBlZ19lbmNfYnMgLSBKUEVHIGVuY29kZXIgYml0c3RyZWFt ICBidWZmZXINCisgKiBAZG1hX2FkZHI6CQkJSlBFRyBlbmNvZGVyIGRlc3RpbmF0aW9uIGFkZHJl c3MNCisgKiBAc2l6ZToJCQlKUEVHIGVuY29kZXIgYmlzdHJlYW0gc2l6ZQ0KKyAqIEBkbWFfYWRk cl9vZmZzZXQ6CQlKUEVHIGVuY29kZXIgb2Zmc2V0IGFkZHJlc3MNCisgKiBAZG1hX2FkZHJfb2Zm c2V0bWFzazoJSlBFRyBlbmNvZGVyIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2Zmc2V0IG1hc2sNCisg Ki8NCitzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzIHsNCisJZG1hX2FkZHJfdAlkbWFfYWRkcjsNCisJ c2l6ZV90CQlzaXplOw0KKwl1MzIJCWRtYV9hZGRyX29mZnNldDsNCisJdTMyCQlkbWFfYWRkcl9v ZmZzZXRtYXNrOw0KK307DQorDQordm9pZCBtdGtfanBlZ19lbmNfcmVzZXQodm9pZCBfX2lvbWVt ICpiYXNlKTsNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9hbmRfY2xlYXJfaW50X3N0YXR1cyh2b2lk IF9faW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2b2lkIF9f aW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVt ICpiYXNlLCB1MzIgaXJxX3N0YXR1cyk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2ltZ19zaXpl KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsNCit2b2lkIG10a19q cGVnX2VuY19zZXRfYmxrX251bSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1 MzIgd2lkdGgsDQorCQkJICAgICAgdTMyIGhlaWdodCk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0 X3N0cmlkZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1MzIgd2lkdGgsDQor CQkJICAgICB1MzIgaGVpZ2h0LCB1MzIgYnl0ZXNwZXJsaW5lKTsNCit2b2lkIG10a19qcGVnX2Vu Y19zZXRfc3JjX2FkZHIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgc3JjX2FkZHIsDQorCQkJICAg ICAgIHUzMiBwbGFuZV9pbmRleCk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2RzdF9hZGRyKHZv aWQgX19pb21lbSAqYmFzZSwgdTMyIGRzdF9hZGRyLA0KKwkJCSAgICAgICB1MzIgc3RhbGxfc2l6 ZSwgdTMyIGluaXRfb2Zmc2V0LA0KKwkJCSAgICAgICB1MzIgb2Zmc2V0X21hc2spOw0KK3ZvaWQg bXRrX2pwZWdfZW5jX3NldF9jb25maWcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1h dCwgYm9vbCBleGlmX2VuLA0KKwkJCSAgICAgdTMyIHF1YWxpdHksIHUzMiByZXN0YXJ0X2ludGVy dmFsKTsNCit2b2lkIG10a19qcGVnX2VuY19zdGFydCh2b2lkIF9faW9tZW0gKmVuY19yZWdfYmFz ZSk7DQorDQorI2VuZGlmIC8qIF9NVEtfSlBFR19FTkNfSFdfSCAqLw0KLS0gDQoyLjE4LjANCg==