Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp104180ybz; Fri, 24 Apr 2020 12:34:48 -0700 (PDT) X-Google-Smtp-Source: APiQypJA2kMvXV/DP1mClAj1TLUVaH2O8aXo0ph2eRbDQCuzHEK3YoOo+ecnTvhzqMSdc+SVCAQr X-Received: by 2002:a50:a985:: with SMTP id n5mr8817722edc.338.1587756888438; Fri, 24 Apr 2020 12:34:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587756888; cv=none; d=google.com; s=arc-20160816; b=aCXkLqwI5y6I5fFGyNNRoYUMwlLvqsxQ/pv+GYTS4YVjsRPFuwIBDqXWR2qLrxG8Qo NTsxob+QgmViUFRLRRaQb2GHrHXOl1BlSLcw+KxdT5eO+TA+FtiGOmJAwK5/r6ylPrgJ OyS93V4aOXO1JB1pftMa9C7SeqHtcOAp78bhiBzOtTsnHWd8eZuvM6hKn7UFq33c9Cxv z6JYugaqDVurixSKhoTArt7c+YtE13dwryt60RQX0oOEuPDbLpXTuRrUkkxPjTFC/uw/ c855jj507MHhBvCZv+y3igl8Px3a6CopbO7rOCPhbduCdWvrMmFY/ulEqqsxLXiaeuUc e9TA== 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=OQgHXdY9xupntxysaSQvzP6LHb2R936k7c8Ji5vDl54=; b=tSs1Yxr85ZWzsCnxSeedfKdawn1BU3THBoVKQG5040HrElOl1eSdpy9uB3dZl4JCH4 rLJDQUlVsA8xx2th1JuRaUF9GpiwkWCU4TX7ZhfJtx20/sVlKovSBWN7jyGSqFliT0oO Da/3mMzeSlbMuZmAmWyeTnWSGt8WDPxLJaW8eJU5WmP8j3FAlRWqk6IIEfXzr4cGM8Tf AqGLVedlVDBkMHLduNekjvVrh88ZREqrFSHwak/MiUXKMudRkAQTJCJZnQ2Dg50FvmgS Tn4FTFs1PYbQhi6y1mXimVUWrAUxAG8v73hCUJA6CP/XNEYN+/jvB1QYwPkdRAXNiJ7l sQFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=qOgAMdax; 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 i26si3316476ejg.474.2020.04.24.12.34.24; Fri, 24 Apr 2020 12:34:48 -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=qOgAMdax; 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 S1729413AbgDXTdI (ORCPT + 99 others); Fri, 24 Apr 2020 15:33:08 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:38853 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729359AbgDXTdF (ORCPT ); Fri, 24 Apr 2020 15:33:05 -0400 X-UUID: 933dac811e3e4111b001783cf95be17b-20200425 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=OQgHXdY9xupntxysaSQvzP6LHb2R936k7c8Ji5vDl54=; b=qOgAMdaxYITGkYd0glj4Ji2Hf+2uaxLlajZadiQ2/vFNNUshZXTWQJk/2l07G/eLdtfIomOB52CgEbVFMnmL5+wBz9i93lBci1w3czy/+OVYXjWJY2aM6n8bMCvaNORk+2wtJeCrx/8QPzYuek7nQjUILMsniSVi5K1PvAnUjcY=; X-UUID: 933dac811e3e4111b001783cf95be17b-20200425 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 465176151; Sat, 25 Apr 2020 03:32:54 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs08n1.mediatek.inc (172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 25 Apr 2020 03:32:48 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 25 Apr 2020 03:32:51 +0800 From: Ryder Lee To: Felix Fietkau , Lorenzo Bianconi CC: Shayne Chen , YF Luo , Yiwei Chung , Chih-Min Chen , Evelyn Tsai , Sean Wang , , , Ryder Lee Subject: [PATCH v3 08/18] mt76: mt7915: implement HE per-rate tx power support Date: Sat, 25 Apr 2020 03:32:29 +0800 Message-ID: <69efab22c1fb4fbb1eb16cb378d944897ce24cd2.1587756404.git.ryder.lee@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-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org VXNlIGZpcm13YXJlIHN1cHBvcnQgZm9yIGFwcGx5aW5nIHBlci1yYXRlIGxpbWl0IGFuZCBwb3dl ciBvZmZzZXRzLg0KVGhpcyBjYW4gc3VwcG9ydCBhbGwgSEUgUlUgdHlwZXMuDQoNClNpZ25lZC1v ZmYtYnk6IFNoYXluZSBDaGVuIDxzaGF5bmUuY2hlbkBtZWRpYXRlay5jb20+DQpTaWduZWQtb2Zm LWJ5OiBSeWRlciBMZWUgPHJ5ZGVyLmxlZUBtZWRpYXRlay5jb20+DQpUZXN0ZWQtYnk6IENoaWgt TWluIENoZW4gPGNoaWgtbWluLmNoZW5AbWVkaWF0ZWsuY29tPg0KVGVzdGVkLWJ5OiBFdmVseW4g VHNhaSA8ZXZlbHluLnRzYWlAbWVkaWF0ZWsuY29tPg0KQWNrZWQtYnk6IFlpd2VpIENodW5nIDx5 aXdlaS5jaHVuZ0BtZWRpYXRlay5jb20+DQpBY2tlZC1ieTogWUYgTHVvIDx5Zi5sdW9AbWVkaWF0 ZWsuY29tPg0KLS0tDQogLi4uL3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMu YyAgIHwgIDU5ICsrKysrKysrKw0KIC4uLi93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9l ZXByb20uYyAgICB8IDExOCArKysrKysrKysrKysrKysrKysNCiAuLi4vd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmggICAgfCAgNDcgKysrKysrKw0KIC4uLi9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jICB8ICAgMiArDQogLi4uL25ldC93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMgIHwgICA3ICsrDQogLi4uL25ldC93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyAgIHwgIDQ4ICsrKysrKysNCiAuLi4vbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5oICAgfCAgIDEgKw0KIC4uLi93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaCAgICB8ICAgOCArKw0KIC4uLi9uZXQvd2ly ZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvcGNpLmMgICB8ICAyNSArKysrDQogOSBmaWxlcyBj aGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jDQppbmRleCAxNTJhZTA2MTdmM2QuLjJl M2YwNWY3MzY5NyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L2RlYnVnZnMuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv bXQ3Ni9tdDc5MTUvZGVidWdmcy5jDQpAQCAtMjE5LDYgKzIxOSw2MyBAQCBtdDc5MTVfcXVldWVz X3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQ0KIAlyZXR1cm4gMDsNCiB9DQog DQorc3RhdGljIHZvaWQNCittdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIoc3RydWN0IHNlcV9maWxl ICpzLCBzOCAqZGVsdGEsDQorCQkJIHM4IHR4cG93ZXJfY3VyLCBpbnQgYmFuZCkNCit7DQorCXN0 YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc2t1X2dyb3VwX25hbWVbXSA9IHsNCisJCSJDQ0siLCAi T0ZETSIsICJIVDIwIiwgIkhUNDAiLA0KKwkJIlZIVDIwIiwgIlZIVDQwIiwgIlZIVDgwIiwgIlZI VDE2MCIsDQorCQkiUlUyNiIsICJSVTUyIiwgIlJVMTA2IiwgIlJVMjQyL1NVMjAiLA0KKwkJIlJV NDg0L1NVNDAiLCAiUlU5OTYvU1U4MCIsICJSVTJ4OTk2L1NVMTYwIg0KKwl9Ow0KKwlzOCB0eHBv d2VyW01UNzkxNV9TS1VfUkFURV9OVU1dOw0KKwlpbnQgaSwgaWR4ID0gMDsNCisNCisJZm9yIChp ID0gMDsgaSA8IE1UNzkxNV9TS1VfUkFURV9OVU07IGkrKykNCisJCXR4cG93ZXJbaV0gPSBESVZf Uk9VTkRfVVAodHhwb3dlcl9jdXIgKyBkZWx0YVtpXSwgMik7DQorDQorCWZvciAoaSA9IDA7IGkg PCBNQVhfU0tVX1JBVEVfR1JPVVBfTlVNOyBpKyspIHsNCisJCWNvbnN0IHN0cnVjdCBza3VfZ3Jv dXAgKnNrdSA9ICZtdDc5MTVfc2t1X2dyb3Vwc1tpXTsNCisJCXUzMiBvZmZzZXQgPSBza3UtPm9m ZnNldFtiYW5kXTsNCisNCisJCWlmICghb2Zmc2V0KSB7DQorCQkJaWR4ICs9IHNrdS0+bGVuOw0K KwkJCWNvbnRpbnVlOw0KKwkJfQ0KKw0KKwkJbXQ3Nl9zZXFfcHV0c19hcnJheShzLCBza3VfZ3Jv dXBfbmFtZVtpXSwNCisJCQkJICAgIHR4cG93ZXIgKyBpZHgsIHNrdS0+bGVuKTsNCisJCWlkeCAr PSBza3UtPmxlbjsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3OTE1X3JlYWRfcmF0ZV90 eHBvd2VyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCit7DQorCXN0cnVjdCBtdDc5 MTVfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy0+cHJpdmF0ZSk7DQorCXN0cnVjdCBtdDc2 X3BoeSAqbXBoeSA9ICZkZXYtPm1waHk7DQorCWVudW0gbmw4MDIxMV9iYW5kIGJhbmQgPSBtcGh5 LT5jaGFuZGVmLmNoYW4tPmJhbmQ7DQorCXM4ICpkZWx0YSA9IGRldi0+cmF0ZV9wb3dlcltiYW5k XTsNCisJczggdHhwb3dlcl9iYXNlID0gbXBoeS0+dHhwb3dlcl9jdXIgLSBkZWx0YVtNVDc5MTVf U0tVX01BWF9ERUxUQV9JRFhdOw0KKw0KKwlzZXFfcHV0cyhzLCAiQmFuZCAwOlxuIik7DQorCW10 NzkxNV9wdXRzX3JhdGVfdHhwb3dlcihzLCBkZWx0YSwgdHhwb3dlcl9iYXNlLCBiYW5kKTsNCisN CisJaWYgKGRldi0+bXQ3Ni5waHkyKSB7DQorCQltcGh5ID0gZGV2LT5tdDc2LnBoeTI7DQorCQli YW5kID0gbXBoeS0+Y2hhbmRlZi5jaGFuLT5iYW5kOw0KKwkJZGVsdGEgPSBkZXYtPnJhdGVfcG93 ZXJbYmFuZF07DQorCQl0eHBvd2VyX2Jhc2UgPSBtcGh5LT50eHBvd2VyX2N1ciAtDQorCQkJICAg ICAgIGRlbHRhW01UNzkxNV9TS1VfTUFYX0RFTFRBX0lEWF07DQorDQorCQlzZXFfcHV0cyhzLCAi QmFuZCAxOlxuIik7DQorCQltdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIocywgZGVsdGEsIHR4cG93 ZXJfYmFzZSwgYmFuZCk7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIGludCBtdDc5MTVf aW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpDQogew0KIAlzdHJ1Y3QgZGVudHJ5 ICpkaXI7DQpAQCAtMjQwLDYgKzI5Nyw4IEBAIGludCBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYpDQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoInNlcl90cmlnZ2VyIiwg MDIwMCwgZGlyLCBkZXYsICZmb3BzX3Nlcl90cmlnZ2VyKTsNCiAJZGVidWdmc19jcmVhdGVfZGV2 bV9zZXFmaWxlKGRldi0+bXQ3Ni5kZXYsICJ0ZW1wZXJhdHVyZSIsIGRpciwNCiAJCQkJICAgIG10 NzkxNV9yZWFkX3RlbXBlcmF0dXJlKTsNCisJZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRl di0+bXQ3Ni5kZXYsICJ0eHBvd2VyX3NrdSIsIGRpciwNCisJCQkJICAgIG10NzkxNV9yZWFkX3Jh dGVfdHhwb3dlcik7DQogDQogCXJldHVybiAwOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jDQppbmRleCAyMDk5ZGQ0MDUzMGYu LjdkZWJhN2ViZDY4YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L2VlcHJvbS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzkxNS9lZXByb20uYw0KQEAgLTEyMywzICsxMjMsMTIxIEBAIGludCBtdDc5MTVf ZWVwcm9tX2dldF90YXJnZXRfcG93ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldiwNCiANCiAJcmV0 dXJuIG10NzkxNV9lZXByb21fcmVhZChkZXYsIGluZGV4KTsNCiB9DQorDQorc3RhdGljIGNvbnN0 IHU4IHNrdV9jY2tfZGVsdGFfbWFwW10gPSB7DQorCVNLVV9DQ0tfR1JPVVAwLA0KKwlTS1VfQ0NL X0dST1VQMCwNCisJU0tVX0NDS19HUk9VUDEsDQorCVNLVV9DQ0tfR1JPVVAxLA0KK307DQorDQor c3RhdGljIGNvbnN0IHU4IHNrdV9vZmRtX2RlbHRhX21hcFtdID0gew0KKwlTS1VfT0ZETV9HUk9V UDAsDQorCVNLVV9PRkRNX0dST1VQMCwNCisJU0tVX09GRE1fR1JPVVAxLA0KKwlTS1VfT0ZETV9H Uk9VUDEsDQorCVNLVV9PRkRNX0dST1VQMiwNCisJU0tVX09GRE1fR1JPVVAyLA0KKwlTS1VfT0ZE TV9HUk9VUDMsDQorCVNLVV9PRkRNX0dST1VQNCwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1OCBz a3VfbWNzX2RlbHRhX21hcFtdID0gew0KKwlTS1VfTUNTX0dST1VQMCwNCisJU0tVX01DU19HUk9V UDEsDQorCVNLVV9NQ1NfR1JPVVAxLA0KKwlTS1VfTUNTX0dST1VQMiwNCisJU0tVX01DU19HUk9V UDIsDQorCVNLVV9NQ1NfR1JPVVAzLA0KKwlTS1VfTUNTX0dST1VQNCwNCisJU0tVX01DU19HUk9V UDUsDQorCVNLVV9NQ1NfR1JPVVA2LA0KKwlTS1VfTUNTX0dST1VQNywNCisJU0tVX01DU19HUk9V UDgsDQorCVNLVV9NQ1NfR1JPVVA5LA0KK307DQorDQorI2RlZmluZSBTS1VfR1JPVVAoX21vZGUs IF9sZW4sIF9vZnNfMmcsIF9vZnNfNWcsIF9tYXApCVwNCisJW19tb2RlXSA9IHsJCQkJCVwNCisJ LmxlbiA9IF9sZW4sCQkJCQlcDQorCS5vZmZzZXQgPSB7CQkJCQlcDQorCQlfb2ZzXzJnLAkJCQlc DQorCQlfb2ZzXzVnLAkJCQlcDQorCX0sCQkJCQkJXA0KKwkuZGVsdGFfbWFwID0gX21hcAkJCQlc DQorfQ0KKw0KK2NvbnN0IHN0cnVjdCBza3VfZ3JvdXAgbXQ3OTE1X3NrdV9ncm91cHNbXSA9IHsN CisJU0tVX0dST1VQKFNLVV9DQ0ssIDQsIDB4MjUyLCAwLCBza3VfY2NrX2RlbHRhX21hcCksDQor CVNLVV9HUk9VUChTS1VfT0ZETSwgOCwgMHgyNTQsIDB4MjlkLCBza3Vfb2ZkbV9kZWx0YV9tYXAp LA0KKw0KKwlTS1VfR1JPVVAoU0tVX0hUX0JXMjAsIDgsIDB4MjU5LCAweDJhMiwgc2t1X21jc19k ZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAoU0tVX0hUX0JXNDAsIDksIDB4MjYyLCAweDJhYiwgc2t1 X21jc19kZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAoU0tVX1ZIVF9CVzIwLCAxMiwgMHgyNTksIDB4 MmEyLCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfVkhUX0JXNDAsIDEyLCAw eDI2MiwgMHgyYWIsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCisJU0tVX0dST1VQKFNLVV9WSFRfQlc4 MCwgMTIsIDAsIDB4MmI0LCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfVkhU X0JXMTYwLCAxMiwgMCwgMCwgc2t1X21jc19kZWx0YV9tYXApLA0KKw0KKwlTS1VfR1JPVVAoU0tV X0hFX1JVMjYsIDEyLCAweDI3ZiwgMHgyZGQsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCisJU0tVX0dS T1VQKFNLVV9IRV9SVTUyLCAxMiwgMHgyODksIDB4MmU3LCBza3VfbWNzX2RlbHRhX21hcCksDQor CVNLVV9HUk9VUChTS1VfSEVfUlUxMDYsIDEyLCAweDI5MywgMHgyZjEsIHNrdV9tY3NfZGVsdGFf bWFwKSwNCisJU0tVX0dST1VQKFNLVV9IRV9SVTI0MiwgMTIsIDB4MjZiLCAweDJiZiwgc2t1X21j c19kZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAoU0tVX0hFX1JVNDg0LCAxMiwgMHgyNzUsIDB4MmM5 LCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfSEVfUlU5OTYsIDEyLCAwLCAw eDJkMywgc2t1X21jc19kZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAoU0tVX0hFX1JVMng5OTYsIDEy LCAwLCAwLCBza3VfbWNzX2RlbHRhX21hcCksDQorfTsNCisNCitzdGF0aWMgczgNCittdDc5MTVf Z2V0X3NrdV9kZWx0YShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgYWRkcikNCit7DQorCXUz MiB2YWwgPSBtdDc5MTVfZWVwcm9tX3JlYWQoZGV2LCBhZGRyKTsNCisJczggZGVsdGEgPSBGSUVM RF9HRVQoU0tVX0RFTFRBX1ZBTCwgdmFsKTsNCisNCisJaWYgKCEodmFsICYgU0tVX0RFTFRBX0VO KSkNCisJCXJldHVybiAwOw0KKw0KKwlyZXR1cm4gdmFsICYgU0tVX0RFTFRBX0FERCA/IGRlbHRh IDogLWRlbHRhOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK210NzkxNV9lZXByb21faW5pdF9za3Vf YmFuZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LA0KKwkJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX3N1 cHBvcnRlZF9iYW5kICpzYmFuZCkNCit7DQorCWludCBpLCBiYW5kID0gc2JhbmQtPmJhbmQ7DQor CXM4ICpyYXRlX3Bvd2VyID0gZGV2LT5yYXRlX3Bvd2VyW2JhbmRdLCBtYXhfZGVsdGEgPSAwOw0K Kwl1OCBpZHggPSAwOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtdDc5MTVfc2t1 X2dyb3Vwcyk7IGkrKykgew0KKwkJY29uc3Qgc3RydWN0IHNrdV9ncm91cCAqc2t1ID0gJm10Nzkx NV9za3VfZ3JvdXBzW2ldOw0KKwkJdTMyIG9mZnNldCA9IHNrdS0+b2Zmc2V0W2JhbmRdOw0KKwkJ aW50IGo7DQorDQorCQlpZiAoIW9mZnNldCkgew0KKwkJCWlkeCArPSBza3UtPmxlbjsNCisJCQlj b250aW51ZTsNCisJCX0NCisNCisJCXJhdGVfcG93ZXJbaWR4KytdID0gbXQ3OTE1X2dldF9za3Vf ZGVsdGEoZGV2LCBvZmZzZXQpOw0KKwkJaWYgKHJhdGVfcG93ZXJbaWR4IC0gMV0gPiBtYXhfZGVs dGEpDQorCQkJbWF4X2RlbHRhID0gcmF0ZV9wb3dlcltpZHggLSAxXTsNCisNCisJCWlmIChpID09 IFNLVV9IVF9CVzIwIHx8IGkgPT0gU0tVX1ZIVF9CVzIwKQ0KKwkJCW9mZnNldCArPSAxOw0KKw0K KwkJZm9yIChqID0gMTsgaiA8IHNrdS0+bGVuOyBqKyspIHsNCisJCQl1MzIgYWRkciA9IG9mZnNl dCArIHNrdS0+ZGVsdGFfbWFwW2pdOw0KKw0KKwkJCXJhdGVfcG93ZXJbaWR4KytdID0gbXQ3OTE1 X2dldF9za3VfZGVsdGEoZGV2LCBhZGRyKTsNCisJCQlpZiAocmF0ZV9wb3dlcltpZHggLSAxXSA+ IG1heF9kZWx0YSkNCisJCQkJbWF4X2RlbHRhID0gcmF0ZV9wb3dlcltpZHggLSAxXTsNCisJCX0N CisJfQ0KKw0KKwlyYXRlX3Bvd2VyW2lkeF0gPSBtYXhfZGVsdGE7DQorfQ0KKw0KK3ZvaWQgbXQ3 OTE1X2VlcHJvbV9pbml0X3NrdShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KK3sNCisJbXQ3OTE1 X2VlcHJvbV9pbml0X3NrdV9iYW5kKGRldiwgJmRldi0+bXBoeS5zYmFuZF8yZy5zYmFuZCk7DQor CW10NzkxNV9lZXByb21faW5pdF9za3VfYmFuZChkZXYsICZkZXYtPm1waHkuc2JhbmRfNWcuc2Jh bmQpOw0KK30NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210NzkxNS9lZXByb20uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 OTE1L2VlcHJvbS5oDQppbmRleCAzMGZjNjA3ZTQ2NmQuLjRlMzFkNmFiNGZhNiAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5oDQor KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uaA0K QEAgLTM3LDYgKzM3LDUxIEBAIGVudW0gbXQ3OTE1X2VlcHJvbV9iYW5kIHsNCiAJTVRfRUVfREJE QywNCiB9Ow0KIA0KKyNkZWZpbmUgU0tVX0RFTFRBX1ZBTAkJR0VOTUFTSyg1LCAwKQ0KKyNkZWZp bmUgU0tVX0RFTFRBX0FERAkJQklUKDYpDQorI2RlZmluZSBTS1VfREVMVEFfRU4JCUJJVCg3KQ0K Kw0KK2VudW0gbXQ3OTE1X3NrdV9kZWx0YV9ncm91cCB7DQorCVNLVV9DQ0tfR1JPVVAwLA0KKwlT S1VfQ0NLX0dST1VQMSwNCisNCisJU0tVX09GRE1fR1JPVVAwID0gMCwNCisJU0tVX09GRE1fR1JP VVAxLA0KKwlTS1VfT0ZETV9HUk9VUDIsDQorCVNLVV9PRkRNX0dST1VQMywNCisJU0tVX09GRE1f R1JPVVA0LA0KKw0KKwlTS1VfTUNTX0dST1VQMCA9IDAsDQorCVNLVV9NQ1NfR1JPVVAxLA0KKwlT S1VfTUNTX0dST1VQMiwNCisJU0tVX01DU19HUk9VUDMsDQorCVNLVV9NQ1NfR1JPVVA0LA0KKwlT S1VfTUNTX0dST1VQNSwNCisJU0tVX01DU19HUk9VUDYsDQorCVNLVV9NQ1NfR1JPVVA3LA0KKwlT S1VfTUNTX0dST1VQOCwNCisJU0tVX01DU19HUk9VUDksDQorfTsNCisNCitlbnVtIG10NzkxNV9z a3VfcmF0ZV9ncm91cCB7DQorCVNLVV9DQ0ssDQorCVNLVV9PRkRNLA0KKwlTS1VfSFRfQlcyMCwN CisJU0tVX0hUX0JXNDAsDQorCVNLVV9WSFRfQlcyMCwNCisJU0tVX1ZIVF9CVzQwLA0KKwlTS1Vf VkhUX0JXODAsDQorCVNLVV9WSFRfQlcxNjAsDQorCVNLVV9IRV9SVTI2LA0KKwlTS1VfSEVfUlU1 MiwNCisJU0tVX0hFX1JVMTA2LA0KKwlTS1VfSEVfUlUyNDIsDQorCVNLVV9IRV9SVTQ4NCwNCisJ U0tVX0hFX1JVOTk2LA0KKwlTS1VfSEVfUlUyeDk5NiwNCisJTUFYX1NLVV9SQVRFX0dST1VQX05V TSwNCit9Ow0KKw0KIHN0cnVjdCBza3VfZ3JvdXAgew0KIAl1OCBsZW47DQogCXUxNiBvZmZzZXRb Ml07DQpAQCAtNzUsNCArMTIwLDYgQEAgbXQ3OTE1X3Rzc2lfZW5hYmxlZChzdHJ1Y3QgbXQ3OTE1 X2RldiAqZGV2LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKQ0KIAkJcmV0dXJuIGVlcFtNVF9FRV9X SUZJX0NPTkYgKyA3XSAmIE1UX0VFX1dJRklfQ09ORl9UU1NJMF8yRzsNCiB9DQogDQorZXh0ZXJu IGNvbnN0IHN0cnVjdCBza3VfZ3JvdXAgbXQ3OTE1X3NrdV9ncm91cHNbXTsNCisNCiAjZW5kaWYN CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9p bml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMN CmluZGV4IGY5Mzg0ZTFkYWI3NC4uYWJjZTM3Y2E5MjUyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jDQorKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMNCkBAIC04NSw2ICs4NSw4IEBA IHN0YXRpYyB2b2lkIG10NzkxNV9pbml0X3R4cG93ZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldikN CiB7DQogCW10NzkxNV9pbml0X3R4cG93ZXJfYmFuZChkZXYsICZkZXYtPm1waHkuc2JhbmRfMmcu c2JhbmQpOw0KIAltdDc5MTVfaW5pdF90eHBvd2VyX2JhbmQoZGV2LCAmZGV2LT5tcGh5LnNiYW5k XzVnLnNiYW5kKTsNCisNCisJbXQ3OTE1X2VlcHJvbV9pbml0X3NrdShkZXYpOw0KIH0NCiANCiBz dGF0aWMgdm9pZCBtdDc5MTVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWlu LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMNCmlu ZGV4IGFlNWVkNDFkMzM3Yi4uMjMxYmFlNDE4NGNhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jDQorKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMNCkBAIC00Miw2ICs0Miw3IEBAIHN0 YXRpYyBpbnQgbXQ3OTE1X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0KIAkJbXQ3OTE1 X21jdV9zZXRfc2NzKGRldiwgMSwgdHJ1ZSk7DQogCX0NCiANCisJbXQ3OTE1X21jdV9zZXRfc2t1 X2VuKHBoeSwgdHJ1ZSk7DQogCW10NzkxNV9tY3Vfc2V0X2NoYW5faW5mbyhwaHksIE1DVV9FWFRf Q01EX1NFVF9SWF9QQVRIKTsNCiANCiAJc2V0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsICZwaHkt Pm10NzYtPnN0YXRlKTsNCkBAIC0zMjUsNiArMzI2LDEyIEBAIHN0YXRpYyBpbnQgbXQ3OTE1X2Nv bmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTMyIGNoYW5nZWQpDQogCQlpZWVlODAyMTFf d2FrZV9xdWV1ZXMoaHcpOw0KIAl9DQogDQorCWlmIChjaGFuZ2VkICYgSUVFRTgwMjExX0NPTkZf Q0hBTkdFX1BPV0VSKSB7DQorCQlyZXQgPSBtdDc5MTVfbWN1X3NldF9za3UocGh5KTsNCisJCWlm IChyZXQpDQorCQkJcmV0dXJuIHJldDsNCisJfQ0KKw0KIAltdXRleF9sb2NrKCZkZXYtPm10NzYu bXV0ZXgpOw0KIA0KIAlpZiAoY2hhbmdlZCAmIElFRUU4MDIxMV9DT05GX0NIQU5HRV9NT05JVE9S KSB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MTUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3Uu Yw0KaW5kZXggZGFkMmMzMDBkMGYyLi5iMjc1ZDE4ZTVkOWIgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYw0KKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMNCkBAIC0yMjk1LDYgKzIyOTUs NTQgQEAgaW50IG10NzkxNV9tY3VfZ2V0X3JhdGVfaW5mbyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2 LCB1MzIgY21kLCB1MTYgd2xhbl9pZHgpDQogCQkJCSAgIHNpemVvZihyZXEpLCBmYWxzZSk7DQog fQ0KIA0KK2ludCBtdDc5MTVfbWN1X3NldF9za3Uoc3RydWN0IG10NzkxNV9waHkgKnBoeSkNCit7 DQorCXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBwaHktPmRldjsNCisJc3RydWN0IG10NzZfcGh5 ICptcGh5ID0gcGh5LT5tdDc2Ow0KKwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG1waHktPmh3 Ow0KKwlzdHJ1Y3QgbXQ3OTE1X3NrdV92YWwgew0KKwkJdTggZm9ybWF0X2lkOw0KKwkJdTggbGlt aXRfdHlwZTsNCisJCXU4IGRiZGNfaWR4Ow0KKwkJczggdmFsW01UNzkxNV9TS1VfUkFURV9OVU1d Ow0KKwl9IF9fcGFja2VkIHJlcSA9IHsNCisJCS5mb3JtYXRfaWQgPSA0LA0KKwkJLmRiZGNfaWR4 ID0gcGh5ICE9ICZkZXYtPnBoeSwNCisJfTsNCisJaW50IGk7DQorCXM4ICpkZWx0YTsNCisNCisJ ZGVsdGEgPSBkZXYtPnJhdGVfcG93ZXJbbXBoeS0+Y2hhbmRlZi5jaGFuLT5iYW5kXTsNCisJbXBo eS0+dHhwb3dlcl9jdXIgPSBody0+Y29uZi5wb3dlcl9sZXZlbCAqIDIgKw0KKwkJCSAgICBkZWx0 YVtNVDc5MTVfU0tVX01BWF9ERUxUQV9JRFhdOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTVQ3OTE1 X1NLVV9SQVRFX05VTTsgaSsrKQ0KKwkJcmVxLnZhbFtpXSA9IGh3LT5jb25mLnBvd2VyX2xldmVs ICogMiArIGRlbHRhW2ldOw0KKw0KKwlyZXR1cm4gX19tdDc2X21jdV9zZW5kX21zZygmZGV2LT5t dDc2LA0KKwkJCQkgICBNQ1VfRVhUX0NNRF9UWF9QT1dFUl9GRUFUVVJFX0NUUkwsDQorCQkJCSAg ICZyZXEsIHNpemVvZihyZXEpLCB0cnVlKTsNCit9DQorDQoraW50IG10NzkxNV9tY3Vfc2V0X3Nr dV9lbihzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBib29sIGVuYWJsZSkNCit7DQorCXN0cnVjdCBt dDc5MTVfZGV2ICpkZXYgPSBwaHktPmRldjsNCisJc3RydWN0IG10NzkxNV9za3Ugew0KKwkJdTgg Zm9ybWF0X2lkOw0KKwkJdTggc2t1X2VuYWJsZTsNCisJCXU4IGRiZGNfaWR4Ow0KKwkJdTggcnN2 Ow0KKwl9IF9fcGFja2VkIHJlcSA9IHsNCisJCS5mb3JtYXRfaWQgPSAwLA0KKwkJLmRiZGNfaWR4 ID0gcGh5ICE9ICZkZXYtPnBoeSwNCisJCS5za3VfZW5hYmxlID0gZW5hYmxlLA0KKwl9Ow0KKw0K KwlyZXR1cm4gX19tdDc2X21jdV9zZW5kX21zZygmZGV2LT5tdDc2LA0KKwkJCQkgICBNQ1VfRVhU X0NNRF9UWF9QT1dFUl9GRUFUVVJFX0NUUkwsDQorCQkJCSAgICZyZXEsIHNpemVvZihyZXEpLCB0 cnVlKTsNCit9DQorDQogaW50IG10NzkxNV9tY3Vfc2V0X3NlcihzdHJ1Y3QgbXQ3OTE1X2RldiAq ZGV2LCB1OCBhY3Rpb24sIHU4IHNldCwgdTggYmFuZCkNCiB7DQogCXN0cnVjdCB7DQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggYi9k cml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuaA0KaW5kZXggNWU0 NzA4ODYxZWRlLi5kOWM5YWFiN2U2ZGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv bWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmgNCkBAIC0yMDMsNiArMjAzLDcgQEAgZW51bSB7DQog CU1DVV9FWFRfQ01EX01BQ19JTklUX0NUUkwgPSAweDQ2LA0KIAlNQ1VfRVhUX0NNRF9SWF9IRFJf VFJBTlMgPSAweDQ3LA0KIAlNQ1VfRVhUX0NNRF9TRVRfUlhfUEFUSCA9IDB4NGUsDQorCU1DVV9F WFRfQ01EX1RYX1BPV0VSX0ZFQVRVUkVfQ1RSTCA9IDB4NTgsDQogCU1DVV9FWFRfQ01EX1NFVF9T RVJfVFJJR0dFUiA9IDB4ODEsDQogCU1DVV9FWFRfQ01EX1NDU19DVFJMID0gMHg4MiwNCiAJTUNV X0VYVF9DTURfUkFURV9DVFJMID0gMHg4NywNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oDQppbmRleCBiMjNhYjNmMjE1ZTAuLjZkM2Zk ZTdmNjM1YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv bXQ3OTE1L210NzkxNS5oDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210NzkxNS9tdDc5MTUuaA0KQEAgLTM4LDYgKzM4LDkgQEANCiAjZGVmaW5lIE1UNzkxNV81R19S QVRFX0RFRkFVTFQJCTB4NGIJLyogT0ZETSA2TSAqLw0KICNkZWZpbmUgTVQ3OTE1XzJHX1JBVEVf REVGQVVMVAkJMHgwCS8qIENDSyAxTSAqLw0KIA0KKyNkZWZpbmUgTVQ3OTE1X1NLVV9SQVRFX05V TQkJMTYxDQorI2RlZmluZSBNVDc5MTVfU0tVX01BWF9ERUxUQV9JRFgJTVQ3OTE1X1NLVV9SQVRF X05VTQ0KKyNkZWZpbmUgTVQ3OTE1X1NLVV9UQUJMRV9TSVpFCQkoTVQ3OTE1X1NLVV9SQVRFX05V TSArIDEpDQogDQogc3RydWN0IG10NzkxNV92aWY7DQogc3RydWN0IG10NzkxNV9zdGE7DQpAQCAt MTYxLDYgKzE2NCw4IEBAIHN0cnVjdCBtdDc5MTVfZGV2IHsNCiAJc3BpbmxvY2tfdCB0b2tlbl9s b2NrOw0KIAlzdHJ1Y3QgaWRyIHRva2VuOw0KIA0KKwlzOCAqKnJhdGVfcG93ZXI7IC8qIFRPRE86 IHVzZSBtdDc2X3JhdGVfcG93ZXIgKi8NCisNCiAJdTggbWFjX3dvcmtfY291bnQ7DQogCWJvb2wg ZndfZGVidWc7DQogfTsNCkBAIC0yNjgsNiArMjczLDcgQEAgdTMyIG10NzkxNV9lZXByb21fcmVh ZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0KTsNCiBpbnQgbXQ3OTE1X2VlcHJv bV9nZXRfdGFyZ2V0X3Bvd2VyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQogCQkJCSAgIHN0cnVj dCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwNCiAJCQkJICAgdTggY2hhaW5faWR4KTsNCit2b2lk IG10NzkxNV9lZXByb21faW5pdF9za3Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogaW50IG10 NzkxNV9kbWFfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTsNCiB2b2lkIG10NzkxNV9kbWFf cHJlZmV0Y2goc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogdm9pZCBtdDc5MTVfZG1hX2NsZWFu dXAoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQpAQCAtMzAzLDYgKzMwOSw4IEBAIGludCBtdDc5 MTVfbWN1X3NldF9zY3Moc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZCwgYm9vbCBlbmFi bGUpOw0KIGludCBtdDc5MTVfbWN1X3NldF9zZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTgg YWN0aW9uLCB1OCBzZXQsIHU4IGJhbmQpOw0KIGludCBtdDc5MTVfbWN1X3NldF9ydHNfdGhyZXNo KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHUzMiB2YWwpOw0KIGludCBtdDc5MTVfbWN1X3NldF9w bShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBpbnQgYmFuZCwgaW50IGVudGVyKTsNCitpbnQgbXQ3 OTE1X21jdV9zZXRfc2t1X2VuKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGJvb2wgZW5hYmxlKTsN CitpbnQgbXQ3OTE1X21jdV9zZXRfc2t1KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpOw0KIGludCBt dDc5MTVfbWN1X3NldF9mY2M1X2xwbihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBpbnQgdmFsKTsN CiBpbnQgbXQ3OTE1X21jdV9zZXRfcHVsc2VfdGgoc3RydWN0IG10NzkxNV9kZXYgKmRldiwNCiAJ CQkgICAgY29uc3Qgc3RydWN0IG10NzkxNV9kZnNfcHVsc2UgKnB1bHNlKTsNCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jDQppbmRleCBiNzliNTA2 MGNkNzcuLjc5MzdjNjk2NWY1OSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21l ZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzkxNS9wY2kuYw0KQEAgLTc1LDYgKzc1LDI4IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBtdDc5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQ0KIAly ZXR1cm4gSVJRX0hBTkRMRUQ7DQogfQ0KIA0KK3N0YXRpYyBpbnQNCittdDc5MTVfYWxsb2NfZGV2 aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KK3sNCisj ZGVmaW5lIE5VTV9CQU5EUwkyDQorCWludCBpOw0KKwlzOCAqKnNrdTsNCisNCisJc2t1ID0gZGV2 bV9remFsbG9jKCZwZGV2LT5kZXYsIE5VTV9CQU5EUyAqIHNpemVvZigqc2t1KSwgR0ZQX0tFUk5F TCk7DQorCWlmICghc2t1KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWZvciAoaSA9IDA7IGkg PCBOVU1fQkFORFM7IGkrKykgew0KKwkJc2t1W2ldID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYs IE1UNzkxNV9TS1VfVEFCTEVfU0laRSAqDQorCQkJCSAgICAgIHNpemVvZigqKnNrdSksIEdGUF9L RVJORUwpOw0KKwkJaWYgKCFza3VbaV0pDQorCQkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisJZGV2 LT5yYXRlX3Bvd2VyID0gc2t1Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludCBt dDc5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LA0KIAkJCSAgICBjb25zdCBzdHJ1 Y3QgcGNpX2RldmljZV9pZCAqaWQpDQogew0KQEAgLTExOCw2ICsxNDAsOSBAQCBzdGF0aWMgaW50 IG10NzkxNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsDQogCQlyZXR1cm4gLUVOT01F TTsNCiANCiAJZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MTVfZGV2LCBtdDc2 KTsNCisJcmV0ID0gbXQ3OTE1X2FsbG9jX2RldmljZShwZGV2LCBkZXYpOw0KKwlpZiAocmV0KQ0K KwkJcmV0dXJuIHJldDsNCiANCiAJbXQ3Nl9tbWlvX2luaXQoJmRldi0+bXQ3NiwgcGNpbV9pb21h cF90YWJsZShwZGV2KVswXSk7DQogCW1kZXYtPnJldiA9IChtdDc5MTVfbDFfcnIoZGV2LCBNVF9I V19DSElQSUQpIDw8IDE2KSB8DQotLSANCjIuMTguMA0K