From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1A5AC2D0C4 for ; Tue, 10 Dec 2019 08:15:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 88ABE20663 for ; Tue, 10 Dec 2019 08:15:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="A6fsNqWU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727208AbfLJIPD (ORCPT ); Tue, 10 Dec 2019 03:15:03 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:39119 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726750AbfLJIPC (ORCPT ); Tue, 10 Dec 2019 03:15:02 -0500 X-UUID: 38155314c18e497aacbec5bc0f664b9a-20191210 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=sEkoMPWKI3m+K/8A3kC0uuYTNxZZaGCvfLKvnEmwQQ4=; b=A6fsNqWUmjxIiZPLPb43Hs36qwwvYXMLQ/LlU24IcsfBro20uMkDbzGq522r69u0071Qgekwc/zs4yujo0pz40jCfnAo38JIDP73w4ZyVGuOENM5gdE+qNNUednOVSi052hcMRhS7zpVD0Rfl7vKKOU42F7Tl+cadVzjUl0ow/s=; X-UUID: 38155314c18e497aacbec5bc0f664b9a-20191210 Received: from mtkcas09.mediatek.inc [(172.21.101.178)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 452927388; Tue, 10 Dec 2019 16:14:46 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 10 Dec 2019 16:14:31 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 10 Dec 2019 16:14:26 +0800 From: Landen Chao To: , , , , , CC: , , , , , , , , Landen Chao Subject: [PATCH net-next 4/6] net: dsa: mt7530: Add the support of MT7531 switch Date: Tue, 10 Dec 2019 16:14:40 +0800 Message-ID: <6d608dd024edc90b09ba4fe35417b693847f973c.1575914275.git.landen.chao@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIG5ldyBzdXBwb3J0IGZvciBNVDc1MzE6DQoNCk1UNzUzMSBpcyB0aGUgbmV4dCBnZW5lcmF0 aW9uIG9mIE1UNzUzMC4gSXQgaXMgYWxzbyBhIDctcG9ydHMgc3dpdGNoIHdpdGgNCjUgZ2lnYSBl bWJlZGRlZCBwaHlzLCAyIGNwdSBwb3J0cywgYW5kIHRoZSBzYW1lIE1BQyBsb2dpYyBvZiBNVDc1 MzAuIENwdQ0KcG9ydCA2IG9ubHkgc3VwcG9ydHMgSFNHTUlJIGludGVyZmFjZS4gQ3B1IHBvcnQg NSBzdXBwb3J0cyBlaXRoZXIgUkdNSUkNCm9yIEhTR01JSSBpbiBkaWZmZXJlbnQgSFcgc2t1LiBE dWUgdG8gSFNHTUlJIGludGVyZmFjZSBzdXBwb3J0LCBwbGwsIGFuZA0KcGFkIHNldHRpbmcgYXJl IGRpZmZlcmVudCBmcm9tIE1UNzUzMC4gVGhpcyBwYXRjaCBhZGRzIGRpZmZlcmVudCBpbml0aWFs DQpzZXR0aW5nIG9mIE1UNzUzMS4NCg0KU2lnbmVkLW9mZi1ieTogTGFuZGVuIENoYW8gPGxhbmRl bi5jaGFvQG1lZGlhdGVrLmNvbT4NClNpZ25lZC1vZmYtYnk6IFNlYW4gV2FuZyA8c2Vhbi53YW5n QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnICB8ICAgNiArLQ0K IGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyB8IDY0MyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0NCiBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggfCAxNDQgKysrKysrKysr DQogMyBmaWxlcyBjaGFuZ2VkLCA3ODQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCg0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnIGIvZHJpdmVycy9uZXQvZHNhL0tj b25maWcNCmluZGV4IDQ2N2Y4MDE1N2FjZi4uYTc3NzA5NDY5MDkzIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9uZXQvZHNhL0tjb25maWcNCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnDQpAQCAt MzMsMTIgKzMzLDEyIEBAIGNvbmZpZyBORVRfRFNBX0xBTlRJUV9HU1dJUA0KIAkgIHRoZSB4cngy MDAgLyBWUjkgU29DLg0KIA0KIGNvbmZpZyBORVRfRFNBX01UNzUzMA0KLQl0cmlzdGF0ZSAiTWVk aWFUZWsgTVQ3NTMwIGFuZCBNVDc2MjEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnQiDQorCXRyaXN0 YXRlICJNZWRpYVRlayBNVDc1M3ggYW5kIE1UNzYyMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydCIN CiAJZGVwZW5kcyBvbiBORVRfRFNBDQogCXNlbGVjdCBORVRfRFNBX1RBR19NVEsNCiAJLS0taGVs cC0tLQ0KLQkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFu ZCBNVDc2MjEgRXRoZXJuZXQNCi0JICBzd2l0Y2ggY2hpcC4NCisJICBUaGlzIGVuYWJsZXMgc3Vw cG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMCwgTVQ3NTMxIGFuZCBNVDc2MjENCisJICBFdGhl cm5ldCBzd2l0Y2ggY2hpcC4NCiANCiBjb25maWcgTkVUX0RTQV9NVjg4RTYwNjANCiAJdHJpc3Rh dGUgIk1hcnZlbGwgODhFNjA2MCBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0Ig0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAu Yw0KaW5kZXggOWE2NDhkMWY1ZDA5Li40YmVlMDRkNzViNDkgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L25ldC9kc2EvbXQ3NTMwLmMNCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYw0KQEAgLTI4 NSw2ICsyODUsMTIgQEAgbXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMy IHJlZywgdTMyIHZhbCkNCiAJbXV0ZXhfdW5sb2NrKCZidXMtPm1kaW9fbG9jayk7DQogfQ0KIA0K K3N0YXRpYyB1MzINCitfbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9w b2xsICpwKQ0KK3sNCisJcmV0dXJuIG10NzUzMF9taWlfcmVhZChwLT5wcml2LCBwLT5yZWcpOw0K K30NCisNCiBzdGF0aWMgdTMyDQogX210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9s bCAqcCkNCiB7DQpAQCAtMzM4LDYgKzM0NCwxMDIgQEAgbXQ3NTMwX2NsZWFyKHN0cnVjdCBtdDc1 MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbCkNCiAJbXQ3NTMwX3Jtdyhwcml2LCByZWcs IHZhbCwgMCk7DQogfQ0KIA0KK3N0YXRpYyBpbnQNCittdDc1MzFfaW5kX21tZF9waHlfcmVhZChz dHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsDQorCQkJaW50IHJl Z251bSkNCit7DQorCXN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LT5idXM7DQorCXN0cnVjdCBt dDc1MzBfZHVtbXlfcG9sbCBwOw0KKwl1MzIgcmVnLCB2YWw7DQorCWludCByZXQ7DQorDQorCUlO SVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTsNCisNCisJbXV0 ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+bWRpb19sb2NrLCBNRElPX01VVEVYX05FU1RFRCk7DQorDQor CXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCB2YWws DQorCQkJCSAhKHZhbCAmIFBIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDAp IHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0 Ow0KKwl9DQorDQorCXJlZyA9IE1ESU9fQ0w0NV9BRERSIHwgTURJT19QSFlfQUREUihwb3J0KSB8 IE1ESU9fREVWX0FERFIoZGV2YWQpIHwNCisJICAgICAgcmVnbnVtOw0KKwltdDc1MzBfbWlpX3dy aXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBQSFlfQUNTX1NUKTsNCisNCisJcmV0ID0g cmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHZhbCwNCisJCQkJ ICEodmFsICYgUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJ ZGV2X2Vycihwcml2LT5kZXYsICJwb2xsIHRpbWVvdXRcbiIpOw0KKwkJZ290byBvdXQ7DQorCX0N CisNCisJcmVnID0gTURJT19DTDQ1X1JFQUQgfCBNRElPX1BIWV9BRERSKHBvcnQpIHwgTURJT19E RVZfQUREUihkZXZhZCk7DQorCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMs IHJlZyB8IFBIWV9BQ1NfU1QpOw0KKw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUz MF91bmxvY2tlZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2YWwgJiBQSFlfQUNTX1NUKSwgMjAs IDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwg dGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZXQgPSB2YWwgJiBNRElPX1JX X0RBVEFfTUFTSzsNCitvdXQ6DQorCW11dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KKw0K KwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3NTMxX2luZF9tbWRfcGh5X3dy aXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCwNCisJCQkg aW50IHJlZ251bSwgdTMyIGRhdGEpDQorew0KKwlzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi0+ YnVzOw0KKwlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDsNCisJdTMyIHZhbCwgcmVnOw0KKwlp bnQgcmV0Ow0KKw0KKwlJTklUX01UNzUzMF9EVU1NWV9QT0xMKCZwLCBwcml2LCBNVDc1MzFfUEhZ X0lBQyk7DQorDQorCW11dGV4X2xvY2tfbmVzdGVkKCZidXMtPm1kaW9fbG9jaywgTURJT19NVVRF WF9ORVNURUQpOw0KKw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tl ZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2YWwgJiBQSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7 DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwgdGltZW91dFxu Iik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZWcgPSBNRElPX0NMNDVfQUREUiB8IE1ESU9f UEhZX0FERFIocG9ydCkgfCBNRElPX0RFVl9BRERSKGRldmFkKSB8DQorCSAgICAgIHJlZ251bTsN CisJbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgUEhZX0FDU19T VCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQs ICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIFBIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYg KHJldCA8IDApIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJ CWdvdG8gb3V0Ow0KKwl9DQorDQorCXJlZyA9IE1ESU9fQ0w0NV9XUklURSB8IE1ESU9fUEhZX0FE RFIocG9ydCkgfCBNRElPX0RFVl9BRERSKGRldmFkKSB8DQorCSAgICAgIGRhdGE7DQorCW10NzUz MF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IFBIWV9BQ1NfU1QpOw0KKw0K KwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmcCwgdmFs LA0KKwkJCQkgISh2YWwgJiBQSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAw KSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91 dDsNCisJfQ0KKw0KK291dDoNCisJbXV0ZXhfdW5sb2NrKCZidXMtPm1kaW9fbG9jayk7DQorDQor CXJldHVybiByZXQ7DQorfQ0KKw0KIHN0YXRpYyBpbnQNCiBtdDc1MzBfZmRiX2NtZChzdHJ1Y3Qg bXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcCkNCiB7 DQpAQCAtNTg5LDYgKzY5MSw4MyBAQCBzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGUoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwNCiAJcmV0dXJuIG1kaW9idXNf d3JpdGVfbmVzdGVkKHByaXYtPmJ1cywgcG9ydCwgcmVnbnVtLCB2YWwpOw0KIH0NCiANCitzdGF0 aWMgaW50DQorbXQ3NTMxX2luZF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LCBpbnQgcmVnbnVtKQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnBy aXY7DQorCXN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LT5idXM7DQorCXN0cnVjdCBtdDc1MzBf ZHVtbXlfcG9sbCBwOw0KKwlpbnQgcmV0Ow0KKwl1MzIgdmFsOw0KKw0KKwlJTklUX01UNzUzMF9E VU1NWV9QT0xMKCZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7DQorDQorCW11dGV4X2xvY2tfbmVz dGVkKCZidXMtPm1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpOw0KKw0KKwlyZXQgPSByZWFk eF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2 YWwgJiBQSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZf ZXJyKHByaXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0K Kwl2YWwgPSBNRElPX0NMMjJfUkVBRCB8IE1ESU9fUEhZX0FERFIocG9ydCkgfCBNRElPX1JFR19B RERSKHJlZ251bSk7DQorDQorCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMs IHZhbCB8IFBIWV9BQ1NfU1QpOw0KKw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUz MF91bmxvY2tlZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2YWwgJiBQSFlfQUNTX1NUKSwgMjAs IDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwg dGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZXQgPSB2YWwgJiBNRElPX1JX X0RBVEFfTUFTSzsNCitvdXQ6DQorCW11dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KKw0K KwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3NTMxX2luZF9waHlfd3JpdGUo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwNCisJCSAgICAgdTE2 IGRhdGEpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisJc3Ry dWN0IG1paV9idXMgKmJ1cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xs IHA7DQorCWludCByZXQ7DQorCXUzMiByZWc7DQorDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwo JnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTsNCisNCisJbXV0ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+ bWRpb19sb2NrLCBNRElPX01VVEVYX05FU1RFRCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGlt ZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCByZWcsDQorCQkJCSAhKHJlZyAmIFBIWV9B Q1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIocHJpdi0+ ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCXJlZyA9IE1E SU9fQ0wyMl9XUklURSB8IE1ESU9fUEhZX0FERFIocG9ydCkgfCBNRElPX1JFR19BRERSKHJlZ251 bSkgfA0KKwkgICAgICBkYXRhOw0KKw0KKwltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9Q SFlfSUFDLCByZWcgfCBQSFlfQUNTX1NUKTsNCisNCisJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0 KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHJlZywNCisJCQkJICEocmVnICYgUEhZX0FDU19T VCksIDIwLCAxMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2Vycihwcml2LT5kZXYs ICJwb2xsIHRpbWVvdXRcbiIpOw0KKwkJZ290byBvdXQ7DQorCX0NCisNCitvdXQ6DQorCW11dGV4 X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCiBzdGF0 aWMgdm9pZA0KIG10NzUzMF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LCB1MzIgc3RyaW5nc2V0LA0KIAkJICAgdWludDhfdCAqZGF0YSkNCkBAIC0xMzgwLDYgKzE1 NTksODYgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykNCiAJcmV0dXJuIDA7 DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXQ3NTMxX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykN Cit7DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwlzdHJ1Y3QgbXQ3 NTMwX2R1bW15X3BvbGwgcDsNCisJdTMyIHZhbCwgaWQ7DQorCWludCByZXQsIGk7DQorDQorCS8q IFJlc2V0IHdob2xlIGNoaXAgdGhyb3VnaCBncGlvIHBpbiBvciBtZW1vcnktbWFwcGVkIHJlZ2lz dGVycyBmb3INCisJICogZGlmZmVyZW50IHR5cGUgb2YgaGFyZHdhcmUNCisJICovDQorCWlmIChw cml2LT5tY20pIHsNCisJCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtPnJzdGMpOw0KKwkJdXNs ZWVwX3JhbmdlKDEwMDAsIDExMDApOw0KKwkJcmVzZXRfY29udHJvbF9kZWFzc2VydChwcml2LT5y c3RjKTsNCisJfSBlbHNlIHsNCisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LT5yZXNl dCwgMCk7DQorCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMTEwMCk7DQorCQlncGlvZF9zZXRfdmFsdWVf Y2Fuc2xlZXAocHJpdi0+cmVzZXQsIDEpOw0KKwl9DQorDQorCS8qIFdhaXRpbmcgZm9yIE1UNzUz MCBnb3QgdG8gc3RhYmxlICovDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAsIHByaXYsIE1U NzUzMF9IV1RSQVApOw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCAm cCwgdmFsLCB2YWwgIT0gMCwNCisJCQkJIDIwLCAxMDAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsN CisJCWRldl9lcnIocHJpdi0+ZGV2LCAicmVzZXQgdGltZW91dFxuIik7DQorCQlyZXR1cm4gcmV0 Ow0KKwl9DQorDQorCWlkID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NSRVYpOw0KKwlpZCA+ Pj0gQ0hJUF9OQU1FX1NISUZUOw0KKw0KKwlpZiAoaWQgIT0gTVQ3NTMxX0lEKSB7DQorCQlkZXZf ZXJyKHByaXYtPmRldiwgImNoaXAgJXggY2FuJ3QgYmUgc3VwcG9ydGVkXG4iLCBpZCk7DQorCQly ZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwkvKiBSZXNldCB0aGUgc3dpdGNoIHRocm91Z2ggaW50 ZXJuYWwgcmVzZXQgKi8NCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9TWVNfQ1RSTCwNCisJ CSAgICAgU1lTX0NUUkxfUEhZX1JTVCB8IFNZU19DVFJMX1NXX1JTVCB8DQorCQkgICAgIFNZU19D VFJMX1JFR19SU1QpOw0KKw0KKwlwcml2LT5wNl9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01P REVfTkE7DQorDQorCS8qIEVuYWJsZSBQSFkgcG93ZXIsIHNpbmNlIHBoeV9kZXZpY2UgaGFzIG5v dCB5ZXQgYmVlbiBjcmVhdGVkDQorCSAqIHByb3ZpZGVkIGZvciBwaHlfW3JlYWQsd3JpdGVdX21t ZF9pbmRpcmVjdCBpcyBjYWxsZWQsIHdlIHByb3ZpZGUNCisJICogb3VyIG93biBtdDc1MzFfaW5k X21tZF9waHlfW3JlYWQsd3JpdGVdIHRvIGNvbXBsZXRlIHRoaXMNCisJICogZnVuY3Rpb24uDQor CSAqLw0KKwl2YWwgPSBtdDc1MzFfaW5kX21tZF9waHlfcmVhZChwcml2LCAwLCBQSFlfREVWMUYs DQorCQkJCSAgICAgIE1UNzUzMV9QSFlfREVWMUZfUkVHXzQwMyk7DQorCXZhbCB8PSBNVDc1MzFf UEhZX0VOX0JZUEFTU19NT0RFOw0KKwl2YWwgJj0gfk1UNzUzMV9QSFlfUE9XRVJfT0ZGOw0KKwlt dDc1MzFfaW5kX21tZF9waHlfd3JpdGUocHJpdiwgMCwgUEhZX0RFVjFGLA0KKwkJCQkgTVQ3NTMx X1BIWV9ERVYxRl9SRUdfNDAzLCB2YWwpOw0KKw0KKwkvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBj b3VudGVycyAqLw0KKwltdDc1MzBfbWliX3Jlc2V0KGRzKTsNCisNCisJbXQ3NTMwX2NsZWFyKHBy aXYsIE1UNzUzMF9NRkMsIFVOVV9GRlBfTUFTSyk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBNVDc1 MzBfTlVNX1BPUlRTOyBpKyspIHsNCisJCS8qIERpc2FibGUgZm9yd2FyZGluZyBieSBkZWZhdWx0 IG9uIGFsbCBwb3J0cyAqLw0KKwkJbXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUENSX1AoaSksIFBD Ul9NQVRSSVhfTUFTSywNCisJCQkgICBQQ1JfTUFUUklYX0NMUik7DQorDQorCQlpZiAoZHNhX2lz X2NwdV9wb3J0KGRzLCBpKSkNCisJCQltdDc1MzBfY3B1X3BvcnRfZW5hYmxlKHByaXYsIGkpOw0K KwkJZWxzZQ0KKwkJCW10NzUzMF9wb3J0X2Rpc2FibGUoZHMsIGkpOw0KKwl9DQorDQorCS8qIEZs dXNoIHRoZSBGREIgdGFibGUgKi8NCisJcmV0ID0gbXQ3NTMwX2ZkYl9jbWQocHJpdiwgTVQ3NTMw X0ZEQl9GTFVTSCwgTlVMTCk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJ cmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBib29sIG10NzUzMF9waHlfc3VwcG9ydGVkKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQkJCSBjb25zdCBzdHJ1Y3QgcGh5bGlua19s aW5rX3N0YXRlICpzdGF0ZSkNCiB7DQpAQCAtMTQxNyw2ICsxNjc2LDQ5IEBAIHN0YXRpYyBib29s IG10NzUzMF9waHlfc3VwcG9ydGVkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQog CXJldHVybiBmYWxzZTsNCiB9DQogDQorc3RhdGljIGJvb2wgbXQ3NTMxX2R1YWxfc2dtaWlfc3Vw cG9ydGVkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdikNCit7DQorCXUzMiB2YWw7DQorDQorCXZh bCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9UT1BfU0lHX1NSKTsNCisJcmV0dXJuICgodmFs ICYgUEFEX0RVQUxfU0dNSUlfRU4pICE9IDApOw0KK30NCisNCitzdGF0aWMgYm9vbCBtdDc1MzFf cGh5X3N1cHBvcnRlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KKwkJCQkgY29u c3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQorew0KKwlzdHJ1Y3QgbXQ3NTMw X3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisNCisJc3dpdGNoIChwb3J0KSB7DQorCWNhc2UgMDog LyogSW50ZXJuYWwgcGh5ICovDQorCWNhc2UgMToNCisJY2FzZSAyOg0KKwljYXNlIDM6DQorCWNh c2UgNDoNCisJCWlmIChzdGF0ZS0+aW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJ KQ0KKwkJCWdvdG8gdW5zdXBwb3J0ZWQ7DQorCQlicmVhazsNCisJY2FzZSA1OiAvKiAybmQgY3B1 IHBvcnQgc3VwcG9ydHMgZWl0aGVyIHJnbWlpIG9yIHNnbWlpLzgwMjN6ICovDQorCQlpZiAoIW10 NzUzMV9kdWFsX3NnbWlpX3N1cHBvcnRlZChwcml2KSkNCisJCQlyZXR1cm4gcGh5X2ludGVyZmFj ZV9tb2RlX2lzX3JnbWlpKHN0YXRlLT5pbnRlcmZhY2UpOw0KKwkJLyogZmFsbCB0aHJvdWdoICov DQorCWNhc2UgNjogLyogMXN0IGNwdSBwb3J0IHN1cHBvcnRzIHNnbWlpLzgwMjN6IG9ubHkgKi8N CisJCWlmIChzdGF0ZS0+aW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSAmJg0K KwkJICAgICFwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3ooc3RhdGUtPmludGVyZmFjZSkpDQor CQkJZ290byB1bnN1cHBvcnRlZDsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJZGV2X2Vycihw cml2LT5kZXYsICIlczogdW5zdXBwb3J0ZWQgcG9ydDogJWlcbiIsIF9fZnVuY19fLA0KKwkJCXBv cnQpOw0KKwkJZ290byB1bnN1cHBvcnRlZDsNCisJfQ0KKw0KKwlyZXR1cm4gdHJ1ZTsNCisNCit1 bnN1cHBvcnRlZDoNCisJcmV0dXJuIGZhbHNlOw0KK30NCisNCiBzdGF0aWMgYm9vbCBtdDc1M3hf cGh5X3N1cHBvcnRlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAkJCQkgY29u c3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQogew0KQEAgLTE0NDQsNiArMTc0 NiwxNDMgQEAgbXQ3NTMwX3BhZF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGNvbnN0IHN0 cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3Rh dGljIGludA0KK210NzUzMV9wYWRfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBz dHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSkNCit7DQorCXN0cnVjdCBtdDc1MzBfcHJp diAqcHJpdiA9IGRzLT5wcml2Ow0KKwl1MzIgeHRhbCwgdmFsOw0KKw0KKwlpZiAobXQ3NTMxX2R1 YWxfc2dtaWlfc3VwcG9ydGVkKHByaXYpKQ0KKwkJcmV0dXJuIDA7DQorDQorCXh0YWwgPSBtdDc1 MzBfcmVhZChwcml2LCBNVDc1MzFfSFdUUkFQKSAmIEhXVFJBUF9YVEFMX0ZTRUxfTUFTSzsNCisN CisJc3dpdGNoICh4dGFsKSB7DQorCWNhc2UgSFdUUkFQX1hUQUxfRlNFTF8yNU1IWjoNCisJCS8q IFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi8NCisJCXZhbCA9IG10NzUzMF9yZWFk KHByaXYsIE1UNzUzMV9QTExHUF9FTik7DQorCQl2YWwgJj0gfkVOX0NPUkVQTEw7DQorCQltdDc1 MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpOw0KKw0KKwkJLyogU3RlcCAyOiBz d2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi8NCisJCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUz MV9QTExHUF9FTik7DQorCQl2YWwgfD0gU1dfQ0xLU1c7DQorCQltdDc1MzBfd3JpdGUocHJpdiwg TVQ3NTMxX1BMTEdQX0VOLCB2YWwpOw0KKw0KKwkJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3 NTMxX1BMTEdQX0NSMCk7DQorCQl2YWwgJj0gflJHX0NPUkVQTExfRU47DQorCQltdDc1MzBfd3Jp dGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisNCisJCS8qIFN0ZXAgMzogZGlzYWJs ZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi8NCisJCXZhbCA9IG10NzUzMF9yZWFk KHByaXYsIE1UNzUzMV9QTExHUF9FTik7DQorCQl2YWwgfD0gU1dfUExMR1A7DQorCQltdDc1MzBf d3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpOw0KKw0KKwkJLyogU3RlcCA0OiBwcm9n cmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi8NCisJCXZhbCA9IG10NzUz MF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApOw0KKwkJdmFsICY9IH5SR19DT1JFUExMX1BP U0RJVl9NOw0KKwkJdmFsIHw9IDIgPDwgUkdfQ09SRVBMTF9QT1NESVZfUzsNCisJCW10NzUzMF93 cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpOw0KKwkJdXNsZWVwX3JhbmdlKDI1LCAz NSk7DQorDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ CXZhbCAmPSB+UkdfQ09SRVBMTF9TRE1fUENXX007DQorCQl2YWwgfD0gMHgxNDAwMDAgPDwgUkdf Q09SRVBMTF9TRE1fUENXX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NS MCwgdmFsKTsNCisNCisJCS8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25h bCB0byBoaWdoICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1Iw KTsNCisJCXZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHOw0KKwkJbXQ3NTMwX3dyaXRlKHBy aXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7DQorCQkvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBY VEFMIGNsb2NrcyAqLw0KKwkJdXNsZWVwX3JhbmdlKDEwLCAyMCk7DQorDQorCQkvKiBTdGVwIDU6 IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi8NCisJCXZh bCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApOw0KKwkJdmFsICY9IH5SR19D T1JFUExMX1NETV9QQ1dfQ0hHOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9D UjAsIHZhbCk7DQorDQorCQkvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi8NCisJCW10 NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApOw0KKw0KKwkJ LyogRW5hYmxlIDI1MFNTQyBjbG9jayBmb3IgUkdNSUkgKi8NCisJCW10NzUzMF93cml0ZShwcml2 LCBNVDc1MzFfQU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTsNCisNCisJCS8qIFN0ZXAgNjogRW5h YmxlIE1UNzUzMSBQTEwgKi8NCisJCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExH UF9DUjApOw0KKwkJdmFsIHw9IFJHX0NPUkVQTExfRU47DQorCQltdDc1MzBfd3JpdGUocHJpdiwg TVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisNCisJCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1U NzUzMV9QTExHUF9FTik7DQorCQl2YWwgfD0gRU5fQ09SRVBMTDsNCisJCW10NzUzMF93cml0ZShw cml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7DQorCQl1c2xlZXBfcmFuZ2UoMjUsIDM1KTsNCisJ CWJyZWFrOw0KKwljYXNlIEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFo6DQorCQkvKiBTdGVwIDEgOiBE aXNhYmxlIE1UNzUzMSBDT1JFUExMICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1 MzFfUExMR1BfRU4pOw0KKwkJdmFsICY9IH5FTl9DT1JFUExMOw0KKwkJbXQ3NTMwX3dyaXRlKHBy aXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTsNCisNCisJCS8qIFN0ZXAgMjogc3dpdGNoIHRvIFhU QUwgb3V0cHV0ICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4p Ow0KKwkJdmFsIHw9IFNXX0NMS1NXOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExH UF9FTiwgdmFsKTsNCisNCisJCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9D UjApOw0KKwkJdmFsICY9IH5SR19DT1JFUExMX0VOOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYsIE1U NzUzMV9QTExHUF9DUjAsIHZhbCk7DQorDQorCQkvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5k IGVuYWJsZSBwcm9ncmFtIFBMTEdQICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1 MzFfUExMR1BfRU4pOw0KKwkJdmFsIHw9IFNXX1BMTEdQOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYs IE1UNzUzMV9QTExHUF9FTiwgdmFsKTsNCisNCisJCS8qIFN0ZXAgNDogcHJvZ3JhbSBDT1JFUExM IG91dHB1dCBmcmVxdWVuY3kgdG8gNTAwTUh6ICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2 LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJCXZhbCAmPSB+UkdfQ09SRVBMTF9QT1NESVZfTTsNCisJ CXZhbCB8PSAyIDw8IFJHX0NPUkVQTExfUE9TRElWX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwg TVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisJCXVzbGVlcF9yYW5nZSgyNSwgMzUpOw0KKw0KKwkJ dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7DQorCQl2YWwgJj0gflJH X0NPUkVQTExfU0RNX1BDV19NOw0KKwkJdmFsIHw9IDB4MTkwMDAwIDw8IFJHX0NPUkVQTExfU0RN X1BDV19TOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7DQor DQorCQkvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAq Lw0KKwkJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7DQorCQl2YWwg fD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRzsNCisJCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFf UExMR1BfQ1IwLCB2YWwpOw0KKwkJLyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3Mg Ki8NCisJCXVzbGVlcF9yYW5nZSgxMCwgMjApOw0KKw0KKwkJLyogU3RlcCA1OiBzZXQgZmVlZGJh Y2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovDQorCQl2YWwgPSBtdDc1MzBf cmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJCXZhbCAmPSB+UkdfQ09SRVBMTF9TRE1f UENXX0NIRzsNCisJCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpOw0K Kw0KKwkJLyogRW5hYmxlIDMyNU0gY2xvY2sgZm9yIFNHTUlJICovDQorCQltdDc1MzBfd3JpdGUo cHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjUsIDB4YWQwMDAwKTsNCisNCisJCS8qIEVuYWJsZSAy NTBTU0MgY2xvY2sgZm9yIFJHTUlJICovDQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FO QV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7DQorDQorCQkvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEg UExMICovDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ CXZhbCB8PSBSR19DT1JFUExMX0VOOw0KKwkJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExH UF9DUjAsIHZhbCk7DQorDQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1Bf RU4pOw0KKwkJdmFsIHw9IEVOX0NPUkVQTEw7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMx X1BMTEdQX0VOLCB2YWwpOw0KKwkJdXNsZWVwX3JhbmdlKDI1LCAzNSk7DQorCQlicmVhazsNCisJ fQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludA0KIG10NzUzeF9wYWRfc2V0dXAo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpz dGF0ZSkNCiB7DQpAQCAtMTQ2Nyw2ICsxOTA2LDE0OSBAQCBtdDc1MzBfbWFjX3NldHVwKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KIAlyZXR1cm4g MDsNCiB9DQogDQorc3RhdGljIGludCBtdDc1MzFfcmdtaWlfc2V0dXAoc3RydWN0IG10NzUzMF9w cml2ICpwcml2LCB1MzIgcG9ydCkNCit7DQorCXUzMiB2YWw7DQorDQorCWlmIChwb3J0ICE9IDUp IHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAiUkdNSUkgbW9kZSBpcyBub3QgYXZhaWxhYmxlIGZv ciBwb3J0ICVkXG4iLA0KKwkJCXBvcnQpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJ dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NMS0dFTl9DVFJMKTsNCisJdmFsIHw9IEdQ X0NMS19FTjsNCisJdmFsICY9IH5HUF9NT0RFX01BU0s7DQorCXZhbCB8PSBHUF9NT0RFKE1UNzUz MV9HUF9NT0RFX1JHTUlJKTsNCisJdmFsIHw9IFRYQ0xLX05PX1JFVkVSU0U7DQorCXZhbCB8PSBS WENMS19OT19ERUxBWTsNCisJdmFsICY9IH5DTEtfU0tFV19JTl9NQVNLOw0KKwl2YWwgfD0gQ0xL X1NLRVdfSU4oTVQ3NTMxX0NMS19TS0VXX05PX0NIRyk7DQorCXZhbCAmPSB+Q0xLX1NLRVdfT1VU X01BU0s7DQorCXZhbCB8PSBDTEtfU0tFV19PVVQoTVQ3NTMxX0NMS19TS0VXX05PX0NIRyk7DQor CW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQ0xLR0VOX0NUUkwsIHZhbCk7DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW50IG10NzUzMV9zZ21paV9zZXR1cF9tb2RlX2ZvcmNlKHN0 cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHBvcnQsDQorCQkJCQkgY29uc3Qgc3RydWN0IHBo eWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQorew0KKwl1MzIgdmFsOw0KKw0KKwlpZiAocG9ydCAh PSA1ICYmIHBvcnQgIT0gNikNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwl2YWwgPSBtdDc1MzBf cmVhZChwcml2LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0KSk7DQorCXZhbCB8PSBN VDc1MzFfU0dNSUlfUEhZQV9QV0Q7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUVBIWV9Q V1JfU1RBVEVfQ1RSTChwb3J0KSwgdmFsKTsNCisNCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwg TVQ3NTMxX1BIWUFfQ1RSTF9TSUdOQUwzKHBvcnQpKTsNCisJdmFsICY9IH5NVDc1MzFfUkdfVFBI WV9TUEVFRF9NQVNLOw0KKwlpZiAoc3RhdGUtPmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01P REVfMjUwMEJBU0VYKQ0KKwkJdmFsIHw9IE1UNzUzMV9SR19UUEhZX1NQRUVEXzNfMTI1RzsNCisJ bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlBX0NUUkxfU0lHTkFMMyhwb3J0KSwgdmFsKTsN CisNCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9ydCkp Ow0KKwl2YWwgJj0gfk1UNzUzMV9TR01JSV9BTl9FTkFCTEU7DQorCW10NzUzMF93cml0ZShwcml2 LCBNVDc1MzFfUENTX0NPTlRST0xfMShwb3J0KSwgdmFsKTsNCisNCisJdmFsID0gbXQ3NTMwX3Jl YWQocHJpdiwgTVQ3NTMxX1NHTUlJX01PREUocG9ydCkpOw0KKwl2YWwgJj0gfk1UNzUzMV9TR01J SV9JRl9NT0RFX01BU0s7DQorDQorCXN3aXRjaCAoc3RhdGUtPnNwZWVkKSB7DQorCWNhc2UgU1BF RURfMTA6DQorCQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwOw0KKwkJYnJlYWs7 DQorCWNhc2UgU1BFRURfMTAwOg0KKwkJdmFsIHw9IE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8x MDA7DQorCQlicmVhazsNCisJY2FzZSBTUEVFRF8yNTAwOg0KKwljYXNlIFNQRUVEXzEwMDA6DQor CQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwMDA7DQorCQlicmVhazsNCisJfTsN CisNCisJdmFsICY9IH5NVDc1MzFfU0dNSUlfRk9SQ0VfRFVQTEVYOw0KKwkvKiBGb3Igc2dtaWkg Zm9yY2UgbW9kZSwgMCBpcyBmdWxsIGR1cGxleCBhbmQgMSBpcyBoYWxmIGR1cGxleCAqLw0KKwlp ZiAoc3RhdGUtPmR1cGxleCA9PSBEVVBMRVhfSEFMRikNCisJCXZhbCB8PSBNVDc1MzFfU0dNSUlf Rk9SQ0VfRFVQTEVYOw0KKw0KKwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1NHTUlJX01PREUo cG9ydCksIHZhbCk7DQorDQorCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9RUEhZX1BX Ul9TVEFURV9DVFJMKHBvcnQpKTsNCisJdmFsICY9IH5NVDc1MzFfU0dNSUlfUEhZQV9QV0Q7DQor CW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0KSwgdmFs KTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ3NTMxX3NnbWlpX3NldHVw X21vZGVfYW4oc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwNCisJCQkJICAgICAg Y29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQorew0KKwl1MzIgdmFsOw0K Kw0KKwlpZiAocG9ydCAhPSA1ICYmIHBvcnQgIT0gNikNCisJCXJldHVybiAtRUlOVkFMOw0KKw0K Kwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0 KSk7DQorCXZhbCB8PSBNVDc1MzFfU0dNSUlfUEhZQV9QV0Q7DQorCW10NzUzMF93cml0ZShwcml2 LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0KSwgdmFsKTsNCisNCisJc3dpdGNoIChz dGF0ZS0+c3BlZWQpIHsNCisJY2FzZSBTUEVFRF8xMDoNCisJY2FzZSBTUEVFRF8xMDA6DQorCWNh c2UgU1BFRURfMTAwMDoNCisJCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QSFlBX0NU UkxfU0lHTkFMMyhwb3J0KSk7DQorCQl2YWwgJj0gfk1UNzUzMV9SR19UUEhZX1NQRUVEX01BU0s7 DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWUFfQ1RSTF9TSUdOQUwzKHBvcnQpLCB2 YWwpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlkZXZfaW5mbyhwcml2LT5kZXYsICJpbnZh bGlkIFNHTUlJIHNwZWVkIGlkeCAlZCBmb3IgcG9ydCAlZFxuIiwNCisJCQkgc3RhdGUtPnNwZWVk LCBwb3J0KTsNCisNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXZhbCA9IG10NzUzMF9y ZWFkKHByaXYsIE1UNzUzMV9TR01JSV9NT0RFKHBvcnQpKTsNCisJdmFsIHw9IE1UNzUzMV9TR01J SV9SRU1PVEVfRkFVTFRfRElTOw0KKwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1NHTUlJX01P REUocG9ydCksIHZhbCk7DQorDQorCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QQ1Nf Q09OVFJPTF8xKHBvcnQpKTsNCisJdmFsIHw9IE1UNzUzMV9TR01JSV9BTl9SRVNUQVJUOw0KKwlt dDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9ydCksIHZhbCk7DQorDQor CXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9RUEhZX1BXUl9TVEFURV9DVFJMKHBvcnQp KTsNCisJdmFsICY9IH5NVDc1MzFfU0dNSUlfUEhZQV9QV0Q7DQorCW10NzUzMF93cml0ZShwcml2 LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0KSwgdmFsKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc1MzFfbWFjX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNo ICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KKwkJIGNvbnN0IHN0cnVjdCBwaHls aW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0g ZHMtPnByaXY7DQorDQorCWlmIChwb3J0IDwgNSB8fCBwb3J0ID49IE1UNzUzMF9OVU1fUE9SVFMp IHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAicG9ydCAlZCBpcyBub3QgYSBNQUMgcG9ydFxuIiwg cG9ydCk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlzd2l0Y2ggKHN0YXRlLT5pbnRl cmZhY2UpIHsNCisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6DQorCQlyZXR1cm4gbXQ3 NTMxX3JnbWlpX3NldHVwKHByaXYsIHBvcnQpOw0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8x MDAwQkFTRVg6DQorCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDoNCisJCXJldHVy biBtdDc1MzFfc2dtaWlfc2V0dXBfbW9kZV9mb3JjZShwcml2LCBwb3J0LCBzdGF0ZSk7DQorCWNh c2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOg0KKwkJcmV0dXJuIG10NzUzMV9zZ21paV9zZXR1 cF9tb2RlX2FuKHByaXYsIHBvcnQsIHN0YXRlKTsNCisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlO VkFMOw0KKwl9DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXQ3NTN4X21hY19zZXR1cChzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSwNCiAJCQkgICAgY29uc3Qg c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQogew0KQEAgLTE1MDEsNiArMjA4Myw4 IEBAIHN0YXRpYyB2b2lkIG10NzUzeF9waHlsaW5rX21hY19jb25maWcoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCWlmIChtdDc1M3hfbWFjX3NldHVwKGRzLCBwb3J0LCBtb2Rl LCBzdGF0ZSkgPCAwKQ0KIAkJCWdvdG8gdW5zdXBwb3J0ZWQ7DQogDQorCQlwcml2LT5wNV9pbnRl cmZhY2UgPSBzdGF0ZS0+aW50ZXJmYWNlOw0KKw0KIAkJYnJlYWs7DQogCWNhc2UgNjogLyogMXN0 IGNwdSBwb3J0ICovDQogCQlpZiAocHJpdi0+cDZfaW50ZXJmYWNlID09IHN0YXRlLT5pbnRlcmZh Y2UpDQpAQCAtMTUxNSwxMSArMjA5OSwxMSBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19t YWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQlicmVhazsNCiAJ ZGVmYXVsdDoNCiB1bnN1cHBvcnRlZDoNCi0JCWRldl9lcnIoZHMtPmRldiwgIiVzOiB1bnN1cHBv cnRlZCBwb3J0OiAlaVxuIiwgX19mdW5jX18sIHBvcnQpOw0KIAkJcmV0dXJuOw0KIAl9DQogDQot CWlmIChwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKG1vZGUpKSB7DQorCWlmIChwaHlsaW5rX2F1dG9u ZWdfaW5iYW5kKG1vZGUpICYmDQorCSAgICBzdGF0ZS0+aW50ZXJmYWNlICE9IFBIWV9JTlRFUkZB Q0VfTU9ERV9TR01JSSkgew0KIAkJZGV2X2Vycihkcy0+ZGV2LCAiJXM6IGluLWJhbmQgbmVnb3Rp YXRpb24gdW5zdXBwb3J0ZWRcbiIsDQogCQkJX19mdW5jX18pOw0KIAkJcmV0dXJuOw0KQEAgLTE1 MzAsMTMgKzIxMTQsMTUgQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZyhz dHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAltY3JfbmV3ICY9IH4oUE1DUl9GT1JD RV9TUEVFRF8xMDAwIHwgUE1DUl9GT1JDRV9TUEVFRF8xMDAgfA0KIAkJICAgICBQTUNSX0ZPUkNF X0ZEWCB8IFBNQ1JfVFhfRkNfRU4gfCBQTUNSX1JYX0ZDX0VOKTsNCiAJbWNyX25ldyB8PSBQTUNS X0lGR19YTUlUKDEpIHwgUE1DUl9NQUNfTU9ERSB8IFBNQ1JfQkFDS09GRl9FTiB8DQotCQkgICBQ TUNSX0JBQ0tQUl9FTiB8IFBNQ1JfRk9SQ0VfTU9ERSB8IFBNQ1JfRk9SQ0VfTE5LOw0KKwkJICAg UE1DUl9CQUNLUFJfRU4gfCBQTUNSX0ZPUkNFX01PREVfSUQocHJpdi0+aWQpIHwNCisJCSAgIFBN Q1JfRk9SQ0VfTE5LOw0KIA0KIAkvKiBBcmUgd2UgY29ubmVjdGVkIHRvIGV4dGVybmFsIHBoeSAq Lw0KIAlpZiAocG9ydCA9PSA1ICYmIGRzYV9pc191c2VyX3BvcnQoZHMsIDUpKQ0KIAkJbWNyX25l dyB8PSBQTUNSX0VYVF9QSFk7DQogDQogCXN3aXRjaCAoc3RhdGUtPnNwZWVkKSB7DQorCWNhc2Ug U1BFRURfMjUwMDoNCiAJY2FzZSBTUEVFRF8xMDAwOg0KIAkJbWNyX25ldyB8PSBQTUNSX0ZPUkNF X1NQRUVEXzEwMDA7DQogCQlicmVhazsNCkBAIC0xNTU2LDYgKzIxNDIsMjcgQEAgc3RhdGljIHZv aWQgbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LA0KIAkJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9QTUNSX1AocG9ydCksIG1jcl9uZXcp Ow0KIH0NCiANCit2b2lkIG10NzUzMV9zZ21paV9yZXN0YXJ0X2FuKHN0cnVjdCBkc2Ffc3dpdGNo ICpkcywgaW50IHBvcnQpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJp djsNCisJdTMyIHZhbDsNCisNCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BDU19D T05UUk9MXzEocG9ydCkpOw0KKwl2YWwgfD0gTVQ3NTMxX1NHTUlJX0FOX1JFU1RBUlQ7DQorCW10 NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUENTX0NPTlRST0xfMShwb3J0KSwgdmFsKTsNCit9DQor DQorc3RhdGljIHZvaWQNCittdDc1M3hfcGh5bGlua19tYWNfYW5fcmVzdGFydChzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0KQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0g ZHMtPnByaXY7DQorDQorCWlmICghcHJpdi0+aW5mby0+cG9ydF9hbl9yZXN0YXJ0KQ0KKwkJcmV0 dXJuOw0KKw0KKwlwcml2LT5pbmZvLT5wb3J0X2FuX3Jlc3RhcnQoZHMsIHBvcnQpOw0KK30NCisN CiBzdGF0aWMgdm9pZCBtdDc1MzBfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBkc2Ffc3dp dGNoICpkcywgaW50IHBvcnQsDQogCQkJCQkgdW5zaWduZWQgaW50IG1vZGUsDQogCQkJCQkgcGh5 X2ludGVyZmFjZV90IGludGVyZmFjZSkNCkBAIC0xNTkwLDkgKzIxOTcsMjAgQEAgc3RhdGljIHZv aWQgbXQ3NTN4X3BoeWxpbmtfdmFsaWRhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9y dCwNCiAJcGh5bGlua19zZXRfcG9ydF9tb2RlcyhtYXNrKTsNCiAJcGh5bGlua19zZXQobWFzaywg QXV0b25lZyk7DQogDQotCWlmIChzdGF0ZS0+aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9E RV9UUkdNSUkpIHsNCisJc3dpdGNoIChzdGF0ZS0+aW50ZXJmYWNlKSB7DQorCWNhc2UgUEhZX0lO VEVSRkFDRV9NT0RFX1RSR01JSToNCiAJCXBoeWxpbmtfc2V0KG1hc2ssIDEwMDBiYXNlVF9GdWxs KTsNCi0JfSBlbHNlIHsNCisJCWJyZWFrOw0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAw QkFTRVg6DQorCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDoNCisJCXBoeWxpbmtf c2V0KG1hc2ssIDEwMDBiYXNlWF9GdWxsKTsNCisJCXBoeWxpbmtfc2V0KG1hc2ssIDI1MDBiYXNl WF9GdWxsKTsNCisJCWJyZWFrOw0KKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToNCisJ CXBoeWxpbmtfc2V0KG1hc2ssIDEwMDBiYXNlVF9GdWxsKTsNCisJCXBoeWxpbmtfc2V0KG1hc2ss IDEwMDBiYXNlWF9GdWxsKTsNCisJCS8qIGZhbGwgdGhyb3VnaCAqLw0KKwlkZWZhdWx0Og0KIAkJ cGh5bGlua19zZXQobWFzaywgMTBiYXNlVF9IYWxmKTsNCiAJCXBoeWxpbmtfc2V0KG1hc2ssIDEw YmFzZVRfRnVsbCk7DQogCQlwaHlsaW5rX3NldChtYXNrLCAxMDBiYXNlVF9IYWxmKTsNCkBAIC0x NjA0LDYgKzIyMjIsNyBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua192YWxpZGF0ZShzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAkJCWlmIChwb3J0ID09IDUpDQogCQkJCXBo eWxpbmtfc2V0KG1hc2ssIDEwMDBiYXNlWF9GdWxsKTsNCiAJCX0NCisJCWJyZWFrOw0KIAl9DQog DQogCXBoeWxpbmtfc2V0KG1hc2ssIFBhdXNlKTsNCkBAIC0xNjk4LDggKzIzMTcsOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG10NzUzMF9zd2l0Y2hfb3BzID0gew0KIAku cG9ydF92bGFuX2FkZAkJPSBtdDc1MzBfcG9ydF92bGFuX2FkZCwNCiAJLnBvcnRfdmxhbl9kZWwJ CT0gbXQ3NTMwX3BvcnRfdmxhbl9kZWwsDQogCS5waHlsaW5rX3ZhbGlkYXRlCT0gbXQ3NTN4X3Bo eWxpbmtfdmFsaWRhdGUsDQotCS5waHlsaW5rX21hY19saW5rX3N0YXRlID0gbXQ3NTMwX3BoeWxp bmtfbWFjX2xpbmtfc3RhdGUsDQorCS5waHlsaW5rX21hY19saW5rX3N0YXRlCT0gbXQ3NTMwX3Bo eWxpbmtfbWFjX2xpbmtfc3RhdGUsDQogCS5waHlsaW5rX21hY19jb25maWcJPSBtdDc1M3hfcGh5 bGlua19tYWNfY29uZmlnLA0KKwkucGh5bGlua19tYWNfYW5fcmVzdGFydAk9IG10NzUzeF9waHls aW5rX21hY19hbl9yZXN0YXJ0LA0KIAkucGh5bGlua19tYWNfbGlua19kb3duCT0gbXQ3NTMwX3Bo eWxpbmtfbWFjX2xpbmtfZG93biwNCiAJLnBoeWxpbmtfbWFjX2xpbmtfdXAJPSBtdDc1MzBfcGh5 bGlua19tYWNfbGlua191cCwNCiB9Ow0KQEAgLTE3MjMsMTEgKzIzNDMsMjIgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBtdDc1M3hfaW5mbyBtdDc1M3hfdGFibGVbXSA9IHsNCiAJCS5wYWRfc2V0dXAg PSBtdDc1MzBfcGFkX3NldHVwLA0KIAkJLm1hY19zZXR1cCA9IG10NzUzMF9tYWNfc2V0dXAsDQog CX0sDQorCVtJRF9NVDc1MzFdID0gew0KKwkJLmlkID0gSURfTVQ3NTMxLA0KKwkJLnNldHVwID0g bXQ3NTMxX3NldHVwLA0KKwkJLnBoeV9yZWFkID0gbXQ3NTMxX2luZF9waHlfcmVhZCwNCisJCS5w aHlfd3JpdGUgPSBtdDc1MzFfaW5kX3BoeV93cml0ZSwNCisJCS5waHlfc3VwcG9ydGVkID0gbXQ3 NTMxX3BoeV9zdXBwb3J0ZWQsDQorCQkucGFkX3NldHVwID0gbXQ3NTMxX3BhZF9zZXR1cCwNCisJ CS5tYWNfc2V0dXAgPSBtdDc1MzFfbWFjX3NldHVwLA0KKwkJLnBvcnRfYW5fcmVzdGFydCA9IG10 NzUzMV9zZ21paV9yZXN0YXJ0X2FuLA0KKwl9LA0KIH07DQogDQogc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgbXQ3NTMwX29mX21hdGNoW10gPSB7DQogCXsgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ3NjIxIiwgLmRhdGEgPSAmbXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sDQog CXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ3NTMwIiwgLmRhdGEgPSAmbXQ3NTN4X3RhYmxl W0lEX01UNzUzMF0sIH0sDQorCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ3NTMxIiwgLmRh dGEgPSAmbXQ3NTN4X3RhYmxlW0lEX01UNzUzMV0sIH0sDQogCXsgLyogc2VudGluZWwgKi8gfSwN CiB9Ow0KIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7DQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5o DQppbmRleCBhYWM4NmU0ZmMxNDguLjU1NzMyOGM2YzAzMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv bmV0L2RzYS9tdDc1MzAuaA0KKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oDQpAQCAtMTQs NiArMTQsNyBAQA0KIGVudW0gbXQ3NTN4X2lkIHsNCiAJSURfTVQ3NTMwID0gMCwNCiAJSURfTVQ3 NjIxID0gMSwNCisJSURfTVQ3NTMxID0gMiwNCiB9Ow0KIA0KICNkZWZpbmUJTlVNX1RSR01JSV9D VFJMCQkJNQ0KQEAgLTIwMSw2ICsyMDIsMTkgQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIg ew0KICNkZWZpbmUgIFBNQ1JfRk9SQ0VfTE5LCQkJQklUKDApDQogI2RlZmluZSAgUE1DUl9TUEVF RF9NQVNLCQkoUE1DUl9GT1JDRV9TUEVFRF8xMDAgfCBcDQogCQkJCQkgUE1DUl9GT1JDRV9TUEVF RF8xMDAwKQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9MTksJCUJJVCgzMSkNCisjZGVmaW5lICBN VDc1MzFfRk9SQ0VfU1BECQlCSVQoMzApDQorI2RlZmluZSAgTVQ3NTMxX0ZPUkNFX0RQWAkJQklU KDI5KQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9SWF9GQwkJQklUKDI4KQ0KKyNkZWZpbmUgIE1U NzUzMV9GT1JDRV9UWF9GQwkJQklUKDI3KQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9NT0RFCQko TVQ3NTMxX0ZPUkNFX0xOSyB8IFwNCisJCQkJCSBNVDc1MzFfRk9SQ0VfU1BEIHwgXA0KKwkJCQkJ IE1UNzUzMV9GT1JDRV9EUFggfCBcDQorCQkJCQkgTVQ3NTMxX0ZPUkNFX1JYX0ZDIHwgXA0KKwkJ CQkJIE1UNzUzMV9GT1JDRV9UWF9GQykNCisjZGVmaW5lICBQTUNSX0ZPUkNFX01PREVfSUQoaWQp CQkoKChpZCkgPT0gSURfTVQ3NTMxKSA/IFwNCisJCQkJCSBNVDc1MzFfRk9SQ0VfTU9ERSA6IFwN CisJCQkJCSBQTUNSX0ZPUkNFX01PREUpDQogDQogI2RlZmluZSBNVDc1MzBfUE1TUl9QKHgpCQko MHgzMDA4ICsgKHgpICogMHgxMDApDQogI2RlZmluZSAgUE1TUl9FRUUxRwkJCUJJVCg3KQ0KQEAg LTIzMSwxMiArMjQ1LDExMSBAQCBlbnVtIG10NzUzMF92bGFuX3BvcnRfYXR0ciB7DQogCQkJCQkg Q0NSX1JYX09DVF9DTlRfQkFEIHwgXA0KIAkJCQkJIENDUl9UWF9PQ1RfQ05UX0dPT0QgfCBcDQog CQkJCQkgQ0NSX1RYX09DVF9DTlRfQkFEKQ0KKw0KKy8qIFNHTUlJIHJlZ2lzdGVycyAqLw0KKyNk ZWZpbmUgTVQ3NTMxX1NHTUlJX1JFR19CQVNFCQkweDUwMDANCisjZGVmaW5lIE1UNzUzMV9TR01J SV9SRUcocCwgcikJCShNVDc1MzFfU0dNSUlfUkVHX0JBU0UgKyBcDQorCQkJCQkoKHApIC0gNSkg KiAweDEwMDAgKyAocikpDQorDQorLyogU0dNSUkgUENTX0NPTlRST0xfMSAqLw0KKyNkZWZpbmUg TVQ3NTMxX1BDU19DT05UUk9MXzEocCkJCU1UNzUzMV9TR01JSV9SRUcocCwgMHgwMCkNCisjZGVm aW5lICBNVDc1MzFfU0dNSUlfTElOS19TVEFUVVMJQklUKDE4KQ0KKyNkZWZpbmUgIE1UNzUzMV9T R01JSV9BTl9FTkFCTEUJCUJJVCgxMikNCisjZGVmaW5lICBNVDc1MzFfU0dNSUlfQU5fUkVTVEFS VAlCSVQoOSkNCisNCisvKiBGaWVsZHMgb2YgU0dNSUlfTU9ERSAqLw0KKyNkZWZpbmUgTVQ3NTMx X1NHTUlJX01PREUocCkJCU1UNzUzMV9TR01JSV9SRUcocCwgMHgyMCkNCisjZGVmaW5lICBNVDc1 MzFfU0dNSUlfUkVNT1RFX0ZBVUxUX0RJUwlCSVQoOCkNCisjZGVmaW5lICBNVDc1MzFfU0dNSUlf Rk9SQ0VfRFVQTEVYCUJJVCg0KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9JRl9NT0RFX01BU0sJ R0VOTUFTSyg1LCAxKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMAkweDAN CisjZGVmaW5lICBNVDc1MzFfU0dNSUlfRk9SQ0VfU1BFRURfMTAwCUJJVCgyKQ0KKyNkZWZpbmUg IE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMDAwCUJJVCgzKQ0KKw0KKy8qIEZpZWxkcyBvZiBR UEhZX1BXUl9TVEFURV9DVFJMICovDQorI2RlZmluZSBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RS TChwKQlNVDc1MzFfU0dNSUlfUkVHKHAsIDB4ZTgpDQorI2RlZmluZSAgTVQ3NTMxX1NHTUlJX1BI WUFfUFdECQlCSVQoNCkNCisNCisvKiBWYWx1ZXMgb2YgU0dNSUkgU1BFRUQgKi8NCisjZGVmaW5l IE1UNzUzMV9QSFlBX0NUUkxfU0lHTkFMMyhwKQlNVDc1MzFfU0dNSUlfUkVHKHAsIDB4MTI4KQ0K KyNkZWZpbmUgIE1UNzUzMV9SR19UUEhZX1NQRUVEX01BU0sJKEJJVCgyKSB8IEJJVCgzKSkNCisj ZGVmaW5lICBNVDc1MzFfUkdfVFBIWV9TUEVFRF8xXzI1RwkweDANCisjZGVmaW5lICBNVDc1MzFf UkdfVFBIWV9TUEVFRF8zXzEyNUcJQklUKDIpDQorDQogLyogUmVnaXN0ZXIgZm9yIHN5c3RlbSBy ZXNldCAqLw0KICNkZWZpbmUgTVQ3NTMwX1NZU19DVFJMCQkJMHg3MDAwDQogI2RlZmluZSAgU1lT X0NUUkxfUEhZX1JTVAkJQklUKDIpDQogI2RlZmluZSAgU1lTX0NUUkxfU1dfUlNUCQlCSVQoMSkN CiAjZGVmaW5lICBTWVNfQ1RSTF9SRUdfUlNUCQlCSVQoMCkNCiANCisvKiBSZWdpc3RlciBmb3Ig UEhZIEluZGlyZWN0IEFjY2VzcyBDb250cm9sICovDQorI2RlZmluZSBNVDc1MzFfUEhZX0lBQwkJ CTB4NzAxQw0KKyNkZWZpbmUgIFBIWV9BQ1NfU1QJCQlCSVQoMzEpDQorI2RlZmluZSAgTURJT19S RUdfQUREUl9NQVNLCQkoMHgxZiA8PCAyNSkNCisjZGVmaW5lICBNRElPX1BIWV9BRERSX01BU0sJ CSgweDFmIDw8IDIwKQ0KKyNkZWZpbmUgIE1ESU9fQ01EX01BU0sJCQkoMHgzIDw8IDE4KQ0KKyNk ZWZpbmUgIE1ESU9fU1RfTUFTSwkJCSgweDMgPDwgMTYpDQorI2RlZmluZSAgTURJT19SV19EQVRB X01BU0sJCSgweGZmZmYpDQorI2RlZmluZSAgTURJT19SRUdfQUREUih4KQkJKCgoeCkgJiAweDFm KSA8PCAyNSkNCisjZGVmaW5lICBNRElPX0RFVl9BRERSKHgpCQkoKCh4KSAmIDB4MWYpIDw8IDI1 KQ0KKyNkZWZpbmUgIE1ESU9fUEhZX0FERFIoeCkJCSgoKHgpICYgMHgxZikgPDwgMjApDQorI2Rl ZmluZSAgTURJT19DTUQoeCkJCQkoKCh4KSAmIDB4MykgPDwgMTgpDQorI2RlZmluZSAgTURJT19T VCh4KQkJCSgoKHgpICYgMHgzKSA8PCAxNikNCisNCitlbnVtIG10NzUzMV9waHlfaWFjX2NtZCB7 DQorCU1UNzUzMV9NRElPX0FERFIgPSAwLA0KKwlNVDc1MzFfTURJT19XUklURSA9IDEsDQorCU1U NzUzMV9NRElPX1JFQUQgPSAyLA0KKwlNVDc1MzFfTURJT19SRUFEX0NMNDUgPSAzLA0KK307DQor DQorLyogTURJT19TVDogTURJTyBzdGFydCBmaWVsZCAqLw0KK2VudW0gbXQ3NTMxX21kaW9fc3Qg ew0KKwlNVDc1MzFfTURJT19TVF9DTDQ1ID0gMCwNCisJTVQ3NTMxX01ESU9fU1RfQ0wyMiA9IDEs DQorfTsNCisNCisjZGVmaW5lICBNRElPX0NMMjJfUkVBRAkJCShNRElPX1NUKE1UNzUzMV9NRElP X1NUX0NMMjIpIHwgXA0KKwkJCQkJIE1ESU9fQ01EKE1UNzUzMV9NRElPX1JFQUQpKQ0KKyNkZWZp bmUgIE1ESU9fQ0wyMl9XUklURQkJKE1ESU9fU1QoTVQ3NTMxX01ESU9fU1RfQ0wyMikgfCBcDQor CQkJCQkgTURJT19DTUQoTVQ3NTMxX01ESU9fV1JJVEUpKQ0KKyNkZWZpbmUgIE1ESU9fQ0w0NV9B RERSCQkJKE1ESU9fU1QoTVQ3NTMxX01ESU9fU1RfQ0w0NSkgfCBcDQorCQkJCQkgTURJT19DTUQo TVQ3NTMxX01ESU9fQUREUikpDQorI2RlZmluZSAgTURJT19DTDQ1X1JFQUQJCQkoTURJT19TVChN VDc1MzFfTURJT19TVF9DTDQ1KSB8IFwNCisJCQkJCSBNRElPX0NNRChNVDc1MzFfTURJT19SRUFE KSkNCisjZGVmaW5lICBNRElPX0NMNDVfV1JJVEUJCShNRElPX1NUKE1UNzUzMV9NRElPX1NUX0NM NDUpIHwgXA0KKwkJCQkJIE1ESU9fQ01EKE1UNzUzMV9NRElPX1dSSVRFKSkNCisNCisjZGVmaW5l IE1UNzUzMV9DTEtHRU5fQ1RSTAkJMHg3NTAwDQorI2RlZmluZSAgQ0xLX1NLRVdfT1VUKHgpCQko KCh4KSAmIDB4MykgPDwgOCkNCisjZGVmaW5lICBDTEtfU0tFV19PVVRfTUFTSwkJKDB4MyA8PCA4 KQ0KKyNkZWZpbmUgIENMS19TS0VXX0lOKHgpCQkJKCgoeCkgJiAweDMpIDw8IDYpDQorI2RlZmlu ZSAgQ0xLX1NLRVdfSU5fTUFTSwkJKDB4MyA8PCA2KQ0KKyNkZWZpbmUgIFJYQ0xLX05PX0RFTEFZ CQkJQklUKDUpDQorI2RlZmluZSAgVFhDTEtfTk9fUkVWRVJTRQkJQklUKDQpDQorI2RlZmluZSAg R1BfTU9ERSh4KQkJCSgoKHgpICYgMHgzKSA8PCAxKQ0KKyNkZWZpbmUgIEdQX01PREVfTUFTSwkJ CSgweDMgPDwgMSkNCisjZGVmaW5lICBHUF9DTEtfRU4JCQlCSVQoMCkNCisNCisjZGVmaW5lIFBI WV9ERVYxRgkJCTB4MWYNCisjZGVmaW5lIE1UNzUzMV9QSFlfREVWMUZfUkVHXzQwMwkweDQwMw0K Kw0KKyNkZWZpbmUgTVQ3NTMxX1BIWV9FTl9CWVBBU1NfTU9ERQlCSVQoNCkNCisjZGVmaW5lIE1U NzUzMV9QSFlfUE9XRVJfT0ZGCQlCSVQoNSkNCisNCitlbnVtIG10NzUzMV9ncF9tb2RlIHsNCisJ TVQ3NTMxX0dQX01PREVfUkdNSUkgPSAwLA0KKwlNVDc1MzFfR1BfTU9ERV9NSUkgPSAxLA0KKwlN VDc1MzFfR1BfTU9ERV9SRVZfTUlJID0gMg0KK307DQorDQorZW51bSBtdDc1MzFfY2xrX3NrZXcg ew0KKwlNVDc1MzFfQ0xLX1NLRVdfTk9fQ0hHID0gMCwNCisJTVQ3NTMxX0NMS19TS0VXX0RMWV8x MDBQUFMgPSAxLA0KKwlNVDc1MzFfQ0xLX1NLRVdfRExZXzIwMFBQUyA9IDIsDQorCU1UNzUzMV9D TEtfU0tFV19SRVZFUlNFID0gMywNCit9Ow0KKw0KIC8qIFJlZ2lzdGVyIGZvciBodyB0cmFwIHN0 YXR1cyAqLw0KICNkZWZpbmUgTVQ3NTMwX0hXVFJBUAkJCTB4NzgwMA0KICNkZWZpbmUgIEhXVFJB UF9YVEFMX01BU0sJCShCSVQoMTApIHwgQklUKDkpKQ0KQEAgLTI0NCw2ICszNTcsMTEgQEAgZW51 bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIgew0KICNkZWZpbmUgIEhXVFJBUF9YVEFMXzQwTUhaCQko QklUKDEwKSkNCiAjZGVmaW5lICBIV1RSQVBfWFRBTF8yME1IWgkJKEJJVCg5KSkNCiANCisjZGVm aW5lIE1UNzUzMV9IV1RSQVAJCQkweDc4MDANCisjZGVmaW5lICBIV1RSQVBfWFRBTF9GU0VMX01B U0sJCUJJVCg3KQ0KKyNkZWZpbmUgIEhXVFJBUF9YVEFMX0ZTRUxfMjVNSFoJCUJJVCg3KQ0KKyNk ZWZpbmUgIEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFoJCTANCisNCiAvKiBSZWdpc3RlciBmb3IgaHcg dHJhcCBtb2RpZmljYXRpb24gKi8NCiAjZGVmaW5lIE1UNzUzMF9NSFdUUkFQCQkJMHg3ODA0DQog I2RlZmluZSAgTUhXVFJBUF9QSFkwX1NFTAkJQklUKDIwKQ0KQEAgLTI1OCwxNCArMzc2LDM0IEBA IGVudW0gbXQ3NTMwX3ZsYW5fcG9ydF9hdHRyIHsNCiAjZGVmaW5lIE1UNzUzMF9UT1BfU0lHX0NU UkwJCTB4NzgwOA0KICNkZWZpbmUgIFRPUF9TSUdfQ1RSTF9OT1JNQUwJCShCSVQoMTcpIHwgQklU KDE2KSkNCiANCisjZGVmaW5lIE1UNzUzMV9UT1BfU0lHX1NSCQkweDc4MGMNCisjZGVmaW5lICBQ QURfRFVBTF9TR01JSV9FTgkJQklUKDEpDQorDQogI2RlZmluZSBNVDc1MzBfSU9fRFJWX0NSCQkw eDc4MTANCiAjZGVmaW5lICBQNV9JT19DTEtfRFJWKHgpCQkoKHgpICYgMHgzKQ0KICNkZWZpbmUg IFA1X0lPX0RBVEFfRFJWKHgpCQkoKCh4KSAmIDB4MykgPDwgNCkNCiANCisjZGVmaW5lIE1UNzUz MV9QTExHUF9FTgkJCTB4NzgyMA0KKyNkZWZpbmUgIEVOX0NPUkVQTEwJCQlCSVQoMikNCisjZGVm aW5lICBTV19DTEtTVwkJCUJJVCgxKQ0KKyNkZWZpbmUgIFNXX1BMTEdQCQkJQklUKDApDQorDQor I2RlZmluZSBNVDc1MzFfUExMR1BfQ1IwCQkweDc4YTgNCisjZGVmaW5lICBSR19DT1JFUExMX0VO CQkJQklUKDIyKQ0KKyNkZWZpbmUgIFJHX0NPUkVQTExfUE9TRElWX1MJCTIzDQorI2RlZmluZSAg UkdfQ09SRVBMTF9QT1NESVZfTQkJMHgzODAwMDAwDQorI2RlZmluZSAgUkdfQ09SRVBMTF9TRE1f UENXX1MJCTENCisjZGVmaW5lICBSR19DT1JFUExMX1NETV9QQ1dfTQkJMHgzZmZmZmUNCisjZGVm aW5lICBSR19DT1JFUExMX1NETV9QQ1dfQ0hHCQlCSVQoMCkNCisNCiAjZGVmaW5lIE1UNzUzMF9Q NkVDUgkJCTB4NzgzMA0KICNkZWZpbmUgIFA2X0lOVEZfTU9ERV9NQVNLCQkweDMNCiAjZGVmaW5l ICBQNl9JTlRGX01PREUoeCkJCSgoeCkgJiAweDMpDQogDQorLyogUkdNSUkgYW5kIFNHTUlJIFBM TCBjbG9jayAqLw0KKyNkZWZpbmUgTVQ3NTMxX0FOQV9QTExHUF9DUjIJCTB4NzhiMA0KKyNkZWZp bmUgTVQ3NTMxX0FOQV9QTExHUF9DUjUJCTB4NzhiYw0KKw0KIC8qIFJlZ2lzdGVycyBmb3IgVFJH TUlJIG9uIHRoZSBib3RoIHNpZGUgKi8NCiAjZGVmaW5lIE1UNzUzMF9UUkdNSUlfUkNLX0NUUkwJ CTB4N2EwMA0KICNkZWZpbmUgR1NXX1RSR01JSV9SQ0tfQ1RSTAkJMHgzMDANCkBAIC0zMTYsNiAr NDU0LDkgQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIgew0KICNkZWZpbmUgIENISVBfTkFN RV9TSElGVAkJMTYNCiAjZGVmaW5lICBNVDc1MzBfSUQJCQkweDc1MzANCiANCisjZGVmaW5lIE1U NzUzMV9DUkVWCQkJMHg3ODFDDQorI2RlZmluZSAgTVQ3NTMxX0lECQkJMHg3NTMxDQorDQogLyog UmVnaXN0ZXJzIGZvciBjb3JlIFBMTCBhY2Nlc3MgdGhyb3VnaCBtbWQgaW5kaXJlY3QgKi8NCiAj ZGVmaW5lIENPUkVfUExMX0dST1VQMgkJCTB4NDAxDQogI2RlZmluZSAgUkdfU1lTUExMX0VOX05P Uk1BTAkJQklUKDE1KQ0KQEAgLTQzOSw2ICs1ODAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqcDVf aW50Zl9tb2Rlcyh1bnNpZ25lZCBpbnQgcDVfaW50ZXJmYWNlKQ0KICAqCQkJcG9ydA0KICAqIEBt YWNfc2V0dXA6CQlIb2xkaW5nIHRoZSB3YXkgc2V0dGluZyB1cCB0aGUgUEhZIGF0dHJpYnV0ZSBm b3IgYQ0KICAqCQkJY2VydGFpbiBNQUMgcG9ydA0KKyAqIEBwb3J0X2FuX3Jlc3RhcnQJSG9sZGlu ZyB0aGUgd2F5IHJlc3RhcnRpbmcgODAyLjN6IEJhc2VYIGF1dG9uZWdvdGlhdGlvbg0KKyAqCQkJ Zm9yIGEgY2VydGFpbiBNQUMgcG9ydA0KICAqLw0KIHN0cnVjdCBtdDc1M3hfaW5mbyB7DQogCWVu dW0gbXQ3NTN4X2lkIGlkOw0KQEAgLTQ1Miw2ICs1OTUsNyBAQCBzdHJ1Y3QgbXQ3NTN4X2luZm8g ew0KIAkJCSBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSk7DQogCWludCAo Km1hY19zZXR1cCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdW5zaWduZWQgaW50 IG1vZGUsDQogCQkJIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKTsNCisJ dm9pZCAoKnBvcnRfYW5fcmVzdGFydCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCk7 DQogfTsNCiANCiAvKiBzdHJ1Y3QgbXQ3NTMwX3ByaXYgLQlUaGlzIGlzIHRoZSBtYWluIGRhdGEg c3RydWN0dXJlIGZvciBob2xkaW5nIHRoZSBzdGF0ZQ0KLS0gDQoyLjE3LjENCg==