Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp5403708pxu; Thu, 22 Oct 2020 01:02:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxScT0glRpzPkGJ0AfmJG6kZUNOOeiV4VaPTBVsCyEWNlRxb0V9XDqjxcszn2+/DrIXCDbh X-Received: by 2002:a05:6402:1a52:: with SMTP id bf18mr698793edb.125.1603353740961; Thu, 22 Oct 2020 01:02:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603353740; cv=none; d=google.com; s=arc-20160816; b=JUHUZosPevyLuu+qhqROekhrjbEl3RKxT0QJCtZTX2gruSgqw1Q0/xOKyTY3gcqyu/ 3faIa3dKgDAhct50W4ZTvR2lMsNlBkEqn4SXI00bfRfQwinSy7+8lhq9bueuSZ4//1p7 PsNpXWZKCbkcP4S8E411+xNrLf3T0a7yClYPw9tnPG1vswKf4lcAXMv6ubwsEe1XmDdi H7EbN+qm+rR7z3cygXt5+E0Qrxps1/wjdxOW7ZL8mb/nxamWIT40a4A5iFvhxg1IvC1X L6mnJuL47Q1wT0HCR8Rbj7TAGJi+Z9BwqzxMB8SpS7YJQs6Dl+uOoAPKEuT9Ui4XraQb c7yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=j/S04V+g3A/dOqDxSmYtUDSx8NiQKadchpxgTSAsXGI=; b=qv59GPJyjRIdRxTnlip9sOT3Ske6XuU1MIxFayCJ9R3S9YFus4vzQJ0EZ1R9QBSIu5 2BKpBdmB+mdg3yxx34LPUaulT2U66xJ4JGmR/9PcS/9QkGrGdCzD7j4Y116DIEiwPILt fmD0VunG+dzJtR4dxYyZokY2bs7n9rctcj5hIHZFSM9URs9iKB7BW5rYmDBUXrlZBvwp URObIv6mk6FWDWs5OUMOUiQmEF1L4n5K+cBJSMXVI5Vypnlx5pT3ALrF2woys854z0e6 ks0Cr7JozhJCuOSO43i9m5bqVFVzXWiwMcIglcXzQ1DKG1VTNV3szHycEHsYHbiS3mSx MvGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=pGPap2w+; 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 z9si474739edr.522.2020.10.22.01.01.55; Thu, 22 Oct 2020 01:02:20 -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=pGPap2w+; 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 S2895060AbgJVC2y (ORCPT + 99 others); Wed, 21 Oct 2020 22:28:54 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:42999 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2895034AbgJVC2x (ORCPT ); Wed, 21 Oct 2020 22:28:53 -0400 X-UUID: c1b12938c2f74b9fb88ab96135a80d6f-20201022 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=j/S04V+g3A/dOqDxSmYtUDSx8NiQKadchpxgTSAsXGI=; b=pGPap2w+HcEX+W8EKunJD0WlFqkbFJHiWqLRRyQbNbNNxBDoBR7PRnUjIVYo/08Os9TDoq+y0vUAAgOoQ+W8IaP8epEH68kyB6FvEBnehREWdtOW36OWHbPzpyOln71Jq1TpiaYLmsxoWc8SqZWJzRfEoqc2AHtXx1l4FoPvcTc=; X-UUID: c1b12938c2f74b9fb88ab96135a80d6f-20201022 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1959995235; Thu, 22 Oct 2020 10:28:40 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs08n1.mediatek.inc (172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 22 Oct 2020 10:28:39 +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.1497.2 via Frontend Transport; Thu, 22 Oct 2020 10:28:39 +0800 From: Shayne Chen To: Felix Fietkau CC: linux-wireless , Lorenzo Bianconi , Ryder Lee , Evelyn Tsai , linux-mediatek , Shayne Chen Subject: [PATCH v4 07/10] mt76: mt7915: implement testmode tx support Date: Thu, 22 Oct 2020 10:28:17 +0800 Message-ID: <20201022022820.3077-7-shayne.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20201022022820.3077-1-shayne.chen@mediatek.com> References: <20201022022820.3077-1-shayne.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org U3VwcG9ydCB0ZXN0bW9kZSB0eCBmb3IgTVQ3OTE1QSwgaW5jbHVkaW5nIHR4IHN0cmVhbXMgYW5k IEhFIHJhdGUNCnNldHRpbmdzLg0KDQpSZXZpZXdlZC1ieTogUnlkZXIgTGVlIDxyeWRlci5sZWVA bWVkaWF0ZWsuY29tPg0KU2lnbmVkLW9mZi1ieTogU2hheW5lIENoZW4gPHNoYXluZS5jaGVuQG1l ZGlhdGVrLmNvbT4NCi0tLQ0KdjM6IGFkZCBfX3BhY2tlZCBmb3IgcmVxIHN0cnVjdCBpbiBtdDc5 MTVfdG1fbW9kZV9jdHJsDQogICAgbW92ZSB0aGUgbG9jYXRpb24gb2Ygc2V0dGluZyBXQU5UX01P TklUT1JfVklGIGZsYWcNCnY0OiBmaXggc3RiYyBzZXR0aW5nIGluIHR4X3JhdGVfdmFsDQogICAg Zml4IGJhbmQgcmVncyBpbiByZWdfYmFja3VwX3Jlc3RvcmUNCiAgICBjaGFuZ2UgdHhfY291bnQg dG8gMSBpbiBUWEQgd2hlbiBkb2luZyB0ZXN0bW9kZSB0eA0KDQogLi4uL3dpcmVsZXNzL21lZGlh dGVrL210NzYvbXQ3OTE1L01ha2VmaWxlICAgIHwgICAyICsNCiAuLi4vbmV0L3dpcmVsZXNzL21l ZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyAgfCAgIDggKy0NCiAuLi4vbmV0L3dpcmVsZXNzL21l ZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jICAgfCAxMjkgKysrKysrKysrKysrKw0KIC4uLi9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jICB8ICA0MCArKystDQogLi4uL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyAgIHwgIDMxICsrKw0KIC4uLi9u ZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggICB8ICAgNSArDQogLi4uL3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oICAgIHwgIDE0ICsrDQogLi4uL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmggIHwgIDMxICsrKw0KIC4uLi93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS90ZXN0bW9kZS5jICB8IDE4MCArKysrKysrKysr KysrKysrKysNCiAuLi4vd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvdGVzdG1vZGUuaCAg fCAgMzQgKysrKw0KIDEwIGZpbGVzIGNoYW5nZWQsIDQ2NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzkxNS90ZXN0bW9kZS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0 L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3Rlc3Rtb2RlLmgNCg0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L01ha2VmaWxlIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUNCmluZGV4IDU3 ZmU3MjYuLmNjMjA1NGQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzkxNS9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvTWFrZWZpbGUNCkBAIC00LDMgKzQsNSBAQCBvYmotJChDT05GSUdfTVQ3 OTE1RSkgKz0gbXQ3OTE1ZS5vDQogDQogbXQ3OTE1ZS15IDo9IHBjaS5vIGluaXQubyBkbWEubyBl ZXByb20ubyBtYWluLm8gbWN1Lm8gbWFjLm8gXA0KIAkgICAgIGRlYnVnZnMubw0KKw0KK210Nzkx NWUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUubw0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYw0KaW5kZXggZWU2OWZl NC4uODkwYzJiYiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L2luaXQuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc5MTUvaW5pdC5jDQpAQCAtMjcwLDYgKzI3MCw3IEBAIG10NzkxNV9pbml0X3dpcGh5KHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0KIA0KIAlpZWVlODAyMTFfaHdfc2V0KGh3LCBIQVNfUkFU RV9DT05UUk9MKTsNCiAJaWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfVFhfRU5DQVBfT0ZG TE9BRCk7DQorCWllZWU4MDIxMV9od19zZXQoaHcsIFdBTlRfTU9OSVRPUl9WSUYpOw0KIA0KIAlo dy0+bWF4X3R4X2ZyYWdtZW50cyA9IDQ7DQogfQ0KQEAgLTYzNyw5ICs2MzgsNiBAQCBpbnQgbXQ3 OTE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzkxNV9kZXYgKmRldikNCiAJbXBoeS0+aHct PndpcGh5LT5wZXJtX2FkZHJbMF0gfD0gMjsNCiAJbXBoeS0+aHctPndpcGh5LT5wZXJtX2FkZHJb MF0gXj0gQklUKDcpOw0KIA0KLQkvKiBUaGUgc2Vjb25kIGludGVyZmFjZSBkb2VzIG5vdCBnZXQg YW55IHBhY2tldHMgdW5sZXNzIGl0IGhhcyBhIHZpZiAqLw0KLQlpZWVlODAyMTFfaHdfc2V0KG1w aHktPmh3LCBXQU5UX01PTklUT1JfVklGKTsNCi0NCiAJcmV0ID0gbXQ3Nl9yZWdpc3Rlcl9waHko bXBoeSk7DQogCWlmIChyZXQpDQogCQlpZWVlODAyMTFfZnJlZV9odyhtcGh5LT5odyk7DQpAQCAt Njk1LDYgKzY5MywxMCBAQCBpbnQgbXQ3OTE1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTE1 X2RldiAqZGV2KQ0KIAltdDc5MTVfY2FwX2RiZGNfZGlzYWJsZShkZXYpOw0KIAlkZXYtPnBoeS5k ZnNfc3RhdGUgPSAtMTsNCiANCisjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREUNCisJZGV2 LT5tdDc2LnRlc3Rfb3BzID0gJm10NzkxNV90ZXN0bW9kZV9vcHM7DQorI2VuZGlmDQorDQogCXJl dCA9IG10NzZfcmVnaXN0ZXJfZGV2aWNlKCZkZXYtPm10NzYsIHRydWUsIG10NzkxNV9yYXRlcywN CiAJCQkJICAgQVJSQVlfU0laRShtdDc5MTVfcmF0ZXMpKTsNCiAJaWYgKHJldCkNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jDQppbmRleCBhNzEx OGRmLi5jODdkM2MzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv bXQ3Ni9tdDc5MTUvbWFjLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L21hYy5jDQpAQCAtNTYyLDYgKzU2MiwxMjAgQEAgaW50IG10NzkxNV9tYWNfZmls bF9yeChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KIAlyZXR1 cm4gMDsNCiB9DQogDQorc3RhdGljIHUxNg0KK210NzkxNV9tYWNfdHhfcmF0ZV92YWwoc3RydWN0 IG10NzZfcGh5ICptcGh5LCB1OCBtb2RlLCB1OCByYXRlX2lkeCwNCisJCSAgICAgICB1OCBuc3Ms IHU4IHN0YmMsIHU4ICpidykNCit7DQorCXUxNiByYXRldmFsID0gMDsNCisNCisJc3dpdGNoICht cGh5LT5jaGFuZGVmLndpZHRoKSB7DQorCWNhc2UgTkw4MDIxMV9DSEFOX1dJRFRIXzQwOg0KKwkJ KmJ3ID0gMTsNCisJCWJyZWFrOw0KKwljYXNlIE5MODAyMTFfQ0hBTl9XSURUSF84MDoNCisJCSpi dyA9IDI7DQorCQlicmVhazsNCisJY2FzZSBOTDgwMjExX0NIQU5fV0lEVEhfODBQODA6DQorCWNh c2UgTkw4MDIxMV9DSEFOX1dJRFRIXzE2MDoNCisJCSpidyA9IDM7DQorCQlicmVhazsNCisJZGVm YXVsdDoNCisJCSpidyA9IDA7DQorCQlicmVhazsNCisJfQ0KKw0KKwlpZiAobW9kZSA9PSBNVF9Q SFlfVFlQRV9IVCB8fCBtb2RlID09IE1UX1BIWV9UWVBFX0hUX0dGKQ0KKwkJbnNzID0gMSArIChy YXRlX2lkeCA+PiAzKTsNCisNCisJaWYgKHN0YmMgJiYgbnNzID09IDEpIHsNCisJCW5zcysrOw0K KwkJcmF0ZXZhbCB8PSBNVF9UWF9SQVRFX1NUQkM7DQorCX0NCisNCisJcmF0ZXZhbCB8PSBGSUVM RF9QUkVQKE1UX1RYX1JBVEVfSURYLCByYXRlX2lkeCkgfA0KKwkJICAgRklFTERfUFJFUChNVF9U WF9SQVRFX01PREUsIG1vZGUpIHwNCisJCSAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9OU1MsIG5z cyAtIDEpOw0KKw0KKwlyZXR1cm4gcmF0ZXZhbDsNCit9DQorDQorc3RhdGljIHZvaWQNCittdDc5 MTVfbWFjX3dyaXRlX3R4d2lfdG0oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzZf cGh5ICptcGh5LA0KKwkJCSBfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IpDQorew0K KyNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERQ0KKwlzdHJ1Y3QgbXQ3Nl90ZXN0bW9kZV9k YXRhICp0ZCA9ICZkZXYtPm10NzYudGVzdDsNCisJdTggYncsIG1vZGU7DQorCXUxNiByYXRldmFs Ow0KKwl1MzIgdmFsOw0KKw0KKwlpZiAoc2tiICE9IGRldi0+bXQ3Ni50ZXN0LnR4X3NrYikNCisJ CXJldHVybjsNCisNCisJc3dpdGNoICh0ZC0+dHhfcmF0ZV9tb2RlKSB7DQorCWNhc2UgTVQ3Nl9U TV9UWF9NT0RFX0NDSzoNCisJCW1vZGUgPSBNVF9QSFlfVFlQRV9DQ0s7DQorCQlicmVhazsNCisJ Y2FzZSBNVDc2X1RNX1RYX01PREVfSFQ6DQorCQltb2RlID0gTVRfUEhZX1RZUEVfSFQ7DQorCQli cmVhazsNCisJY2FzZSBNVDc2X1RNX1RYX01PREVfVkhUOg0KKwkJbW9kZSA9IE1UX1BIWV9UWVBF X1ZIVDsNCisJCWJyZWFrOw0KKwljYXNlIE1UNzZfVE1fVFhfTU9ERV9IRV9TVToNCisJCW1vZGUg PSBNVF9QSFlfVFlQRV9IRV9TVTsNCisJCWJyZWFrOw0KKwljYXNlIE1UNzZfVE1fVFhfTU9ERV9I RV9FWFRfU1U6DQorCQltb2RlID0gTVRfUEhZX1RZUEVfSEVfRVhUX1NVOw0KKwkJYnJlYWs7DQor CWNhc2UgTVQ3Nl9UTV9UWF9NT0RFX0hFX1RCOg0KKwkJbW9kZSA9IE1UX1BIWV9UWVBFX0hFX1RC Ow0KKwkJYnJlYWs7DQorCWNhc2UgTVQ3Nl9UTV9UWF9NT0RFX0hFX01VOg0KKwkJbW9kZSA9IE1U X1BIWV9UWVBFX0hFX01VOw0KKwkJYnJlYWs7DQorCWNhc2UgTVQ3Nl9UTV9UWF9NT0RFX09GRE06 DQorCWRlZmF1bHQ6DQorCQltb2RlID0gTVRfUEhZX1RZUEVfT0ZETTsNCisJCWJyZWFrOw0KKwl9 DQorDQorCXJhdGV2YWwgPSBtdDc5MTVfbWFjX3R4X3JhdGVfdmFsKG1waHksIG1vZGUsIHRkLT50 eF9yYXRlX2lkeCwNCisJCQkJCSB0ZC0+dHhfcmF0ZV9uc3MsIHRkLT50eF9yYXRlX3N0YmMsICZi dyk7DQorDQorCXR4d2lbMl0gfD0gY3B1X3RvX2xlMzIoTVRfVFhEMl9GSVhfUkFURSk7DQorDQor CWxlMzJwX3JlcGxhY2VfYml0cygmdHh3aVszXSwgMSwgTVRfVFhEM19SRU1fVFhfQ09VTlQpOw0K KwlpZiAodGQtPnR4X3JhdGVfbW9kZSA8IE1UNzZfVE1fVFhfTU9ERV9IVCkNCisJCXR4d2lbM10g fD0gY3B1X3RvX2xlMzIoTVRfVFhEM19CQV9ESVNBQkxFKTsNCisNCisJdmFsID0gTVRfVFhENl9G SVhFRF9CVyB8DQorCSAgICAgIEZJRUxEX1BSRVAoTVRfVFhENl9CVywgYncpIHwNCisJICAgICAg RklFTERfUFJFUChNVF9UWEQ2X1RYX1JBVEUsIHJhdGV2YWwpIHwNCisJICAgICAgRklFTERfUFJF UChNVF9UWEQ2X1NHSSwgdGQtPnR4X3JhdGVfc2dpKTsNCisNCisJLyogZm9yIEhFX1NVL0hFX0VY VF9TVSBQUERVDQorCSAqIC0gMXgsIDJ4LCA0eCBMVEYgKyAwLjh1cyBHSQ0KKwkgKiAtIDJ4IExU RiArIDEuNnVzIEdJLCA0eCBMVEYgKyAzLjJ1cyBHSQ0KKwkgKiBmb3IgSEVfTVUgUFBEVQ0KKwkg KiAtIDJ4LCA0eCBMVEYgKyAwLjh1cyBHSQ0KKwkgKiAtIDJ4IExURiArIDEuNnVzIEdJLCA0eCBM VEYgKyAzLjJ1cyBHSQ0KKwkgKiBmb3IgSEVfVEIgUFBEVQ0KKwkgKiAtIDF4LCAyeCBMVEYgKyAx LjZ1cyBHSQ0KKwkgKiAtIDR4IExURiArIDMuMnVzIEdJDQorCSAqLw0KKwlpZiAobW9kZSA+PSBN VF9QSFlfVFlQRV9IRV9TVSkNCisJCXZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDZfSEVMVEYsIHRk LT50eF9sdGYpOw0KKw0KKwlpZiAodGQtPnR4X3JhdGVfbGRwYykNCisJCXZhbCB8PSBNVF9UWEQ2 X0xEUEM7DQorDQorCXR4d2lbNl0gfD0gY3B1X3RvX2xlMzIodmFsKTsNCisJdHh3aVs3XSB8PSBj cHVfdG9fbGUzMihGSUVMRF9QUkVQKE1UX1RYRDdfU1BFX0lEWCwNCisJCQkJCSAgZGV2LT50ZXN0 LnNwZV9pZHgpKTsNCisjZW5kaWYNCit9DQorDQogc3RhdGljIHZvaWQNCiBtdDc5MTVfbWFjX3dy aXRlX3R4d2lfODAyMyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksDQogCQkJ ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCkNCkBAIC03NjEs NiArODc1LDkgQEAgdm9pZCBtdDc5MTVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzkxNV9kZXYg KmRldiwgX19sZTMyICp0eHdpLA0KIAkJdHh3aVs2XSB8PSBjcHVfdG9fbGUzMih2YWwpOw0KIAkJ dHh3aVszXSB8PSBjcHVfdG9fbGUzMihNVF9UWEQzX0JBX0RJU0FCTEUpOw0KIAl9DQorDQorCWlm IChtdDc2X3Rlc3Rtb2RlX2VuYWJsZWQoJmRldi0+bXQ3NikpDQorCQltdDc5MTVfbWFjX3dyaXRl X3R4d2lfdG0oZGV2LCBtcGh5LCB0eHdpLCBza2IpOw0KIH0NCiANCiBpbnQgbXQ3OTE1X3R4X3By ZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsDQpAQCAtODgx LDYgKzk5OCwxOCBAQCBtdDc5MTVfdHhfY29tcGxldGVfc3RhdHVzKHN0cnVjdCBtdDc2X2RldiAq bWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwNCiANCiAJaHcgPSBtdDc2X3R4X3N0YXR1c19nZXRf aHcobWRldiwgc2tiKTsNCiANCisjaWZkZWYgQ09ORklHX05MODAyMTFfVEVTVE1PREUNCisJaWYg KHNrYiA9PSBtZGV2LT50ZXN0LnR4X3NrYikgew0KKwkJc3RydWN0IG10NzkxNV9waHkgKnBoeSA9 IG10NzkxNV9od19waHkoaHcpOw0KKwkJc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHBoeS0+ bW9uaXRvcl92aWY7DQorCQlzdHJ1Y3QgbXQ3OTE1X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTE1 X3ZpZiAqKXZpZi0+ZHJ2X3ByaXY7DQorDQorCQltdDc2X3R4X2NvbXBsZXRlX3NrYihtZGV2LCBt dmlmLT5zdGEud2NpZC5pZHgsIHNrYik7DQorDQorCQlyZXR1cm47DQorCX0NCisjZW5kaWYNCisN CiAJaWYgKGluZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX0NUTF9BTVBEVSkNCiAJCWluZm8tPmZs YWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FNUERVOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYw0KaW5kZXggMTI2MmZiMy4uOWViZTVh ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1 L21haW4uYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUv bWFpbi5jDQpAQCAtNDQsMTMgKzQ0LDE0IEBAIHN0YXRpYyBpbnQgbXQ3OTE1X3N0YXJ0KHN0cnVj dCBpZWVlODAyMTFfaHcgKmh3KQ0KIAkJbXQ3OTE1X21hY19lbmFibGVfbmYoZGV2LCAxKTsNCiAJ fQ0KIA0KLQltdDc5MTVfbWN1X3NldF9za3VfZW4ocGh5LCB0cnVlKTsNCisJbXQ3OTE1X21jdV9z ZXRfc2t1X2VuKHBoeSwgIW10NzZfdGVzdG1vZGVfZW5hYmxlZCgmZGV2LT5tdDc2KSk7DQogCW10 NzkxNV9tY3Vfc2V0X2NoYW5faW5mbyhwaHksIE1DVV9FWFRfQ01EX1NFVF9SWF9QQVRIKTsNCiAN CiAJc2V0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsICZwaHktPm10NzYtPnN0YXRlKTsNCiANCi0J aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJnBoeS0+bWFjX3dvcmssDQotCQkJCSAg ICAgTVQ3OTE1X1dBVENIRE9HX1RJTUUpOw0KKwlpZiAoIW10NzZfdGVzdG1vZGVfZW5hYmxlZCgm ZGV2LT5tdDc2KSkNCisJCWllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoaHcsICZwaHktPm1h Y193b3JrLA0KKwkJCQkJICAgICBNVDc5MTVfV0FUQ0hET0dfVElNRSk7DQogDQogCWlmICghcnVu bmluZykNCiAJCW10NzkxNV9tYWNfcmVzZXRfY291bnRlcnMocGh5KTsNCkBAIC02OSw2ICs3MCw4 IEBAIHN0YXRpYyB2b2lkIG10NzkxNV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQ0KIA0K IAltdXRleF9sb2NrKCZkZXYtPm10NzYubXV0ZXgpOw0KIA0KKwltdDc2X3Rlc3Rtb2RlX3Jlc2V0 KCZkZXYtPm10NzYsIHRydWUpOw0KKw0KIAljbGVhcl9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCAm cGh5LT5tdDc2LT5zdGF0ZSk7DQogDQogCWlmIChwaHkgIT0gJmRldi0+cGh5KSB7DQpAQCAtMTUw LDYgKzE1MywxMiBAQCBzdGF0aWMgaW50IG10NzkxNV9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVl ODAyMTFfaHcgKmh3LA0KIA0KIAltdXRleF9sb2NrKCZkZXYtPm10NzYubXV0ZXgpOw0KIA0KKwlt dDc2X3Rlc3Rtb2RlX3Jlc2V0KCZkZXYtPm10NzYsIHRydWUpOw0KKw0KKwlpZiAodmlmLT50eXBl ID09IE5MODAyMTFfSUZUWVBFX01PTklUT1IgJiYNCisJICAgIGlzX3plcm9fZXRoZXJfYWRkcih2 aWYtPmFkZHIpKQ0KKwkJcGh5LT5tb25pdG9yX3ZpZiA9IHZpZjsNCisNCiAJbXZpZi0+aWR4ID0g ZmZzKH5waHktPm10NzYtPnZpZl9tYXNrKSAtIDE7DQogCWlmIChtdmlmLT5pZHggPj0gTVQ3OTE1 X01BWF9JTlRFUkZBQ0VTKSB7DQogCQlyZXQgPSAtRU5PU1BDOw0KQEAgLTIxOCw2ICsyMjcsMTMg QEAgc3RhdGljIHZvaWQgbXQ3OTE1X3JlbW92ZV9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsDQogDQogCS8qIFRPRE86IGRpc2FibGUgYmVhY29uIGZvciB0aGUgYnNzICovDQogDQor CW11dGV4X2xvY2soJmRldi0+bXQ3Ni5tdXRleCk7DQorCW10NzZfdGVzdG1vZGVfcmVzZXQoJmRl di0+bXQ3NiwgdHJ1ZSk7DQorCW11dGV4X3VubG9jaygmZGV2LT5tdDc2Lm11dGV4KTsNCisNCisJ aWYgKHZpZiA9PSBwaHktPm1vbml0b3JfdmlmKQ0KKwkJcGh5LT5tb25pdG9yX3ZpZiA9IE5VTEw7 DQorDQogCW10NzkxNV9tY3VfYWRkX2Rldl9pbmZvKHBoeSwgdmlmLCBmYWxzZSk7DQogDQogCXJj dV9hc3NpZ25fcG9pbnRlcihkZXYtPm10NzYud2NpZFtpZHhdLCBOVUxMKTsNCkBAIC0yNTIsNyAr MjY4LDcgQEAgc3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfZGZzX3N0YXRlKHN0cnVjdCBtdDc5MTVf cGh5ICpwaHkpDQogCXBoeS0+ZGZzX3N0YXRlID0gLTE7DQogfQ0KIA0KLXN0YXRpYyBpbnQgbXQ3 OTE1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpDQoraW50IG10NzkxNV9zZXRf Y2hhbm5lbChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KQ0KIHsNCiAJc3RydWN0IG10NzkxNV9kZXYg KmRldiA9IHBoeS0+ZGV2Ow0KIAlpbnQgcmV0Ow0KQEAgLTI4MSw4ICsyOTcsMTAgQEAgb3V0Og0K IAltdXRleF91bmxvY2soJmRldi0+bXQ3Ni5tdXRleCk7DQogDQogCW10NzZfdHhxX3NjaGVkdWxl X2FsbChwaHktPm10NzYpOw0KLQlpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKHBoeS0+bXQ3 Ni0+aHcsICZwaHktPm1hY193b3JrLA0KLQkJCQkgICAgIE1UNzkxNV9XQVRDSERPR19USU1FKTsN CisNCisJaWYgKCFtdDc2X3Rlc3Rtb2RlX2VuYWJsZWQoJmRldi0+bXQ3NikpDQorCQlpZWVlODAy MTFfcXVldWVfZGVsYXllZF93b3JrKHBoeS0+bXQ3Ni0+aHcsICZwaHktPm1hY193b3JrLA0KKwkJ CQkJICAgICBNVDc5MTVfV0FUQ0hET0dfVElNRSk7DQogDQogCXJldHVybiByZXQ7DQogfQ0KQEAg LTM0Niw2ICszNjQsMTMgQEAgc3RhdGljIGludCBtdDc5MTVfY29uZmlnKHN0cnVjdCBpZWVlODAy MTFfaHcgKmh3LCB1MzIgY2hhbmdlZCkNCiAJaW50IHJldDsNCiANCiAJaWYgKGNoYW5nZWQgJiBJ RUVFODAyMTFfQ09ORl9DSEFOR0VfQ0hBTk5FTCkgew0KKyNpZmRlZiBDT05GSUdfTkw4MDIxMV9U RVNUTU9ERQ0KKwkJaWYgKGRldi0+bXQ3Ni50ZXN0LnN0YXRlICE9IE1UNzZfVE1fU1RBVEVfT0ZG KSB7DQorCQkJbXV0ZXhfbG9jaygmZGV2LT5tdDc2Lm11dGV4KTsNCisJCQltdDc2X3Rlc3Rtb2Rl X3Jlc2V0KCZkZXYtPm10NzYsIGZhbHNlKTsNCisJCQltdXRleF91bmxvY2soJmRldi0+bXQ3Ni5t dXRleCk7DQorCQl9DQorI2VuZGlmDQogCQlpZWVlODAyMTFfc3RvcF9xdWV1ZXMoaHcpOw0KIAkJ cmV0ID0gbXQ3OTE1X3NldF9jaGFubmVsKHBoeSk7DQogCQlpZiAocmV0KQ0KQEAgLTM3MCw2ICsz OTUsNyBAQCBzdGF0aWMgaW50IG10NzkxNV9jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcs IHUzMiBjaGFuZ2VkKQ0KIAkJCXBoeS0+cnhmaWx0ZXIgJj0gfk1UX1dGX1JGQ1JfRFJPUF9PVEhF Ul9VQzsNCiANCiAJCW10NzZfcm13X2ZpZWxkKGRldiwgTVRfRE1BX0RDUjAsIE1UX0RNQV9EQ1Iw X1JYRF9HNV9FTiwgZW5hYmxlZCk7DQorCQltdDc2X3Rlc3Rtb2RlX3Jlc2V0KCZkZXYtPm10NzYs IHRydWUpOw0KIAkJbXQ3Nl93cihkZXYsIE1UX1dGX1JGQ1IoYmFuZCksIHBoeS0+cnhmaWx0ZXIp Ow0KIAl9DQogDQpAQCAtODg3LDYgKzkxMyw4IEBAIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3Bz IG10NzkxNV9vcHMgPSB7DQogCS5zZXRfY292ZXJhZ2VfY2xhc3MgPSBtdDc5MTVfc2V0X2NvdmVy YWdlX2NsYXNzLA0KIAkuc3RhX3N0YXRpc3RpY3MgPSBtdDc5MTVfc3RhX3N0YXRpc3RpY3MsDQog CS5zdGFfc2V0XzRhZGRyID0gbXQ3OTE1X3N0YV9zZXRfNGFkZHIsDQorCUNGRzgwMjExX1RFU1RN T0RFX0NNRChtdDc2X3Rlc3Rtb2RlX2NtZCkNCisJQ0ZHODAyMTFfVEVTVE1PREVfRFVNUChtdDc2 X3Rlc3Rtb2RlX2R1bXApDQogI2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTDQogCS5zdGFf YWRkX2RlYnVnZnMgPSBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzLA0KICNlbmRpZg0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMNCmluZGV4IDVjY2Rl NTQuLjM3MmY0NWIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9tY3UuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc5MTUvbWN1LmMNCkBAIC0zMTg2LDYgKzMxODYsMTUgQEAgaW50IG10NzkxNV9tY3Vfc2V0 X2NoYW5faW5mbyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBpbnQgY21kKQ0KIAkJLmNoYW5uZWxf YmFuZCA9IGNoYW5kZWYtPmNoYW4tPmJhbmQsDQogCX07DQogDQorI2lmZGVmIENPTkZJR19OTDgw MjExX1RFU1RNT0RFDQorCWlmIChkZXYtPm10NzYudGVzdC50eF9hbnRlbm5hX21hc2sgJiYNCisJ ICAgIChkZXYtPm10NzYudGVzdC5zdGF0ZSA9PSBNVDc2X1RNX1NUQVRFX1RYX0ZSQU1FUyB8fA0K KwkgICAgIGRldi0+bXQ3Ni50ZXN0LnN0YXRlID09IE1UNzZfVE1fU1RBVEVfUlhfRlJBTUVTKSkg ew0KKwkJcmVxLnR4X3N0cmVhbXNfbnVtID0gZmxzKGRldi0+bXQ3Ni50ZXN0LnR4X2FudGVubmFf bWFzayk7DQorCQlyZXEucnhfc3RyZWFtcyA9IGRldi0+bXQ3Ni50ZXN0LnR4X2FudGVubmFfbWFz azsNCisJfQ0KKyNlbmRpZg0KKw0KIAlpZiAoZGV2LT5tdDc2Lmh3LT5jb25mLmZsYWdzICYgSUVF RTgwMjExX0NPTkZfT0ZGQ0hBTk5FTCkNCiAJCXJlcS5zd2l0Y2hfcmVhc29uID0gQ0hfU1dJVENI X1NDQU5fQllQQVNTX0RQRDsNCiAJZWxzZSBpZiAoKGNoYW5kZWYtPmNoYW4tPmZsYWdzICYgSUVF RTgwMjExX0NIQU5fUkFEQVIpICYmDQpAQCAtMzMzMCw2ICszMzM5LDI4IEBAIGludCBtdDc5MTVf bWN1X3NldF90eHBvd2VyX3NrdShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KQ0KIAkJCQkgc2l6ZW9m KHJlcSksIHRydWUpOw0KIH0NCiANCitpbnQgbXQ3OTE1X21jdV9zZXRfdGVzdF9wYXJhbShzdHJ1 Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBwYXJhbSwgYm9vbCB0ZXN0X21vZGUsDQorCQkJICAgICAg dTggZW4pDQorew0KKwlzdHJ1Y3Qgew0KKwkJdTggdGVzdF9tb2RlX2VuOw0KKwkJdTggcGFyYW1f aWR4Ow0KKwkJdTggX3JzdlsyXTsNCisNCisJCXU4IGVuYWJsZTsNCisJCXU4IF9yc3YyWzNdOw0K Kw0KKwkJdTggcGFkWzhdOw0KKwl9IF9fcGFja2VkIHJlcSA9IHsNCisJCS50ZXN0X21vZGVfZW4g PSB0ZXN0X21vZGUsDQorCQkucGFyYW1faWR4ID0gcGFyYW0sDQorCQkuZW5hYmxlID0gZW4sDQor CX07DQorDQorCXJldHVybiBtdDc2X21jdV9zZW5kX21zZygmZGV2LT5tdDc2LCBNQ1VfRVhUX0NN RF9BVEVfQ1RSTCwgJnJlcSwNCisJCQkJIHNpemVvZihyZXEpLCBmYWxzZSk7DQorfQ0KKw0KIGlu dCBtdDc5MTVfbWN1X3NldF9za3VfZW4oc3RydWN0IG10NzkxNV9waHkgKnBoeSwgYm9vbCBlbmFi bGUpDQogew0KIAlzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gcGh5LT5kZXY7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuaA0KaW5kZXggNWYyM2Yy Ny4uMGE3ZTlkMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L21jdS5oDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210NzkxNS9tY3UuaA0KQEAgLTQ2LDYgKzQ2LDEwIEBAIGVudW0gew0KIAlNQ1VfRVhUX0VWRU5U X1JBVEVfUkVQT1JUID0gMHg4NywNCiB9Ow0KIA0KK2VudW0gew0KKwlNQ1VfQVRFX1NFVF9UUlgg PSAweDEsDQorfTsNCisNCiBzdHJ1Y3QgbXQ3OTE1X21jdV9yeGQgew0KIAlfX2xlMzIgcnhkWzZd Ow0KIA0KQEAgLTIxNiw2ICsyMjAsNyBAQCBlbnVtIHsNCiAJTUNVX0VYVF9DTURfV1RCTF9VUERB VEUgPSAweDMyLA0KIAlNQ1VfRVhUX0NNRF9TRVRfRFJSX0NUUkwgPSAweDM2LA0KIAlNQ1VfRVhU X0NNRF9TRVRfUkREX0NUUkwgPSAweDNhLA0KKwlNQ1VfRVhUX0NNRF9BVEVfQ1RSTCA9IDB4M2Qs DQogCU1DVV9FWFRfQ01EX1BST1RFQ1RfQ1RSTCA9IDB4M2UsDQogCU1DVV9FWFRfQ01EX01BQ19J TklUX0NUUkwgPSAweDQ2LA0KIAlNQ1VfRVhUX0NNRF9SWF9IRFJfVFJBTlMgPSAweDQ3LA0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210Nzkx NS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgN CmluZGV4IDQyOTIxNTMuLjY3MzU5MTUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgNCkBAIC0xMDgsNiArMTA4LDggQEAgc3Ry dWN0IG10NzkxNV9waHkgew0KIA0KIAlzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRh IGlmdHlwZVsyXVtOVU1fTkw4MDIxMV9JRlRZUEVTXTsNCiANCisJc3RydWN0IGllZWU4MDIxMV92 aWYgKm1vbml0b3JfdmlmOw0KKw0KIAl1MzIgcnhmaWx0ZXI7DQogCXU2NCBvbWFjX21hc2s7DQog DQpAQCAtMTU4LDYgKzE2MCwxNCBAQCBzdHJ1Y3QgbXQ3OTE1X2RldiB7DQogCXN0cnVjdCBpZHIg dG9rZW47DQogDQogCWJvb2wgZndfZGVidWc7DQorDQorI2lmZGVmIENPTkZJR19OTDgwMjExX1RF U1RNT0RFDQorCXN0cnVjdCB7DQorCQl1MzIgKnJlZ19iYWNrdXA7DQorDQorCQl1OCBzcGVfaWR4 Ow0KKwl9IHRlc3Q7DQorI2VuZGlmDQogfTsNCiANCiBlbnVtIHsNCkBAIC0yNDcsNiArMjU3LDcg QEAgc3RhdGljIGlubGluZSB1OCBtdDc5MTVfbG1hY19tYXBwaW5nKHN0cnVjdCBtdDc5MTVfZGV2 ICpkZXYsIHU4IGFjKQ0KIA0KIGV4dGVybiBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5 MTVfb3BzOw0KIGV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MTVfcGNpX2RyaXZlcjsNCitl eHRlcm4gY29uc3Qgc3RydWN0IG10NzZfdGVzdG1vZGVfb3BzIG10NzkxNV90ZXN0bW9kZV9vcHM7 DQogDQogdTMyIG10NzkxNV9yZWdfbWFwKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiBhZGRy KTsNCiANCkBAIC0yOTIsNiArMzAzLDcgQEAgaW50IG10NzkxNV9tY3VfYWRkX3JhdGVfY3RybChz dHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLA0KIAkJCSAg ICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7DQogaW50IG10NzkxNV9tY3VfYWRkX3NtcHMo c3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwNCiAJCQlz dHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKTsNCitpbnQgbXQ3OTE1X3NldF9jaGFubmVsKHN0cnVj dCBtdDc5MTVfcGh5ICpwaHkpOw0KIGludCBtdDc5MTVfbWN1X3NldF9jaGFuX2luZm8oc3RydWN0 IG10NzkxNV9waHkgKnBoeSwgaW50IGNtZCk7DQogaW50IG10NzkxNV9tY3Vfc2V0X3R4KHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpOw0KIGludCBtdDc5 MTVfbWN1X3NldF9maXhlZF9yYXRlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQpAQCAtMzAwLDYg KzMxMiw4IEBAIGludCBtdDc5MTVfbWN1X3NldF9lZXByb20oc3RydWN0IG10NzkxNV9kZXYgKmRl dik7DQogaW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1 MzIgb2Zmc2V0KTsNCiBpbnQgbXQ3OTE1X21jdV9zZXRfbWFjKHN0cnVjdCBtdDc5MTVfZGV2ICpk ZXYsIGludCBiYW5kLCBib29sIGVuYWJsZSwNCiAJCSAgICAgICBib29sIGhkcl90cmFucyk7DQor aW50IG10NzkxNV9tY3Vfc2V0X3Rlc3RfcGFyYW0oc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTgg cGFyYW0sIGJvb2wgdGVzdF9tb2RlLA0KKwkJCSAgICAgIHU4IGVuKTsNCiBpbnQgbXQ3OTE1X21j dV9zZXRfc2NzKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGJhbmQsIGJvb2wgZW5hYmxlKTsN CiBpbnQgbXQ3OTE1X21jdV9zZXRfc2VyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4IGFjdGlv biwgdTggc2V0LCB1OCBiYW5kKTsNCiBpbnQgbXQ3OTE1X21jdV9zZXRfcnRzX3RocmVzaChzdHJ1 Y3QgbXQ3OTE1X3BoeSAqcGh5LCB1MzIgdmFsKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmggYi9kcml2ZXJzL25ldC93aXJlbGVz cy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdzLmgNCmluZGV4IGU0MjUyYzguLjUwM2M5YzggMTAw NjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9yZWdz LmgNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3JlZ3Mu aA0KQEAgLTUxLDYgKzUxLDkgQEANCiAjZGVmaW5lIE1UX1dGX1RNQUNfQkFTRShfYmFuZCkJCSgo X2JhbmQpID8gMHhhMTAwMCA6IDB4MjEwMDApDQogI2RlZmluZSBNVF9XRl9UTUFDKF9iYW5kLCBv ZnMpCQkoTVRfV0ZfVE1BQ19CQVNFKF9iYW5kKSArIChvZnMpKQ0KIA0KKyNkZWZpbmUgTVRfVE1B Q19UQ1IwKF9iYW5kKQkJTVRfV0ZfVE1BQyhfYmFuZCwgMCkNCisjZGVmaW5lIE1UX1RNQUNfVENS MF9UQlRUX1NUT1BfQ1RSTAlCSVQoMjUpDQorDQogI2RlZmluZSBNVF9UTUFDX0NEVFIoX2JhbmQp CQlNVF9XRl9UTUFDKF9iYW5kLCAweDA5MCkNCiAjZGVmaW5lIE1UX1RNQUNfT0RUUihfYmFuZCkJ CU1UX1dGX1RNQUMoX2JhbmQsIDB4MDk0KQ0KICNkZWZpbmUgTVRfVElNRU9VVF9WQUxfUExDUAkJ R0VOTUFTSygxNSwgMCkNCkBAIC03Miw2ICs3NSw5IEBADQogI2RlZmluZSBNVF9UTUFDX0ZQMFIx OChfYmFuZCkJCU1UX1dGX1RNQUMoX2JhbmQsIDB4MjcwKQ0KICNkZWZpbmUgTVRfVE1BQ19GUF9N QVNLCQkJR0VOTUFTSyg3LCAwKQ0KIA0KKyNkZWZpbmUgTVRfVE1BQ19UUkNSMChfYmFuZCkJCU1U X1dGX1RNQUMoX2JhbmQsIDB4MDljKQ0KKyNkZWZpbmUgTVRfVE1BQ19URkNSMChfYmFuZCkJCU1U X1dGX1RNQUMoX2JhbmQsIDB4MWUwKQ0KKw0KIC8qIERNQSBCYW5kIDAgKi8NCiAjZGVmaW5lIE1U X1dGX0RNQV9CQVNFCQkJMHgyMWUwMA0KICNkZWZpbmUgTVRfV0ZfRE1BKG9mcykJCQkoTVRfV0Zf RE1BX0JBU0UgKyAob2ZzKSkNCkBAIC0xNzEsMTAgKzE3NywzMyBAQA0KICNkZWZpbmUgTVRfV0Zf QUdHX0JBU0UoX2JhbmQpCQkoKF9iYW5kKSA/IDB4YTA4MDAgOiAweDIwODAwKQ0KICNkZWZpbmUg TVRfV0ZfQUdHKF9iYW5kLCBvZnMpCQkoTVRfV0ZfQUdHX0JBU0UoX2JhbmQpICsgKG9mcykpDQog DQorI2RlZmluZSBNVF9BR0dfQVdTQ1IwKF9iYW5kLCBfbikJTVRfV0ZfQUdHKF9iYW5kLCAweDA1 YyArIChfbikgKiA0KQ0KKyNkZWZpbmUgTVRfQUdHX1BDUjAoX2JhbmQsIF9uKQkJTVRfV0ZfQUdH KF9iYW5kLCAweDA2YyArIChfbikgKiA0KQ0KKyNkZWZpbmUgTVRfQUdHX1BDUjBfTU1fUFJPVAkJ QklUKDApDQorI2RlZmluZSBNVF9BR0dfUENSMF9HRl9QUk9UCQlCSVQoMSkNCisjZGVmaW5lIE1U X0FHR19QQ1IwX0JXMjBfUFJPVAkJQklUKDIpDQorI2RlZmluZSBNVF9BR0dfUENSMF9CVzQwX1BS T1QJCUJJVCg0KQ0KKyNkZWZpbmUgTVRfQUdHX1BDUjBfQlc4MF9QUk9UCQlCSVQoNikNCisjZGVm aW5lIE1UX0FHR19QQ1IwX0VSUF9QUk9UCQlHRU5NQVNLKDEyLCA4KQ0KKyNkZWZpbmUgTVRfQUdH X1BDUjBfVkhUX1BST1QJCUJJVCgxMykNCisjZGVmaW5lIE1UX0FHR19QQ1IwX1BUQV9XSU5fRElT CQlCSVQoMTUpDQorDQorI2RlZmluZSBNVF9BR0dfUENSMV9SVFMwX05VTV9USFJFUwlHRU5NQVNL KDMxLCAyMykNCisjZGVmaW5lIE1UX0FHR19QQ1IxX1JUUzBfTEVOX1RIUkVTCUdFTk1BU0soMTks IDApDQorDQogI2RlZmluZSBNVF9BR0dfQUNSMChfYmFuZCkJCU1UX1dGX0FHRyhfYmFuZCwgMHgw ODQpDQogI2RlZmluZSBNVF9BR0dfQUNSX0NGRU5EX1JBVEUJCUdFTk1BU0soMTMsIDApDQogI2Rl ZmluZSBNVF9BR0dfQUNSX0JBUl9SQVRFCQlHRU5NQVNLKDI5LCAxNikNCiANCisjZGVmaW5lIE1U X0FHR19NUkNSKF9iYW5kKQkJTVRfV0ZfQUdHKF9iYW5kLCAweDA5OCkNCisjZGVmaW5lIE1UX0FH R19NUkNSX0JBUl9DTlRfTElNSVQJR0VOTUFTSygxNSwgMTIpDQorI2RlZmluZSBNVF9BR0dfTVJD Ul9MQVNUX1JUU19DVFNfUk4JQklUKDYpDQorI2RlZmluZSBNVF9BR0dfTVJDUl9SVFNfRkFJTF9M SU1JVAlHRU5NQVNLKDExLCA3KQ0KKyNkZWZpbmUgTVRfQUdHX01SQ1JfVFhDTURfUlRTX0ZBSUxf TElNSVQJR0VOTUFTSygyOCwgMjQpDQorDQorI2RlZmluZSBNVF9BR0dfQVRDUjEoX2JhbmQpCQlN VF9XRl9BR0coX2JhbmQsIDB4MGYwKQ0KKyNkZWZpbmUgTVRfQUdHX0FUQ1IzKF9iYW5kKQkJTVRf V0ZfQUdHKF9iYW5kLCAweDBmNCkNCisNCiAvKiBBUkI6IGJhbmQgMCgweDIwYzAwKSwgYmFuZCAx KDB4YTBjMDApICovDQogI2RlZmluZSBNVF9XRl9BUkJfQkFTRShfYmFuZCkJCSgoX2JhbmQpID8g MHhhMGMwMCA6IDB4MjBjMDApDQogI2RlZmluZSBNVF9XRl9BUkIoX2JhbmQsIG9mcykJCShNVF9X Rl9BUkJfQkFTRShfYmFuZCkgKyAob2ZzKSkNCkBAIC0xODMsNiArMjEyLDggQEANCiAjZGVmaW5l IE1UX0FSQl9TQ1JfVFhfRElTQUJMRQkJQklUKDgpDQogI2RlZmluZSBNVF9BUkJfU0NSX1JYX0RJ U0FCTEUJCUJJVCg5KQ0KIA0KKyNkZWZpbmUgTVRfQVJCX0RSTkdSMChfYmFuZCwgX24pCU1UX1dG X0FSQihfYmFuZCwgMHgxOTQgKyAoX24pICogNCkNCisNCiAvKiBSTUFDOiBiYW5kIDAoMHgyMTQw MCksIGJhbmQgMSgweGExNDAwKSAqLw0KICNkZWZpbmUgTVRfV0ZfUk1BQ19CQVNFKF9iYW5kKQkJ KChfYmFuZCkgPyAweGExNDAwIDogMHgyMTQwMCkNCiAjZGVmaW5lIE1UX1dGX1JNQUMoX2JhbmQs IG9mcykJCShNVF9XRl9STUFDX0JBU0UoX2JhbmQpICsgKG9mcykpDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvdGVzdG1vZGUuYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3Rlc3Rtb2RlLmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4wYjkwZWNiDQotLS0gL2Rldi9udWxsDQorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS90ZXN0bW9kZS5jDQpA QCAtMCwwICsxLDE4MCBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0MNCisvKiBD b3B5cmlnaHQgKEMpIDIwMjAgTWVkaWFUZWsgSW5jLiAqLw0KKw0KKyNpbmNsdWRlICJtdDc5MTUu aCINCisjaW5jbHVkZSAibWFjLmgiDQorI2luY2x1ZGUgIm1jdS5oIg0KKyNpbmNsdWRlICJ0ZXN0 bW9kZS5oIg0KKw0KK3N0cnVjdCByZWdfYmFuZCB7DQorCXUzMiBiYW5kWzJdOw0KK307DQorDQor I2RlZmluZSBSRUdfQkFORChfcmVnKSBcDQorCXsgLmJhbmRbMF0gPSBNVF8jI19yZWcoMCksIC5i YW5kWzFdID0gTVRfIyNfcmVnKDEpIH0NCisjZGVmaW5lIFJFR19CQU5EX0lEWChfcmVnLCBfaWR4 KSBcDQorCXsgLmJhbmRbMF0gPSBNVF8jI19yZWcoMCwgX2lkeCksIC5iYW5kWzFdID0gTVRfIyNf cmVnKDEsIF9pZHgpIH0NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ19iYW5kIHJlZ19iYWNr dXBfbGlzdFtdID0gew0KKwlSRUdfQkFORF9JRFgoQUdHX1BDUjAsIDApLA0KKwlSRUdfQkFORF9J RFgoQUdHX1BDUjAsIDEpLA0KKwlSRUdfQkFORF9JRFgoQUdHX0FXU0NSMCwgMCksDQorCVJFR19C QU5EX0lEWChBR0dfQVdTQ1IwLCAxKSwNCisJUkVHX0JBTkRfSURYKEFHR19BV1NDUjAsIDIpLA0K KwlSRUdfQkFORF9JRFgoQUdHX0FXU0NSMCwgMyksDQorCVJFR19CQU5EKEFHR19NUkNSKSwNCisJ UkVHX0JBTkQoVE1BQ19URkNSMCksDQorCVJFR19CQU5EKFRNQUNfVENSMCksDQorCVJFR19CQU5E KEFHR19BVENSMSksDQorCVJFR19CQU5EKEFHR19BVENSMyksDQorCVJFR19CQU5EKFRNQUNfVFJD UjApLA0KKwlSRUdfQkFORChUTUFDX0lDUjApLA0KKwlSRUdfQkFORF9JRFgoQVJCX0RSTkdSMCwg MCksDQorCVJFR19CQU5EX0lEWChBUkJfRFJOR1IwLCAxKSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQN CittdDc5MTVfdG1fbW9kZV9jdHJsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW5hYmxl KQ0KK3sNCisJc3RydWN0IHsNCisJCXU4IGZvcm1hdF9pZDsNCisJCWJvb2wgZW5hYmxlOw0KKwkJ dTggcnN2WzJdOw0KKwl9IF9fcGFja2VkIHJlcSA9IHsNCisJCS5mb3JtYXRfaWQgPSAweDYsDQor CQkuZW5hYmxlID0gZW5hYmxlLA0KKwl9Ow0KKw0KKwlyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2co JmRldi0+bXQ3NiwNCisJCQkJIE1DVV9FWFRfQ01EX1RYX1BPV0VSX0ZFQVRVUkVfQ1RSTCwNCisJ CQkJICZyZXEsIHNpemVvZihyZXEpLCBmYWxzZSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc5 MTVfdG1fc2V0X3RyeChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAq cGh5LA0KKwkJICBpbnQgdHlwZSwgYm9vbCBlbikNCit7DQorCXN0cnVjdCBtdDc5MTVfdG1fY21k IHJlcSA9IHsNCisJCS50ZXN0bW9kZV9lbiA9IDEsDQorCQkucGFyYW1faWR4ID0gTUNVX0FURV9T RVRfVFJYLA0KKwkJLnBhcmFtLnRyeC50eXBlID0gdHlwZSwNCisJCS5wYXJhbS50cnguZW5hYmxl ID0gZW4sDQorCQkucGFyYW0udHJ4LmJhbmQgPSBwaHkgIT0gJmRldi0+cGh5LA0KKwl9Ow0KKw0K KwlyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coJmRldi0+bXQ3NiwgTUNVX0VYVF9DTURfQVRFX0NU UkwsICZyZXEsDQorCQkJCSBzaXplb2YocmVxKSwgZmFsc2UpOw0KK30NCisNCitzdGF0aWMgdm9p ZA0KK210NzkxNV90bV9yZWdfYmFja3VwX3Jlc3RvcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwg c3RydWN0IG10NzkxNV9waHkgKnBoeSkNCit7DQorCWludCBuX3JlZ3MgPSBBUlJBWV9TSVpFKHJl Z19iYWNrdXBfbGlzdCk7DQorCWJvb2wgZXh0X3BoeSA9IHBoeSAhPSAmZGV2LT5waHk7DQorCXUz MiAqYiA9IGRldi0+dGVzdC5yZWdfYmFja3VwOw0KKwlpbnQgaTsNCisNCisJaWYgKGRldi0+bXQ3 Ni50ZXN0LnN0YXRlID09IE1UNzZfVE1fU1RBVEVfT0ZGKSB7DQorCQlmb3IgKGkgPSAwOyBpIDwg bl9yZWdzOyBpKyspDQorCQkJbXQ3Nl93cihkZXYsIHJlZ19iYWNrdXBfbGlzdFtpXS5iYW5kW2V4 dF9waHldLCBiW2ldKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlpZiAoYikNCisJCXJldHVybjsN CisNCisJYiA9IGRldm1fa3phbGxvYyhkZXYtPm10NzYuZGV2LCA0ICogbl9yZWdzLCBHRlBfS0VS TkVMKTsNCisJaWYgKCFiKQ0KKwkJcmV0dXJuOw0KKw0KKwlkZXYtPnRlc3QucmVnX2JhY2t1cCA9 IGI7DQorCWZvciAoaSA9IDA7IGkgPCBuX3JlZ3M7IGkrKykNCisJCWJbaV0gPSBtdDc2X3JyKGRl diwgcmVnX2JhY2t1cF9saXN0W2ldLmJhbmRbZXh0X3BoeV0pOw0KKw0KKwltdDc2X2NsZWFyKGRl diwgTVRfQUdHX1BDUjAoZXh0X3BoeSwgMCksIE1UX0FHR19QQ1IwX01NX1BST1QgfA0KKwkJICAg TVRfQUdHX1BDUjBfR0ZfUFJPVCB8IE1UX0FHR19QQ1IwX0VSUF9QUk9UIHwNCisJCSAgIE1UX0FH R19QQ1IwX1ZIVF9QUk9UIHwgTVRfQUdHX1BDUjBfQlcyMF9QUk9UIHwNCisJCSAgIE1UX0FHR19Q Q1IwX0JXNDBfUFJPVCB8IE1UX0FHR19QQ1IwX0JXODBfUFJPVCk7DQorCW10NzZfc2V0KGRldiwg TVRfQUdHX1BDUjAoZXh0X3BoeSwgMCksIE1UX0FHR19QQ1IwX1BUQV9XSU5fRElTKTsNCisNCisJ bXQ3Nl93cihkZXYsIE1UX0FHR19QQ1IwKGV4dF9waHksIDEpLCBNVF9BR0dfUENSMV9SVFMwX05V TV9USFJFUyB8DQorCQlNVF9BR0dfUENSMV9SVFMwX0xFTl9USFJFUyk7DQorDQorCW10NzZfY2xl YXIoZGV2LCBNVF9BR0dfTVJDUihleHRfcGh5KSwgTVRfQUdHX01SQ1JfQkFSX0NOVF9MSU1JVCB8 DQorCQkgICBNVF9BR0dfTVJDUl9MQVNUX1JUU19DVFNfUk4gfCBNVF9BR0dfTVJDUl9SVFNfRkFJ TF9MSU1JVCB8DQorCQkgICBNVF9BR0dfTVJDUl9UWENNRF9SVFNfRkFJTF9MSU1JVCk7DQorDQor CW10NzZfcm13KGRldiwgTVRfQUdHX01SQ1IoZXh0X3BoeSksIE1UX0FHR19NUkNSX1JUU19GQUlM X0xJTUlUIHwNCisJCSBNVF9BR0dfTVJDUl9UWENNRF9SVFNfRkFJTF9MSU1JVCwNCisJCSBGSUVM RF9QUkVQKE1UX0FHR19NUkNSX1JUU19GQUlMX0xJTUlULCAxKSB8DQorCQkgRklFTERfUFJFUChN VF9BR0dfTVJDUl9UWENNRF9SVFNfRkFJTF9MSU1JVCwgMSkpOw0KKw0KKwltdDc2X3dyKGRldiwg TVRfVE1BQ19URkNSMChleHRfcGh5KSwgMCk7DQorCW10NzZfY2xlYXIoZGV2LCBNVF9UTUFDX1RD UjAoZXh0X3BoeSksIE1UX1RNQUNfVENSMF9UQlRUX1NUT1BfQ1RSTCk7DQorfQ0KKw0KK3N0YXRp YyB2b2lkDQorbXQ3OTE1X3RtX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldikNCit7DQorCWJv b2wgZW4gPSAhKGRldi0+bXQ3Ni50ZXN0LnN0YXRlID09IE1UNzZfVE1fU1RBVEVfT0ZGKTsNCisN CisJaWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsICZkZXYtPnBoeS5tdDc2LT5zdGF0 ZSkpDQorCQlyZXR1cm47DQorDQorCW10NzkxNV90bV9tb2RlX2N0cmwoZGV2LCBlbik7DQorCW10 NzkxNV90bV9yZWdfYmFja3VwX3Jlc3RvcmUoZGV2LCAmZGV2LT5waHkpOw0KKwltdDc5MTVfdG1f c2V0X3RyeChkZXYsICZkZXYtPnBoeSwgVE1fTUFDX1RYUlgsICFlbik7DQorfQ0KKw0KK3N0YXRp YyB2b2lkDQorbXQ3OTE1X3RtX3NldF90eF9mcmFtZXMoc3RydWN0IG10NzkxNV9kZXYgKmRldiwg Ym9vbCBlbikNCit7DQorCXN0YXRpYyBjb25zdCB1OCBzcGVfaWR4X21hcFtdID0gezAsIDAsIDEs IDAsIDMsIDIsIDQsIDAsDQorCQkJCQkgOSwgOCwgNiwgMTAsIDE2LCAxMiwgMTgsIDB9Ow0KKwlz dHJ1Y3Qgc2tfYnVmZiAqc2tiID0gZGV2LT5tdDc2LnRlc3QudHhfc2tiOw0KKwlzdHJ1Y3QgaWVl ZTgwMjExX3R4X2luZm8gKmluZm87DQorDQorCW10NzkxNV90bV9zZXRfdHJ4KGRldiwgJmRldi0+ cGh5LCBUTV9NQUNfUlhfUlhWLCBmYWxzZSk7DQorDQorCWlmIChlbikgew0KKwkJdTggdHhfYW50 ID0gZGV2LT5tdDc2LnRlc3QudHhfYW50ZW5uYV9tYXNrOw0KKw0KKwkJbXV0ZXhfdW5sb2NrKCZk ZXYtPm10NzYubXV0ZXgpOw0KKwkJbXQ3OTE1X3NldF9jaGFubmVsKCZkZXYtPnBoeSk7DQorCQlt dXRleF9sb2NrKCZkZXYtPm10NzYubXV0ZXgpOw0KKw0KKwkJbXQ3OTE1X21jdV9zZXRfY2hhbl9p bmZvKCZkZXYtPnBoeSwgTUNVX0VYVF9DTURfU0VUX1JYX1BBVEgpOw0KKwkJZGV2LT50ZXN0LnNw ZV9pZHggPSBzcGVfaWR4X21hcFt0eF9hbnRdOw0KKwl9DQorDQorCW10NzkxNV90bV9zZXRfdHJ4 KGRldiwgJmRldi0+cGh5LCBUTV9NQUNfVFgsIGVuKTsNCisNCisJaWYgKCFlbiB8fCAhc2tiKQ0K KwkJcmV0dXJuOw0KKw0KKwlpbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpOw0KKwlpbmZvLT5j b250cm9sLnZpZiA9IGRldi0+cGh5Lm1vbml0b3JfdmlmOw0KK30NCisNCitzdGF0aWMgaW50DQor bXQ3OTE1X3RtX3NldF9zdGF0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl90ZXN0 bW9kZV9zdGF0ZSBzdGF0ZSkNCit7DQorCXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBjb250YWlu ZXJfb2YobWRldiwgc3RydWN0IG10NzkxNV9kZXYsIG10NzYpOw0KKwlzdHJ1Y3QgbXQ3Nl90ZXN0 bW9kZV9kYXRhICp0ZCA9ICZtZGV2LT50ZXN0Ow0KKwllbnVtIG10NzZfdGVzdG1vZGVfc3RhdGUg cHJldl9zdGF0ZSA9IHRkLT5zdGF0ZTsNCisNCisJbWRldi0+dGVzdC5zdGF0ZSA9IHN0YXRlOw0K Kw0KKwlpZiAocHJldl9zdGF0ZSA9PSBNVDc2X1RNX1NUQVRFX1RYX0ZSQU1FUykNCisJCW10Nzkx NV90bV9zZXRfdHhfZnJhbWVzKGRldiwgZmFsc2UpOw0KKwllbHNlIGlmIChzdGF0ZSA9PSBNVDc2 X1RNX1NUQVRFX1RYX0ZSQU1FUykNCisJCW10NzkxNV90bV9zZXRfdHhfZnJhbWVzKGRldiwgdHJ1 ZSk7DQorCWVsc2UgaWYgKHByZXZfc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9PRkYgfHwgc3RhdGUg PT0gTVQ3Nl9UTV9TVEFURV9PRkYpDQorCQltdDc5MTVfdG1faW5pdChkZXYpOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQorY29uc3Qgc3RydWN0IG10NzZfdGVzdG1vZGVfb3BzIG10NzkxNV90ZXN0 bW9kZV9vcHMgPSB7DQorCS5zZXRfc3RhdGUgPSBtdDc5MTVfdG1fc2V0X3N0YXRlLA0KK307DQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvdGVz dG1vZGUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3Rlc3Rt b2RlLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4wNGY0YTJjDQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzkx NS90ZXN0bW9kZS5oDQpAQCAtMCwwICsxLDM0IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IElTQw0KKy8qIENvcHlyaWdodCAoQykgMjAyMCBNZWRpYVRlayBJbmMuICovDQorDQorI2lm bmRlZiBfX01UNzkxNV9URVNUTU9ERV9IDQorI2RlZmluZSBfX01UNzkxNV9URVNUTU9ERV9IDQor DQorc3RydWN0IG10NzkxNV90bV90cnggew0KKwl1OCB0eXBlOw0KKwl1OCBlbmFibGU7DQorCXU4 IGJhbmQ7DQorCXU4IHJzdjsNCit9Ow0KKw0KK3N0cnVjdCBtdDc5MTVfdG1fY21kIHsNCisJdTgg dGVzdG1vZGVfZW47DQorCXU4IHBhcmFtX2lkeDsNCisJdTggX3JzdlsyXTsNCisJdW5pb24gew0K KwkJX19sZTMyIGRhdGE7DQorCQlzdHJ1Y3QgbXQ3OTE1X3RtX3RyeCB0cng7DQorCQl1OCB0ZXN0 WzcyXTsNCisJfSBwYXJhbTsNCit9IF9fcGFja2VkOw0KKw0KK2VudW0gew0KKwlUTV9NQUNfVFgg PSAxLA0KKwlUTV9NQUNfUlgsDQorCVRNX01BQ19UWFJYLA0KKwlUTV9NQUNfVFhSWF9SWFYsDQor CVRNX01BQ19SWFYsDQorCVRNX01BQ19SWF9SWFYsDQorfTsNCisNCisjZW5kaWYNCi0tIA0KMi4x Ny4xDQo=