Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp333079ybt; Fri, 19 Jun 2020 03:07:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXoQ2SUL28G9SuV5MOsI1pm0pr5YhAYlRzG+u9WFgSQjI1NG1W2ZLzB+Rhccda++vUfytv X-Received: by 2002:aa7:ca02:: with SMTP id y2mr2419746eds.106.1592561234031; Fri, 19 Jun 2020 03:07:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592561234; cv=none; d=google.com; s=arc-20160816; b=NZZIMdWfIs2vhsDM27UxKYlpKAxUMiz1hS1mTtBsZkB0mWOpr/Ek/eRAw/8m9RATNK xIfBvgyZw6H395WOCTTeGcK1DHGSnVX6/JTnRMIp4UbtKBpCVLydRZirZf2wHJ2f2YeT N4jMCu0yd0ivI2kHKNfSln2NzAc/1m5060VYbnax5+/3bscPbBzl7q7zJ4K0TC+r660w IozvcZ+nYIQdwQiWHBSdmqisg55MRuooo4Fa2VGJygLVIguTNXF2k8V0xbYSeX0dhf0+ XXX5EEJ49MQn+r72LBHrpTDW3k1f5nUyR6N0gjI9TISwpkWkNFrSpqIDbhqz2htjnzHJ RVGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RWMBjLTAHogLmaYom2+5yuOBVTftf0/SlrT9D9BDL1k=; b=eyssvKtAyoaUO20JNUDvLATWTN2WHkuRtWc2AmmLsFyreBpurFC80wLWR0wpqSbtDV 33rAFuLBnxRdBhRS7T6MbSEy+RSW9w0RlUYxvtc7GZkcCeBGHrQAFYO/HPkI3r+uXvLO nIE7NiE6zuGlmMqNcpgLItmtNs+po3sSJu4GZt6qTssLYq5i+ZDZ9JF88E58R3Y12WCN TU5FaHTa/Rbkwyr/+DcIp7pEakKMVQBhKO8bheBhqapSj1xrcwtkhhCuSIxwYqG1XFMg Ds0LcJoSfA+TfPfF8xwGxIzGM4javlxuq2oj2ltJ1S+e+GRiJHARG+uFPa+z35AFm6AT rQkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=be+IUeS5; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lw2si3529945ejb.408.2020.06.19.03.06.43; Fri, 19 Jun 2020 03:07:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=be+IUeS5; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731419AbgFSKEw (ORCPT + 99 others); Fri, 19 Jun 2020 06:04:52 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:51104 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1732326AbgFSKEt (ORCPT ); Fri, 19 Jun 2020 06:04:49 -0400 X-UUID: 31f02e2782404b34932738118f8b671a-20200619 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=RWMBjLTAHogLmaYom2+5yuOBVTftf0/SlrT9D9BDL1k=; b=be+IUeS57dv5tpQY/y+PmJ1mLrZiH6tWbszQCTbRHS5ZrQIuc5r9xCV23po7PZp/nlWDjYI/wbpb4udZDFe+SRh4fecrKluZ/TNuloHcwxe+PWfuf9dajrIN/paF2kVDYSmKGibayoMj/77nYhHZ/Ds06cv6INaQvGZMvyNpWWk=; X-UUID: 31f02e2782404b34932738118f8b671a-20200619 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 510884886; Fri, 19 Jun 2020 18:04:38 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 19 Jun 2020 18:04:35 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 19 Jun 2020 18:04:34 +0800 From: Shayne Chen To: Felix Fietkau CC: linux-wireless , Lorenzo Bianconi , Ryder Lee , Evelyn Tsai , linux-mediatek , Shayne Chen Subject: [PATCH v3 2/3] mt76: mt7915: rework the flow of txpower setting Date: Fri, 19 Jun 2020 18:04:24 +0800 Message-ID: <20200619100425.26351-2-shayne.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200619100425.26351-1-shayne.chen@mediatek.com> References: <20200619100425.26351-1-shayne.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: C0511DB765AEC55301A45F043D1B27EB85494AB8F95EC0A6E9B9CDB0897A245C2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Q2xlYW4gdXAgdGhlIGZsb3cgb2YgcGVyLXJhdGUgdHhwb3dlciBsaW1pdCBzZXR0aW5nIHRvIGdl dCByaWQgb2YNCmR1bHBsaWNhdGUgd29yayBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIGhhbmRs ZWQgYnkgZmlybXdhcmUsIGFuZCBzZXQNCnByb3BlciBtYXhfcG93ZXIgYmFzZWQgb24gZGlmZmVy ZW50IGNoYW5uZWxzIGFuZCByZWdkb21haW5zLg0KDQpTaWduZWQtb2ZmLWJ5OiBTaGF5bmUgQ2hl biA8c2hheW5lLmNoZW5AbWVkaWF0ZWsuY29tPg0KLS0tDQogLi4uL3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L2RlYnVnZnMuYyAgIHwgIDM0ICsrLS0tDQogLi4uL3dpcmVsZXNzL21lZGlh dGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jICAgIHwgMTM4ICsrKystLS0tLS0tLS0tLS0tLQ0KIC4u Li93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uaCAgICB8ICA0MCArLS0tLQ0K IC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jICB8ICAzMiArKy0t DQogLi4uL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMgIHwgICAyICst DQogLi4uL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyAgIHwgIDI5ICsr LS0NCiAuLi4vd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmggICAgfCAgMTAg Ky0NCiAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jICAgfCAgMjUg LS0tLQ0KIDggZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMjMxIGRlbGV0aW9ucygt KQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MTUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUv ZGVidWdmcy5jDQppbmRleCA1Mjc4YmVlLi43M2E0OGM5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jDQorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMNCkBAIC0zMDAsOCAr MzAwLDcgQEAgbXQ3OTE1X3F1ZXVlc19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0 YSkNCiB9DQogDQogc3RhdGljIHZvaWQNCi1tdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIoc3RydWN0 IHNlcV9maWxlICpzLCBzOCAqZGVsdGEsDQotCQkJIHM4IHR4cG93ZXJfY3VyLCBpbnQgYmFuZCkN CittdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIoc3RydWN0IHNlcV9maWxlICpzLCBzOCB0eHBvd2Vy X2N1ciwgaW50IGJhbmQpDQogew0KIAlzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNrdV9ncm91 cF9uYW1lW10gPSB7DQogCQkiQ0NLIiwgIk9GRE0iLCAiSFQyMCIsICJIVDQwIiwNCkBAIC0zMDks MjQgKzMwOCwxOCBAQCBtdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIoc3RydWN0IHNlcV9maWxlICpz LCBzOCAqZGVsdGEsDQogCQkiUlUyNiIsICJSVTUyIiwgIlJVMTA2IiwgIlJVMjQyL1NVMjAiLA0K IAkJIlJVNDg0L1NVNDAiLCAiUlU5OTYvU1U4MCIsICJSVTJ4OTk2L1NVMTYwIg0KIAl9Ow0KLQlz OCB0eHBvd2VyW01UNzkxNV9TS1VfUkFURV9OVU1dOw0KKwlzOCB0eHBvd2VyWzE2MV07DQogCWlu dCBpLCBpZHggPSAwOw0KIA0KLQlmb3IgKGkgPSAwOyBpIDwgTVQ3OTE1X1NLVV9SQVRFX05VTTsg aSsrKQ0KLQkJdHhwb3dlcltpXSA9IERJVl9ST1VORF9VUCh0eHBvd2VyX2N1ciArIGRlbHRhW2ld LCAyKTsNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodHhwb3dlcik7IGkrKykNCisJCXR4 cG93ZXJbaV0gPSBESVZfUk9VTkRfVVAodHhwb3dlcl9jdXIsIDIpOw0KIA0KLQlmb3IgKGkgPSAw OyBpIDwgTUFYX1NLVV9SQVRFX0dST1VQX05VTTsgaSsrKSB7DQotCQljb25zdCBzdHJ1Y3Qgc2t1 X2dyb3VwICpza3UgPSAmbXQ3OTE1X3NrdV9ncm91cHNbaV07DQotCQl1MzIgb2Zmc2V0ID0gc2t1 LT5vZmZzZXRbYmFuZF07DQotDQotCQlpZiAoIW9mZnNldCkgew0KLQkJCWlkeCArPSBza3UtPmxl bjsNCi0JCQljb250aW51ZTsNCi0JCX0NCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobXQ3 OTE1X3NrdV9ncm91cF9sZW4pOyBpKyspIHsNCisJCXU4IGxlbiA9IG10NzkxNV9za3VfZ3JvdXBf bGVuW2ldOw0KIA0KIAkJbXQ3Nl9zZXFfcHV0c19hcnJheShzLCBza3VfZ3JvdXBfbmFtZVtpXSwN Ci0JCQkJICAgIHR4cG93ZXIgKyBpZHgsIHNrdS0+bGVuKTsNCi0JCWlkeCArPSBza3UtPmxlbjsN CisJCQkJICAgIHR4cG93ZXIgKyBpZHgsIGxlbik7DQorCQlpZHggKz0gbGVuOw0KIAl9DQogfQ0K IA0KQEAgLTMzNiwyMSArMzI5LDE4IEBAIG10NzkxNV9yZWFkX3JhdGVfdHhwb3dlcihzdHJ1Y3Qg c2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpDQogCXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBkZXZf Z2V0X2RydmRhdGEocy0+cHJpdmF0ZSk7DQogCXN0cnVjdCBtdDc2X3BoeSAqbXBoeSA9ICZkZXYt Pm1waHk7DQogCWVudW0gbmw4MDIxMV9iYW5kIGJhbmQgPSBtcGh5LT5jaGFuZGVmLmNoYW4tPmJh bmQ7DQotCXM4ICpkZWx0YSA9IGRldi0+cmF0ZV9wb3dlcltiYW5kXTsNCi0JczggdHhwb3dlcl9i YXNlID0gbXBoeS0+dHhwb3dlcl9jdXIgLSBkZWx0YVtNVDc5MTVfU0tVX01BWF9ERUxUQV9JRFhd Ow0KKwlzOCB0eHBvd2VyID0gbXBoeS0+dHhwb3dlcl9jdXI7DQogDQogCXNlcV9wdXRzKHMsICJC YW5kIDA6XG4iKTsNCi0JbXQ3OTE1X3B1dHNfcmF0ZV90eHBvd2VyKHMsIGRlbHRhLCB0eHBvd2Vy X2Jhc2UsIGJhbmQpOw0KKwltdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIocywgdHhwb3dlciwgYmFu ZCk7DQogDQogCWlmIChkZXYtPm10NzYucGh5Mikgew0KIAkJbXBoeSA9IGRldi0+bXQ3Ni5waHky Ow0KIAkJYmFuZCA9IG1waHktPmNoYW5kZWYuY2hhbi0+YmFuZDsNCi0JCWRlbHRhID0gZGV2LT5y YXRlX3Bvd2VyW2JhbmRdOw0KLQkJdHhwb3dlcl9iYXNlID0gbXBoeS0+dHhwb3dlcl9jdXIgLQ0K LQkJCSAgICAgICBkZWx0YVtNVDc5MTVfU0tVX01BWF9ERUxUQV9JRFhdOw0KKwkJdHhwb3dlciA9 IG1waHktPnR4cG93ZXJfY3VyOw0KIA0KIAkJc2VxX3B1dHMocywgIkJhbmQgMTpcbiIpOw0KLQkJ bXQ3OTE1X3B1dHNfcmF0ZV90eHBvd2VyKHMsIGRlbHRhLCB0eHBvd2VyX2Jhc2UsIGJhbmQpOw0K KwkJbXQ3OTE1X3B1dHNfcmF0ZV90eHBvd2VyKHMsIHR4cG93ZXIsIGJhbmQpOw0KIAl9DQogDQog CXJldHVybiAwOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9t dDc5MTUvZWVwcm9tLmMNCmluZGV4IDdkZWJhN2UuLmRlYmFjZmQgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYw0KKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMNCkBAIC0xMjQs MTIwICsxMjQsMzggQEAgaW50IG10NzkxNV9lZXByb21fZ2V0X3RhcmdldF9wb3dlcihzdHJ1Y3Qg bXQ3OTE1X2RldiAqZGV2LA0KIAlyZXR1cm4gbXQ3OTE1X2VlcHJvbV9yZWFkKGRldiwgaW5kZXgp Ow0KIH0NCiANCi1zdGF0aWMgY29uc3QgdTggc2t1X2Nja19kZWx0YV9tYXBbXSA9IHsNCi0JU0tV X0NDS19HUk9VUDAsDQotCVNLVV9DQ0tfR1JPVVAwLA0KLQlTS1VfQ0NLX0dST1VQMSwNCi0JU0tV X0NDS19HUk9VUDEsDQotfTsNCi0NCi1zdGF0aWMgY29uc3QgdTggc2t1X29mZG1fZGVsdGFfbWFw W10gPSB7DQotCVNLVV9PRkRNX0dST1VQMCwNCi0JU0tVX09GRE1fR1JPVVAwLA0KLQlTS1VfT0ZE TV9HUk9VUDEsDQotCVNLVV9PRkRNX0dST1VQMSwNCi0JU0tVX09GRE1fR1JPVVAyLA0KLQlTS1Vf T0ZETV9HUk9VUDIsDQotCVNLVV9PRkRNX0dST1VQMywNCi0JU0tVX09GRE1fR1JPVVA0LA0KLX07 DQotDQotc3RhdGljIGNvbnN0IHU4IHNrdV9tY3NfZGVsdGFfbWFwW10gPSB7DQotCVNLVV9NQ1Nf R1JPVVAwLA0KLQlTS1VfTUNTX0dST1VQMSwNCi0JU0tVX01DU19HUk9VUDEsDQotCVNLVV9NQ1Nf R1JPVVAyLA0KLQlTS1VfTUNTX0dST1VQMiwNCi0JU0tVX01DU19HUk9VUDMsDQotCVNLVV9NQ1Nf R1JPVVA0LA0KLQlTS1VfTUNTX0dST1VQNSwNCi0JU0tVX01DU19HUk9VUDYsDQotCVNLVV9NQ1Nf R1JPVVA3LA0KLQlTS1VfTUNTX0dST1VQOCwNCi0JU0tVX01DU19HUk9VUDksDQotfTsNCi0NCi0j ZGVmaW5lIFNLVV9HUk9VUChfbW9kZSwgX2xlbiwgX29mc18yZywgX29mc181ZywgX21hcCkJXA0K LQlbX21vZGVdID0gewkJCQkJXA0KLQkubGVuID0gX2xlbiwJCQkJCVwNCi0JLm9mZnNldCA9IHsJ CQkJCVwNCi0JCV9vZnNfMmcsCQkJCVwNCi0JCV9vZnNfNWcsCQkJCVwNCi0JfSwJCQkJCQlcDQot CS5kZWx0YV9tYXAgPSBfbWFwCQkJCVwNCi19DQotDQotY29uc3Qgc3RydWN0IHNrdV9ncm91cCBt dDc5MTVfc2t1X2dyb3Vwc1tdID0gew0KLQlTS1VfR1JPVVAoU0tVX0NDSywgNCwgMHgyNTIsIDAs IHNrdV9jY2tfZGVsdGFfbWFwKSwNCi0JU0tVX0dST1VQKFNLVV9PRkRNLCA4LCAweDI1NCwgMHgy OWQsIHNrdV9vZmRtX2RlbHRhX21hcCksDQotDQotCVNLVV9HUk9VUChTS1VfSFRfQlcyMCwgOCwg MHgyNTksIDB4MmEyLCBza3VfbWNzX2RlbHRhX21hcCksDQotCVNLVV9HUk9VUChTS1VfSFRfQlc0 MCwgOSwgMHgyNjIsIDB4MmFiLCBza3VfbWNzX2RlbHRhX21hcCksDQotCVNLVV9HUk9VUChTS1Vf VkhUX0JXMjAsIDEyLCAweDI1OSwgMHgyYTIsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCi0JU0tVX0dS T1VQKFNLVV9WSFRfQlc0MCwgMTIsIDB4MjYyLCAweDJhYiwgc2t1X21jc19kZWx0YV9tYXApLA0K LQlTS1VfR1JPVVAoU0tVX1ZIVF9CVzgwLCAxMiwgMCwgMHgyYjQsIHNrdV9tY3NfZGVsdGFfbWFw KSwNCi0JU0tVX0dST1VQKFNLVV9WSFRfQlcxNjAsIDEyLCAwLCAwLCBza3VfbWNzX2RlbHRhX21h cCksDQotDQotCVNLVV9HUk9VUChTS1VfSEVfUlUyNiwgMTIsIDB4MjdmLCAweDJkZCwgc2t1X21j c19kZWx0YV9tYXApLA0KLQlTS1VfR1JPVVAoU0tVX0hFX1JVNTIsIDEyLCAweDI4OSwgMHgyZTcs IHNrdV9tY3NfZGVsdGFfbWFwKSwNCi0JU0tVX0dST1VQKFNLVV9IRV9SVTEwNiwgMTIsIDB4Mjkz LCAweDJmMSwgc2t1X21jc19kZWx0YV9tYXApLA0KLQlTS1VfR1JPVVAoU0tVX0hFX1JVMjQyLCAx MiwgMHgyNmIsIDB4MmJmLCBza3VfbWNzX2RlbHRhX21hcCksDQotCVNLVV9HUk9VUChTS1VfSEVf UlU0ODQsIDEyLCAweDI3NSwgMHgyYzksIHNrdV9tY3NfZGVsdGFfbWFwKSwNCi0JU0tVX0dST1VQ KFNLVV9IRV9SVTk5NiwgMTIsIDAsIDB4MmQzLCBza3VfbWNzX2RlbHRhX21hcCksDQotCVNLVV9H Uk9VUChTS1VfSEVfUlUyeDk5NiwgMTIsIDAsIDAsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCi19Ow0K LQ0KLXN0YXRpYyBzOA0KLW10NzkxNV9nZXRfc2t1X2RlbHRhKHN0cnVjdCBtdDc5MTVfZGV2ICpk ZXYsIHUzMiBhZGRyKQ0KK3M4IG10NzkxNV9lZXByb21fZ2V0X3Bvd2VyX2RlbHRhKHN0cnVjdCBt dDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKQ0KIHsNCi0JdTMyIHZhbCA9IG10NzkxNV9lZXByb21f cmVhZChkZXYsIGFkZHIpOw0KLQlzOCBkZWx0YSA9IEZJRUxEX0dFVChTS1VfREVMVEFfVkFMLCB2 YWwpOw0KKwl1MzIgdmFsOw0KKwlzOCBkZWx0YTsNCisNCisJaWYgKGJhbmQgPT0gTkw4MDIxMV9C QU5EXzJHSFopDQorCQl2YWwgPSBtdDc5MTVfZWVwcm9tX3JlYWQoZGV2LCBNVF9FRV9SQVRFX0RF TFRBXzJHKTsNCisJZWxzZQ0KKwkJdmFsID0gbXQ3OTE1X2VlcHJvbV9yZWFkKGRldiwgTVRfRUVf UkFURV9ERUxUQV81Ryk7DQogDQotCWlmICghKHZhbCAmIFNLVV9ERUxUQV9FTikpDQorCWlmICgh KHZhbCAmIE1UX0VFX1JBVEVfREVMVEFfRU4pKQ0KIAkJcmV0dXJuIDA7DQogDQotCXJldHVybiB2 YWwgJiBTS1VfREVMVEFfQUREID8gZGVsdGEgOiAtZGVsdGE7DQotfQ0KKwlkZWx0YSA9IEZJRUxE X0dFVChNVF9FRV9SQVRFX0RFTFRBX01BU0ssIHZhbCk7DQogDQotc3RhdGljIHZvaWQNCi1tdDc5 MTVfZWVwcm9tX2luaXRfc2t1X2JhbmQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwNCi0JCQkgICAg c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpDQotew0KLQlpbnQgaSwgYmFu ZCA9IHNiYW5kLT5iYW5kOw0KLQlzOCAqcmF0ZV9wb3dlciA9IGRldi0+cmF0ZV9wb3dlcltiYW5k XSwgbWF4X2RlbHRhID0gMDsNCi0JdTggaWR4ID0gMDsNCi0NCi0JZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUobXQ3OTE1X3NrdV9ncm91cHMpOyBpKyspIHsNCi0JCWNvbnN0IHN0cnVjdCBza3Vf Z3JvdXAgKnNrdSA9ICZtdDc5MTVfc2t1X2dyb3Vwc1tpXTsNCi0JCXUzMiBvZmZzZXQgPSBza3Ut Pm9mZnNldFtiYW5kXTsNCi0JCWludCBqOw0KLQ0KLQkJaWYgKCFvZmZzZXQpIHsNCi0JCQlpZHgg Kz0gc2t1LT5sZW47DQotCQkJY29udGludWU7DQotCQl9DQotDQotCQlyYXRlX3Bvd2VyW2lkeCsr XSA9IG10NzkxNV9nZXRfc2t1X2RlbHRhKGRldiwgb2Zmc2V0KTsNCi0JCWlmIChyYXRlX3Bvd2Vy W2lkeCAtIDFdID4gbWF4X2RlbHRhKQ0KLQkJCW1heF9kZWx0YSA9IHJhdGVfcG93ZXJbaWR4IC0g MV07DQotDQotCQlpZiAoaSA9PSBTS1VfSFRfQlcyMCB8fCBpID09IFNLVV9WSFRfQlcyMCkNCi0J CQlvZmZzZXQgKz0gMTsNCi0NCi0JCWZvciAoaiA9IDE7IGogPCBza3UtPmxlbjsgaisrKSB7DQot CQkJdTMyIGFkZHIgPSBvZmZzZXQgKyBza3UtPmRlbHRhX21hcFtqXTsNCi0NCi0JCQlyYXRlX3Bv d2VyW2lkeCsrXSA9IG10NzkxNV9nZXRfc2t1X2RlbHRhKGRldiwgYWRkcik7DQotCQkJaWYgKHJh dGVfcG93ZXJbaWR4IC0gMV0gPiBtYXhfZGVsdGEpDQotCQkJCW1heF9kZWx0YSA9IHJhdGVfcG93 ZXJbaWR4IC0gMV07DQotCQl9DQotCX0NCi0NCi0JcmF0ZV9wb3dlcltpZHhdID0gbWF4X2RlbHRh Ow0KKwlyZXR1cm4gdmFsICYgTVRfRUVfUkFURV9ERUxUQV9TSUdOID8gZGVsdGEgOiAtZGVsdGE7 DQogfQ0KIA0KLXZvaWQgbXQ3OTE1X2VlcHJvbV9pbml0X3NrdShzdHJ1Y3QgbXQ3OTE1X2RldiAq ZGV2KQ0KLXsNCi0JbXQ3OTE1X2VlcHJvbV9pbml0X3NrdV9iYW5kKGRldiwgJmRldi0+bXBoeS5z YmFuZF8yZy5zYmFuZCk7DQotCW10NzkxNV9lZXByb21faW5pdF9za3VfYmFuZChkZXYsICZkZXYt Pm1waHkuc2JhbmRfNWcuc2JhbmQpOw0KLX0NCitjb25zdCB1OCBtdDc5MTVfc2t1X2dyb3VwX2xl bltdID0gew0KKwlbU0tVX0NDS10gPSA0LA0KKwlbU0tVX09GRE1dID0gOCwNCisJW1NLVV9IVF9C VzIwXSA9IDgsDQorCVtTS1VfSFRfQlc0MF0gPSA5LA0KKwlbU0tVX1ZIVF9CVzIwXSA9IDEyLA0K KwlbU0tVX1ZIVF9CVzQwXSA9IDEyLA0KKwlbU0tVX1ZIVF9CVzgwXSA9IDEyLA0KKwlbU0tVX1ZI VF9CVzE2MF0gPSAxMiwNCisJW1NLVV9IRV9SVTI2XSA9IDEyLA0KKwlbU0tVX0hFX1JVNTJdID0g MTIsDQorCVtTS1VfSEVfUlUxMDZdID0gMTIsDQorCVtTS1VfSEVfUlUyNDJdID0gMTIsDQorCVtT S1VfSEVfUlU0ODRdID0gMTIsDQorCVtTS1VfSEVfUlU5OTZdID0gMTIsDQorCVtTS1VfSEVfUlUy eDk5Nl0gPSAxMg0KK307DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9lZXByb20uaA0KaW5kZXggNGUzMWQ2YS4uNzdjZWM1MSAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5oDQorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uaA0KQEAg LTE3LDYgKzE3LDggQEAgZW51bSBtdDc5MTVfZWVwcm9tX2ZpZWxkIHsNCiAJTVRfRUVfTUFDX0FE RFIgPQkweDAwNCwNCiAJTVRfRUVfRERJRV9GVF9WRVJTSU9OID0JMHgwNTAsDQogCU1UX0VFX1dJ RklfQ09ORiA9CTB4MTkwLA0KKwlNVF9FRV9SQVRFX0RFTFRBXzJHID0JMHgyNTIsDQorCU1UX0VF X1JBVEVfREVMVEFfNUcgPQkweDI5ZCwNCiAJTVRfRUVfVFgwX1BPV0VSXzJHID0JMHgyZmMsDQog CU1UX0VFX1RYMF9QT1dFUl81RyA9CTB4MzRiLA0KIAlNVF9FRV9BRElFX0ZUX1ZFUlNJT04gPQkw eDlhMCwNCkBAIC0zMCw2ICszMiwxMCBAQCBlbnVtIG10NzkxNV9lZXByb21fZmllbGQgew0KICNk ZWZpbmUgTVRfRUVfV0lGSV9DT05GX1RTU0kwXzVHCQlCSVQoMikNCiAjZGVmaW5lIE1UX0VFX1dJ RklfQ09ORl9UU1NJMV81RwkJQklUKDQpDQogDQorI2RlZmluZSBNVF9FRV9SQVRFX0RFTFRBX01B U0sJCQlHRU5NQVNLKDUsIDApDQorI2RlZmluZSBNVF9FRV9SQVRFX0RFTFRBX1NJR04JCQlCSVQo NikNCisjZGVmaW5lIE1UX0VFX1JBVEVfREVMVEFfRU4JCQlCSVQoNykNCisNCiBlbnVtIG10Nzkx NV9lZXByb21fYmFuZCB7DQogCU1UX0VFX0RVQUxfQkFORCwNCiAJTVRfRUVfNUdIWiwNCkBAIC0z NywzMiArNDMsNiBAQCBlbnVtIG10NzkxNV9lZXByb21fYmFuZCB7DQogCU1UX0VFX0RCREMsDQog fTsNCiANCi0jZGVmaW5lIFNLVV9ERUxUQV9WQUwJCUdFTk1BU0soNSwgMCkNCi0jZGVmaW5lIFNL VV9ERUxUQV9BREQJCUJJVCg2KQ0KLSNkZWZpbmUgU0tVX0RFTFRBX0VOCQlCSVQoNykNCi0NCi1l bnVtIG10NzkxNV9za3VfZGVsdGFfZ3JvdXAgew0KLQlTS1VfQ0NLX0dST1VQMCwNCi0JU0tVX0ND S19HUk9VUDEsDQotDQotCVNLVV9PRkRNX0dST1VQMCA9IDAsDQotCVNLVV9PRkRNX0dST1VQMSwN Ci0JU0tVX09GRE1fR1JPVVAyLA0KLQlTS1VfT0ZETV9HUk9VUDMsDQotCVNLVV9PRkRNX0dST1VQ NCwNCi0NCi0JU0tVX01DU19HUk9VUDAgPSAwLA0KLQlTS1VfTUNTX0dST1VQMSwNCi0JU0tVX01D U19HUk9VUDIsDQotCVNLVV9NQ1NfR1JPVVAzLA0KLQlTS1VfTUNTX0dST1VQNCwNCi0JU0tVX01D U19HUk9VUDUsDQotCVNLVV9NQ1NfR1JPVVA2LA0KLQlTS1VfTUNTX0dST1VQNywNCi0JU0tVX01D U19HUk9VUDgsDQotCVNLVV9NQ1NfR1JPVVA5LA0KLX07DQotDQogZW51bSBtdDc5MTVfc2t1X3Jh dGVfZ3JvdXAgew0KIAlTS1VfQ0NLLA0KIAlTS1VfT0ZETSwNCkBAIC04MiwxMiArNjIsNiBAQCBl bnVtIG10NzkxNV9za3VfcmF0ZV9ncm91cCB7DQogCU1BWF9TS1VfUkFURV9HUk9VUF9OVU0sDQog fTsNCiANCi1zdHJ1Y3Qgc2t1X2dyb3VwIHsNCi0JdTggbGVuOw0KLQl1MTYgb2Zmc2V0WzJdOw0K LQljb25zdCB1OCAqZGVsdGFfbWFwOw0KLX07DQotDQogc3RhdGljIGlubGluZSBpbnQNCiBtdDc5 MTVfZ2V0X2NoYW5uZWxfZ3JvdXAoaW50IGNoYW5uZWwpDQogew0KQEAgLTEyMCw2ICs5NCw2IEBA IG10NzkxNV90c3NpX2VuYWJsZWQoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgZW51bSBubDgwMjEx X2JhbmQgYmFuZCkNCiAJCXJldHVybiBlZXBbTVRfRUVfV0lGSV9DT05GICsgN10gJiBNVF9FRV9X SUZJX0NPTkZfVFNTSTBfMkc7DQogfQ0KIA0KLWV4dGVybiBjb25zdCBzdHJ1Y3Qgc2t1X2dyb3Vw IG10NzkxNV9za3VfZ3JvdXBzW107DQorZXh0ZXJuIGNvbnN0IHU4IG10NzkxNV9za3VfZ3JvdXBf bGVuW01BWF9TS1VfUkFURV9HUk9VUF9OVU1dOw0KIA0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYw0KaW5kZXggYWFkZjU2ZS4u NTA3NjNhYiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv bXQ3OTE1L2luaXQuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9t dDc5MTUvaW5pdC5jDQpAQCAtNzcsMTAgKzc3LDEzIEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3R4YmZf aW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KIH0NCiANCiBzdGF0aWMgdm9pZA0KLW10Nzkx NV9pbml0X3R4cG93ZXJfYmFuZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LA0KLQkJCSBzdHJ1Y3Qg aWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZCkNCittdDc5MTVfaW5pdF90eHBvd2VyKHN0 cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQorCQkgICAgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRf YmFuZCAqc2JhbmQpDQogew0KIAlpbnQgaSwgbl9jaGFpbnMgPSBod2VpZ2h0OChkZXYtPm1waHku YW50ZW5uYV9tYXNrKTsNCisJaW50IG5zc19kZWx0YSA9IG10NzZfdHhfcG93ZXJfbnNzX2RlbHRh KG5fY2hhaW5zKTsNCisJaW50IHB3cl9kZWx0YSA9IG10NzkxNV9lZXByb21fZ2V0X3Bvd2VyX2Rl bHRhKGRldiwgc2JhbmQtPmJhbmQpOw0KKwlzdHJ1Y3QgbXQ3Nl9wb3dlcl9saW1pdHMgbGltaXRz Ow0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgc2JhbmQtPm5fY2hhbm5lbHM7IGkrKykgew0KIAkJc3Ry dWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gJnNiYW5kLT5jaGFubmVsc1tpXTsNCkBAIC05 NCwyMCArOTcsMTggQEAgbXQ3OTE1X2luaXRfdHhwb3dlcl9iYW5kKHN0cnVjdCBtdDc5MTVfZGV2 ICpkZXYsDQogCQkJdGFyZ2V0X3Bvd2VyID0gbWF4KHRhcmdldF9wb3dlciwgdmFsKTsNCiAJCX0N CiANCisJCXRhcmdldF9wb3dlciArPSBwd3JfZGVsdGE7DQorCQl0YXJnZXRfcG93ZXIgPSBtdDc2 X2dldF9yYXRlX3Bvd2VyX2xpbWl0cygmZGV2LT5tcGh5LCBjaGFuLA0KKwkJCQkJCQkgICZsaW1p dHMsDQorCQkJCQkJCSAgdGFyZ2V0X3Bvd2VyKTsNCisJCXRhcmdldF9wb3dlciArPSBuc3NfZGVs dGE7DQorCQl0YXJnZXRfcG93ZXIgPSBESVZfUk9VTkRfVVAodGFyZ2V0X3Bvd2VyLCAyKTsNCiAJ CWNoYW4tPm1heF9wb3dlciA9IG1pbl90KGludCwgY2hhbi0+bWF4X3JlZ19wb3dlciwNCi0JCQkJ CXRhcmdldF9wb3dlciAvIDIpOw0KLQkJY2hhbi0+b3JpZ19tcHdyID0gdGFyZ2V0X3Bvd2VyIC8g MjsNCisJCQkJCXRhcmdldF9wb3dlcik7DQorCQljaGFuLT5vcmlnX21wd3IgPSB0YXJnZXRfcG93 ZXI7DQogCX0NCiB9DQogDQotc3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfdHhwb3dlcihzdHJ1Y3Qg bXQ3OTE1X2RldiAqZGV2KQ0KLXsNCi0JbXQ3OTE1X2luaXRfdHhwb3dlcl9iYW5kKGRldiwgJmRl di0+bXBoeS5zYmFuZF8yZy5zYmFuZCk7DQotCW10NzkxNV9pbml0X3R4cG93ZXJfYmFuZChkZXYs ICZkZXYtPm1waHkuc2JhbmRfNWcuc2JhbmQpOw0KLQ0KLQltdDc5MTVfZWVwcm9tX2luaXRfc2t1 KGRldik7DQotfQ0KLQ0KIHN0YXRpYyB2b2lkIG10NzkxNV9pbml0X3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQ0KIHsNCiAJc3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGNvbnRhaW5lcl9v Zih3b3JrLCBzdHJ1Y3QgbXQ3OTE1X2RldiwNCkBAIC0xMTUsNyArMTE2LDggQEAgc3RhdGljIHZv aWQgbXQ3OTE1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogDQogCW10Nzkx NV9tY3Vfc2V0X2VlcHJvbShkZXYpOw0KIAltdDc5MTVfbWFjX2luaXQoZGV2KTsNCi0JbXQ3OTE1 X2luaXRfdHhwb3dlcihkZXYpOw0KKwltdDc5MTVfaW5pdF90eHBvd2VyKGRldiwgJmRldi0+bXBo eS5zYmFuZF8yZy5zYmFuZCk7DQorCW10NzkxNV9pbml0X3R4cG93ZXIoZGV2LCAmZGV2LT5tcGh5 LnNiYW5kXzVnLnNiYW5kKTsNCiAJbXQ3OTE1X3R4YmZfaW5pdChkZXYpOw0KIH0NCiANCkBAIC0y MjQsOCArMjI2LDEyIEBAIG10NzkxNV9yZWdkX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHks DQogCXN0cnVjdCBtdDc5MTVfcGh5ICpwaHkgPSBtcGh5LT5wcml2Ow0KIAlzdHJ1Y3QgY2ZnODAy MTFfY2hhbl9kZWYgKmNoYW5kZWYgPSAmbXBoeS0+Y2hhbmRlZjsNCiANCisJbWVtY3B5KGRldi0+ bXQ3Ni5hbHBoYTIsIHJlcXVlc3QtPmFscGhhMiwgc2l6ZW9mKGRldi0+bXQ3Ni5hbHBoYTIpKTsN CiAJZGV2LT5tdDc2LnJlZ2lvbiA9IHJlcXVlc3QtPmRmc19yZWdpb247DQogDQorCW10NzkxNV9p bml0X3R4cG93ZXIoZGV2LCAmbXBoeS0+c2JhbmRfMmcuc2JhbmQpOw0KKwltdDc5MTVfaW5pdF90 eHBvd2VyKGRldiwgJm1waHktPnNiYW5kXzVnLnNiYW5kKTsNCisNCiAJaWYgKCEoY2hhbmRlZi0+ Y2hhbi0+ZmxhZ3MgJiBJRUVFODAyMTFfQ0hBTl9SQURBUikpDQogCQlyZXR1cm47DQogDQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5j IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jDQppbmRl eCAwNWI1NjUwLi4xNzgwZGYxIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzkxNS9tYWluLmMNCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIGludCBt dDc5MTVfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1MzIgY2hhbmdlZCkNCiAJfQ0K IA0KIAlpZiAoY2hhbmdlZCAmIElFRUU4MDIxMV9DT05GX0NIQU5HRV9QT1dFUikgew0KLQkJcmV0 ID0gbXQ3OTE1X21jdV9zZXRfc2t1KHBoeSk7DQorCQlyZXQgPSBtdDc5MTVfbWN1X3NldF90eHBv d2VyX3NrdShwaHkpOw0KIAkJaWYgKHJldCkNCiAJCQlyZXR1cm4gcmV0Ow0KIAl9DQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYw0KaW5kZXggOThk ZTJmNi4uMDgwMDRhNyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L21jdS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9tY3UuYw0KQEAgLTMwNTQsOCArMzA1NCw5IEBAIGludCBtdDc5MTVfbWN1X2dl dF9yYXRlX2luZm8oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyIGNtZCwgdTE2IHdsYW5faWR4 KQ0KIAkJCQkgICBzaXplb2YocmVxKSwgZmFsc2UpOw0KIH0NCiANCi1pbnQgbXQ3OTE1X21jdV9z ZXRfc2t1KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpDQoraW50IG10NzkxNV9tY3Vfc2V0X3R4cG93 ZXJfc2t1KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpDQogew0KKyNkZWZpbmUgTVQ3OTE1X1NLVV9S QVRFX05VTQkJMTYxDQogCXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktPmRldjsNCiAJc3Ry dWN0IG10NzZfcGh5ICptcGh5ID0gcGh5LT5tdDc2Ow0KIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dyA9IG1waHktPmh3Ow0KQEAgLTMwNjksMTEgKzMwNzAsMTAgQEAgaW50IG10NzkxNV9tY3Vfc2V0 X3NrdShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KQ0KIAkJLmRiZGNfaWR4ID0gcGh5ICE9ICZkZXYt PnBoeSwNCiAJfTsNCiAJc3RydWN0IG10NzZfcG93ZXJfbGltaXRzIGxpbWl0c19hcnJheTsNCi0J czggKmRlbHRhLCAqbGEgPSAoczggKikmbGltaXRzX2FycmF5Ow0KKwlzOCAqbGEgPSAoczggKikm bGltaXRzX2FycmF5Ow0KIAlpbnQgaSwgaWR4LCBuX2NoYWlucyA9IGh3ZWlnaHQ4KG1waHktPmFu dGVubmFfbWFzayk7DQogCWludCB0eF9wb3dlcjsNCiANCi0JZGVsdGEgPSBkZXYtPnJhdGVfcG93 ZXJbbXBoeS0+Y2hhbmRlZi5jaGFuLT5iYW5kXTsNCiAJdHhfcG93ZXIgPSBody0+Y29uZi5wb3dl cl9sZXZlbCAqIDIgLQ0KIAkJICAgbXQ3Nl90eF9wb3dlcl9uc3NfZGVsdGEobl9jaGFpbnMpOw0K IA0KQEAgLTMwODEsMTAgKzMwODEsOCBAQCBpbnQgbXQ3OTE1X21jdV9zZXRfc2t1KHN0cnVjdCBt dDc5MTVfcGh5ICpwaHkpDQogCQkJCQkgICAgICAmbGltaXRzX2FycmF5LCB0eF9wb3dlcik7DQog CW1waHktPnR4cG93ZXJfY3VyID0gdHhfcG93ZXI7DQogDQotCWZvciAoaSA9IDAsIGlkeCA9IDA7 IGkgPCBNQVhfU0tVX1JBVEVfR1JPVVBfTlVNOyBpKyspIHsNCi0JCWNvbnN0IHN0cnVjdCBza3Vf Z3JvdXAgKnNrdSA9ICZtdDc5MTVfc2t1X2dyb3Vwc1tpXTsNCi0JCXUzMiBvZmZzZXQgPSBza3Ut Pm9mZnNldFttcGh5LT5jaGFuZGVmLmNoYW4tPmJhbmRdOw0KLQkJdTggbWNzX251bSA9IHNrdS0+ bGVuOw0KKwlmb3IgKGkgPSAwLCBpZHggPSAwOyBpIDwgQVJSQVlfU0laRShtdDc5MTVfc2t1X2dy b3VwX2xlbik7IGkrKykgew0KKwkJdTggbWNzX251bSwgbGVuID0gbXQ3OTE1X3NrdV9ncm91cF9s ZW5baV07DQogCQlpbnQgajsNCiANCiAJCWlmIChpID49IFNLVV9IVF9CVzIwICYmIGkgPD0gU0tV X1ZIVF9CVzE2MCkgew0KQEAgLTMwOTIsMjIgKzMwOTAsMTUgQEAgaW50IG10NzkxNV9tY3Vfc2V0 X3NrdShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KQ0KIA0KIAkJCWlmIChpID09IFNLVV9IVF9CVzIw IHx8IGkgPT0gU0tVX1ZIVF9CVzIwKQ0KIAkJCQlsYSA9IChzOCAqKSZsaW1pdHNfYXJyYXkgKyAx MjsNCisJCX0gZWxzZSB7DQorCQkJbWNzX251bSA9IGxlbjsNCiAJCX0NCiANCi0JCWlmICghb2Zm c2V0KSB7DQotCQkJaWR4ICs9IHNrdS0+bGVuOw0KLQkJCWxhICs9IG1jc19udW07DQotCQkJY29u dGludWU7DQotCQl9DQotDQotCQlmb3IgKGogPSAwOyBqIDwgbWluX3QodTgsIG1jc19udW0sIHNr dS0+bGVuKTsgaisrKSB7DQotCQkJczggcmF0ZV9wb3dlcjsNCisJCWZvciAoaiA9IDA7IGogPCBt aW5fdCh1OCwgbWNzX251bSwgbGVuKTsgaisrKQ0KKwkJCXJlcS52YWxbaWR4ICsgal0gPSBsYVtq XTsNCiANCi0JCQlyYXRlX3Bvd2VyID0gaHctPmNvbmYucG93ZXJfbGV2ZWwgKiAyICsgZGVsdGFb aWR4ICsgal07DQotCQkJcmVxLnZhbFtpZHggKyBqXSA9IG1pbl90KHM4LCBsYVtqXSwgcmF0ZV9w b3dlcik7DQotCQl9DQogCQlsYSArPSBtY3NfbnVtOw0KLQkJaWR4ICs9IHNrdS0+bGVuOw0KKwkJ aWR4ICs9IGxlbjsNCiAJfQ0KIA0KIAlyZXR1cm4gX19tdDc2X21jdV9zZW5kX21zZygmZGV2LT5t dDc2LA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 OTE1L210NzkxNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUv bXQ3OTE1LmgNCmluZGV4IDg1ZDc0ZWMuLjg1MWU5YmYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaA0KKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgNCkBAIC0zOCwxMCArMzgs NiBAQA0KICNkZWZpbmUgTVQ3OTE1XzVHX1JBVEVfREVGQVVMVAkJMHg0YgkvKiBPRkRNIDZNICov DQogI2RlZmluZSBNVDc5MTVfMkdfUkFURV9ERUZBVUxUCQkweDAJLyogQ0NLIDFNICovDQogDQot I2RlZmluZSBNVDc5MTVfU0tVX1JBVEVfTlVNCQkxNjENCi0jZGVmaW5lIE1UNzkxNV9TS1VfTUFY X0RFTFRBX0lEWAlNVDc5MTVfU0tVX1JBVEVfTlVNDQotI2RlZmluZSBNVDc5MTVfU0tVX1RBQkxF X1NJWkUJCShNVDc5MTVfU0tVX1JBVEVfTlVNICsgMSkNCi0NCiBzdHJ1Y3QgbXQ3OTE1X3ZpZjsN CiBzdHJ1Y3QgbXQ3OTE1X3N0YTsNCiBzdHJ1Y3QgbXQ3OTE1X2Rmc19wdWxzZTsNCkBAIC0xNjks OCArMTY1LDYgQEAgc3RydWN0IG10NzkxNV9kZXYgew0KIAlzcGlubG9ja190IHRva2VuX2xvY2s7 DQogCXN0cnVjdCBpZHIgdG9rZW47DQogDQotCXM4ICoqcmF0ZV9wb3dlcjsgLyogVE9ETzogdXNl IG10NzZfcmF0ZV9wb3dlciAqLw0KLQ0KIAlib29sIGZ3X2RlYnVnOw0KIH07DQogDQpAQCAtMjc3 LDcgKzI3MSw3IEBAIHUzMiBtdDc5MTVfZWVwcm9tX3JlYWQoc3RydWN0IG10NzkxNV9kZXYgKmRl diwgdTMyIG9mZnNldCk7DQogaW50IG10NzkxNV9lZXByb21fZ2V0X3RhcmdldF9wb3dlcihzdHJ1 Y3QgbXQ3OTE1X2RldiAqZGV2LA0KIAkJCQkgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNo YW4sDQogCQkJCSAgIHU4IGNoYWluX2lkeCk7DQotdm9pZCBtdDc5MTVfZWVwcm9tX2luaXRfc2t1 KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpOw0KK3M4IG10NzkxNV9lZXByb21fZ2V0X3Bvd2VyX2Rl bHRhKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCBiYW5kKTsNCiBpbnQgbXQ3OTE1X2RtYV9p bml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpOw0KIHZvaWQgbXQ3OTE1X2RtYV9wcmVmZXRjaChz dHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTsNCiB2b2lkIG10NzkxNV9kbWFfY2xlYW51cChzdHJ1Y3Qg bXQ3OTE1X2RldiAqZGV2KTsNCkBAIC0zMjAsNyArMzE0LDcgQEAgaW50IG10NzkxNV9tY3Vfc2V0 X3NlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBhY3Rpb24sIHU4IHNldCwgdTggYmFuZCk7 DQogaW50IG10NzkxNV9tY3Vfc2V0X3J0c190aHJlc2goc3RydWN0IG10NzkxNV9waHkgKnBoeSwg dTMyIHZhbCk7DQogaW50IG10NzkxNV9tY3Vfc2V0X3BtKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYs IGludCBiYW5kLCBpbnQgZW50ZXIpOw0KIGludCBtdDc5MTVfbWN1X3NldF9za3VfZW4oc3RydWN0 IG10NzkxNV9waHkgKnBoeSwgYm9vbCBlbmFibGUpOw0KLWludCBtdDc5MTVfbWN1X3NldF9za3Uo c3RydWN0IG10NzkxNV9waHkgKnBoeSk7DQoraW50IG10NzkxNV9tY3Vfc2V0X3R4cG93ZXJfc2t1 KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpOw0KIGludCBtdDc5MTVfbWN1X3NldF90eGJmX3R5cGUo c3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogaW50IG10NzkxNV9tY3Vfc2V0X3R4YmZfc291bmRp bmcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogaW50IG10NzkxNV9tY3Vfc2V0X2ZjYzVfbHBu KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCB2YWwpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMNCmluZGV4IDc5MzdjNjkuLmI3OWI1MDYg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9w Y2kuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNp LmMNCkBAIC03NSwyOCArNzUsNiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXQ3OTE1X2lycV9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkNCiAJcmV0dXJuIElSUV9IQU5ETEVEOw0K IH0NCiANCi1zdGF0aWMgaW50DQotbXQ3OTE1X2FsbG9jX2RldmljZShzdHJ1Y3QgcGNpX2RldiAq cGRldiwgc3RydWN0IG10NzkxNV9kZXYgKmRldikNCi17DQotI2RlZmluZSBOVU1fQkFORFMJMg0K LQlpbnQgaTsNCi0JczggKipza3U7DQotDQotCXNrdSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2 LCBOVU1fQkFORFMgKiBzaXplb2YoKnNrdSksIEdGUF9LRVJORUwpOw0KLQlpZiAoIXNrdSkNCi0J CXJldHVybiAtRU5PTUVNOw0KLQ0KLQlmb3IgKGkgPSAwOyBpIDwgTlVNX0JBTkRTOyBpKyspIHsN Ci0JCXNrdVtpXSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBNVDc5MTVfU0tVX1RBQkxFX1NJ WkUgKg0KLQkJCQkgICAgICBzaXplb2YoKipza3UpLCBHRlBfS0VSTkVMKTsNCi0JCWlmICghc2t1 W2ldKQ0KLQkJCXJldHVybiAtRU5PTUVNOw0KLQl9DQotCWRldi0+cmF0ZV9wb3dlciA9IHNrdTsN Ci0NCi0JcmV0dXJuIDA7DQotfQ0KLQ0KIHN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9wcm9iZShzdHJ1 Y3QgcGNpX2RldiAqcGRldiwNCiAJCQkgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlk KQ0KIHsNCkBAIC0xNDAsOSArMTE4LDYgQEAgc3RhdGljIGludCBtdDc5MTVfcGNpX3Byb2JlKHN0 cnVjdCBwY2lfZGV2ICpwZGV2LA0KIAkJcmV0dXJuIC1FTk9NRU07DQogDQogCWRldiA9IGNvbnRh aW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiwgbXQ3Nik7DQotCXJldCA9IG10NzkxNV9h bGxvY19kZXZpY2UocGRldiwgZGV2KTsNCi0JaWYgKHJldCkNCi0JCXJldHVybiByZXQ7DQogDQog CW10NzZfbW1pb19pbml0KCZkZXYtPm10NzYsIHBjaW1faW9tYXBfdGFibGUocGRldilbMF0pOw0K IAltZGV2LT5yZXYgPSAobXQ3OTE1X2wxX3JyKGRldiwgTVRfSFdfQ0hJUElEKSA8PCAxNikgfA0K LS0gDQoyLjE3LjENCg==