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=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A333EC433E3 for ; Thu, 4 Jun 2020 07:30:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 54A692072E for ; Thu, 4 Jun 2020 07:30:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="G6nV4u1u" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728224AbgFDHaC (ORCPT ); Thu, 4 Jun 2020 03:30:02 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:11367 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728161AbgFDH37 (ORCPT ); Thu, 4 Jun 2020 03:29:59 -0400 X-UUID: 1cbed5bb215243e6ab0af4264b991ea8-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=rZ1o33Twgh9bBmO4eY88pVK5LST9CrCojDTTPIZDY9I=; b=G6nV4u1uYP87QY6rn59p7NSVH7g9caBROWMAAmY9qqBAdPtIZSoFNjqUtRyDb+0mrp4hWtEpgXPwPPnlYp+wIjO+uTd++lsl3eeH7R20Wn2klSfEauVNpmnF7ePZG6/MLBrTfF4qplZKUYNvDNp1kYm+urNzLb4kTuT0n6IkNhw=; X-UUID: 1cbed5bb215243e6ab0af4264b991ea8-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 787135365; Thu, 04 Jun 2020 15:29:39 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 4 Jun 2020 15:29:36 +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 15:29:35 +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 v9 18/18] media: platform: Add jpeg enc feature Date: Thu, 4 Jun 2020 15:27:08 +0800 Message-ID: <20200604072708.9468-19-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200604072708.9468-1-xia.jiang@mediatek.com> References: <20200604072708.9468-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@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 aW5kZXggOGQ1YTc4Yzc3NWE2Li43NTQwMzBlNGFkZGUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21l 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 aWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCSAgICAgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAq Y2FwKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2RldiAqanBlZyA9IHZpZGVvX2RydmRhdGEoZmls ZSk7DQorDQorCXN0cnNjcHkoY2FwLT5kcml2ZXIsIE1US19KUEVHX05BTUUsIHNpemVvZihjYXAt PmRyaXZlcikpOw0KKwlzdHJzY3B5KGNhcC0+Y2FyZCwgTVRLX0pQRUdfTkFNRSAiIGVuY29kZXIi LCBzaXplb2YoY2FwLT5jYXJkKSk7DQorCXNucHJpbnRmKGNhcC0+YnVzX2luZm8sIHNpemVvZihj YXAtPmJ1c19pbmZvKSwgInBsYXRmb3JtOiVzIiwNCisJCSBkZXZfbmFtZShqcGVnLT5kZXYpKTsN CisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3F1ZXJ5Y2Fw KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCSAgICAgc3RydWN0IHY0bDJfY2Fw YWJpbGl0eSAqY2FwKQ0KIHsNCkBAIC04OCw2ICsxNTcsNTQgQEAgc3RhdGljIGludCBtdGtfanBl Z19kZWNfcXVlcnljYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXJldHVybiAw Ow0KIH0NCiANCitzdGF0aWMgaW50IHZpZGlvY19qcGVnX2VuY19zX2N0cmwoc3RydWN0IHY0bDJf Y3RybCAqY3RybCkNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IGN0cmxfdG9fY3R4 KGN0cmwpOw0KKw0KKwlzd2l0Y2ggKGN0cmwtPmlkKSB7DQorCWNhc2UgVjRMMl9DSURfSlBFR19S RVNUQVJUX0lOVEVSVkFMOg0KKwkJY3R4LT5yZXN0YXJ0X2ludGVydmFsID0gY3RybC0+dmFsOw0K KwkJYnJlYWs7DQorCWNhc2UgVjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZOg0KKwkJ Y3R4LT5lbmNfcXVhbGl0eSA9IGN0cmwtPnZhbDsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lE X0pQRUdfQUNUSVZFX01BUktFUjoNCisJCWN0eC0+ZW5hYmxlX2V4aWYgPSBjdHJsLT52YWwgJiBW NEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxID8NCisJCQkJICAgdHJ1ZSA6IGZhbHNlOw0KKwkJ YnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg djRsMl9jdHJsX29wcyBtdGtfanBlZ19lbmNfY3RybF9vcHMgPSB7DQorCS5zX2N0cmwgPSB2aWRp b2NfanBlZ19lbmNfc19jdHJsLA0KK307DQorDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfY3Ry bHNfc2V0dXAoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KK3sNCisJY29uc3Qgc3RydWN0IHY0 bDJfY3RybF9vcHMgKm9wcyA9ICZtdGtfanBlZ19lbmNfY3RybF9vcHM7DQorCXN0cnVjdCB2NGwy X2N0cmxfaGFuZGxlciAqaGFuZGxlciA9ICZjdHgtPmN0cmxfaGRsOw0KKw0KKwl2NGwyX2N0cmxf aGFuZGxlcl9pbml0KGhhbmRsZXIsIDMpOw0KKw0KKwl2NGwyX2N0cmxfbmV3X3N0ZChoYW5kbGVy LCBvcHMsIFY0TDJfQ0lEX0pQRUdfUkVTVEFSVF9JTlRFUlZBTCwgMCwgMTAwLA0KKwkJCSAgMSwg MCk7DQorCXY0bDJfY3RybF9uZXdfc3RkKGhhbmRsZXIsIG9wcywgVjRMMl9DSURfSlBFR19DT01Q UkVTU0lPTl9RVUFMSVRZLCA0OCwNCisJCQkgIDEwMCwgMSwgOTApOw0KKwl2NGwyX2N0cmxfbmV3 X3N0ZChoYW5kbGVyLCBvcHMsIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktFUiwgMCwNCisJCQkg IFY0TDJfSlBFR19BQ1RJVkVfTUFSS0VSX0FQUDEsIDAsIDApOw0KKw0KKwlpZiAoaGFuZGxlci0+ ZXJyb3IpIHsNCisJCXY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmN0eC0+Y3RybF9oZGwpOw0KKwkJ cmV0dXJuIGhhbmRsZXItPmVycm9yOw0KKwl9DQorDQorCXY0bDJfY3RybF9oYW5kbGVyX3NldHVw KCZjdHgtPmN0cmxfaGRsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRr X2pwZWdfZW51bV9mbXQoc3RydWN0IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZm9ybWF0cywgaW50 IG4sDQogCQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmLCB1MzIgdHlwZSkNCiB7DQpAQCAt MTA5LDYgKzIyNiwxNCBAQCBzdGF0aWMgaW50IG10a19qcGVnX2VudW1fZm10KHN0cnVjdCBtdGtf anBlZ19mbXQgKm10a19qcGVnX2Zvcm1hdHMsIGludCBuLA0KIAlyZXR1cm4gMDsNCiB9DQogDQor c3RhdGljIGludCBtdGtfanBlZ19lbmNfZW51bV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCisJCQkJCSBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KK3sNCisJcmV0 dXJuIG10a19qcGVnX2VudW1fZm10KG10a19qcGVnX2VuY19mb3JtYXRzLA0KKwkJCQkgTVRLX0pQ RUdfRU5DX05VTV9GT1JNQVRTLCBmLA0KKwkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRV UkUpOw0KK30NCisNCiBzdGF0aWMgaW50IG10a19qcGVnX2RlY19lbnVtX2ZtdF92aWRfY2FwKHN0 cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkJIHN0cnVjdCB2NGwyX2ZtdGRlc2Mg KmYpDQogew0KQEAgLTExNyw2ICsyNDIsMTQgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfZW51 bV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCQkJIE1US19K UEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19l bmNfZW51bV9mbXRfdmlkX291dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJ CSBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KK3sNCisJcmV0dXJuIG10a19qcGVnX2VudW1fZm10 KG10a19qcGVnX2VuY19mb3JtYXRzLA0KKwkJCQkgTVRLX0pQRUdfRU5DX05VTV9GT1JNQVRTLCBm LA0KKwkJCQkgTVRLX0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCk7DQorfQ0KKw0KIHN0YXRpYyBp bnQgbXRrX2pwZWdfZGVjX2VudW1fZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KnByaXYsDQogCQkJCQkgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikNCiB7DQpAQCAtMTMyLDkzICsy NjUsNjYgQEAgbXRrX2pwZWdfZ2V0X3FfZGF0YShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsIGVu dW0gdjRsMl9idWZfdHlwZSB0eXBlKQ0KIAlyZXR1cm4gJmN0eC0+Y2FwX3E7DQogfQ0KIA0KLXN0 YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10ICptdGtfanBlZ19maW5kX2Zvcm1hdChzdHJ1Y3QgbXRr X2pwZWdfY3R4ICpjdHgsDQotCQkJCQkJIHUzMiBwaXhlbGZvcm1hdCwNCitzdGF0aWMgc3RydWN0 IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZmluZF9mb3JtYXQodTMyIHBpeGVsZm9ybWF0LA0KIAkJ CQkJCSB1bnNpZ25lZCBpbnQgZm10X3R5cGUpDQogew0KLQl1bnNpZ25lZCBpbnQgaywgZm10X2Zs YWc7DQorCXVuc2lnbmVkIGludCBrOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQ7DQogDQot CWZtdF9mbGFnID0gKGZtdF90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkgPw0KLQkJ ICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVCA6DQotCQkgICBNVEtfSlBFR19GTVRfRkxB R19ERUNfQ0FQVFVSRTsNCisJZm9yIChrID0gMDsgayA8IE1US19KUEVHX0VOQ19OVU1fRk9STUFU UzsgaysrKSB7DQorCQlmbXQgPSAmbXRrX2pwZWdfZW5jX2Zvcm1hdHNba107DQorDQorCQlpZiAo Zm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQgJiYgZm10LT5mbGFncyAmIGZtdF90eXBlKQ0KKwkJ CXJldHVybiBmbXQ7DQorCX0NCiANCiAJZm9yIChrID0gMDsgayA8IE1US19KUEVHX0RFQ19OVU1f Rk9STUFUUzsgaysrKSB7DQotCQlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQgPSAmbXRrX2pwZWdf ZGVjX2Zvcm1hdHNba107DQorCQlmbXQgPSAmbXRrX2pwZWdfZGVjX2Zvcm1hdHNba107DQogDQot CQlpZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQgJiYgZm10LT5mbGFncyAmIGZtdF9mbGFn KQ0KKwkJaWYgKGZtdC0+Zm91cmNjID09IHBpeGVsZm9ybWF0ICYmIGZtdC0+ZmxhZ3MgJiBmbXRf dHlwZSkNCiAJCQlyZXR1cm4gZm10Ow0KIAl9DQogDQogCXJldHVybiBOVUxMOw0KIH0NCiANCi1z dGF0aWMgdm9pZCBtdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4 ICpjdHgsDQotCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQotew0KLQlzdHJ1Y3Qg djRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZtdC5waXhfbXA7DQotCXN0cnVj dCBtdGtfanBlZ19xX2RhdGEgKnFfZGF0YTsNCi0JaW50IGk7DQotDQotCXFfZGF0YSA9IG10a19q cGVnX2dldF9xX2RhdGEoY3R4LCBmLT50eXBlKTsNCi0NCi0JcGl4X21wLT53aWR0aCA9IHFfZGF0 YS0+dzsNCi0JcGl4X21wLT5oZWlnaHQgPSBxX2RhdGEtPmg7DQotCXBpeF9tcC0+cGl4ZWxmb3Jt YXQgPSBxX2RhdGEtPmZtdC0+Zm91cmNjOw0KLQlwaXhfbXAtPm51bV9wbGFuZXMgPSBxX2RhdGEt PmZtdC0+Y29scGxhbmVzOw0KLQ0KLQlmb3IgKGkgPSAwOyBpIDwgcGl4X21wLT5udW1fcGxhbmVz OyBpKyspIHsNCi0JCXBpeF9tcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZSA9IHFfZGF0YS0+ Ynl0ZXNwZXJsaW5lW2ldOw0KLQkJcGl4X21wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0gcV9k YXRhLT5zaXplaW1hZ2VbaV07DQotCX0NCi19DQotDQotc3RhdGljIGludCBtdGtfanBlZ190cnlf Zm10X21wbGFuZShzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsDQotCQkJCSAgIHN0cnVjdCBtdGtfanBl Z19mbXQgKmZtdCwNCi0JCQkJICAgc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBpbnQgcV90eXBl KQ0KK3N0YXRpYyBpbnQgdmlkaW9jX3RyeV9mbXQoc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1 Y3QgbXRrX2pwZWdfZm10ICpmbXQpDQogew0KIAlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFu ZSAqcGl4X21wID0gJmYtPmZtdC5waXhfbXA7DQogCWludCBpOw0KIA0KIAlwaXhfbXAtPmZpZWxk ID0gVjRMMl9GSUVMRF9OT05FOw0KLQ0KLQlpZiAoY3R4LT5zdGF0ZSAhPSBNVEtfSlBFR19JTklU KSB7DQotCQltdGtfanBlZ19hZGp1c3RfZm10X21wbGFuZShjdHgsIGYpOw0KLQkJcmV0dXJuIDA7 DQotCX0NCi0NCiAJcGl4X21wLT5udW1fcGxhbmVzID0gZm10LT5jb2xwbGFuZXM7DQogCXBpeF9t cC0+cGl4ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsNCiANCi0JaWYgKHFfdHlwZSA9PSBNVEtfSlBF R19GTVRfVFlQRV9PVVRQVVQpIHsNCi0JCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9mb3JtYXQgKnBm bXQgPSAmcGl4X21wLT5wbGFuZV9mbXRbMF07DQotDQorCWlmIChmbXQtPmZvdXJjYyA9PSBWNEwy X1BJWF9GTVRfSlBFRykgew0KIAkJcGl4X21wLT5oZWlnaHQgPSBjbGFtcChwaXhfbXAtPmhlaWdo dCwgTVRLX0pQRUdfTUlOX0hFSUdIVCwNCiAJCQkJICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQp Ow0KIAkJcGl4X21wLT53aWR0aCA9IGNsYW1wKHBpeF9tcC0+d2lkdGgsIE1US19KUEVHX01JTl9X SURUSCwNCiAJCQkJICAgICAgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCi0NCi0JCXBmbXQtPmJ5dGVz cGVybGluZSA9IDA7DQotCQkvKiBTb3VyY2Ugc2l6ZSBtdXN0IGJlIGFsaWduZWQgdG8gMTI4ICov DQotCQlwZm10LT5zaXplaW1hZ2UgPSByb3VuZF91cChwZm10LT5zaXplaW1hZ2UsIDEyOCk7DQot CQlpZiAocGZtdC0+c2l6ZWltYWdlID09IDApDQotCQkJcGZtdC0+c2l6ZWltYWdlID0gTVRLX0pQ RUdfREVGQVVMVF9TSVpFSU1BR0U7DQotCQlyZXR1cm4gMDsNCisJCXBpeF9tcC0+cGxhbmVfZm10 WzBdLmJ5dGVzcGVybGluZSA9IDA7DQorCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2Ug PQ0KKwkJCQlyb3VuZF91cChwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2UsIDEyOCk7DQor CQlpZiAocGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlID09IDApDQorCQkJcGl4X21wLT5w bGFuZV9mbXRbMF0uc2l6ZWltYWdlID0NCisJCQkJTVRLX0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7 DQorCX0gZWxzZSB7DQorCQlwaXhfbXAtPmhlaWdodCA9IGNsYW1wKHJvdW5kX3VwKHBpeF9tcC0+ aGVpZ2h0LCBmbXQtPnZfYWxpZ24pLA0KKwkJCQkgICAgICAgTVRLX0pQRUdfTUlOX0hFSUdIVCwN CisJCQkJICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKwkJcGl4X21wLT53aWR0aCA9IGNs YW1wKHJvdW5kX3VwKHBpeF9tcC0+d2lkdGgsIGZtdC0+aF9hbGlnbiksDQorCQkJCSAgICAgIE1U S19KUEVHX01JTl9XSURUSCwgTVRLX0pQRUdfTUFYX1dJRFRIKTsNCisJCWZvciAoaSA9IDA7IGkg PCBwaXhfbXAtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9m b3JtYXQgKnBmbXQgPQ0KKwkJCQkJCQkmcGl4X21wLT5wbGFuZV9mbXRbaV07DQorCQkJdTMyIHN0 cmlkZSA9IHBpeF9tcC0+d2lkdGggKiBmbXQtPmhfc2FtcGxlW2ldIC8gNDsNCisJCQl1MzIgaCA9 IHBpeF9tcC0+aGVpZ2h0ICogZm10LT52X3NhbXBsZVtpXSAvIDQ7DQorDQorCQkJcGZtdC0+Ynl0 ZXNwZXJsaW5lID0gc3RyaWRlOw0KKwkJCXBmbXQtPnNpemVpbWFnZSA9IHN0cmlkZSAqIGg7DQor CQl9DQogCX0NCiANCi0JLyogdHlwZSBpcyBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFICovDQot CXBpeF9tcC0+aGVpZ2h0ID0gY2xhbXAocm91bmRfdXAocGl4X21wLT5oZWlnaHQsIGZtdC0+dl9h bGlnbiksDQotCQkJICAgICAgIE1US19KUEVHX01JTl9IRUlHSFQsIE1US19KUEVHX01BWF9IRUlH SFQpOw0KLQlwaXhfbXAtPndpZHRoID0gY2xhbXAocm91bmRfdXAocGl4X21wLT53aWR0aCwgZm10 LT5oX2FsaWduKSwNCi0JCQkgICAgICBNVEtfSlBFR19NSU5fV0lEVEgsIE1US19KUEVHX01BWF9X SURUSCk7DQotDQotCWZvciAoaSA9IDA7IGkgPCBmbXQtPmNvbHBsYW5lczsgaSsrKSB7DQotCQlz dHJ1Y3QgdjRsMl9wbGFuZV9waXhfZm9ybWF0ICpwZm10ID0gJnBpeF9tcC0+cGxhbmVfZm10W2ld Ow0KLQkJdTMyIHN0cmlkZSA9IHBpeF9tcC0+d2lkdGggKiBmbXQtPmhfc2FtcGxlW2ldIC8gNDsN Ci0JCXUzMiBoID0gcGl4X21wLT5oZWlnaHQgKiBmbXQtPnZfc2FtcGxlW2ldIC8gNDsNCi0NCi0J CXBmbXQtPmJ5dGVzcGVybGluZSA9IHN0cmlkZTsNCi0JCXBmbXQtPnNpemVpbWFnZSA9IHN0cmlk ZSAqIGg7DQotCX0NCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTI3MSwxNCArMzc3LDM1IEBAIHN0 YXRpYyBpbnQgbXRrX2pwZWdfZ19mbXRfdmlkX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqcHJpdiwNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3Ry eV9mbXRfdmlkX2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQorCQkJ CQkgICAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KK3sNCisJc3RydWN0IG10a19qcGVnX2N0 eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZm10 ICpmbXQ7DQorDQorCWZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGYtPmZtdC5waXhfbXAucGl4 ZWxmb3JtYXQsDQorCQkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFKTsNCisJaWYg KCFmbXQpDQorCQlmbXQgPSBjdHgtPmNhcF9xLmZtdDsNCisNCisJdjRsMl9kYmcoMiwgZGVidWcs ICZjdHgtPmpwZWctPnY0bDJfZGV2LCAiKCVkKSB0cnlfZm10OiVjJWMlYyVjXG4iLA0KKwkJIGYt PnR5cGUsDQorCQkgKGZtdC0+Zm91cmNjICYgMHhmZiksDQorCQkgKGZtdC0+Zm91cmNjID4+ICA4 ICYgMHhmZiksDQorCQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQorCQkgKGZtdC0+Zm91 cmNjID4+IDI0ICYgMHhmZikpOw0KKw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10KTsN Cit9DQorDQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfdHJ5X2ZtdF92aWRfY2FwX21wbGFuZShz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9m b3JtYXQgKmYpDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90 b19jdHgocHJpdik7DQogCXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdDsNCiANCi0JZm10ID0gbXRr X2pwZWdfZmluZF9mb3JtYXQoY3R4LCBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0LA0KLQkJCQkg ICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJZm10ID0gbXRrX2pwZWdfZmluZF9mb3Jt YXQoZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCisJCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdf REVDX0NBUFRVUkUpOw0KIAlpZiAoIWZtdCkNCiAJCWZtdCA9IGN0eC0+Y2FwX3EuZm10Ow0KIA0K QEAgLTI4OSw3ICs0MTYsMzMgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfdHJ5X2ZtdF92aWRf Y2FwX21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJCSAoZm10LT5mb3Vy Y2MgPj4gMTYgJiAweGZmKSwNCiAJCSAoZm10LT5mb3VyY2MgPj4gMjQgJiAweGZmKSk7DQogDQot CXJldHVybiBtdGtfanBlZ190cnlfZm10X21wbGFuZShmLCBmbXQsIGN0eCwgTVRLX0pQRUdfRk1U X1RZUEVfQ0FQVFVSRSk7DQorCWlmIChjdHgtPnN0YXRlICE9IE1US19KUEVHX0lOSVQpIHsNCisJ CW10a19qcGVnX2dfZm10X3ZpZF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQorCQlyZXR1cm4gMDsN CisJfQ0KKw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10KTsNCit9DQorDQorc3RhdGlj IGludCBtdGtfanBlZ19lbmNfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCisJCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpDQorew0K KwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19jdHgocHJpdik7DQor CXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdDsNCisNCisJZm10ID0gbXRrX2pwZWdfZmluZF9mb3Jt YXQoZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCisJCQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdf RU5DX09VVFBVVCk7DQorCWlmICghZm10KQ0KKwkJZm10ID0gY3R4LT5vdXRfcS5mbXQ7DQorDQor CXY0bDJfZGJnKDIsIGRlYnVnLCAmY3R4LT5qcGVnLT52NGwyX2RldiwgIiglZCkgdHJ5X2ZtdDol YyVjJWMlY1xuIiwNCisJCSBmLT50eXBlLA0KKwkJIChmbXQtPmZvdXJjYyAmIDB4ZmYpLA0KKwkJ IChmbXQtPmZvdXJjYyA+PiAgOCAmIDB4ZmYpLA0KKwkJIChmbXQtPmZvdXJjYyA+PiAxNiAmIDB4 ZmYpLA0KKwkJIChmbXQtPmZvdXJjYyA+PiAyNCAmIDB4ZmYpKTsNCisNCisJcmV0dXJuIHZpZGlv Y190cnlfZm10KGYsIGZtdCk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3RyeV9m bXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQpAQCAtMjk4 LDggKzQ1MSw4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVjX3RyeV9mbXRfdmlkX291dF9tcGxh bmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCXN0cnVjdCBtdGtfanBlZ19jdHgg KmN0eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCiAJc3RydWN0IG10a19qcGVnX2ZtdCAq Zm10Ow0KIA0KLQlmbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChjdHgsIGYtPmZtdC5waXhfbXAu cGl4ZWxmb3JtYXQsDQotCQkJCSAgIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWZtdCA9 IG10a19qcGVnX2ZpbmRfZm9ybWF0KGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQsDQorCQkJCSAg IE1US19KUEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQpOw0KIAlpZiAoIWZtdCkNCiAJCWZtdCA9IGN0 eC0+b3V0X3EuZm10Ow0KIA0KQEAgLTMxMCwxNyArNDYzLDIxIEBAIHN0YXRpYyBpbnQgbXRrX2pw ZWdfZGVjX3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsDQogCQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQogCQkgKGZtdC0+Zm91cmNjID4+ IDI0ICYgMHhmZikpOw0KIA0KLQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoZiwgZm10 LCBjdHgsIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWlmIChjdHgtPnN0YXRlICE9IE1U S19KUEVHX0lOSVQpIHsNCisJCW10a19qcGVnX2dfZm10X3ZpZF9tcGxhbmUoZmlsZSwgcHJpdiwg Zik7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlyZXR1cm4gdmlkaW9jX3RyeV9mbXQoZiwgZm10 KTsNCiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19zX2ZtdF9tcGxhbmUoc3RydWN0IG10a19q cGVnX2N0eCAqY3R4LA0KLQkJCQkgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KKwkJCQkgc3RydWN0 IHY0bDJfZm9ybWF0ICpmLCB1bnNpZ25lZCBpbnQgZm10X3R5cGUpDQogew0KIAlzdHJ1Y3QgdmIy X3F1ZXVlICp2cTsNCiAJc3RydWN0IG10a19qcGVnX3FfZGF0YSAqcV9kYXRhID0gTlVMTDsNCiAJ c3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQucGl4X21wOw0K IAlzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KLQl1bnNpZ25lZCBpbnQg Zl90eXBlOw0KIAlpbnQgaTsNCiANCiAJdnEgPSB2NGwyX20ybV9nZXRfdnEoY3R4LT5maC5tMm1f Y3R4LCBmLT50eXBlKTsNCkBAIC0zMzQsMTIgKzQ5MSwxMSBAQCBzdGF0aWMgaW50IG10a19qcGVn X3NfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCQlyZXR1cm4gLUVCVVNZ Ow0KIAl9DQogDQotCWZfdHlwZSA9IFY0TDJfVFlQRV9JU19PVVRQVVQoZi0+dHlwZSkgPw0KLQkJ CSBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQgOiBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFOw0K LQ0KLQlxX2RhdGEtPmZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGl4X21wLT5waXhl bGZvcm1hdCwgZl90eXBlKTsNCisJcV9kYXRhLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChw aXhfbXAtPnBpeGVsZm9ybWF0LCBmbXRfdHlwZSk7DQogCXFfZGF0YS0+dyA9IHBpeF9tcC0+d2lk dGg7DQogCXFfZGF0YS0+aCA9IHBpeF9tcC0+aGVpZ2h0Ow0KKwlxX2RhdGEtPmNyb3BfcmVjdC53 aWR0aCA9IHBpeF9tcC0+d2lkdGg7DQorCXFfZGF0YS0+Y3JvcF9yZWN0LmhlaWdodCA9IHBpeF9t cC0+aGVpZ2h0Ow0KIAljdHgtPmNvbG9yc3BhY2UgPSBwaXhfbXAtPmNvbG9yc3BhY2U7DQogCWN0 eC0+eWNiY3JfZW5jID0gcGl4X21wLT55Y2Jjcl9lbmM7DQogCWN0eC0+eGZlcl9mdW5jID0gcGl4 X21wLT54ZmVyX2Z1bmM7DQpAQCAtMzY1LDYgKzUyMSwxOSBAQCBzdGF0aWMgaW50IG10a19qcGVn X3NfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCXJldHVybiAwOw0KIH0N CiANCitzdGF0aWMgaW50IG10a19qcGVnX2VuY19zX2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJCSAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpm KQ0KK3sNCisJaW50IHJldDsNCisNCisJcmV0ID0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX291 dF9tcGxhbmUoZmlsZSwgcHJpdiwgZik7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0K KwlyZXR1cm4gbXRrX2pwZWdfc19mbXRfbXBsYW5lKG10a19qcGVnX2ZoX3RvX2N0eChwcml2KSwg ZiwNCisJCQkJICAgICBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUKTsNCit9DQorDQogc3Rh dGljIGludCBtdGtfanBlZ19kZWNfc19mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKnByaXYsDQogCQkJCQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikNCiB7DQpA QCAtMzc0LDcgKzU0MywyMSBAQCBzdGF0aWMgaW50IG10a19qcGVnX2RlY19zX2ZtdF92aWRfb3V0 X21wbGFuZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiAJaWYgKHJldCkNCiAJCXJl dHVybiByZXQ7DQogDQotCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUobXRrX2pwZWdfZmhf dG9fY3R4KHByaXYpLCBmKTsNCisJcmV0dXJuIG10a19qcGVnX3NfZm10X21wbGFuZShtdGtfanBl Z19maF90b19jdHgocHJpdiksIGYsDQorCQkJCSAgICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09V VFBVVCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2pwZWdfZW5jX3NfZm10X3ZpZF9jYXBfbXBs YW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KKwkJCQkJICAgICBzdHJ1Y3QgdjRs Ml9mb3JtYXQgKmYpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwlyZXQgPSBtdGtfanBlZ19lbmNfdHJ5 X2ZtdF92aWRfY2FwX21wbGFuZShmaWxlLCBwcml2LCBmKTsNCisJaWYgKHJldCkNCisJCXJldHVy biByZXQ7DQorDQorCXJldHVybiBtdGtfanBlZ19zX2ZtdF9tcGxhbmUobXRrX2pwZWdfZmhfdG9f Y3R4KHByaXYpLCBmLA0KKwkJCQkgICAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBUVVJFKTsN CiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfc19mbXRfdmlkX2NhcF9tcGxhbmUoc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQpAQCAtMzg2LDcgKzU2OSw4IEBAIHN0YXRpYyBp bnQgbXRrX2pwZWdfZGVjX3NfZm10X3ZpZF9jYXBfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2 b2lkICpwcml2LA0KIAlpZiAocmV0KQ0KIAkJcmV0dXJuIHJldDsNCiANCi0JcmV0dXJuIG10a19q cGVnX3NfZm10X21wbGFuZShtdGtfanBlZ19maF90b19jdHgocHJpdiksIGYpOw0KKwlyZXR1cm4g bXRrX2pwZWdfc19mbXRfbXBsYW5lKG10a19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZiwNCisJCQkJ ICAgICBNVEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQVFVSRSk7DQogfQ0KIA0KIHN0YXRpYyB2b2lk IG10a19qcGVnX3F1ZXVlX3NyY19jaGdfZXZlbnQoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0K QEAgLTQxMSw2ICs1OTUsMjkgQEAgc3RhdGljIGludCBtdGtfanBlZ19zdWJzY3JpYmVfZXZlbnQo c3RydWN0IHY0bDJfZmggKmZoLA0KIAlyZXR1cm4gdjRsMl9jdHJsX3N1YnNjcmliZV9ldmVudChm aCwgc3ViKTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNfZ19zZWxlY3Rpb24oc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQorCQkJCSAgICBzdHJ1Y3QgdjRsMl9zZWxlY3Rp b24gKnMpDQorew0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBtdGtfanBlZ19maF90b19j dHgocHJpdik7DQorDQorCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVU KQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQorCWNhc2Ug VjRMMl9TRUxfVEdUX0NST1A6DQorCWNhc2UgVjRMMl9TRUxfVEdUX0NST1BfQk9VTkRTOg0KKwlj YXNlIFY0TDJfU0VMX1RHVF9DUk9QX0RFRkFVTFQ6DQorCQlzLT5yLndpZHRoID0gY3R4LT5vdXRf cS53Ow0KKwkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7DQorCQlzLT5yLmxlZnQgPSAwOw0K KwkJcy0+ci50b3AgPSAwOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZB TDsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludCBtdGtfanBlZ19kZWNfZ19z ZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCSAgICBzdHJ1Y3Qg djRsMl9zZWxlY3Rpb24gKnMpDQogew0KQEAgLTQ0MCw2ICs2NDcsMjkgQEAgc3RhdGljIGludCBt dGtfanBlZ19kZWNfZ19zZWxlY3Rpb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQog CXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgaW50IG10a19qcGVnX2VuY19zX3NlbGVjdGlvbihz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCisJCQkJICAgIHN0cnVjdCB2NGwyX3NlbGVj dGlvbiAqcykNCit7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IG10a19qcGVnX2ZoX3Rv X2N0eChwcml2KTsNCisNCisJaWYgKHMtPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQ VVQpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJY2Fz ZSBWNEwyX1NFTF9UR1RfQ1JPUDoNCisJCXMtPnIubGVmdCA9IDA7DQorCQlzLT5yLnRvcCA9IDA7 DQorCQlzLT5yLndpZHRoID0gbWluKHMtPnIud2lkdGgsIGN0eC0+b3V0X3Eudyk7DQorCQlzLT5y LmhlaWdodCA9IG1pbihzLT5yLmhlaWdodCwgY3R4LT5vdXRfcS5oKTsNCisJCWN0eC0+b3V0X3Eu Y3JvcF9yZWN0ID0gcy0+cjsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcmV0dXJuIC1FSU5W QUw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVj X3Nfc2VsZWN0aW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAkJCQkgICAgc3Ry dWN0IHY0bDJfc2VsZWN0aW9uICpzKQ0KIHsNCkBAIC00ODQsNiArNzE0LDMzIEBAIHN0YXRpYyBp bnQgbXRrX2pwZWdfcWJ1ZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwgc3RydWN0IHY0 bDJfYnVmZmVyICpidWYpDQogCXJldHVybiB2NGwyX20ybV9xYnVmKGZpbGUsIGZoLT5tMm1fY3R4 LCBidWYpOw0KIH0NCiANCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIG10a19q cGVnX2VuY19pb2N0bF9vcHMgPSB7DQorCS52aWRpb2NfcXVlcnljYXAgICAgICAgICAgICAgICAg PSBtdGtfanBlZ19lbmNfcXVlcnljYXAsDQorCS52aWRpb2NfZW51bV9mbXRfdmlkX2NhcAk9IG10 a19qcGVnX2VuY19lbnVtX2ZtdF92aWRfY2FwLA0KKwkudmlkaW9jX2VudW1fZm10X3ZpZF9vdXQJ PSBtdGtfanBlZ19lbmNfZW51bV9mbXRfdmlkX291dCwNCisJLnZpZGlvY190cnlfZm10X3ZpZF9j YXBfbXBsYW5lCT0gbXRrX2pwZWdfZW5jX3RyeV9mbXRfdmlkX2NhcF9tcGxhbmUsDQorCS52aWRp b2NfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZQk9IG10a19qcGVnX2VuY190cnlfZm10X3ZpZF9vdXRf bXBsYW5lLA0KKwkudmlkaW9jX2dfZm10X3ZpZF9jYXBfbXBsYW5lICAgID0gbXRrX2pwZWdfZ19m bXRfdmlkX21wbGFuZSwNCisJLnZpZGlvY19nX2ZtdF92aWRfb3V0X21wbGFuZSAgICA9IG10a19q cGVnX2dfZm10X3ZpZF9tcGxhbmUsDQorCS52aWRpb2Nfc19mbXRfdmlkX2NhcF9tcGxhbmUgICAg PSBtdGtfanBlZ19lbmNfc19mbXRfdmlkX2NhcF9tcGxhbmUsDQorCS52aWRpb2Nfc19mbXRfdmlk X291dF9tcGxhbmUgICAgPSBtdGtfanBlZ19lbmNfc19mbXRfdmlkX291dF9tcGxhbmUsDQorCS52 aWRpb2NfcWJ1ZiAgICAgICAgICAgICAgICAgICAgPSBtdGtfanBlZ19xYnVmLA0KKwkudmlkaW9j X3N1YnNjcmliZV9ldmVudCAgICAgICAgID0gbXRrX2pwZWdfc3Vic2NyaWJlX2V2ZW50LA0KKwku dmlkaW9jX2dfc2VsZWN0aW9uCQk9IG10a19qcGVnX2VuY19nX3NlbGVjdGlvbiwNCisJLnZpZGlv Y19zX3NlbGVjdGlvbgkJPSBtdGtfanBlZ19lbmNfc19zZWxlY3Rpb24sDQorDQorCS52aWRpb2Nf Y3JlYXRlX2J1ZnMJCT0gdjRsMl9tMm1faW9jdGxfY3JlYXRlX2J1ZnMsDQorCS52aWRpb2NfcHJl cGFyZV9idWYJCT0gdjRsMl9tMm1faW9jdGxfcHJlcGFyZV9idWYsDQorCS52aWRpb2NfcmVxYnVm cyAgICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9yZXFidWZzLA0KKwkudmlkaW9jX3F1 ZXJ5YnVmICAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfcXVlcnlidWYsDQorCS52aWRp b2NfZHFidWYgICAgICAgICAgICAgICAgICAgPSB2NGwyX20ybV9pb2N0bF9kcWJ1ZiwNCisJLnZp ZGlvY19leHBidWYgICAgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX2V4cGJ1ZiwNCisJ LnZpZGlvY19zdHJlYW1vbiAgICAgICAgICAgICAgICA9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9u LA0KKwkudmlkaW9jX3N0cmVhbW9mZiAgICAgICAgICAgICAgID0gdjRsMl9tMm1faW9jdGxfc3Ry ZWFtb2ZmLA0KKw0KKwkudmlkaW9jX3Vuc3Vic2NyaWJlX2V2ZW50CT0gdjRsMl9ldmVudF91bnN1 YnNjcmliZSwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgbXRr X2pwZWdfZGVjX2lvY3RsX29wcyA9IHsNCiAJLnZpZGlvY19xdWVyeWNhcCAgICAgICAgICAgICAg ICA9IG10a19qcGVnX2RlY19xdWVyeWNhcCwNCiAJLnZpZGlvY19lbnVtX2ZtdF92aWRfY2FwCT0g bXRrX2pwZWdfZGVjX2VudW1fZm10X3ZpZF9jYXAsDQpAQCAtNTc1LDggKzgzMiw5IEBAIHN0YXRp YyBib29sIG10a19qcGVnX2NoZWNrX3Jlc29sdXRpb25fY2hhbmdlKHN0cnVjdCBtdGtfanBlZ19j dHggKmN0eCwNCiAJfQ0KIA0KIAlxX2RhdGEgPSAmY3R4LT5jYXBfcTsNCi0JaWYgKHFfZGF0YS0+ Zm10ICE9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGFyYW0tPmRzdF9mb3VyY2MsDQotCQkJ CQkJTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRSkpIHsNCisJaWYgKHFfZGF0YS0+Zm10ICE9DQor CSAgICBtdGtfanBlZ19maW5kX2Zvcm1hdChwYXJhbS0+ZHN0X2ZvdXJjYywNCisJCQkJIE1US19K UEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKSkgew0KIAkJdjRsMl9kYmcoMSwgZGVidWcsICZqcGVn LT52NGwyX2RldiwgImZvcm1hdCBjaGFuZ2VcbiIpOw0KIAkJcmV0dXJuIHRydWU7DQogCX0NCkBA IC01OTcsOSArODU1LDggQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0X3F1ZXVlX2RhdGEoc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4LA0KIAlxX2RhdGEgPSAmY3R4LT5jYXBfcTsNCiAJcV9kYXRh LT53ID0gcGFyYW0tPmRlY193Ow0KIAlxX2RhdGEtPmggPSBwYXJhbS0+ZGVjX2g7DQotCXFfZGF0 YS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LA0KLQkJCQkJICAgcGFyYW0tPmRzdF9m b3VyY2MsDQotCQkJCQkgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBUVVJFKTsNCisJcV9kYXRhLT5m bXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChwYXJhbS0+ZHN0X2ZvdXJjYywNCisJCQkJCSAgIE1U S19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsNCiANCiAJZm9yIChpID0gMDsgaSA8IHFfZGF0 YS0+Zm10LT5jb2xwbGFuZXM7IGkrKykgew0KIAkJcV9kYXRhLT5ieXRlc3BlcmxpbmVbaV0gPSBw YXJhbS0+bWVtX3N0cmlkZVtpXTsNCkBAIC02MTYsNiArODczLDE3IEBAIHN0YXRpYyB2b2lkIG10 a19qcGVnX3NldF9xdWV1ZV9kYXRhKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJCSBwYXJh bS0+ZGVjX3csIHBhcmFtLT5kZWNfaCk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG10a19qcGVnX2Vu Y19idWZfcXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQ0KK3sNCisJc3RydWN0IG10a19qcGVn X2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2Yi0+dmIyX3F1ZXVlKTsNCisJc3RydWN0IG10 a19qcGVnX2RldiAqanBlZyA9IGN0eC0+anBlZzsNCisNCisJdjRsMl9kYmcoMiwgZGVidWcsICZq cGVnLT52NGwyX2RldiwgIiglZCkgYnVmX3EgaWQ9JWQsIHZiPSVwXG4iLA0KKwkJIHZiLT52YjJf cXVldWUtPnR5cGUsIHZiLT5pbmRleCwgdmIpOw0KKw0KKwl2NGwyX20ybV9idWZfcXVldWUoY3R4 LT5maC5tMm1fY3R4LCB0b192YjJfdjRsMl9idWZmZXIodmIpKTsNCit9DQorDQogc3RhdGljIHZv aWQgbXRrX2pwZWdfZGVjX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQogew0KIAlz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUp Ow0KQEAgLTY2NCw2ICs5MzIsMTUgQEAgc3RhdGljIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm10 a19qcGVnX2J1Zl9yZW1vdmUoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KIAkJcmV0dXJuIHY0 bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7DQogfQ0KIA0KK3N0YXRpYyB2 b2lkIG10a19qcGVnX2VuY19zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQ0KK3sN CisJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdihxKTsNCisJc3Ry dWN0IHZiMl92NGwyX2J1ZmZlciAqdmI7DQorDQorCXdoaWxlICgodmIgPSBtdGtfanBlZ19idWZf cmVtb3ZlKGN0eCwgcS0+dHlwZSkpKQ0KKwkJdjRsMl9tMm1fYnVmX2RvbmUodmIsIFZCMl9CVUZf U1RBVEVfRVJST1IpOw0KK30NCisNCiBzdGF0aWMgdm9pZCBtdGtfanBlZ19kZWNfc3RvcF9zdHJl YW1pbmcoc3RydWN0IHZiMl9xdWV1ZSAqcSkNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0 eCA9IHZiMl9nZXRfZHJ2X3ByaXYocSk7DQpAQCAtNjk5LDYgKzk3NiwxNSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHZiMl9vcHMgbXRrX2pwZWdfZGVjX3FvcHMgPSB7DQogCS5zdG9wX3N0cmVhbWlu ZyAgICAgPSBtdGtfanBlZ19kZWNfc3RvcF9zdHJlYW1pbmcsDQogfTsNCiANCitzdGF0aWMgY29u c3Qgc3RydWN0IHZiMl9vcHMgbXRrX2pwZWdfZW5jX3FvcHMgPSB7DQorCS5xdWV1ZV9zZXR1cCAg ICAgICAgPSBtdGtfanBlZ19xdWV1ZV9zZXR1cCwNCisJLmJ1Zl9wcmVwYXJlICAgICAgICA9IG10 a19qcGVnX2J1Zl9wcmVwYXJlLA0KKwkuYnVmX3F1ZXVlICAgICAgICAgID0gbXRrX2pwZWdfZW5j X2J1Zl9xdWV1ZSwNCisJLndhaXRfcHJlcGFyZSAgICAgICA9IHZiMl9vcHNfd2FpdF9wcmVwYXJl LA0KKwkud2FpdF9maW5pc2ggICAgICAgID0gdmIyX29wc193YWl0X2ZpbmlzaCwNCisJLnN0b3Bf c3RyZWFtaW5nICAgICA9IG10a19qcGVnX2VuY19zdG9wX3N0cmVhbWluZywNCit9Ow0KKw0KIHN0 YXRpYyB2b2lkIG10a19qcGVnX3NldF9kZWNfc3JjKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwN CiAJCQkJIHN0cnVjdCB2YjJfYnVmZmVyICpzcmNfYnVmLA0KIAkJCQkgc3RydWN0IG10a19qcGVn X2JzICpicykNCkBAIC03MzYsNiArMTAyMiw4NSBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NldF9k ZWNfZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0 YXRpYyB2b2lkIG10a19qcGVnX3NldF9lbmNfZHN0KHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwg dm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkgc3RydWN0IHZiMl9idWZmZXIgKmRzdF9idWYsDQor CQkJCSBzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzICpicykNCit7DQorCWJzLT5kbWFfYWRkciA9IHZi Ml9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKGRzdF9idWYsIDApOw0KKwlicy0+ZG1hX2FkZHJf b2Zmc2V0ID0gY3R4LT5lbmFibGVfZXhpZiA/IE1US19KUEVHX01BWF9FWElGX1NJWkUgOiAwOw0K Kwlicy0+ZG1hX2FkZHJfb2Zmc2V0bWFzayA9IGJzLT5kbWFfYWRkciAmIEpQRUdfRU5DX0RTVF9B RERSX09GRlNFVF9NQVNLOw0KKwlicy0+c2l6ZSA9IHZiMl9wbGFuZV9zaXplKGRzdF9idWYsIDAp Ow0KKw0KKwltdGtfanBlZ19lbmNfc2V0X2RzdF9hZGRyKGJhc2UsIGJzLT5kbWFfYWRkciwgYnMt PnNpemUsDQorCQkJCSAgYnMtPmRtYV9hZGRyX29mZnNldCwNCisJCQkJICBicy0+ZG1hX2FkZHJf b2Zmc2V0bWFzayk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3NldF9lbmNfc3JjKHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkgc3RydWN0 IHZiMl9idWZmZXIgKnNyY19idWYpDQorew0KKwlpbnQgaTsNCisJZG1hX2FkZHJfdAlkbWFfYWRk cjsNCisNCisJbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZShiYXNlLCBjdHgtPm91dF9xLmNyb3Bf cmVjdC53aWR0aCwNCisJCQkJICBjdHgtPm91dF9xLmNyb3BfcmVjdC5oZWlnaHQpOw0KKwltdGtf anBlZ19lbmNfc2V0X2Jsa19udW0oYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJjYywNCisJCQkJ IGN0eC0+b3V0X3EuY3JvcF9yZWN0LndpZHRoLA0KKwkJCQkgY3R4LT5vdXRfcS5jcm9wX3JlY3Qu aGVpZ2h0KTsNCisJbXRrX2pwZWdfZW5jX3NldF9zdHJpZGUoYmFzZSwgY3R4LT5vdXRfcS5mbXQt PmZvdXJjYywgY3R4LT5vdXRfcS53LA0KKwkJCQljdHgtPm91dF9xLmgsIGN0eC0+b3V0X3EuYnl0 ZXNwZXJsaW5lWzBdKTsNCisNCisJZm9yIChpID0gMDsgaSA8IHNyY19idWYtPm51bV9wbGFuZXM7 IGkrKykgew0KKwkJZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihzcmNf YnVmLCBpKSArDQorCQkJICAgc3JjX2J1Zi0+cGxhbmVzW2ldLmRhdGFfb2Zmc2V0Ow0KKwkJbXRr X2pwZWdfZW5jX3NldF9zcmNfYWRkcihiYXNlLCBkbWFfYWRkciwgaSk7DQorCX0NCit9DQorDQor c3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX2RldmljZV9ydW4odm9pZCAqcHJpdikNCit7DQorCXN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IHByaXY7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpw ZWcgPSBjdHgtPmpwZWc7DQorCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3Rf YnVmOw0KKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9F UlJPUjsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJc3RydWN0IG10a19qcGVnX3NyY19idWYg KmpwZWdfc3JjX2J1ZjsNCisJc3RydWN0IG10a19qcGVnX2VuY19icyBlbmNfYnM7DQorCWludCBy ZXQ7DQorDQorCXNyY19idWYgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1fY3R4 KTsNCisJZHN0X2J1ZiA9IHY0bDJfbTJtX25leHRfZHN0X2J1ZihjdHgtPmZoLm0ybV9jdHgpOw0K KwlqcGVnX3NyY19idWYgPSBtdGtfanBlZ192YjJfdG9fc3JjYnVmKCZzcmNfYnVmLT52YjJfYnVm KTsNCisNCisJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhqcGVnLT5kZXYpOw0KKwlpZiAocmV0 IDwgMCkNCisJCWdvdG8gZW5jX2VuZDsNCisNCisJc3Bpbl9sb2NrX2lycXNhdmUoJmpwZWctPmh3 X2xvY2ssIGZsYWdzKTsNCisNCisJLyoNCisJICogUmVzZXR0aW5nIHRoZSBoYXJkd2FyZSBldmVy eSBmcmFtZSBpcyB0byBlbnN1cmUgdGhhdCBhbGwgdGhlDQorCSAqIHJlZ2lzdGVycyBhcmUgY2xl YXJlZC4gVGhpcyBpcyBhIGhhcmR3YXJlIHJlcXVpcmVtZW50Lg0KKwkgKi8NCisJbXRrX2pwZWdf ZW5jX3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisNCisJbXRrX2pwZWdfc2V0X2VuY19kc3QoY3R4 LCBqcGVnLT5yZWdfYmFzZSwgJmRzdF9idWYtPnZiMl9idWYsICZlbmNfYnMpOw0KKwltdGtfanBl Z19zZXRfZW5jX3NyYyhjdHgsIGpwZWctPnJlZ19iYXNlLCAmc3JjX2J1Zi0+dmIyX2J1Zik7DQor CW10a19qcGVnX2VuY19zZXRfY29uZmlnKGpwZWctPnJlZ19iYXNlLCBjdHgtPm91dF9xLmZtdC0+ aHdfZm9ybWF0LA0KKwkJCQljdHgtPmVuYWJsZV9leGlmLCBjdHgtPmVuY19xdWFsaXR5LA0KKwkJ CQljdHgtPnJlc3RhcnRfaW50ZXJ2YWwpOw0KKwltdGtfanBlZ19lbmNfc3RhcnQoanBlZy0+cmVn X2Jhc2UpOw0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZqcGVnLT5od19sb2NrLCBmbGFncyk7 DQorCXJldHVybjsNCisNCitlbmNfZW5kOg0KKwl2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgt PmZoLm0ybV9jdHgpOw0KKwl2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgp Ow0KKwl2NGwyX20ybV9idWZfZG9uZShzcmNfYnVmLCBidWZfc3RhdGUpOw0KKwl2NGwyX20ybV9i dWZfZG9uZShkc3RfYnVmLCBidWZfc3RhdGUpOw0KKwl2NGwyX20ybV9qb2JfZmluaXNoKGpwZWct Pm0ybV9kZXYsIGN0eC0+ZmgubTJtX2N0eCk7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIG10a19qcGVn X2RlY19kZXZpY2VfcnVuKHZvaWQgKnByaXYpDQogew0KIAlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpj dHggPSBwcml2Ow0KQEAgLTc4NSw2ICsxMTUwLDExIEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2Rl Y19kZXZpY2VfcnVuKHZvaWQgKnByaXYpDQogCXY0bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJt X2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCiB9DQogDQorc3RhdGljIGludCBtdGtfanBlZ19lbmNf am9iX3JlYWR5KHZvaWQgKnByaXYpDQorew0KKwkJcmV0dXJuIDE7DQorfQ0KKw0KIHN0YXRpYyBp bnQgbXRrX2pwZWdfZGVjX2pvYl9yZWFkeSh2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19q cGVnX2N0eCAqY3R4ID0gcHJpdjsNCkBAIC03OTIsNiArMTE2MiwxMSBAQCBzdGF0aWMgaW50IG10 a19qcGVnX2RlY19qb2JfcmVhZHkodm9pZCAqcHJpdikNCiAJcmV0dXJuIChjdHgtPnN0YXRlID09 IE1US19KUEVHX1JVTk5JTkcpID8gMSA6IDA7DQogfQ0KIA0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg djRsMl9tMm1fb3BzIG10a19qcGVnX2VuY19tMm1fb3BzID0gew0KKwkuZGV2aWNlX3J1biA9IG10 a19qcGVnX2VuY19kZXZpY2VfcnVuLA0KKwkuam9iX3JlYWR5ICA9IG10a19qcGVnX2VuY19qb2Jf cmVhZHksDQorfTsNCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfbTJtX29wcyBtdGtfanBl Z19kZWNfbTJtX29wcyA9IHsNCiAJLmRldmljZV9ydW4gPSBtdGtfanBlZ19kZWNfZGV2aWNlX3J1 biwNCiAJLmpvYl9yZWFkeSAgPSBtdGtfanBlZ19kZWNfam9iX3JlYWR5LA0KQEAgLTgzMCwyNCAr MTIwNSwxMDkgQEAgc3RhdGljIGludCBtdGtfanBlZ19kZWNfcXVldWVfaW5pdCh2b2lkICpwcml2 LCBzdHJ1Y3QgdmIyX3F1ZXVlICpzcmNfdnEsDQogCXJldHVybiByZXQ7DQogfQ0KIA0KLXN0YXRp YyB2b2lkIG10a19qcGVnX2Nsa19vbihzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KK3N0YXRp YyBpbnQgbXRrX2pwZWdfZW5jX3F1ZXVlX2luaXQodm9pZCAqcHJpdiwgc3RydWN0IHZiMl9xdWV1 ZSAqc3JjX3ZxLA0KKwkJCSAgICAgICBzdHJ1Y3QgdmIyX3F1ZXVlICpkc3RfdnEpDQogew0KKwlz dHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBwcml2Ow0KIAlpbnQgcmV0Ow0KIA0KKwlzcmNfdnEt PnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU7DQorCXNyY192cS0+aW9f bW9kZXMgPSBWQjJfRE1BQlVGIHwgVkIyX01NQVA7DQorCXNyY192cS0+ZHJ2X3ByaXYgPSBjdHg7 DQorCXNyY192cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBtdGtfanBlZ19zcmNf YnVmKTsNCisJc3JjX3ZxLT5vcHMgPSAmbXRrX2pwZWdfZW5jX3FvcHM7DQorCXNyY192cS0+bWVt X29wcyA9ICZ2YjJfZG1hX2NvbnRpZ19tZW1vcHM7DQorCXNyY192cS0+dGltZXN0YW1wX2ZsYWdz ID0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTsNCisJc3JjX3ZxLT5sb2NrID0gJmN0eC0+ anBlZy0+bG9jazsNCisJc3JjX3ZxLT5kZXYgPSBjdHgtPmpwZWctPmRldjsNCisJcmV0ID0gdmIy X3F1ZXVlX2luaXQoc3JjX3ZxKTsNCisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorDQorCWRz dF92cS0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkU7DQorCWRzdF92 cS0+aW9fbW9kZXMgPSBWQjJfRE1BQlVGIHwgVkIyX01NQVA7DQorCWRzdF92cS0+ZHJ2X3ByaXYg PSBjdHg7DQorCWRzdF92cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX20y bV9idWZmZXIpOw0KKwlkc3RfdnEtPm9wcyA9ICZtdGtfanBlZ19lbmNfcW9wczsNCisJZHN0X3Zx LT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsNCisJZHN0X3ZxLT50aW1lc3RhbXBf ZmxhZ3MgPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9DT1BZOw0KKwlkc3RfdnEtPmxvY2sgPSAm Y3R4LT5qcGVnLT5sb2NrOw0KKwlkc3RfdnEtPmRldiA9IGN0eC0+anBlZy0+ZGV2Ow0KKwlyZXQg PSB2YjJfcXVldWVfaW5pdChkc3RfdnEpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0 aWMgdm9pZCBtdGtfanBlZ19jbGtfb24oc3RydWN0IG10a19qcGVnX2RldiAqanBlZykNCit7DQor CWludCByZXQsIGk7DQorDQogCXJldCA9IG10a19zbWlfbGFyYl9nZXQoanBlZy0+bGFyYik7DQog CWlmIChyZXQpDQogCQlkZXZfZXJyKGpwZWctPmRldiwgIm10a19zbWlfbGFyYl9nZXQgbGFyYnZk ZWMgZmFpbCAlZFxuIiwgcmV0KTsNCi0JY2xrX3ByZXBhcmVfZW5hYmxlKGpwZWctPmNsa19qZGVj X3NtaSk7DQotCWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRlYyk7DQorDQorCWZvciAo aSA9IDA7IGkgPCBqcGVnLT52YXJpYW50LT5udW1fY2xvY2tzOyBpKyspIHsNCisJCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbG9ja3NbaV0pOw0KKwkJaWYgKHJldCkgew0KKwkJCXdo aWxlICgtLWkgPj0gMCkNCisJCQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsb2Nrc1tp XSk7DQorCQl9DQorCX0NCiB9DQogDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xrX29mZihzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0KIHsNCi0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWct PmNsa19qZGVjKTsNCi0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qZGVjX3NtaSk7 DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSBqcGVnLT52YXJpYW50LT5udW1fY2xvY2tzIC0gMTsg aSA+PSAwOyBpLS0pDQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xvY2tzW2ldKTsN CiAJbXRrX3NtaV9sYXJiX3B1dChqcGVnLT5sYXJiKTsNCiB9DQogDQorc3RhdGljIGlycXJldHVy bl90IG10a19qcGVnX2VuY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCit7DQorCXN0cnVjdCBt dGtfanBlZ19kZXYgKmpwZWcgPSBwcml2Ow0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHg7DQor CXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19idWYsICpkc3RfYnVmOw0KKwlzdHJ1Y3QgbXRr X2pwZWdfc3JjX2J1ZiAqanBlZ19zcmNfYnVmOw0KKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgYnVm X3N0YXRlID0gVkIyX0JVRl9TVEFURV9FUlJPUjsNCisJdTMyIGVuY19pcnFfcmV0Ow0KKwl1MzIg ZW5jX3JldCwgcmVzdWx0X3NpemU7DQorDQorCWN0eCA9IHY0bDJfbTJtX2dldF9jdXJyX3ByaXYo anBlZy0+bTJtX2Rldik7DQorCWlmICghY3R4KSB7DQorCQl2NGwyX2VycigmanBlZy0+djRsMl9k ZXYsICJDb250ZXh0IGlzIE5VTExcbiIpOw0KKwkJcmV0dXJuIElSUV9IQU5ETEVEOw0KKwl9DQor DQorCXNyY19idWYgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOw0K Kwlkc3RfYnVmID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsNCisJ anBlZ19zcmNfYnVmID0gbXRrX2pwZWdfdmIyX3RvX3NyY2J1Zigmc3JjX2J1Zi0+dmIyX2J1Zik7 DQorDQorCWVuY19yZXQgPSBtdGtfanBlZ19lbmNfZ2V0X2FuZF9jbGVhcl9pbnRfc3RhdHVzKGpw ZWctPnJlZ19iYXNlKTsNCisJZW5jX2lycV9yZXQgPSBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQo anBlZy0+cmVnX2Jhc2UsIGVuY19yZXQpOw0KKw0KKwlpZiAoZW5jX2lycV9yZXQgPj0gTVRLX0pQ RUdfRU5DX1JFU1VMVF9TVEFMTCkNCisJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFz ZSk7DQorDQorCWlmIChlbmNfaXJxX3JldCAhPSBNVEtfSlBFR19FTkNfUkVTVUxUX0RPTkUpIHsN CisJCWRldl9lcnIoanBlZy0+ZGV2LCAiZW5jb2RlIGZhaWxlZFxuIik7DQorCQlnb3RvIGVuY19l bmQ7DQorCX0NCisNCisJcmVzdWx0X3NpemUgPSBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZShq cGVnLT5yZWdfYmFzZSk7DQorCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCgmZHN0X2J1Zi0+dmIyX2J1 ZiwgMCwgcmVzdWx0X3NpemUpOw0KKw0KKwlidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7 DQorDQorZW5jX2VuZDoNCisJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsN CisJdjRsMl9tMm1fYnVmX2RvbmUoZHN0X2J1ZiwgYnVmX3N0YXRlKTsNCisJdjRsMl9tMm1fam9i X2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KKwlwbV9ydW50aW1lX3B1 dChjdHgtPmpwZWctPmRldik7DQorCXJldHVybiBJUlFfSEFORExFRDsNCit9DQorDQogc3RhdGlj IGlycXJldHVybl90IG10a19qcGVnX2RlY19pcnEoaW50IGlycSwgdm9pZCAqcHJpdikNCiB7DQog CXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSBwcml2Ow0KQEAgLTg5MywzNiArMTM1MywxMzAg QEAgc3RhdGljIGlycXJldHVybl90IG10a19qcGVnX2RlY19pcnEoaW50IGlycSwgdm9pZCAqcHJp dikNCiAJcmV0dXJuIElSUV9IQU5ETEVEOw0KIH0NCiANCitzdGF0aWMgdm9pZCBtdGtfanBlZ19z ZXRfZW5jX2RlZmF1bHRfcGFyYW1zKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCit7DQorCXN0 cnVjdCBtdGtfanBlZ19xX2RhdGEgKnEgPSAmY3R4LT5vdXRfcTsNCisJc3RydWN0IHY0bDJfcGl4 X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcDsNCisNCisJcGl4X21wID0ga21hbGxvYyhzaXplb2YoKnBp eF9tcCksIEdGUF9LRVJORUwpOw0KKw0KKwljdHgtPmZoLmN0cmxfaGFuZGxlciA9ICZjdHgtPmN0 cmxfaGRsOw0KKwljdHgtPmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfSlBFRywNCisJY3R4 LT55Y2Jjcl9lbmMgPSBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUOw0KKwljdHgtPnF1YW50aXphdGlv biA9IFY0TDJfUVVBTlRJWkFUSU9OX0RFRkFVTFQ7DQorCWN0eC0+eGZlcl9mdW5jID0gVjRMMl9Y RkVSX0ZVTkNfREVGQVVMVDsNCisJcGl4X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsN CisJcGl4X21wLT5oZWlnaHQgPSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KKw0KKwlxLT5mbXQgPSBt dGtfanBlZ19maW5kX2Zvcm1hdChWNEwyX1BJWF9GTVRfWVVZViwNCisJCQkJICAgICAgTVRLX0pQ RUdfRk1UX0ZMQUdfRU5DX09VVFBVVCk7DQorCXZpZGlvY190cnlfZm10KGNvbnRhaW5lcl9vZihw aXhfbXAsIHN0cnVjdCB2NGwyX2Zvcm1hdCwNCisJCQkJICAgIGZtdC5waXhfbXApLCBxLT5mbXQp Ow0KKwlxLT53ID0gcGl4X21wLT53aWR0aDsNCisJcS0+aCA9IHBpeF9tcC0+aGVpZ2h0Ow0KKwlx LT5jcm9wX3JlY3Qud2lkdGggPSBwaXhfbXAtPndpZHRoOw0KKwlxLT5jcm9wX3JlY3QuaGVpZ2h0 ID0gcGl4X21wLT5oZWlnaHQ7DQorCXEtPnNpemVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10 WzBdLnNpemVpbWFnZTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcGl4X21wLT5wbGFuZV9mbXRb MF0uYnl0ZXNwZXJsaW5lOw0KKw0KKwlxID0gJmN0eC0+Y2FwX3E7DQorCXEtPmZtdCA9IG10a19q cGVnX2ZpbmRfZm9ybWF0KFY0TDJfUElYX0ZNVF9KUEVHLA0KKwkJCQkgICAgICBNVEtfSlBFR19G TVRfRkxBR19FTkNfQ0FQVFVSRSk7DQorCXBpeF9tcC0+d2lkdGggPSBNVEtfSlBFR19NSU5fV0lE VEg7DQorCXBpeF9tcC0+aGVpZ2h0ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisJdmlkaW9jX3Ry eV9mbXQoY29udGFpbmVyX29mKHBpeF9tcCwgc3RydWN0IHY0bDJfZm9ybWF0LA0KKwkJCQkgICAg Zm10LnBpeF9tcCksIHEtPmZtdCk7DQorCXEtPncgPSBwaXhfbXAtPndpZHRoOw0KKwlxLT5oID0g cGl4X21wLT5oZWlnaHQ7DQorCXEtPnNpemVpbWFnZVswXSA9IHBpeF9tcC0+cGxhbmVfZm10WzBd LnNpemVpbWFnZTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcGl4X21wLT5wbGFuZV9mbXRbMF0u Ynl0ZXNwZXJsaW5lOw0KK30NCisNCiBzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZGVjX2RlZmF1 bHRfcGFyYW1zKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCiB7DQogCXN0cnVjdCBtdGtfanBl Z19xX2RhdGEgKnEgPSAmY3R4LT5vdXRfcTsNCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxh bmUgKnBpeF9tcDsNCiAJaW50IGk7DQogDQorCXBpeF9tcCA9IGttYWxsb2Moc2l6ZW9mKCpwaXhf bXApLCBHRlBfS0VSTkVMKTsNCisNCisJY3R4LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJs X2hkbDsNCiAJY3R4LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQogCWN0eC0+ eWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCiAJY3R4LT5xdWFudGl6YXRpb24g PSBWNEwyX1FVQU5USVpBVElPTl9ERUZBVUxUOw0KIAljdHgtPnhmZXJfZnVuYyA9IFY0TDJfWEZF Ul9GVU5DX0RFRkFVTFQ7DQotDQotCXEtPmZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwg VjRMMl9QSVhfRk1UX0pQRUcsDQotCQkJCQkgICAgICBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQp Ow0KLQlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KLQlxLT5oID0gTVRLX0pQRUdfTUlOX0hF SUdIVDsNCi0JcS0+Ynl0ZXNwZXJsaW5lWzBdID0gMDsNCi0JcS0+c2l6ZWltYWdlWzBdID0gTVRL X0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7DQorCXBpeF9tcC0+d2lkdGggPSBNVEtfSlBFR19NSU5f V0lEVEg7DQorCXBpeF9tcC0+aGVpZ2h0ID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisNCisJcS0+ Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoVjRMMl9QSVhfRk1UX0pQRUcsDQorCQkJCSAgICAg IE1US19KUEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQpOw0KKwl2aWRpb2NfdHJ5X2ZtdChjb250YWlu ZXJfb2YocGl4X21wLCBzdHJ1Y3QgdjRsMl9mb3JtYXQsDQorCQkJCSAgICBmbXQucGl4X21wKSwg cS0+Zm10KTsNCisJcS0+dyA9IHBpeF9tcC0+d2lkdGg7DQorCXEtPmggPSBwaXhfbXAtPmhlaWdo dDsNCisJcS0+c2l6ZWltYWdlWzBdID0gcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlOw0K KwlxLT5ieXRlc3BlcmxpbmVbMF0gPSBwaXhfbXAtPnBsYW5lX2ZtdFswXS5ieXRlc3BlcmxpbmU7 DQogDQogCXEgPSAmY3R4LT5jYXBfcTsNCi0JcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQo Y3R4LCBWNEwyX1BJWF9GTVRfWVVWNDIwTSwNCi0JCQkJCSAgICAgIE1US19KUEVHX0ZNVF9UWVBF X0NBUFRVUkUpOw0KLQlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KLQlxLT5oID0gTVRLX0pQ RUdfTUlOX0hFSUdIVDsNCi0NCisJcS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoVjRMMl9Q SVhfRk1UX1lVVjQyME0sDQorCQkJCSAgICAgIE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJF KTsNCisJcGl4X21wLT53aWR0aCA9IE1US19KUEVHX01JTl9XSURUSDsNCisJcGl4X21wLT5oZWln aHQgPSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KKwl2aWRpb2NfdHJ5X2ZtdChjb250YWluZXJfb2Yo cGl4X21wLCBzdHJ1Y3QgdjRsMl9mb3JtYXQsDQorCQkJCSAgICBmbXQucGl4X21wKSwgcS0+Zm10 KTsNCisJcS0+dyA9IHBpeF9tcC0+d2lkdGg7DQorCXEtPmggPSBwaXhfbXAtPmhlaWdodDsNCiAJ Zm9yIChpID0gMDsgaSA8IHEtPmZtdC0+Y29scGxhbmVzOyBpKyspIHsNCi0JCXUzMiBzdHJpZGUg PSBxLT53ICogcS0+Zm10LT5oX3NhbXBsZVtpXSAvIDQ7DQotCQl1MzIgaCA9IHEtPmggKiBxLT5m bXQtPnZfc2FtcGxlW2ldIC8gNDsNCisJCXEtPnNpemVpbWFnZVtpXSA9IHBpeF9tcC0+cGxhbmVf Zm10W2ldLnNpemVpbWFnZTsNCisJCXEtPmJ5dGVzcGVybGluZVtpXSA9IHBpeF9tcC0+cGxhbmVf Zm10W2ldLmJ5dGVzcGVybGluZTsNCisJfQ0KK30NCiANCi0JCXEtPmJ5dGVzcGVybGluZVtpXSA9 IHN0cmlkZTsNCi0JCXEtPnNpemVpbWFnZVtpXSA9IHN0cmlkZSAqIGg7DQorc3RhdGljIGludCBt dGtfanBlZ19lbmNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCit7DQorCXN0cnVjdCBtdGtfanBl Z19kZXYgKmpwZWcgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KKwlzdHJ1Y3QgdmlkZW9fZGV2aWNl ICp2ZmQgPSB2aWRlb19kZXZkYXRhKGZpbGUpOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHg7 DQorCWludCByZXQgPSAwOw0KKw0KKwljdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tF Uk5FTCk7DQorCWlmICghY3R4KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWlmIChtdXRleF9s b2NrX2ludGVycnVwdGlibGUoJmpwZWctPmxvY2spKSB7DQorCQlyZXQgPSAtRVJFU1RBUlRTWVM7 DQorCQlnb3RvIGZyZWU7DQorCX0NCisNCisJdjRsMl9maF9pbml0KCZjdHgtPmZoLCB2ZmQpOw0K KwlmaWxlLT5wcml2YXRlX2RhdGEgPSAmY3R4LT5maDsNCisJdjRsMl9maF9hZGQoJmN0eC0+Zmgp Ow0KKw0KKwljdHgtPmpwZWcgPSBqcGVnOw0KKwljdHgtPmZoLm0ybV9jdHggPSB2NGwyX20ybV9j dHhfaW5pdChqcGVnLT5tMm1fZGV2LCBjdHgsDQorCQkJCQkgICAgbXRrX2pwZWdfZW5jX3F1ZXVl X2luaXQpOw0KKwlpZiAoSVNfRVJSKGN0eC0+ZmgubTJtX2N0eCkpIHsNCisJCXJldCA9IFBUUl9F UlIoY3R4LT5maC5tMm1fY3R4KTsNCisJCWdvdG8gZXJyb3I7DQogCX0NCisNCisJcmV0ID0gbXRr X2pwZWdfZW5jX2N0cmxzX3NldHVwKGN0eCk7DQorCWlmIChyZXQpIHsNCisJCXY0bDJfZXJyKCZq cGVnLT52NGwyX2RldiwgIkZhaWxlZCB0byBzZXR1cCBqcGVnIGVuYyBjb250cm9sc1xuIik7DQor CQlnb3RvIGVycm9yOw0KKwl9DQorCW10a19qcGVnX3NldF9lbmNfZGVmYXVsdF9wYXJhbXMoY3R4 KTsNCisNCisJbXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCisJcmV0dXJuIDA7DQorDQorZXJy b3I6DQorCXY0bDJfZmhfZGVsKCZjdHgtPmZoKTsNCisJdjRsMl9maF9leGl0KCZjdHgtPmZoKTsN CisJbXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCitmcmVlOg0KKwlrZnJlZShjdHgpOw0KKwly ZXR1cm4gcmV0Ow0KIH0NCiANCiBzdGF0aWMgaW50IG10a19qcGVnX2RlY19vcGVuKHN0cnVjdCBm aWxlICpmaWxlKQ0KQEAgLTk1Myw2ICsxNTA3LDEyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfZGVj X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpDQogCQlnb3RvIGVycm9yOw0KIAl9DQogDQorCXY0bDJf Y3RybF9oYW5kbGVyX2luaXQoJmN0eC0+Y3RybF9oZGwsIDApOw0KKwlyZXQgPSB2NGwyX2N0cmxf aGFuZGxlcl9zZXR1cCgmY3R4LT5jdHJsX2hkbCk7DQorCWlmIChyZXQpIHsNCisJCXY0bDJfZXJy KCZqcGVnLT52NGwyX2RldiwgIkZhaWxlZCB0byBzZXR1cCBqcGVnIGRlYyBjb250cm9sc1xuIik7 DQorCQlnb3RvIGVycm9yOw0KKwl9DQogCW10a19qcGVnX3NldF9kZWNfZGVmYXVsdF9wYXJhbXMo Y3R4KTsNCiAJbXV0ZXhfdW5sb2NrKCZqcGVnLT5sb2NrKTsNCiAJcmV0dXJuIDA7DQpAQCAtOTcz LDYgKzE1MzMsNyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZp bGUpDQogDQogCW11dGV4X2xvY2soJmpwZWctPmxvY2spOw0KIAl2NGwyX20ybV9jdHhfcmVsZWFz ZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjdHgtPmN0cmxf aGRsKTsNCiAJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOw0KIAl2NGwyX2ZoX2V4aXQoJmN0eC0+Zmgp Ow0KIAlrZnJlZShjdHgpOw0KQEAgLTk4MCw2ICsxNTQxLDE1IEBAIHN0YXRpYyBpbnQgbXRrX2pw ZWdfcmVsZWFzZShzdHJ1Y3QgZmlsZSAqZmlsZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRp YyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgbXRrX2pwZWdfZW5jX2ZvcHMgPSB7 DQorCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxFLA0KKwkub3BlbiAgICAgICAgICAgPSBt dGtfanBlZ19lbmNfb3BlbiwNCisJLnJlbGVhc2UgICAgICAgID0gbXRrX2pwZWdfcmVsZWFzZSwN CisJLnBvbGwgICAgICAgICAgID0gdjRsMl9tMm1fZm9wX3BvbGwsDQorCS51bmxvY2tlZF9pb2N0 bCA9IHZpZGVvX2lvY3RsMiwNCisJLm1tYXAgICAgICAgICAgID0gdjRsMl9tMm1fZm9wX21tYXAs DQorfTsNCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIG10a19q cGVnX2RlY19mb3BzID0gew0KIAkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwNCiAJLm9w ZW4gICAgICAgICAgID0gbXRrX2pwZWdfZGVjX29wZW4sDQpAQCAtOTkzLDYgKzE1NjMsNyBAQCBz dGF0aWMgaW50IG10a19qcGVnX2Nsa19pbml0KHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQog ew0KIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXY7DQorCWludCBpOw0KIA0KIAlub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShqcGVnLT5kZXYt Pm9mX25vZGUsICJtZWRpYXRlayxsYXJiIiwgMCk7DQogCWlmICghbm9kZSkNCkBAIC0xMDA2LDEy ICsxNTc3LDE3IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfY2xrX2luaXQoc3RydWN0IG10a19qcGVn X2RldiAqanBlZykNCiANCiAJanBlZy0+bGFyYiA9ICZwZGV2LT5kZXY7DQogDQotCWpwZWctPmNs a19qZGVjID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwgImpwZ2RlYyIpOw0KLQlpZiAoSVNfRVJS KGpwZWctPmNsa19qZGVjKSkNCi0JCXJldHVybiBQVFJfRVJSKGpwZWctPmNsa19qZGVjKTsNCisJ Zm9yIChpID0gMDsgaSA8IGpwZWctPnZhcmlhbnQtPm51bV9jbG9ja3M7IGkrKykgew0KKwkJanBl Zy0+Y2xvY2tzW2ldID0gZGV2bV9jbGtfZ2V0KGpwZWctPmRldiwNCisJCQkJCSAgICAgICBqcGVn LT52YXJpYW50LT5jbGtfbmFtZXNbaV0pOw0KKwkJaWYgKElTX0VSUihqcGVnLT5jbG9ja3NbaV0p KSB7DQorCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBjbG9jazogJXNcbiIs DQorCQkJCWpwZWctPnZhcmlhbnQtPmNsa19uYW1lc1tpXSk7DQorCQkJcmV0dXJuIFBUUl9FUlIo anBlZy0+Y2xvY2tzW2ldKTsNCisJCX0NCisJfQ0KIA0KLQlqcGVnLT5jbGtfamRlY19zbWkgPSBk ZXZtX2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KLQlyZXR1cm4gUFRSX0VSUl9P Ul9aRVJPKGpwZWctPmNsa19qZGVjX3NtaSk7DQorCXJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMg aW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQpAQCAtMTAy OCw2ICsxNjA0LDcgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KIAltdXRleF9pbml0KCZqcGVnLT5sb2NrKTsNCiAJc3Bpbl9sb2NrX2lu aXQoJmpwZWctPmh3X2xvY2spOw0KIAlqcGVnLT5kZXYgPSAmcGRldi0+ZGV2Ow0KKwlqcGVnLT52 YXJpYW50ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGpwZWctPmRldik7DQogDQogCXJlcyA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQogCWpwZWct PnJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQpAQCAt MTA0Miw4ICsxNjE5LDEyIEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCiAJCXJldHVybiBqcGVnX2lycTsNCiAJfQ0KIA0KLQlyZXQgPSBk ZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAw LA0KLQkJCSAgICAgICBwZGV2LT5uYW1lLCBqcGVnKTsNCisJaWYgKGpwZWctPnZhcmlhbnQtPmlz X2VuY29kZXIpDQorCQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJx LCBtdGtfanBlZ19lbmNfaXJxLA0KKwkJCQkgICAgICAgMCwgcGRldi0+bmFtZSwganBlZyk7DQor CWVsc2UNCisJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwganBlZ19pcnEsIG10 a19qcGVnX2RlY19pcnEsDQorCQkJCSAgICAgICAwLCBwZGV2LT5uYW1lLCBqcGVnKTsNCiAJaWYg KHJldCkgew0KIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QganBlZ19p cnEgJWQgKCVkKVxuIiwNCiAJCQlqcGVnX2lycSwgcmV0KTsNCkBAIC0xMDYzLDcgKzE2NDQsMTAg QEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KIAkJZ290byBlcnJfZGV2X3JlZ2lzdGVyOw0KIAl9DQogDQotCWpwZWctPm0ybV9kZXYgPSB2 NGwyX20ybV9pbml0KCZtdGtfanBlZ19kZWNfbTJtX29wcyk7DQorCWlmIChqcGVnLT52YXJpYW50 LT5pc19lbmNvZGVyKQ0KKwkJanBlZy0+bTJtX2RldiA9IHY0bDJfbTJtX2luaXQoJm10a19qcGVn X2VuY19tMm1fb3BzKTsNCisJZWxzZQ0KKwkJanBlZy0+bTJtX2RldiA9IHY0bDJfbTJtX2luaXQo Jm10a19qcGVnX2RlY19tMm1fb3BzKTsNCiAJaWYgKElTX0VSUihqcGVnLT5tMm1fZGV2KSkgew0K IAkJdjRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAiRmFpbGVkIHRvIGluaXQgbWVtMm1lbSBkZXZp Y2VcbiIpOw0KIAkJcmV0ID0gUFRSX0VSUihqcGVnLT5tMm1fZGV2KTsNCkBAIC0xMDc2LDkgKzE2 NjAsMTUgQEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQ0KIAkJZ290byBlcnJfdmZkX2pwZWdfYWxsb2M7DQogCX0NCiAJc25wcmludGYoanBl Zy0+dmRldi0+bmFtZSwgc2l6ZW9mKGpwZWctPnZkZXYtPm5hbWUpLA0KLQkJICIlcy1kZWMiLCBN VEtfSlBFR19OQU1FKTsNCi0JanBlZy0+dmRldi0+Zm9wcyA9ICZtdGtfanBlZ19kZWNfZm9wczsN Ci0JanBlZy0+dmRldi0+aW9jdGxfb3BzID0gJm10a19qcGVnX2RlY19pb2N0bF9vcHM7DQorCQkg IiVzLSVzIiwgTVRLX0pQRUdfTkFNRSwNCisJCSBqcGVnLT52YXJpYW50LT5pc19lbmNvZGVyID8g ImVuYyIgOiAiZGVjIik7DQorCWlmIChqcGVnLT52YXJpYW50LT5pc19lbmNvZGVyKSB7DQorCQlq cGVnLT52ZGV2LT5mb3BzID0gJm10a19qcGVnX2VuY19mb3BzOw0KKwkJanBlZy0+dmRldi0+aW9j dGxfb3BzID0gJm10a19qcGVnX2VuY19pb2N0bF9vcHM7DQorCX0gZWxzZSB7DQorCQlqcGVnLT52 ZGV2LT5mb3BzID0gJm10a19qcGVnX2RlY19mb3BzOw0KKwkJanBlZy0+dmRldi0+aW9jdGxfb3Bz ID0gJm10a19qcGVnX2RlY19pb2N0bF9vcHM7DQorCX0NCiAJanBlZy0+dmRldi0+bWlub3IgPSAt MTsNCiAJanBlZy0+dmRldi0+cmVsZWFzZSA9IHZpZGVvX2RldmljZV9yZWxlYXNlOw0KIAlqcGVn LT52ZGV2LT5sb2NrID0gJmpwZWctPmxvY2s7DQpAQCAtMTA5NSw4ICsxNjg1LDkgQEAgc3RhdGlj IGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIA0KIAl2 aWRlb19zZXRfZHJ2ZGF0YShqcGVnLT52ZGV2LCBqcGVnKTsNCiAJdjRsMl9pbmZvKCZqcGVnLT52 NGwyX2RldiwNCi0JCSAgImRlY29kZXIgZGV2aWNlIHJlZ2lzdGVyZWQgYXMgL2Rldi92aWRlbyVk ICglZCwlZClcbiIsDQotCQkgIGpwZWctPnZkZXYtPm51bSwgVklERU9fTUFKT1IsIGpwZWctPnZk ZXYtPm1pbm9yKTsNCisJCSAgImpwZWcgJXMgZGV2aWNlIHJlZ2lzdGVyZWQgYXMgL2Rldi92aWRl byVkICglZCwlZClcbiIsDQorCQkgIGpwZWctPnZhcmlhbnQtPmlzX2VuY29kZXIgPyAiZW5jIiA6 ICJkZWMiLCBqcGVnLT52ZGV2LT5udW0sDQorCQkgIFZJREVPX01BSk9SLCBqcGVnLT52ZGV2LT5t aW5vcik7DQogDQogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGpwZWcpOw0KIA0KQEAgLTEx ODcsMTQgKzE3NzgsMzYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVn X3BtX29wcyA9IHsNCiAJU0VUX1JVTlRJTUVfUE1fT1BTKG10a19qcGVnX3BtX3N1c3BlbmQsIG10 a19qcGVnX3BtX3Jlc3VtZSwgTlVMTCkNCiB9Ow0KIA0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdf dmFyaWFudCBtdDgxNzNfanBlZ19kcnZkYXRhID0gew0KKwkuaXNfZW5jb2Rlcgk9IGZhbHNlLA0K KwkuY2xrX25hbWVzCT0geyJqcGdkZWMtc21pIiwgImpwZ2RlYyJ9LA0KKwkubnVtX2Nsb2Nrcwk9 IDIsDQorfTsNCisNCitzdGF0aWMgc3RydWN0IG10a19qcGVnX3ZhcmlhbnQgbXQyNzAxX2pwZWdf ZHJ2ZGF0YSA9IHsNCisJLmlzX2VuY29kZXIJPSBmYWxzZSwNCisJLmNsa19uYW1lcwk9IHsianBn ZGVjLXNtaSIsICJqcGdkZWMifSwNCisJLm51bV9jbG9ja3MJPSAyLA0KK307DQorDQorc3RhdGlj IHN0cnVjdCBtdGtfanBlZ192YXJpYW50IG10a19qcGVnX2RydmRhdGEgPSB7DQorCS5pc19lbmNv ZGVyCT0gdHJ1ZSwNCisJLmNsa19uYW1lcwk9IHsianBnZW5jIn0sDQorCS5udW1fY2xvY2tzCT0g MSwNCit9Ow0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19qcGVnX21h dGNoW10gPSB7DQogCXsNCiAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1qcGdkZWMi LA0KLQkJLmRhdGEgICAgICAgPSBOVUxMLA0KKwkJLmRhdGEgPSAmbXQ4MTczX2pwZWdfZHJ2ZGF0 YSwNCiAJfSwNCiAJew0KIAkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQyNzAxLWpwZ2RlYyIs DQotCQkuZGF0YSAgICAgICA9IE5VTEwsDQorCQkuZGF0YSA9ICZtdDI3MDFfanBlZ19kcnZkYXRh LA0KKwl9LA0KKwl7DQorCQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdGstanBnZW5jIiwNCisJ CS5kYXRhID0gJm10a19qcGVnX2RydmRhdGEsDQogCX0sDQogCXt9LA0KIH07DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuaA0KaW5kZXggMGI1OWU0 ODQ5NWQ1Li45ZWMyYzMzNTBhMTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1qcGVnL210a19qcGVnX2NvcmUuaA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9tdGtfanBlZ19jb3JlLmgNCkBAIC0zLDYgKzMsNyBAQA0KICAqIENvcHlyaWdodCAo YykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hz aXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5n QG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVr LmNvbT4NCiAgKi8NCiANCiAjaWZuZGVmIF9NVEtfSlBFR19DT1JFX0gNCkBAIC0xNiwxOSArMTcs MjEgQEANCiAjZGVmaW5lIE1US19KUEVHX05BTUUJCSJtdGstanBlZyINCiANCiAjZGVmaW5lIE1U S19KUEVHX0NPTVBfTUFYCQkzDQorI2RlZmluZSBNVEtfSlBFR19NQVhfQ0xPQ0tTCQkyDQorDQog DQogI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUCUJJVCgwKQ0KICNkZWZpbmUg TVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUJQklUKDEpDQotDQotI2RlZmluZSBNVEtfSlBF R19GTVRfVFlQRV9PVVRQVVQJMQ0KLSNkZWZpbmUgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRQky DQorI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgyKQ0KKyNkZWZpbmUg TVRLX0pQRUdfRk1UX0ZMQUdfRU5DX0NBUFRVUkUJQklUKDMpDQogDQogI2RlZmluZSBNVEtfSlBF R19NSU5fV0lEVEgJMzJVDQogI2RlZmluZSBNVEtfSlBFR19NSU5fSEVJR0hUCTMyVQ0KLSNkZWZp bmUgTVRLX0pQRUdfTUFYX1dJRFRICTgxOTJVDQotI2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hU CTgxOTJVDQorI2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEgJNjU1MzVVDQorI2RlZmluZSBNVEtf SlBFR19NQVhfSEVJR0hUCTY1NTM1VQ0KIA0KICNkZWZpbmUgTVRLX0pQRUdfREVGQVVMVF9TSVpF SU1BR0UJKDEgKiAxMDI0ICogMTAyNCkNCisjZGVmaW5lIE1US19KUEVHX01BWF9FWElGX1NJWkUJ KDY0ICogMTAyNCkNCiANCiAvKioNCiAgKiBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSAtIHN0YXRl cyBvZiB0aGUgY29udGV4dCBzdGF0ZSBtYWNoaW5lDQpAQCAtNDIsNiArNDUsMTggQEAgZW51bSBt dGtfanBlZ19jdHhfc3RhdGUgew0KIAlNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFLA0KIH07DQogDQor LyoqDQorICogbXRrX2pwZWdfdmFyaWFudCAtIG10ayBqcGVnIGRyaXZlciB2YXJpYW50DQorICog QGlzX2VuY29kZXI6CQlkcml2ZXIgbW9kZSBpcyBqcGVnIGVuY29kZXINCisgKiBAY2xrX25hbWVz OgkJY2xvY2sgbmFtZXMNCisgKiBAbnVtX2Nsb2NrczoJCW51bWJlcnMgb2YgY2xvY2sNCisgKi8N CitzdHJ1Y3QgbXRrX2pwZWdfdmFyaWFudCB7DQorCWJvb2wgaXNfZW5jb2RlcjsNCisJY29uc3Qg Y2hhcgkJKmNsa19uYW1lc1tNVEtfSlBFR19NQVhfQ0xPQ0tTXTsNCisJaW50CQkJbnVtX2Nsb2Nr czsNCit9Ow0KKw0KIC8qKg0KICAqIHN0cnVjdCBtdF9qcGVnIC0gSlBFRyBJUCBhYnN0cmFjdGlv bg0KICAqIEBsb2NrOgkJdGhlIG11dGV4IHByb3RlY3RpbmcgdGhpcyBzdHJ1Y3R1cmUNCkBAIC01 Myw5ICs2OCw5IEBAIGVudW0gbXRrX2pwZWdfY3R4X3N0YXRlIHsNCiAgKiBAYWxsb2NfY3R4OgkJ dmlkZW9idWYyIG1lbW9yeSBhbGxvY2F0b3IncyBjb250ZXh0DQogICogQHZkZXY6CQl2aWRlbyBk ZXZpY2Ugbm9kZSBmb3IganBlZyBtZW0ybWVtIG1vZGUNCiAgKiBAcmVnX2Jhc2U6CQlKUEVHIHJl Z2lzdGVycyBtYXBwaW5nDQotICogQGNsa19qZGVjOgkJSlBFRyBodyB3b3JraW5nIGNsb2NrDQot ICogQGNsa19qZGVjX3NtaToJSlBFRyBTTUkgYnVzIGNsb2NrDQogICogQGxhcmI6CQlTTUkgZGV2 aWNlDQorICogQGNsb2NrczoJCUpQRUcgSVAgY2xvY2socykNCisgKiBAdmFyaWFudDoJCWRyaXZl ciB2YXJpYW50IHRvIGJlIHVzZWQNCiAgKi8NCiBzdHJ1Y3QgbXRrX2pwZWdfZGV2IHsNCiAJc3Ry dWN0IG11dGV4CQlsb2NrOw0KQEAgLTY3LDE0ICs4MiwxNSBAQCBzdHJ1Y3QgbXRrX2pwZWdfZGV2 IHsNCiAJdm9pZAkJCSphbGxvY19jdHg7DQogCXN0cnVjdCB2aWRlb19kZXZpY2UJKnZkZXY7DQog CXZvaWQgX19pb21lbQkJKnJlZ19iYXNlOw0KLQlzdHJ1Y3QgY2xrCQkqY2xrX2pkZWM7DQotCXN0 cnVjdCBjbGsJCSpjbGtfamRlY19zbWk7DQogCXN0cnVjdCBkZXZpY2UJCSpsYXJiOw0KKwlzdHJ1 Y3QgY2xrCQkqY2xvY2tzW01US19KUEVHX01BWF9DTE9DS1NdOw0KKwljb25zdCBzdHJ1Y3QgbXRr X2pwZWdfdmFyaWFudCAqdmFyaWFudDsNCiB9Ow0KIA0KIC8qKg0KICAqIHN0cnVjdCBqcGVnX2Zt dCAtIGRyaXZlcidzIGludGVybmFsIGNvbG9yIGZvcm1hdCBkYXRhDQogICogQGZvdXJjYzoJdGhl IGZvdXJjYyBjb2RlLCAwIGlmIG5vdCBhcHBsaWNhYmxlDQorICogQGh3X2Zvcm1hdDoJaGFyZHdh cmUgZm9ybWF0IHZhbHVlDQogICogQGhfc2FtcGxlOglob3Jpem9udGFsIHNhbXBsZSBjb3VudCBv ZiBwbGFuZSBpbiA0ICogNCBwaXhlbCBpbWFnZQ0KICAqIEB2X3NhbXBsZToJdmVydGljYWwgc2Ft cGxlIGNvdW50IG9mIHBsYW5lIGluIDQgKiA0IHBpeGVsIGltYWdlDQogICogQGNvbHBsYW5lczoJ bnVtYmVyIG9mIGNvbG9yIHBsYW5lcyAoMSBmb3IgcGFja2VkIGZvcm1hdHMpDQpAQCAtODQsNiAr MTAwLDcgQEAgc3RydWN0IG10a19qcGVnX2RldiB7DQogICovDQogc3RydWN0IG10a19qcGVnX2Zt dCB7DQogCXUzMglmb3VyY2M7DQorCXUzMglod19mb3JtYXQ7DQogCWludAloX3NhbXBsZVtWSURF T19NQVhfUExBTkVTXTsNCiAJaW50CXZfc2FtcGxlW1ZJREVPX01BWF9QTEFORVNdOw0KIAlpbnQJ Y29scGxhbmVzOw0KQEAgLTEwNyw2ICsxMjQsNyBAQCBzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhIHsN CiAJdTMyCQkJaDsNCiAJdTMyCQkJYnl0ZXNwZXJsaW5lW1ZJREVPX01BWF9QTEFORVNdOw0KIAl1 MzIJCQlzaXplaW1hZ2VbVklERU9fTUFYX1BMQU5FU107DQorCXN0cnVjdCB2NGwyX3JlY3QJY3Jv cF9yZWN0Ow0KIH07DQogDQogLyoqDQpAQCAtMTE2LDYgKzEzNCwxMCBAQCBzdHJ1Y3QgbXRrX2pw ZWdfcV9kYXRhIHsNCiAgKiBAY2FwX3E6CQlkZXN0aW5hdGlvbiAoY2FwdHVyZSkgcXVldWUgcXVl dWUgaW5mb3JtYXRpb24NCiAgKiBAZmg6CQkJVjRMMiBmaWxlIGhhbmRsZQ0KICAqIEBzdGF0ZToJ CXN0YXRlIG9mIHRoZSBjb250ZXh0DQorICogQGVuYWJsZV9leGlmOgllbmFibGUgZXhpZiBtb2Rl IG9mIGpwZWcgZW5jb2Rlcg0KKyAqIEBlbmNfcXVhbGl0eToJanBlZyBlbmNvZGVyIHF1YWxpdHkN CisgKiBAcmVzdGFydF9pbnRlcnZhbDoJanBlZyBlbmNvZGVyIHJlc3RhcnQgaW50ZXJ2YWwNCisg KiBAY3RybF9oZGw6CQljb250cm9scyBoYW5kbGVyDQogICogQGNvbG9yc3BhY2U6IGVudW0gdjRs Ml9jb2xvcnNwYWNlOyBzdXBwbGVtZW50YWwgdG8gcGl4ZWxmb3JtYXQNCiAgKiBAeWNiY3JfZW5j OiBlbnVtIHY0bDJfeWNiY3JfZW5jb2RpbmcsIFknQ2JDciBlbmNvZGluZw0KICAqIEBxdWFudGl6 YXRpb246IGVudW0gdjRsMl9xdWFudGl6YXRpb24sIGNvbG9yc3BhY2UgcXVhbnRpemF0aW9uDQpA QCAtMTI3LDYgKzE0OSwxMCBAQCBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0IG10a19q cGVnX3FfZGF0YQkJY2FwX3E7DQogCXN0cnVjdCB2NGwyX2ZoCQkJZmg7DQogCWVudW0gbXRrX2pw ZWdfY3R4X3N0YXRlCQlzdGF0ZTsNCisJYm9vbAkJCQllbmFibGVfZXhpZjsNCisJdTgJCQkJZW5j X3F1YWxpdHk7DQorCXU4CQkJCXJlc3RhcnRfaW50ZXJ2YWw7DQorCXN0cnVjdCB2NGwyX2N0cmxf aGFuZGxlcgljdHJsX2hkbDsNCiANCiAJZW51bSB2NGwyX2NvbG9yc3BhY2UgY29sb3JzcGFjZTsN CiAJZW51bSB2NGwyX3ljYmNyX2VuY29kaW5nIHljYmNyX2VuYzsNCmRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2ZjMWRlOTIwYTc1DQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQpA QCAtMCwwICsxLDE5MyBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkNCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9y OiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQorICoNCisgKi8NCisNCisjaW5j bHVkZSA8bGludXgvaW8uaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUg PG1lZGlhL3ZpZGVvYnVmMi1jb3JlLmg+DQorDQorI2luY2x1ZGUgIm10a19qcGVnX2VuY19ody5o Ig0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCBtdGtfanBlZ19lbmNf cXVhbGl0eVtdID0gew0KKwl7LnF1YWxpdHlfcGFyYW0gPSAzNCwgLmhhcmR3YXJlX3ZhbHVlID0g SlBFR19FTkNfUVVBTElUWV9RMzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSAzOSwgLmhhcmR3YXJl X3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RMzl9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA0OCwg LmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNDh9LA0KKwl7LnF1YWxpdHlfcGFy YW0gPSA2MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNjB9LA0KKwl7LnF1 YWxpdHlfcGFyYW0gPSA2NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RNjR9 LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA2OCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVB TElUWV9RNjh9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA3NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBF R19FTkNfUVVBTElUWV9RNzR9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4MCwgLmhhcmR3YXJlX3Zh bHVlID0gSlBFR19FTkNfUVVBTElUWV9RODB9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA4MiwgLmhh cmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODJ9LA0KKwl7LnF1YWxpdHlfcGFyYW0g PSA4NCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODR9LA0KKwl7LnF1YWxp dHlfcGFyYW0gPSA4NywgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9RODd9LA0K Kwl7LnF1YWxpdHlfcGFyYW0gPSA5MCwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElU WV9ROTB9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5MiwgLmhhcmR3YXJlX3ZhbHVlID0gSlBFR19F TkNfUVVBTElUWV9ROTJ9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5NSwgLmhhcmR3YXJlX3ZhbHVl ID0gSlBFR19FTkNfUVVBTElUWV9ROTV9LA0KKwl7LnF1YWxpdHlfcGFyYW0gPSA5NywgLmhhcmR3 YXJlX3ZhbHVlID0gSlBFR19FTkNfUVVBTElUWV9ROTd9LA0KK307DQorDQordm9pZCBtdGtfanBl Z19lbmNfcmVzZXQodm9pZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJd3JpdGVsKDB4MDAsIGJhc2Ug KyBKUEVHX0VOQ19SU1RCKTsNCisJd3JpdGVsKEpQRUdfRU5DX1JFU0VUX0JJVCwgYmFzZSArIEpQ RUdfRU5DX1JTVEIpOw0KKwl3cml0ZWwoMHgwMCwgYmFzZSArIEpQRUdfRU5DX0NPREVDX1NFTCk7 DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2FuZF9jbGVhcl9pbnRfc3RhdHVzKHZvaWQg X19pb21lbSAqYmFzZSkNCit7DQorCXUzMiByZXQ7DQorDQorCXJldCA9IHJlYWRsKGJhc2UgKyBK UEVHX0VOQ19JTlRfU1RTKSAmDQorCQkgICAgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElS UTsNCisJaWYgKHJldCkNCisJCXdyaXRlbCgwLCBiYXNlICsgSlBFR19FTkNfSU5UX1NUUyk7DQor DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2 b2lkIF9faW9tZW0gKmJhc2UpDQorew0KKwlyZXR1cm4gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RN QV9BRERSMCkgLQ0KKwkgICAgICAgcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQor fQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1 MzIgaXJxX3N0YXR1cykNCit7DQorCWlmIChpcnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRV U19ET05FKQ0KKwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORTsNCisJZWxzZSBpZiAo aXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfU1RBTEwpDQorCQlyZXR1cm4gTVRLX0pQ RUdfRU5DX1JFU1VMVF9TVEFMTDsNCisJZWxzZQ0KKwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNV TFRfVkNPREVDX0lSUTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2ltZ19zaXplKHZv aWQgX19pb21lbSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQ0KK3sNCisJdTMyIHZhbHVl Ow0KKw0KKwl2YWx1ZSA9IHdpZHRoIDw8IDE2IHwgaGVpZ2h0Ow0KKwl3cml0ZWwodmFsdWUsIGJh c2UgKyBKUEVHX0VOQ19JTUdfU0laRSk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9i bGtfbnVtKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJ CQkgICAgICB1MzIgaGVpZ2h0KQ0KK3sNCisJdTMyIGJsa19udW07DQorCXUzMiBpc180MjA7DQor CXUzMiBwYWRkaW5nX3dpZHRoOw0KKwl1MzIgcGFkZGluZ19oZWlnaHQ7DQorCXUzMiBsdW1hX2Js b2NrczsNCisJdTMyIGNocm9tYV9ibG9ja3M7DQorDQorCWlzXzQyMCA9IChlbmNfZm9ybWF0ID09 IFY0TDJfUElYX0ZNVF9OVjEyTSB8fA0KKwkJICBlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9O VjIxTSkgPyAxIDogMDsNCisJcGFkZGluZ193aWR0aCA9IHJvdW5kX3VwKHdpZHRoLCAxNik7DQor CXBhZGRpbmdfaGVpZ2h0ID0gcm91bmRfdXAoaGVpZ2h0LCBpc180MjAgPyAxNiA6IDgpOw0KKw0K KwlsdW1hX2Jsb2NrcyA9IHBhZGRpbmdfd2lkdGggLyA4ICogcGFkZGluZ19oZWlnaHQgLyA4Ow0K KwlpZiAoaXNfNDIwKQ0KKwkJY2hyb21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tzIC8gNDsNCisJZWxz ZQ0KKwkJY2hyb21hX2Jsb2NrcyA9IGx1bWFfYmxvY2tzIC8gMjsNCisNCisJYmxrX251bSA9IGx1 bWFfYmxvY2tzICsgMiAqIGNocm9tYV9ibG9ja3MgLSAxOw0KKw0KKwl3cml0ZWwoYmxrX251bSwg YmFzZSArIEpQRUdfRU5DX0JMS19OVU0pOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19zZXRf c3RyaWRlKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUzMiB3aWR0aCwNCisJ CQkgICAgIHUzMiBoZWlnaHQsIHUzMiBieXRlc3BlcmxpbmUpDQorew0KKwl1MzIgaW1nX3N0cmlk ZTsNCisJdTMyIG1lbV9zdHJpZGU7DQorDQorCWlmIChlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZN VF9OVjEyTSB8fA0KKwkgICAgZW5jX2Zvcm1hdCA9PSBWNEwyX1BJWF9GTVRfTlYyMU0pIHsNCisJ CWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCwgMTYpOw0KKwkJbWVtX3N0cmlkZSA9IGJ5dGVz cGVybGluZTsNCisJfSBlbHNlIHsNCisJCWltZ19zdHJpZGUgPSByb3VuZF91cCh3aWR0aCAqIDIs IDMyKTsNCisJCW1lbV9zdHJpZGUgPSBpbWdfc3RyaWRlOw0KKwl9DQorDQorCXdyaXRlbChpbWdf c3RyaWRlLCBiYXNlICsgSlBFR19FTkNfSU1HX1NUUklERSk7DQorCXdyaXRlbChtZW1fc3RyaWRl LCBiYXNlICsgSlBFR19FTkNfU1RSSURFKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0 X3NyY19hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHNyY19hZGRyLA0KKwkJCSAgICAgICB1 MzIgcGxhbmVfaW5kZXgpDQorew0KKwlpZiAoIXBsYW5lX2luZGV4KQ0KKwkJd3JpdGVsKHNyY19h ZGRyLCBiYXNlICsgSlBFR19FTkNfU1JDX0xVTUFfQUREUik7DQorCWVsc2UNCisJCXdyaXRlbChz cmNfYWRkciwgYmFzZSArIEpQRUdfRU5DX1NSQ19DSFJPTUFfQUREUik7DQorfQ0KKw0KK3ZvaWQg bXRrX2pwZWdfZW5jX3NldF9kc3RfYWRkcih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBkc3RfYWRk ciwNCisJCQkgICAgICAgdTMyIHN0YWxsX3NpemUsIHUzMiBpbml0X29mZnNldCwNCisJCQkgICAg ICAgdTMyIG9mZnNldF9tYXNrKQ0KK3sNCisJd3JpdGVsKGluaXRfb2Zmc2V0ICYgfjB4ZiwgYmFz ZSArIEpQRUdfRU5DX09GRlNFVF9BRERSKTsNCisJd3JpdGVsKG9mZnNldF9tYXNrICYgMHhmLCBi YXNlICsgSlBFR19FTkNfQllURV9PRkZTRVRfTUFTSyk7DQorCXdyaXRlbChkc3RfYWRkciAmIH4w eGYsIGJhc2UgKyBKUEVHX0VOQ19EU1RfQUREUjApOw0KKwl3cml0ZWwoKGRzdF9hZGRyICsgc3Rh bGxfc2l6ZSkgJiB+MHhmLCBiYXNlICsgSlBFR19FTkNfU1RBTExfQUREUjApOw0KK30NCisNCitz dGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfc2V0X3F1YWxpdHkodm9pZCBfX2lvbWVtICpiYXNlLCB1 MzIgcXVhbGl0eSkNCit7DQorCXUzMiB2YWx1ZTsNCisJdTMyIGksIGVuY19xdWFsaXR5Ow0KKw0K KwllbmNfcXVhbGl0eSA9IG10a19qcGVnX2VuY19xdWFsaXR5WzBdLmhhcmR3YXJlX3ZhbHVlOw0K Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtdGtfanBlZ19lbmNfcXVhbGl0eSk7IGkrKykg ew0KKwkJaWYgKHF1YWxpdHkgPD0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0ucXVhbGl0eV9wYXJh bSkgew0KKwkJCWVuY19xdWFsaXR5ID0gbXRrX2pwZWdfZW5jX3F1YWxpdHlbaV0uaGFyZHdhcmVf dmFsdWU7DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCisNCisJdmFsdWUgPSByZWFkbChiYXNlICsg SlBFR19FTkNfUVVBTElUWSk7DQorCXZhbHVlID0gKHZhbHVlICYgSlBFR19FTkNfUVVBTElUWV9N QVNLKSB8IGVuY19xdWFsaXR5Ow0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19RVUFM SVRZKTsNCit9DQorDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfZW5jX3NldF9jdHJsKHZvaWQgX19p b21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsDQorCQkJCSAgYm9vbCBleGlmX2VuLCB1MzIgcmVz dGFydF9pbnRlcnZhbCkNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSByZWFkbChiYXNl ICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX1lVVl9GT1JNQVRf TUFTSzsNCisJdmFsdWUgfD0gKGVuY19mb3JtYXQgJiAzKSA8PCAzOw0KKwlpZiAoZXhpZl9lbikN CisJCXZhbHVlIHw9IEpQRUdfRU5DX0NUUkxfRklMRV9GT1JNQVRfQklUOw0KKwllbHNlDQorCQl2 YWx1ZSAmPSB+SlBFR19FTkNfQ1RSTF9GSUxFX0ZPUk1BVF9CSVQ7DQorCWlmIChyZXN0YXJ0X2lu dGVydmFsKQ0KKwkJdmFsdWUgfD0gSlBFR19FTkNfQ1RSTF9SRVNUQVJUX0VOX0JJVDsNCisJZWxz ZQ0KKwkJdmFsdWUgJj0gfkpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQ7DQorCXdyaXRlbCh2 YWx1ZSwgYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KK30NCisNCit2b2lkIG10a19qcGVnX2VuY19z ZXRfY29uZmlnKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIGJvb2wgZXhpZl9l biwNCisJCQkgICAgIHUzMiBxdWFsaXR5LCB1MzIgcmVzdGFydF9pbnRlcnZhbCkNCit7DQorCW10 a19qcGVnX2VuY19zZXRfcXVhbGl0eShiYXNlLCBxdWFsaXR5KTsNCisNCisJbXRrX2pwZWdfZW5j X3NldF9jdHJsKGJhc2UsIGVuY19mb3JtYXQsIGV4aWZfZW4sIHJlc3RhcnRfaW50ZXJ2YWwpOw0K Kw0KKwl3cml0ZWwocmVzdGFydF9pbnRlcnZhbCwgYmFzZSArIEpQRUdfRU5DX1JTVF9NQ1VfTlVN KTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc3RhcnQodm9pZCBfX2lvbWVtICpiYXNlKQ0K K3sNCisJdTMyIHZhbHVlOw0KKw0KKwl2YWx1ZSA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19DVFJM KTsNCisJdmFsdWUgfD0gSlBFR19FTkNfQ1RSTF9JTlRfRU5fQklUIHwgSlBFR19FTkNfQ1RSTF9F TkFCTEVfQklUOw0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCit9DQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNf aHcuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmgN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjczZmFmNDliNjY3Yw0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19lbmNfaHcuaA0KQEAgLTAsMCArMSwxMjMgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5ICovDQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgTWVkaWFU ZWsgSW5jLg0KKyAqIEF1dGhvcjogWGlhIEppYW5nIDx4aWEuamlhbmdAbWVkaWF0ZWsuY29tPg0K KyAqDQorICovDQorDQorI2lmbmRlZiBfTVRLX0pQRUdfRU5DX0hXX0gNCisjZGVmaW5lIF9NVEtf SlBFR19FTkNfSFdfSA0KKw0KKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItY29yZS5oPg0KKw0K KyNpbmNsdWRlICJtdGtfanBlZ19jb3JlLmgiDQorDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RB VFVTX0RPTkUJQklUKDApDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RBVFVTX1NUQUxMCUJJVCgx KQ0KKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUQVRVU19WQ09ERUNfSVJRCUJJVCg0KQ0KKyNkZWZp bmUgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElSUQkweDEzDQorDQorI2RlZmluZSBKUEVH X0VOQ19EU1RfQUREUl9PRkZTRVRfTUFTSwlHRU5NQVNLKDMsIDApDQorI2RlZmluZSBKUEVHX0VO Q19RVUFMSVRZX01BU0sJCUdFTk1BU0soMzEsIDE2KQ0KKw0KKyNkZWZpbmUgSlBFR19FTkNfQ1RS TF9ZVVZfRk9STUFUX01BU0sJMHgxOA0KKyNkZWZpbmUgSlBFR19FTkNfQ1RSTF9SRVNUQVJUX0VO X0JJVAlCSVQoMTApDQorI2RlZmluZSBKUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJVAlCSVQo NSkNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfSU5UX0VOX0JJVAlCSVQoMikNCisjZGVmaW5lIEpQ RUdfRU5DX0NUUkxfRU5BQkxFX0JJVAlCSVQoMCkNCisjZGVmaW5lIEpQRUdfRU5DX1JFU0VUX0JJ VAkJQklUKDApDQorDQorI2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYJMA0KKyNkZWZp bmUgSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVllVCTENCisjZGVmaW5lIEpQRUdfRU5DX1lVVl9GT1JN QVRfTlYxMgkyDQorI2RlZmluZSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEJMw0KKw0KKyNkZWZp bmUgSlBFR19FTkNfUVVBTElUWV9RNjAJCTB4MA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9R ODAJCTB4MQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTAJCTB4Mg0KKyNkZWZpbmUgSlBF R19FTkNfUVVBTElUWV9ROTUJCTB4Mw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RMzkJCTB4 NA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjgJCTB4NQ0KKyNkZWZpbmUgSlBFR19FTkNf UVVBTElUWV9RODQJCTB4Ng0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTIJCTB4Nw0KKyNk ZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNDgJCTB4OA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElU WV9RNzQJCTB4YQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODcJCTB4Yg0KKyNkZWZpbmUg SlBFR19FTkNfUVVBTElUWV9RMzQJCTB4Yw0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjQJ CTB4ZQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODIJCTB4Zg0KKyNkZWZpbmUgSlBFR19F TkNfUVVBTElUWV9ROTcJCTB4MTANCisNCisjZGVmaW5lIEpQRUdfRU5DX1JTVEIJCQkweDEwMA0K KyNkZWZpbmUgSlBFR19FTkNfQ1RSTAkJCTB4MTA0DQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZ CQkweDEwOA0KKyNkZWZpbmUgSlBFR19FTkNfQkxLX05VTQkJMHgxMEMNCisjZGVmaW5lIEpQRUdf RU5DX0JMS19DTlQJCTB4MTEwDQorI2RlZmluZSBKUEVHX0VOQ19JTlRfU1RTCQkweDExYw0KKyNk ZWZpbmUgSlBFR19FTkNfRFNUX0FERFIwCQkweDEyMA0KKyNkZWZpbmUgSlBFR19FTkNfRE1BX0FE RFIwCQkweDEyNA0KKyNkZWZpbmUgSlBFR19FTkNfU1RBTExfQUREUjAJCTB4MTI4DQorI2RlZmlu ZSBKUEVHX0VOQ19PRkZTRVRfQUREUgkJMHgxMzgNCisjZGVmaW5lIEpQRUdfRU5DX1JTVF9NQ1Vf TlVNCQkweDE1MA0KKyNkZWZpbmUgSlBFR19FTkNfSU1HX1NJWkUJCTB4MTU0DQorI2RlZmluZSBK UEVHX0VOQ19ERUJVR19JTkZPMAkJMHgxNjANCisjZGVmaW5lIEpQRUdfRU5DX0RFQlVHX0lORk8x CQkweDE2NA0KKyNkZWZpbmUgSlBFR19FTkNfVE9UQUxfQ1lDTEUJCTB4MTY4DQorI2RlZmluZSBK UEVHX0VOQ19CWVRFX09GRlNFVF9NQVNLCTB4MTZjDQorI2RlZmluZSBKUEVHX0VOQ19TUkNfTFVN QV9BRERSCQkweDE3MA0KKyNkZWZpbmUgSlBFR19FTkNfU1JDX0NIUk9NQV9BRERSCTB4MTc0DQor I2RlZmluZSBKUEVHX0VOQ19TVFJJREUJCQkweDE3OA0KKyNkZWZpbmUgSlBFR19FTkNfSU1HX1NU UklERQkJMHgxN2MNCisjZGVmaW5lIEpQRUdfRU5DX0RDTV9DVFJMCQkweDMwMA0KKyNkZWZpbmUg SlBFR19FTkNfQ09ERUNfU0VMCQkweDMxNA0KKyNkZWZpbmUgSlBFR19FTkNfVUxUUkFfVEhSRVMJ CTB4MzE4DQorDQorZW51bSB7DQorCU1US19KUEVHX0VOQ19SRVNVTFRfRE9ORSwNCisJTVRLX0pQ RUdfRU5DX1JFU1VMVF9TVEFMTCwNCisJTVRLX0pQRUdfRU5DX1JFU1VMVF9WQ09ERUNfSVJRDQor fTsNCisNCisvKioNCisgKiBzdHJ1Y3QgbXRrX2pwZWdfZW5jX3FsdCAtIEpQRUcgZW5jb2RlciBx dWFsaXR5IGRhdGENCisgKiBAcXVhbGl0eV9wYXJhbToJcXVhbGl0eSB2YWx1ZQ0KKyAqIEBoYXJk d2FyZV92YWx1ZToJaGFyZHdhcmUgdmFsdWUgb2YgcXVhbGl0eQ0KKyAqLw0KK3N0cnVjdCBtdGtf anBlZ19lbmNfcWx0IHsNCisJdTgJcXVhbGl0eV9wYXJhbTsNCisJdTgJaGFyZHdhcmVfdmFsdWU7 DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3QgbXRfanBlZ19lbmNfYnMgLSBKUEVHIGVuY29kZXIg Yml0c3RyZWFtICBidWZmZXINCisgKiBAZG1hX2FkZHI6CQkJSlBFRyBlbmNvZGVyIGRlc3RpbmF0 aW9uIGFkZHJlc3MNCisgKiBAc2l6ZToJCQlKUEVHIGVuY29kZXIgYmlzdHJlYW0gc2l6ZQ0KKyAq IEBkbWFfYWRkcl9vZmZzZXQ6CQlKUEVHIGVuY29kZXIgb2Zmc2V0IGFkZHJlc3MNCisgKiBAZG1h X2FkZHJfb2Zmc2V0bWFzazoJSlBFRyBlbmNvZGVyIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2Zmc2V0 IG1hc2sNCisgKi8NCitzdHJ1Y3QgbXRrX2pwZWdfZW5jX2JzIHsNCisJZG1hX2FkZHJfdAlkbWFf YWRkcjsNCisJc2l6ZV90CQlzaXplOw0KKwl1MzIJCWRtYV9hZGRyX29mZnNldDsNCisJdTMyCQlk bWFfYWRkcl9vZmZzZXRtYXNrOw0KK307DQorDQordm9pZCBtdGtfanBlZ19lbmNfcmVzZXQodm9p ZCBfX2lvbWVtICpiYXNlKTsNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9hbmRfY2xlYXJfaW50X3N0 YXR1cyh2b2lkIF9faW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6 ZSh2b2lkIF9faW9tZW0gKmJhc2UpOw0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9p ZCBfX2lvbWVtICpiYXNlLCB1MzIgaXJxX3N0YXR1cyk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0 X2ltZ19zaXplKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsNCit2 b2lkIG10a19qcGVnX2VuY19zZXRfYmxrX251bSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNf Zm9ybWF0LCB1MzIgd2lkdGgsDQorCQkJICAgICAgdTMyIGhlaWdodCk7DQordm9pZCBtdGtfanBl Z19lbmNfc2V0X3N0cmlkZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1MzIg d2lkdGgsDQorCQkJICAgICB1MzIgaGVpZ2h0LCB1MzIgYnl0ZXNwZXJsaW5lKTsNCit2b2lkIG10 a19qcGVnX2VuY19zZXRfc3JjX2FkZHIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgc3JjX2FkZHIs DQorCQkJICAgICAgIHUzMiBwbGFuZV9pbmRleCk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2Rz dF9hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGRzdF9hZGRyLA0KKwkJCSAgICAgICB1MzIg c3RhbGxfc2l6ZSwgdTMyIGluaXRfb2Zmc2V0LA0KKwkJCSAgICAgICB1MzIgb2Zmc2V0X21hc2sp Ow0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9jb25maWcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIg ZW5jX2Zvcm1hdCwgYm9vbCBleGlmX2VuLA0KKwkJCSAgICAgdTMyIHF1YWxpdHksIHUzMiByZXN0 YXJ0X2ludGVydmFsKTsNCit2b2lkIG10a19qcGVnX2VuY19zdGFydCh2b2lkIF9faW9tZW0gKmVu Y19yZWdfYmFzZSk7DQorDQorI2VuZGlmIC8qIF9NVEtfSlBFR19FTkNfSFdfSCAqLw0KLS0gDQoy LjE4LjANCg==