Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1989025ybk; Mon, 11 May 2020 09:09:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw5usBgy7/T4/JeGHh+RhMgIzFRRJes6j/VbXPd3xZ4CKUaRz83Ggzctkrp3zdnRfTrb20d X-Received: by 2002:a50:ec8d:: with SMTP id e13mr4025694edr.8.1589213379225; Mon, 11 May 2020 09:09:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589213379; cv=none; d=google.com; s=arc-20160816; b=qpk3tSwU5bb1uMFA/Pyj1trxctD1L6AG1BXXyEI7FjRWhWc3EYl/3UlRtUxOK2rUCS WC/EH22zYHirT6oInGpMFMdzXXul93ERIC/ws11POhBpM8SjqbvVVG/K5b/lBC9lC6UG 6ttHNvtmDH3CzcDHwi0e8PWOYGB0Gs3e92vEicTJjD7EuxU2XgQKTGM8iMO/cXFxC3BL 5pv0nhLSK7kLWdlybjxfW6PJj9/N3kXHPR0iGfUWuOxSDUr+AP0ksx2FwjP3X71GDu6o nkBd/oxjhTYQNHZJFo3xbs0EvvmfsvcnFvtyRSg0/a3lJKDF6U6nSJmMIG+0MaG/k0ey Ymvw== 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=WX/N0Xkopkrral2X+j105oIddx7c/pPVw/iQZTrYB/Y=; b=Iz4MAbSoQEMyBvOFLFilIcun0x66H821BBub4KFH9Oqkzz3idBBEZrv3dFAnCLaeiY B6pf4M6Ao2FasjnieyVcf8nuaRtOxJqUkBCcHGM50lsVXttxmy2aZ/LCnHQ1O19xcnpp OBEcHpousDWp6ioXJrATzQ97btxvJ/6z6HpmIsQjbung65k4n0qScK/iRV2kCE/GJM/r TSNxI+yD+GYwQ0NVCZDlkcK19ysXQ6caE02FOtwzijhVnLIA8GXRwU78AS0EPBV5WKep YvjVraRMFOBKZZhzprsj9YISJIqgTcObXvYMkmT1PanbNPYbhJ3nrgXh5h5Gj6EdHiKM 5dDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="Iu/zMJnH"; 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 b16si6305696edr.270.2020.05.11.09.09.00; Mon, 11 May 2020 09:09:39 -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="Iu/zMJnH"; 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 S1730640AbgEKQGv (ORCPT + 99 others); Mon, 11 May 2020 12:06:51 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:38795 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1730628AbgEKQGu (ORCPT ); Mon, 11 May 2020 12:06:50 -0400 X-UUID: be0d562ba9e04a708f1e26e6494e878b-20200512 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=WX/N0Xkopkrral2X+j105oIddx7c/pPVw/iQZTrYB/Y=; b=Iu/zMJnHcetSCvyQYKXGwMY+RxAWbjnzdiNJyafZ9XUmbgU9V/WosSeRyDXKHY8iSciznAMJ6dZxeu5MGr9IJ8wMHbLPaDMrXL9/awr/6000N8rwXvGUaGbh9kNrWWsMTKbgbr8uEM7vkyDC1PKiOAzxe8lVwAmbGCejRcCLc30=; X-UUID: be0d562ba9e04a708f1e26e6494e878b-20200512 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1688528706; Tue, 12 May 2020 00:06:43 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs06n1.mediatek.inc (172.21.101.129) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 00:06:42 +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; Tue, 12 May 2020 00:06:40 +0800 From: Ryder Lee To: Felix Fietkau , Lorenzo Bianconi CC: Shayne Chen , Sean Wang , , , Ryder Lee Subject: [PATCH 2/7] mt76: mt7915: add Tx beamformer support Date: Tue, 12 May 2020 00:06:33 +0800 Message-ID: <494848b613d37aefed86e76469c6aa12edf9fe9c.1589212457.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 RW5hYmxlIFR4QkYgbW9kdWxlcyBhbmQgdHJpZ2dlciBzb3VuZGluZyBwcm9jZXNzIHRvIHN1cHBv cnQgVHggYmVhbWZvcm1lci4NCg0KU2lnbmVkLW9mZi1ieTogUnlkZXIgTGVlIDxyeWRlci5sZWVA bWVkaWF0ZWsuY29tPg0KVGVzdGVkLWJ5OiBFdmVseW4gVHNhaSA8ZXZlbHluLnRzYWlAbWVkaWF0 ZWsuY29tDQotLS0NCiAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQu YyAgfCAgMjAgKw0KIC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5j ICB8ICAgOSArLQ0KIC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMg ICB8IDM1OCArKysrKysrKysrKysrKysrKy0NCiAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L21jdS5oICAgfCAgNzggKystLQ0KIC4uLi93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210NzkxNS9tdDc5MTUuaCAgICB8ICAgNCArDQogNSBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0 aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9t ZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMNCmluZGV4IDdkNTk1NzEyMTZlMy4uMzcyMWJkNjMy YjRkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MTUvaW5pdC5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzkx NS9pbml0LmMNCkBAIC01Nyw2ICs1NywyNSBAQCBzdGF0aWMgdm9pZCBtdDc5MTVfbWFjX2luaXQo c3RydWN0IG10NzkxNV9kZXYgKmRldikNCiAJbXQ3OTE1X21jdV9zZXRfcnRzX3RocmVzaCgmZGV2 LT5waHksIDB4OTJiKTsNCiB9DQogDQorc3RhdGljIGludCBtdDc5MTVfdHhiZl9pbml0KHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwkvKg0KKwkgKiBUT0RPOiBE QkRDICYgY2hlY2sgd2hldGhlciBpQkYgcGhhc2UgY2FsaWJyYXRpb24gZGF0YSBoYXMNCisJICog YmVlbiBzdG9yZWQgaW4gZWVwcm9tIG9mZnNldCAweDY1MX4weDdiOCwgdGhlbiB3cml0ZSBkb3du DQorCSAqIDB4MTExMSBpbnRvIDB4NjUxIGFuZCAweDY1MSB0byB0cmlnZ2VyIGlCRi4NCisJICov DQorDQorCS8qIHRyaWdnZXIgc291bmRpbmcgcGFja2V0cyAqLw0KKwlyZXQgPSBtdDc5MTVfbWN1 X3NldF90eGJmX3NvdW5kaW5nKGRldik7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0K KwkvKiBlbmFibGUgaUJGICYgZUJGICovDQorCXJldHVybiBtdDc5MTVfbWN1X3NldF90eGJmX3R5 cGUoZGV2KTsNCit9DQorDQogc3RhdGljIHZvaWQNCiBtdDc5MTVfaW5pdF90eHBvd2VyX2JhbmQo c3RydWN0IG10NzkxNV9kZXYgKmRldiwNCiAJCQkgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRf YmFuZCAqc2JhbmQpDQpAQCAtOTcsNiArMTE2LDcgQEAgc3RhdGljIHZvaWQgbXQ3OTE1X2luaXRf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogCW10NzkxNV9tY3Vfc2V0X2VlcHJvbShk ZXYpOw0KIAltdDc5MTVfbWFjX2luaXQoZGV2KTsNCiAJbXQ3OTE1X2luaXRfdHhwb3dlcihkZXYp Ow0KKwltdDc5MTVfdHhiZl9pbml0KGRldik7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXQ3OTE1X2lu aXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldikNCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMNCmluZGV4IDY5NzA0NWU2NWIyNC4u ZjNhMzczZmMwN2U1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv bXQ3Ni9tdDc5MTUvbWFpbi5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9tYWluLmMNCkBAIC00ODUsNyArNDg1LDcgQEAgaW50IG10NzkxNV9tYWNfc3Rh X2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsDQog CXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10Nzkx NV9kZXYsIG10NzYpOw0KIAlzdHJ1Y3QgbXQ3OTE1X3N0YSAqbXN0YSA9IChzdHJ1Y3QgbXQ3OTE1 X3N0YSAqKXN0YS0+ZHJ2X3ByaXY7DQogCXN0cnVjdCBtdDc5MTVfdmlmICptdmlmID0gKHN0cnVj dCBtdDc5MTVfdmlmICopdmlmLT5kcnZfcHJpdjsNCi0JaW50IGlkeDsNCisJaW50IHJldCwgaWR4 Ow0KIA0KIAlpZHggPSBtdDc2X3djaWRfYWxsb2MoZGV2LT5tdDc2LndjaWRfbWFzaywgTVQ3OTE1 X1dUQkxfU1RBIC0gMSk7DQogCWlmIChpZHggPCAwKQ0KQEAgLTUwNCw5ICs1MDQsMTEgQEAgaW50 IG10NzkxNV9tYWNfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAy MTFfdmlmICp2aWYsDQogCW10NzkxNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpZHgsDQogCQkJICAg ICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7DQogDQotCW10NzkxNV9tY3VfYWRk X3N0YShkZXYsIHZpZiwgc3RhLCB0cnVlKTsNCisJcmV0ID0gbXQ3OTE1X21jdV9hZGRfc3RhKGRl diwgdmlmLCBzdGEsIHRydWUpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCiANCi0JcmV0 dXJuIDA7DQorCXJldHVybiBtdDc5MTVfbWN1X2FkZF9zdGFfYWR2KGRldiwgdmlmLCBzdGEsIHRy dWUpOw0KIH0NCiANCiB2b2lkIG10NzkxNV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYg Km1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsDQpAQCAtNTE1LDYgKzUxNyw3IEBAIHZv aWQgbXQ3OTE1X21hY19zdGFfcmVtb3ZlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGll ZWU4MDIxMV92aWYgKnZpZiwNCiAJc3RydWN0IG10NzkxNV9kZXYgKmRldiA9IGNvbnRhaW5lcl9v ZihtZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiwgbXQ3Nik7DQogCXN0cnVjdCBtdDc5MTVfc3RhICpt c3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3RhLT5kcnZfcHJpdjsNCiANCisJbXQ3OTE1X21j dV9hZGRfc3RhX2FkdihkZXYsIHZpZiwgc3RhLCBmYWxzZSk7DQogCW10NzkxNV9tY3VfYWRkX3N0 YShkZXYsIHZpZiwgc3RhLCBmYWxzZSk7DQogDQogCW10NzkxNV9tYWNfd3RibF91cGRhdGUoZGV2 LCBtc3RhLT53Y2lkLmlkeCwNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzkxNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L21jdS5jDQppbmRleCBjMTQ3YTAzMzI1MGEuLjU4ZDBhZGNhOGIzMSAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jDQor KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYw0KQEAg LTY2LDYgKzY2LDggQEAgc3RydWN0IG10NzkxNV9md19yZWdpb24gew0KIA0KICNkZWZpbmUgTUNV X1BBVENIX0FERFJFU1MJCTB4MjAwMDAwDQogDQorI2RlZmluZSBNVF9TVEFfQkZFUgkJCUJJVCgw KQ0KKw0KICNkZWZpbmUgRldfRkVBVFVSRV9TRVRfRU5DUllQVAkJQklUKDApDQogI2RlZmluZSBG V19GRUFUVVJFX1NFVF9LRVlfSURYCQlHRU5NQVNLKDIsIDEpDQogI2RlZmluZSBGV19GRUFUVVJF X09WRVJSSURFX0FERFIJQklUKDUpDQpAQCAtMTk3LDYgKzE5OSwyMSBAQCBtdDc5MTVfZ2V0X3Bo eV9tb2RlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYs DQogCXJldHVybiBtb2RlOw0KIH0NCiANCitzdGF0aWMgdTgNCittdDc5MTVfbWN1X2dldF9zdGFf bnNzKHUxNiBtY3NfbWFwKQ0KK3sNCisJdTggbnNzOw0KKw0KKwlmb3IgKG5zcyA9IDg7IG5zcyA+ IDA7IG5zcy0tKSB7DQorCQl1OCBuc3NfbWNzID0gKG1jc19tYXAgPj4gKDIgKiAobnNzIC0gMSkp KSAmIDM7DQorDQorCQlpZiAobnNzX21jcyAhPSBJRUVFODAyMTFfVkhUX01DU19OT1RfU1VQUE9S VEVEKQ0KKwkJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiBuc3MgLSAxOw0KK30NCisNCiBzdGF0 aWMgaW50IF9fbXQ3OTE1X21jdV9tc2dfc2VuZChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLA0KIAkJCQkgaW50IGNtZCwgaW50ICp3YWl0X3NlcSkNCiB7DQpAQCAt MTU2MSw2ICsxNTc4LDI3OSBAQCBpbnQgbXQ3OTE1X21jdV9hZGRfc21wcyhzdHJ1Y3QgbXQ3OTE1 X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLA0KIAkJCQkgICAgICAgTUNVX0VY VF9DTURfU1RBX1JFQ19VUERBVEUsIHRydWUpOw0KIH0NCiANCitzdGF0aWMgdm9pZA0KK210Nzkx NV9tY3Vfc3RhX3NvdW5kaW5nX3JhdGUoc3RydWN0IHN0YV9yZWNfYmYgKmJmKQ0KK3sNCisJYmYt PnNvdW5kaW5nX3BoeSA9IE1UX1BIWV9UWVBFX09GRE07DQorCWJmLT5uZHBfcmF0ZSA9IDA7CQkJ CS8qIG1jczAgKi8NCisJYmYtPm5kcGFfcmF0ZSA9IE1UNzkxNV9DRkVORF9SQVRFX0RFRkFVTFQ7 CS8qIG9mZG0gMjRtICovDQorCWJmLT5yZXB0X3BvbGxfcmF0ZSA9IE1UNzkxNV9DRkVORF9SQVRF X0RFRkFVTFQ7CS8qIG9mZG0gMjRtICovDQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorbXQ3OTE1X21j dV9zdGFfYmZlcl9odChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc3RhX3JlY19i ZiAqYmYpDQorew0KKwlzdHJ1Y3QgaWVlZTgwMjExX21jc19pbmZvICptY3MgPSAmc3RhLT5odF9j YXAubWNzOw0KKwl1OCBuID0gMDsNCisNCisJYmYtPnR4X21vZGUgPSBNVF9QSFlfVFlQRV9IVDsN CisJYmYtPmJmX2NhcCB8PSBNVF9JQkY7DQorDQorCWlmIChtY3MtPnR4X3BhcmFtcyAmIElFRUU4 MDIxMV9IVF9NQ1NfVFhfUlhfRElGRiAmJg0KKwkgICAgKG1jcy0+dHhfcGFyYW1zICYgSUVFRTgw MjExX0hUX01DU19UWF9ERUZJTkVEKSkNCisJCW4gPSBGSUVMRF9HRVQoSUVFRTgwMjExX0hUX01D U19UWF9NQVhfU1RSRUFNU19NQVNLLA0KKwkJCSAgICAgIG1jcy0+dHhfcGFyYW1zKTsNCisJZWxz ZSBpZiAobWNzLT5yeF9tYXNrWzNdKQ0KKwkJbiA9IDM7DQorCWVsc2UgaWYgKG1jcy0+cnhfbWFz a1syXSkNCisJCW4gPSAyOw0KKwllbHNlIGlmIChtY3MtPnJ4X21hc2tbMV0pDQorCQluID0gMTsN CisNCisJYmYtPm5jID0gbWluX3QodTgsIGJmLT5uciwgbik7DQorCWJmLT5pYmZfbmNvbCA9IGJm LT5uYzsNCisNCisJaWYgKHN0YS0+YmFuZHdpZHRoIDw9IElFRUU4MDIxMV9TVEFfUlhfQldfNDAg JiYgIWJmLT5uYykNCisJCWJmLT5pYmZfdGltZW91dCA9IDB4NDg7DQorfQ0KKw0KK3N0YXRpYyB2 b2lkDQorbXQ3OTE1X21jdV9zdGFfYmZlcl92aHQoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwg c3RydWN0IG10NzkxNV9waHkgKnBoeSwNCisJCQlzdHJ1Y3Qgc3RhX3JlY19iZiAqYmYpDQorew0K KwlzdHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICpwYyA9ICZzdGEtPnZodF9jYXA7DQorCXN0 cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZjID0gJnBoeS0+bXQ3Ni0+c2JhbmRfNWcuc2Jh bmQudmh0X2NhcDsNCisJdTggYmZlZV9uciwgYmZlcl9uciwgbiwgdHhfYW50ID0gaHdlaWdodDgo cGh5LT5jaGFpbm1hc2spIC0gMTsNCisJdTE2IG1jc19tYXA7DQorDQorCWJmLT50eF9tb2RlID0g TVRfUEhZX1RZUEVfVkhUOw0KKwliZi0+YmZfY2FwIHw9IE1UX0VCRjsNCisNCisJbXQ3OTE1X21j dV9zdGFfc291bmRpbmdfcmF0ZShiZik7DQorDQorCWJmZWVfbnIgPSBGSUVMRF9HRVQoSUVFRTgw MjExX1ZIVF9DQVBfQkVBTUZPUk1FRV9TVFNfTUFTSywNCisJCQkgICAgcGMtPmNhcCk7DQorCWJm ZXJfbnIgPSBGSUVMRF9HRVQoSUVFRTgwMjExX1ZIVF9DQVBfU09VTkRJTkdfRElNRU5TSU9OU19N QVNLLA0KKwkJCSAgICB2Yy0+Y2FwKTsNCisJbWNzX21hcCA9IGxlMTZfdG9fY3B1KHBjLT52aHRf bWNzLnJ4X21jc19tYXApOw0KKw0KKwluID0gbWluX3QodTgsIGJmZXJfbnIsIGJmZWVfbnIpOw0K KwliZi0+bnIgPSBtaW5fdCh1OCwgbiwgdHhfYW50KTsNCisJbiA9IG10NzkxNV9tY3VfZ2V0X3N0 YV9uc3MobWNzX21hcCk7DQorDQorCWJmLT5uYyA9IG1pbl90KHU4LCBuLCBiZi0+bnIpOw0KKwli Zi0+aWJmX25jb2wgPSBiZi0+bmM7DQorDQorCS8qIGZvcmNlIG5yIGZyb20gNCB0byAyICovDQor CWlmIChzdGEtPmJhbmR3aWR0aCA9PSBJRUVFODAyMTFfU1RBX1JYX0JXXzE2MCkNCisJCWJmLT5u ciA9IDE7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorbXQ3OTE1X21jdV9zdGFfYmZlcl9oZShzdHJ1 Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLA0KKwkJICAg ICAgIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIHN0cnVjdCBzdGFfcmVjX2JmICpiZikNCit7DQor CXN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqcGMgPSAmc3RhLT5oZV9jYXA7DQorCXN0cnVj dCBpZWVlODAyMTFfaGVfY2FwX2VsZW0gKnBlID0gJnBjLT5oZV9jYXBfZWxlbTsNCisJY29uc3Qg c3RydWN0IGllZWU4MDIxMV9oZV9jYXBfZWxlbSAqdmU7DQorCWNvbnN0IHN0cnVjdCBpZWVlODAy MTFfc3RhX2hlX2NhcCAqdmM7DQorCXU4IGJmZWVfbnIsIGJmZXJfbnIsIG5zc19tY3M7DQorCXUx NiBtY3NfbWFwOw0KKw0KKwl2YyA9IG10NzkxNV9nZXRfaGVfcGh5X2NhcChwaHksIHZpZik7DQor CXZlID0gJnZjLT5oZV9jYXBfZWxlbTsNCisNCisJYmYtPnR4X21vZGUgPSBNVF9QSFlfVFlQRV9I RV9TVTsNCisJYmYtPmJmX2NhcCB8PSBNVF9FQkY7DQorDQorCW10NzkxNV9tY3Vfc3RhX3NvdW5k aW5nX3JhdGUoYmYpOw0KKw0KKwliZi0+dHJpZ2dlcl9zdSA9IEhFX1BIWShDQVA2X1RSSUdfU1Vf QkVBTUZPUk1FUl9GQiwNCisJCQkJcGUtPnBoeV9jYXBfaW5mb1s2XSk7DQorCWJmLT50cmlnZ2Vy X211ID0gSEVfUEhZKENBUDZfVFJJR19NVV9CRUFNRk9STUVSX0ZCLA0KKwkJCQlwZS0+cGh5X2Nh cF9pbmZvWzZdKTsNCisJYmZlcl9uciA9IEhFX1BIWShDQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9E SU1fVU5ERVJfODBNSFpfTUFTSywNCisJCQkgdmUtPnBoeV9jYXBfaW5mb1s1XSk7DQorCWJmZWVf bnIgPSBIRV9QSFkoQ0FQNF9CRUFNRk9STUVFX01BWF9TVFNfVU5ERVJfODBNSFpfTUFTSywNCisJ CQkgcGUtPnBoeV9jYXBfaW5mb1s0XSk7DQorDQorCW1jc19tYXAgPSBsZTE2X3RvX2NwdShwYy0+ aGVfbWNzX25zc19zdXBwLnR4X21jc184MCk7DQorCW5zc19tY3MgPSBtdDc5MTVfbWN1X2dldF9z dGFfbnNzKG1jc19tYXApOw0KKw0KKwliZi0+bnIgPSBtaW5fdCh1OCwgYmZlcl9uciwgYmZlZV9u cik7DQorCWJmLT5uYyA9IG1pbl90KHU4LCBuc3NfbWNzLCBiZi0+bnIpOw0KKwliZi0+aWJmX25j b2wgPSBiZi0+bmM7DQorDQorCWlmIChzdGEtPmJhbmR3aWR0aCAhPSBJRUVFODAyMTFfU1RBX1JY X0JXXzE2MCkNCisJCXJldHVybjsNCisNCisJLyogZ28gb3ZlciBmb3IgMTYwTUh6IGFuZCA4MHA4 MCAqLw0KKwlpZiAocGUtPnBoeV9jYXBfaW5mb1swXSAmDQorCSAgICBJRUVFODAyMTFfSEVfUEhZ X0NBUDBfQ0hBTk5FTF9XSURUSF9TRVRfMTYwTUhaX0lOXzVHKSB7DQorCQltY3NfbWFwID0gbGUx Nl90b19jcHUocGMtPmhlX21jc19uc3Nfc3VwcC5yeF9tY3NfMTYwKTsNCisJCW5zc19tY3MgPSBt dDc5MTVfbWN1X2dldF9zdGFfbnNzKG1jc19tYXApOw0KKw0KKwkJYmYtPm5jX2J3MTYwID0gbnNz X21jczsNCisJfQ0KKw0KKwlpZiAocGUtPnBoeV9jYXBfaW5mb1swXSAmDQorCSAgICBJRUVFODAy MTFfSEVfUEhZX0NBUDBfQ0hBTk5FTF9XSURUSF9TRVRfODBQTFVTODBfTUhaX0lOXzVHKSB7DQor CQltY3NfbWFwID0gbGUxNl90b19jcHUocGMtPmhlX21jc19uc3Nfc3VwcC5yeF9tY3NfODBwODAp Ow0KKwkJbnNzX21jcyA9IG10NzkxNV9tY3VfZ2V0X3N0YV9uc3MobWNzX21hcCk7DQorDQorCQlp ZiAoYmYtPm5jX2J3MTYwKQ0KKwkJCWJmLT5uY19idzE2MCA9IG1pbl90KHU4LCBiZi0+bmNfYncx NjAsIG5zc19tY3MpOw0KKwkJZWxzZQ0KKwkJCWJmLT5uY19idzE2MCA9IG5zc19tY3M7DQorCX0N CisNCisJYmZlcl9uciA9IEhFX1BIWShDQVA1X0JFQU1GT1JNRUVfTlVNX1NORF9ESU1fQUJPVkVf ODBNSFpfTUFTSywNCisJCQkgdmUtPnBoeV9jYXBfaW5mb1s1XSk7DQorCWJmZWVfbnIgPSBIRV9Q SFkoQ0FQNF9CRUFNRk9STUVFX01BWF9TVFNfQUJPVkVfODBNSFpfTUFTSywNCisJCQkgcGUtPnBo eV9jYXBfaW5mb1s0XSk7DQorDQorCWJmLT5ucl9idzE2MCA9IG1pbl90KGludCwgYmZlcl9uciwg YmZlZV9ucik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorbXQ3OTE1X21jdV9zdGFfYmZlcl90bHYo c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCisJCQlzdHJ1 Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LA0KKwkJCWJvb2wg ZW5hYmxlKQ0KK3sNCisJc3RydWN0IHN0YV9yZWNfYmYgKmJmOw0KKwlzdHJ1Y3QgdGx2ICp0bHY7 DQorCWludCB0eF9hbnQgPSBod2VpZ2h0OChwaHktPmNoYWlubWFzaykgLSAxOw0KKwljb25zdCB1 OCBtYXRyaXhbNF1bNF0gPSB7DQorCQl7MCwgMCwgMCwgMH0sDQorCQl7MSwgMSwgMCwgMH0sCS8q IDJ4MSwgMngyLCAyeDMsIDJ4NCAqLw0KKwkJezIsIDQsIDQsIDB9LAkvKiAzeDEsIDN4MiwgM3gz LCAzeDQgKi8NCisJCXszLCA1LCA2LCAwfQkvKiA0eDEsIDR4MiwgNHgzLCA0eDQgKi8NCisJfTsN CisNCisjZGVmaW5lIE1UX0JGRVJfRlJFRQkJY3B1X3RvX2xlMTYoR0VOTUFTSygxNSwgMCkpDQor DQorCXRsdiA9IG10NzkxNV9tY3VfYWRkX3Rsdihza2IsIFNUQV9SRUNfQkYsIHNpemVvZigqYmYp KTsNCisJYmYgPSAoc3RydWN0IHN0YV9yZWNfYmYgKil0bHY7DQorDQorCWlmICghZW5hYmxlKSB7 DQorCQliZi0+cGZtdSA9IE1UX0JGRVJfRlJFRTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwliZi0+ YncgPSBzdGEtPmJhbmR3aWR0aDsNCisJYmYtPmliZl9kYncgPSBzdGEtPmJhbmR3aWR0aDsNCisJ YmYtPmliZl9ucm93ID0gdHhfYW50Ow0KKwliZi0+aWJmX3RpbWVvdXQgPSAweDE4Ow0KKw0KKwlp ZiAoc3RhLT5oZV9jYXAuaGFzX2hlKQ0KKwkJbXQ3OTE1X21jdV9zdGFfYmZlcl9oZShzdGEsIHZp ZiwgcGh5LCBiZik7DQorCWVsc2UgaWYgKHN0YS0+dmh0X2NhcC52aHRfc3VwcG9ydGVkKQ0KKwkJ bXQ3OTE1X21jdV9zdGFfYmZlcl92aHQoc3RhLCBwaHksIGJmKTsNCisJZWxzZSBpZiAoc3RhLT5o dF9jYXAuaHRfc3VwcG9ydGVkKQ0KKwkJbXQ3OTE1X21jdV9zdGFfYmZlcl9odChzdGEsIGJmKTsN CisNCisJaWYgKGJmLT5iZl9jYXAgJiBNVF9FQkYgJiYgYmYtPm5yICE9IHR4X2FudCkNCisJCWJm LT5tZW1fMjBtID0gbWF0cml4W3R4X2FudF1bYmYtPm5jXTsNCisJZWxzZQ0KKwkJYmYtPm1lbV8y MG0gPSBtYXRyaXhbYmYtPm5yXVtiZi0+bmNdOw0KKw0KKwlzd2l0Y2ggKHN0YS0+YmFuZHdpZHRo KSB7DQorCWNhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18xNjA6DQorCWNhc2UgSUVFRTgwMjExX1NU QV9SWF9CV184MDoNCisJCWJmLT5tZW1fdG90YWwgPSBiZi0+bWVtXzIwbSAqIDI7DQorCQlicmVh azsNCisJY2FzZSBJRUVFODAyMTFfU1RBX1JYX0JXXzQwOg0KKwkJYmYtPm1lbV90b3RhbCA9IGJm LT5tZW1fMjBtOw0KKwkJYnJlYWs7DQorCWNhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18yMDoNCisJ ZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB1OA0KK210NzkxNV9tY3Vf c3RhX3R4YmZfdHlwZShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3Zp ZiAqdmlmLA0KKwkJCSBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKQ0KK3sNCisJc3RydWN0IG10 NzkxNV9zdGEgKm1zdGE7DQorCXU4IHR5cGUgPSAwOw0KKw0KKwlpZiAodmlmLT50eXBlICE9IE5M ODAyMTFfSUZUWVBFX1NUQVRJT04gJiYNCisJICAgIHZpZi0+dHlwZSAhPSBOTDgwMjExX0lGVFlQ RV9BUCkNCisJCXJldHVybiAwOw0KKw0KKwltc3RhID0gKHN0cnVjdCBtdDc5MTVfc3RhICopc3Rh LT5kcnZfcHJpdjsNCisNCisJaWYgKHN0YS0+aGVfY2FwLmhhc19oZSkgew0KKwkJc3RydWN0IGll ZWU4MDIxMV9oZV9jYXBfZWxlbSAqcGU7DQorCQljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2hlX2Nh cF9lbGVtICp2ZTsNCisJCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3RhX2hlX2NhcCAqdmM7DQor DQorCQlwZSA9ICZzdGEtPmhlX2NhcC5oZV9jYXBfZWxlbTsNCisJCXZjID0gbXQ3OTE1X2dldF9o ZV9waHlfY2FwKHBoeSwgdmlmKTsNCisJCXZlID0gJnZjLT5oZV9jYXBfZWxlbTsNCisNCisJCWlm ICgoSEVfUEhZKENBUDNfU1VfQkVBTUZPUk1FUiwgdmUtPnBoeV9jYXBfaW5mb1szXSkgfHwNCisJ CSAgICAgSEVfUEhZKENBUDRfTVVfQkVBTUZPUk1FUiwgdmUtPnBoeV9jYXBfaW5mb1s0XSkpICYm DQorCQkgICAgSEVfUEhZKENBUDRfU1VfQkVBTUZPUk1FRSwgcGUtPnBoeV9jYXBfaW5mb1s0XSkp DQorCQkJdHlwZSB8PSBNVF9TVEFfQkZFUjsNCisJfSBlbHNlIGlmIChzdGEtPnZodF9jYXAudmh0 X3N1cHBvcnRlZCkgew0KKwkJc3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqcGM7DQorCQlz dHJ1Y3QgaWVlZTgwMjExX3N0YV92aHRfY2FwICp2YzsNCisJCXUzMiBjciwgY2U7DQorDQorCQlw YyA9ICZzdGEtPnZodF9jYXA7DQorCQl2YyA9ICZwaHktPm10NzYtPnNiYW5kXzVnLnNiYW5kLnZo dF9jYXA7DQorCQljciA9IElFRUU4MDIxMV9WSFRfQ0FQX1NVX0JFQU1GT1JNRVJfQ0FQQUJMRSB8 DQorCQkgICAgIElFRUU4MDIxMV9WSFRfQ0FQX01VX0JFQU1GT1JNRVJfQ0FQQUJMRTsNCisJCWNl ID0gSUVFRTgwMjExX1ZIVF9DQVBfU1VfQkVBTUZPUk1FRV9DQVBBQkxFIHwNCisJCSAgICAgSUVF RTgwMjExX1ZIVF9DQVBfTVVfQkVBTUZPUk1FRV9DQVBBQkxFOw0KKw0KKwkJaWYgKCh2Yy0+Y2Fw ICYgY3IpICYmIChwYy0+Y2FwICYgY2UpKQ0KKwkJCXR5cGUgfD0gTVRfU1RBX0JGRVI7DQorCX0g ZWxzZSBpZiAoc3RhLT5odF9jYXAuaHRfc3VwcG9ydGVkKSB7DQorCQkvKiBUT0RPOiBpQkYgKi8N CisJfQ0KKw0KKwlyZXR1cm4gdHlwZTsNCit9DQorDQorc3RhdGljIGludA0KK210NzkxNV9tY3Vf YWRkX3R4YmYoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZp ZiwNCisJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIGVuYWJsZSkNCit7DQor CXN0cnVjdCBtdDc5MTVfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MTVfdmlmICopdmlmLT5kcnZf cHJpdjsNCisJc3RydWN0IG10NzkxNV9zdGEgKm1zdGEgPSAoc3RydWN0IG10NzkxNV9zdGEgKilz dGEtPmRydl9wcml2Ow0KKwlzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5Ow0KKwlzdHJ1Y3Qgc2tfYnVm ZiAqc2tiOw0KKwlpbnQgciwgbGVuOw0KKwl1OCB0eXBlOw0KKw0KKwlwaHkgPSBtdmlmLT5iYW5k X2lkeCA/IG10NzkxNV9leHRfcGh5KGRldikgOiAmZGV2LT5waHk7DQorDQorCXR5cGUgPSBtdDc5 MTVfbWN1X3N0YV90eGJmX3R5cGUocGh5LCB2aWYsIHN0YSk7DQorDQorCS8qIG11c3Qga2VlcCBl YWNoIHRhZyBpbmRlcGVuZGVudCAqLw0KKw0KKwkvKiBzdGFyZWMgYmYgKi8NCisJaWYgKHR5cGUg JiBNVF9TVEFfQkZFUikgew0KKwkJbGVuID0gc2l6ZW9mKHN0cnVjdCBzdGFfcmVxX2hkcikgKyBz aXplb2Yoc3RydWN0IHN0YV9yZWNfYmYpOw0KKw0KKwkJc2tiID0gbXQ3OTE1X21jdV9hbGxvY19z dGFfcmVxKGRldiwgbXZpZiwgbXN0YSwgbGVuKTsNCisJCWlmIChJU19FUlIoc2tiKSkNCisJCQly ZXR1cm4gUFRSX0VSUihza2IpOw0KKw0KKwkJbXQ3OTE1X21jdV9zdGFfYmZlcl90bHYoc2tiLCBz dGEsIHZpZiwgcGh5LCBlbmFibGUpOw0KKw0KKwkJciA9IF9fbXQ3Nl9tY3Vfc2tiX3NlbmRfbXNn KCZkZXYtPm10NzYsIHNrYiwNCisJCQkJCSAgICBNQ1VfRVhUX0NNRF9TVEFfUkVDX1VQREFURSwg dHJ1ZSk7DQorCQlpZiAocikNCisJCQlyZXR1cm4gcjsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQogc3RhdGljIHZvaWQNCiBtdDc5MTVfbWN1X3N0YV9yYXRlX2N0cmxfdGx2KHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQogCQkJICAgICBzdHJ1Y3QgaWVl ZTgwMjExX3ZpZiAqdmlmLA0KQEAgLTE3MjQsNiArMjAxNCwyNSBAQCBpbnQgbXQ3OTE1X21jdV9h ZGRfcmF0ZV9jdHJsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlm ICp2aWYsDQogCQkJCSAgICAgICBNQ1VfRVhUX0NNRF9TVEFfUkVDX1VQREFURSwgdHJ1ZSk7DQog fQ0KIA0KK2ludCBtdDc5MTVfbWN1X2FkZF9zdGFfYWR2KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYs IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsDQorCQkJICAgc3RydWN0IGllZWU4MDIxMV9zdGEg KnN0YSwgYm9vbCBlbmFibGUpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwlpZiAoIXN0YSkNCisJCXJl dHVybiAwOw0KKw0KKwkvKiBtdXN0IGtlZXAgdGhlIG9yZGVyICovDQorCXJldCA9IG10NzkxNV9t Y3VfYWRkX3R4YmYoZGV2LCB2aWYsIHN0YSwgZW5hYmxlKTsNCisJaWYgKHJldCkNCisJCXJldHVy biByZXQ7DQorDQorCWlmIChlbmFibGUpDQorCQlyZXR1cm4gbXQ3OTE1X21jdV9hZGRfcmF0ZV9j dHJsKGRldiwgdmlmLCBzdGEpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogaW50IG10NzkxNV9t Y3VfYWRkX3N0YShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAq dmlmLA0KIAkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgZW5hYmxlKQ0K IHsNCkBAIC0xNzMyLDcgKzIwNDEsNiBAQCBpbnQgbXQ3OTE1X21jdV9hZGRfc3RhKHN0cnVjdCBt dDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsDQogCXN0cnVjdCBtdDc5 MTVfc3RhICptc3RhOw0KIAlzdHJ1Y3QgdGx2ICpzdGFfd3RibDsNCiAJc3RydWN0IHNrX2J1ZmYg KnNrYjsNCi0JaW50IHJldDsNCiANCiAJbXN0YSA9IHN0YSA/IChzdHJ1Y3QgbXQ3OTE1X3N0YSAq KXN0YS0+ZHJ2X3ByaXYgOiAmbXZpZi0+c3RhOw0KIA0KQEAgLTE3NTUsMTUgKzIwNjMsOCBAQCBp bnQgbXQ3OTE1X21jdV9hZGRfc3RhKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVl ODAyMTFfdmlmICp2aWYsDQogCQkJbXQ3OTE1X21jdV93dGJsX2h0X3Rsdihza2IsIHN0YSwgc3Rh X3d0YmwsIHd0YmxfaGRyKTsNCiAJfQ0KIA0KLQlyZXQgPSBfX210NzZfbWN1X3NrYl9zZW5kX21z ZygmZGV2LT5tdDc2LCBza2IsDQotCQkJCSAgICAgIE1DVV9FWFRfQ01EX1NUQV9SRUNfVVBEQVRF LCB0cnVlKTsNCi0JaWYgKHJldCkNCi0JCXJldHVybiByZXQ7DQotDQotCWlmIChlbmFibGUgJiYg c3RhKQ0KLQkJcmV0dXJuIG10NzkxNV9tY3VfYWRkX3JhdGVfY3RybChkZXYsIHZpZiwgc3RhKTsN Ci0NCi0JcmV0dXJuIDA7DQorCXJldHVybiBfX210NzZfbWN1X3NrYl9zZW5kX21zZygmZGV2LT5t dDc2LCBza2IsDQorCQkJCSAgICAgICBNQ1VfRVhUX0NNRF9TVEFfUkVDX1VQREFURSwgdHJ1ZSk7 DQogfQ0KIA0KIGludCBtdDc5MTVfbWN1X3NldF9maXhlZF9yYXRlKHN0cnVjdCBtdDc5MTVfZGV2 ICpkZXYsDQpAQCAtMjc2NywzICszMDY4LDQwIEBAIGludCBtdDc5MTVfbWN1X3NldF9zZXIoc3Ry dWN0IG10NzkxNV9kZXYgKmRldiwgdTggYWN0aW9uLCB1OCBzZXQsIHU4IGJhbmQpDQogCXJldHVy biBfX210NzZfbWN1X3NlbmRfbXNnKCZkZXYtPm10NzYsIE1DVV9FWFRfQ01EX1NFVF9TRVJfVFJJ R0dFUiwNCiAJCQkJICAgJnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTsNCiB9DQorDQoraW50IG10 NzkxNV9tY3Vfc2V0X3R4YmZfdHlwZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KK3sNCisjZGVm aW5lIE1UX0JGX1RZUEVfVVBEQVRFCQkyMA0KKwlzdHJ1Y3Qgew0KKwkJdTggYWN0aW9uOw0KKwkJ Ym9vbCBlYmY7DQorCQlib29sIGliZjsNCisJCXU4IHJzdjsNCisJfSBfX3BhY2tlZCByZXEgPSB7 DQorCQkuYWN0aW9uID0gTVRfQkZfVFlQRV9VUERBVEUsDQorCQkuZWJmID0gdHJ1ZSwNCisJCS5p YmYgPSBmYWxzZSwNCisJfTsNCisNCisJcmV0dXJuIF9fbXQ3Nl9tY3Vfc2VuZF9tc2coJmRldi0+ bXQ3NiwgTUNVX0VYVF9DTURfVFhCRl9BQ1RJT04sDQorCQkJCSAgICZyZXEsIHNpemVvZihyZXEp LCB0cnVlKTsNCit9DQorDQoraW50IG10NzkxNV9tY3Vfc2V0X3R4YmZfc291bmRpbmcoc3RydWN0 IG10NzkxNV9kZXYgKmRldikNCit7DQorI2RlZmluZSBNVF9CRl9QUk9DRVNTSU5HCQk0DQorCXN0 cnVjdCB7DQorCQl1OCBhY3Rpb247DQorCQl1OCBzbmRfbW9kZTsNCisJCXU4IHN0YV9udW07DQor CQl1OCByc3Y7DQorCQl1OCB3bGFuX2lkeFs0XTsNCisJCV9fbGUzMiBzbmRfcGVyaW9kOwkvKiBt cyAqLw0KKwl9IF9fcGFja2VkIHJlcSA9IHsNCisJCS5hY3Rpb24gPSB0cnVlLA0KKwkJLnNuZF9t b2RlID0gTVRfQkZfUFJPQ0VTU0lORywNCisJfTsNCisNCisJcmV0dXJuIF9fbXQ3Nl9tY3Vfc2Vu ZF9tc2coJmRldi0+bXQ3NiwgTUNVX0VYVF9DTURfVFhCRl9BQ1RJT04sDQorCQkJCSAgICZyZXEs IHNpemVvZihyZXEpLCB0cnVlKTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzkxNS9tY3UuaA0KaW5kZXggZjY4ZDIwOTRhYzZmLi41M2QxZTFmMGNlYTkg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9t Y3UuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1 LmgNCkBAIC0xOTQsNiArMTk0LDcgQEAgZW51bSB7DQogCU1DVV9FWFRfQ01EX1BNX1NUQVRFX0NU UkwgPSAweDA3LA0KIAlNQ1VfRVhUX0NNRF9DSEFOTkVMX1NXSVRDSCA9IDB4MDgsDQogCU1DVV9F WFRfQ01EX0ZXX0xPR18yX0hPU1QgPSAweDEzLA0KKwlNQ1VfRVhUX0NNRF9UWEJGX0FDVElPTiA9 IDB4MWUsDQogCU1DVV9FWFRfQ01EX0VGVVNFX0JVRkZFUl9NT0RFID0gMHgyMSwNCiAJTUNVX0VY VF9DTURfU1RBX1JFQ19VUERBVEUgPSAweDI1LA0KIAlNQ1VfRVhUX0NNRF9CU1NfSU5GT19VUERB VEUgPSAweDI2LA0KQEAgLTU3MSwxOCArNTcyLDYgQEAgc3RydWN0IHd0YmxfYmEgew0KIAl1OCBy c3YxWzRdOw0KIH0gX19wYWNrZWQ7DQogDQotc3RydWN0IHd0YmxfYmYgew0KLQlfX2xlMTYgdGFn Ow0KLQlfX2xlMTYgbGVuOw0KLQl1OCBpYmY7DQotCXU4IGViZjsNCi0JdTggaWJmX3ZodDsNCi0J dTggZWJmX3ZodDsNCi0JdTggZ2lkOw0KLQl1OCBwZm11X2lkeDsNCi0JdTggcnN2WzJdOw0KLX0g X19wYWNrZWQ7DQotDQogc3RydWN0IHd0Ymxfc21wcyB7DQogCV9fbGUxNiB0YWc7DQogCV9fbGUx NiBsZW47DQpAQCAtNTkwLDEzICs1NzksNiBAQCBzdHJ1Y3Qgd3RibF9zbXBzIHsNCiAJdTggcnN2 WzNdOw0KIH0gX19wYWNrZWQ7DQogDQotc3RydWN0IHd0Ymxfc3BlIHsNCi0JX19sZTE2IHRhZzsN Ci0JX19sZTE2IGxlbjsNCi0JdTggc3BlX2lkeDsNCi0JdTggcnN2WzNdOw0KLX0gX19wYWNrZWQ7 DQotDQogZW51bSB7DQogCVdUQkxfR0VORVJJQywNCiAJV1RCTF9SWCwNCkBAIC04MzQsNiArODE2 LDU1IEBAIHN0cnVjdCBzdGFfcmVjX3JhX2ZpeGVkIHsNCiAjZGVmaW5lIFJBVEVfQ0ZHX0xEUEMJ CQlHRU5NQVNLKDIzLCAyMCkNCiAjZGVmaW5lIFJBVEVfQ0ZHX1BIWV9UWVBFCQlHRU5NQVNLKDI3 LCAyNCkNCiANCitzdHJ1Y3Qgc3RhX3JlY19iZiB7DQorCV9fbGUxNiB0YWc7DQorCV9fbGUxNiBs ZW47DQorDQorCV9fbGUxNiBwZm11OwkJLyogMHhmZmZmOiBubyBhY2Nlc3MgcmlnaHQgZm9yIFBG TVUgKi8NCisJYm9vbCBzdV9tdTsJCS8qIDA6IFNVLCAxOiBNVSAqLw0KKwl1OCBiZl9jYXA7CQkv KiAwOiBpQkYsIDE6IGVCRiAqLw0KKwl1OCBzb3VuZGluZ19waHk7CS8qIDA6IGxlZ2FjeSwgMTog T0ZETSwgMjogSFQsIDQ6IFZIVCAqLw0KKwl1OCBuZHBhX3JhdGU7DQorCXU4IG5kcF9yYXRlOw0K Kwl1OCByZXB0X3BvbGxfcmF0ZTsNCisJdTggdHhfbW9kZTsJCS8qIDA6IGxlZ2FjeSwgMTogT0ZE TSwgMjogSFQsIDQ6IFZIVCAuLi4gKi8NCisJdTggbmM7DQorCXU4IG5yOw0KKwl1OCBidzsJCQkv KiAwOiAyME0sIDE6IDQwTSwgMjogODBNLCAzOiAxNjBNICovDQorDQorCXU4IG1lbV90b3RhbDsN CisJdTggbWVtXzIwbTsNCisJc3RydWN0IHsNCisJCXU4IHJvdzsNCisJCXU4IGNvbDogNiwgcm93 X21zYjogMjsNCisJfSBtZW1bNF07DQorDQorCV9fbGUxNiBzbWFydF9hbnQ7DQorCXU4IHNlX2lk eDsNCisJdTggYXV0b19zb3VuZGluZzsJLyogYjc6IGxvdyB0cmFmZmljIGluZGljYXRvcg0KKwkJ CQkgKiBiNjogU3RvcCBzb3VuZGluZyBmb3IgdGhpcyBlbnRyeQ0KKwkJCQkgKiBiNSB+IGIwOiBw b3N0cG9uZSBzb3VuZGluZw0KKwkJCQkgKi8NCisJdTggaWJmX3RpbWVvdXQ7DQorCXU4IGliZl9k Ync7DQorCXU4IGliZl9uY29sOw0KKwl1OCBpYmZfbnJvdzsNCisJdTggbnJfYncxNjA7DQorCXU4 IG5jX2J3MTYwOw0KKwl1OCBydV9zdGFydF9pZHg7DQorCXU4IHJ1X2VuZF9pZHg7DQorDQorCWJv b2wgdHJpZ2dlcl9zdTsNCisJYm9vbCB0cmlnZ2VyX211Ow0KKwlib29sIG5nMTZfc3U7DQorCWJv b2wgbmcxNl9tdTsNCisJYm9vbCBjb2RlYm9vazQyX3N1Ow0KKwlib29sIGNvZGVib29rNzVfbXU7 DQorDQorCXU4IGhlX2x0ZjsNCisJdTggcnN2WzJdOw0KK30gX19wYWNrZWQ7DQorDQogZW51bSB7 DQogCVNUQV9SRUNfQkFTSUMsDQogCVNUQV9SRUNfUkEsDQpAQCAtODkwLDE1ICs5MjEsMTggQEAg ZW51bSB7DQogCVRIRVJNQUxfU0VOU09SX1RBU0tfQ1RSTCwNCiB9Ow0KIA0KK2VudW0gew0KKwlN VF9FQkYgPSBCSVQoMCksCS8qIGV4cGxpY2l0IGJlYW1mb3JtaW5nICovDQorCU1UX0lCRiA9IEJJ VCgxKQkJLyogaW1wbGljaXQgYmVhbWZvcm1pbmcgKi8NCit9Ow0KKw0KICNkZWZpbmUgTVQ3OTE1 X1dUQkxfVVBEQVRFX01BWF9TSVpFCShzaXplb2Yoc3RydWN0IHd0YmxfcmVxX2hkcikgKwlcDQog CQkJCQkgc2l6ZW9mKHN0cnVjdCB3dGJsX2dlbmVyaWMpICsJXA0KIAkJCQkJIHNpemVvZihzdHJ1 Y3Qgd3RibF9yeCkgKwlcDQogCQkJCQkgc2l6ZW9mKHN0cnVjdCB3dGJsX2h0KSArCVwNCiAJCQkJ CSBzaXplb2Yoc3RydWN0IHd0Ymxfdmh0KSArCVwNCiAJCQkJCSBzaXplb2Yoc3RydWN0IHd0Ymxf YmEpICsJXA0KLQkJCQkJIHNpemVvZihzdHJ1Y3Qgd3RibF9iZikgKwlcDQotCQkJCQkgc2l6ZW9m KHN0cnVjdCB3dGJsX3NtcHMpICsJXA0KLQkJCQkJIHNpemVvZihzdHJ1Y3Qgd3RibF9zcGUpKQ0K KwkJCQkJIHNpemVvZihzdHJ1Y3Qgd3RibF9zbXBzKSkNCiANCiAjZGVmaW5lIE1UNzkxNV9TVEFf VVBEQVRFX01BWF9TSVpFCShzaXplb2Yoc3RydWN0IHN0YV9yZXFfaGRyKSArCVwNCiAJCQkJCSBz aXplb2Yoc3RydWN0IHN0YV9yZWNfYmFzaWMpICsJXA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgNCmluZGV4IDQzYzk1NmJjMDlmNS4u MGQ1YjQ0ODI5MmI1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv bXQ3Ni9tdDc5MTUvbXQ3OTE1LmgNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L210NzkxNS5oDQpAQCAtMjg2LDYgKzI4Niw4IEBAIGludCBtdDc5MTVfbWN1 X2FkZF9ic3NfaW5mbyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LA0KIAkJCSAgICBzdHJ1Y3QgaWVl ZTgwMjExX3ZpZiAqdmlmLCBpbnQgZW5hYmxlKTsNCiBpbnQgbXQ3OTE1X21jdV9hZGRfc3RhKHN0 cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsDQogCQkgICAg ICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBlbmFibGUpOw0KK2ludCBtdDc5MTVf bWN1X2FkZF9zdGFfYWR2KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFf dmlmICp2aWYsDQorCQkJICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBlbmFibGUp Ow0KIGludCBtdDc5MTVfbWN1X2FkZF90eF9iYShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LA0KIAkJ CSBzdHJ1Y3QgaWVlZTgwMjExX2FtcGR1X3BhcmFtcyAqcGFyYW1zLA0KIAkJCSBib29sIGFkZCk7 DQpAQCAtMzE1LDYgKzMxNyw4IEBAIGludCBtdDc5MTVfbWN1X3NldF9ydHNfdGhyZXNoKHN0cnVj dCBtdDc5MTVfcGh5ICpwaHksIHUzMiB2YWwpOw0KIGludCBtdDc5MTVfbWN1X3NldF9wbShzdHJ1 Y3QgbXQ3OTE1X2RldiAqZGV2LCBpbnQgYmFuZCwgaW50IGVudGVyKTsNCiBpbnQgbXQ3OTE1X21j dV9zZXRfc2t1X2VuKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGJvb2wgZW5hYmxlKTsNCiBpbnQg bXQ3OTE1X21jdV9zZXRfc2t1KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpOw0KK2ludCBtdDc5MTVf bWN1X3NldF90eGJmX3R5cGUoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQoraW50IG10NzkxNV9t Y3Vfc2V0X3R4YmZfc291bmRpbmcoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogaW50IG10Nzkx NV9tY3Vfc2V0X2ZjYzVfbHBuKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGludCB2YWwpOw0KIGlu dCBtdDc5MTVfbWN1X3NldF9wdWxzZV90aChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LA0KIAkJCSAg ICBjb25zdCBzdHJ1Y3QgbXQ3OTE1X2Rmc19wdWxzZSAqcHVsc2UpOw0KLS0gDQoyLjE4LjANCg==