Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C51D4C433FE for ; Fri, 12 Nov 2021 02:40:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AB0BA60F4B for ; Fri, 12 Nov 2021 02:40:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234510AbhKLCnG (ORCPT ); Thu, 11 Nov 2021 21:43:06 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:33846 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229908AbhKLCnE (ORCPT ); Thu, 11 Nov 2021 21:43:04 -0500 X-UUID: 57f40e69967044519c569faeb653ac67-20211112 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=jhvV0QYIAimmXVpb1XvdS3q/B/rdcRUe6J94AG4NF6k=; b=d7YNgC1O7SdpmbnbTn56XnNryt+Nh3EdWl7ND7kzcPlLwgZyfk6RA2nMZUBlT4zndPbyoYdtxgJCpMnJRclHjCtneVQndT/nJx1C5sdKKHqDJV3puTU6KGkpM0xdkQ+DzovjQQpFRycaWpYklWhNoiqPJyf9QROSzx6XC7U9FuY=; X-UUID: 57f40e69967044519c569faeb653ac67-20211112 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 362740188; Fri, 12 Nov 2021 10:40:10 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Fri, 12 Nov 2021 10:40:08 +0800 Received: from mhfsdcap04 (10.17.3.154) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 12 Nov 2021 10:40:07 +0800 Message-ID: Subject: Re: [PATCH v2 3/5] net: stmmac: dwmac-mediatek: add support for mt8195 From: Biao Huang To: AngeloGioacchino Del Regno , , Jakub Kicinski , Rob Herring CC: Matthias Brugger , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Maxime Coquelin , , , , , , , , Date: Fri, 12 Nov 2021 10:40:07 +0800 In-Reply-To: <6f894146-692b-63c7-cef6-2b26a171f006@somainline.org> References: <20211111071214.21027-1-biao.huang@mediatek.com> <20211111071214.21027-4-biao.huang@mediatek.com> <6f894146-692b-63c7-cef6-2b26a171f006@somainline.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RGVhciBBbmdlbG8sDQoJVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzfg0KDQpPbiBUaHUsIDIwMjEt MTEtMTEgYXQgMTQ6MjYgKzAxMDAsIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIHdyb3RlOg0K PiBJbCAxMS8xMS8yMSAwODoxMiwgQmlhbyBIdWFuZyBoYSBzY3JpdHRvOg0KPiA+IEFkZCBFdGhl cm5ldCBzdXBwb3J0IGZvciBNZWRpYVRlayBTb0NzIGZyb20gdGhlIG10ODE5NSBmYW1pbHkuDQo+ ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogQmlhbyBIdWFuZyA8Ymlhby5odWFuZ0BtZWRpYXRlay5j b20+DQo+ID4gLS0tDQo+ID4gICAuLi4vZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVk aWF0ZWsuYyAgfCAyNjENCj4gPiArKysrKysrKysrKysrKysrKy0NCj4gPiAgIDEgZmlsZSBjaGFu Z2VkLCAyNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+IA0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5j DQo+ID4gYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRl ay5jDQo+ID4gaW5kZXggNmVhOTcyZTk2NjY1Li5iMTI2NmI2OGUyMWYgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYw0K PiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlh dGVrLmMNCj4gPiBAQCAtNDAsNiArNDAsMzMgQEANCj4gPiAgICNkZWZpbmUgRVRIX0ZJTkVfRExZ X0dUWEMJQklUKDEpDQo+ID4gICAjZGVmaW5lIEVUSF9GSU5FX0RMWV9SWEMJQklUKDApDQo+ID4g ICANCj4gPiArLyogUGVyaSBDb25maWd1cmF0aW9uIHJlZ2lzdGVyIGZvciBtdDgxOTUgKi8NCj4g PiArI2RlZmluZSBNVDgxOTVfUEVSSV9FVEhfQ1RSTDAJCTB4RkQwDQo+ID4gKyNkZWZpbmUgTVQ4 MTk1X1JNSUlfQ0xLX1NSQ19JTlRFUk5BTAlCSVQoMjgpDQo+ID4gKyNkZWZpbmUgTVQ4MTk1X1JN SUlfQ0xLX1NSQ19SWEMJCUJJVCgyNykNCj4gPiArI2RlZmluZSBNVDgxOTVfRVRIX0lOVEZfU0VM CQlHRU5NQVNLKDI2LCAyNCkNCj4gPiArI2RlZmluZSBNVDgxOTVfUkdNSUlfVFhDX1BIQVNFX0NU UkwJQklUKDIyKQ0KPiA+ICsjZGVmaW5lIE1UODE5NV9FWFRfUEhZX01PREUJCUJJVCgyMSkNCj4g PiArI2RlZmluZSBNVDgxOTVfRExZX0dUWENfSU5WCQlCSVQoMTIpDQo+ID4gKyNkZWZpbmUgTVQ4 MTk1X0RMWV9HVFhDX0VOQUJMRQkJQklUKDUpDQo+ID4gKyNkZWZpbmUgTVQ4MTk1X0RMWV9HVFhD X1NUQUdFUwkJR0VOTUFTSyg0LCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBNVDgxOTVfUEVSSV9F VEhfQ1RSTDEJCTB4RkQ0DQo+ID4gKyNkZWZpbmUgTVQ4MTk1X0RMWV9SWENfSU5WCQlCSVQoMjUp DQo+ID4gKyNkZWZpbmUgTVQ4MTk1X0RMWV9SWENfRU5BQkxFCQlCSVQoMTgpDQo+ID4gKyNkZWZp bmUgTVQ4MTk1X0RMWV9SWENfU1RBR0VTCQlHRU5NQVNLKDE3LCAxMykNCj4gPiArI2RlZmluZSBN VDgxOTVfRExZX1RYQ19JTlYJCUJJVCgxMikNCj4gPiArI2RlZmluZSBNVDgxOTVfRExZX1RYQ19F TkFCTEUJCUJJVCg1KQ0KPiA+ICsjZGVmaW5lIE1UODE5NV9ETFlfVFhDX1NUQUdFUwkJR0VOTUFT Syg0LCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBNVDgxOTVfUEVSSV9FVEhfQ1RSTDIJCTB4RkQ4 DQo+ID4gKyNkZWZpbmUgTVQ4MTk1X0RMWV9STUlJX1JYQ19JTlYJCUJJVCgyNSkNCj4gPiArI2Rl ZmluZSBNVDgxOTVfRExZX1JNSUlfUlhDX0VOQUJMRQlCSVQoMTgpDQo+ID4gKyNkZWZpbmUgTVQ4 MTk1X0RMWV9STUlJX1JYQ19TVEFHRVMJR0VOTUFTSygxNywgMTMpDQo+ID4gKyNkZWZpbmUgTVQ4 MTk1X0RMWV9STUlJX1RYQ19JTlYJCUJJVCgxMikNCj4gPiArI2RlZmluZSBNVDgxOTVfRExZX1JN SUlfVFhDX0VOQUJMRQlCSVQoNSkNCj4gPiArI2RlZmluZSBNVDgxOTVfRExZX1JNSUlfVFhDX1NU QUdFUwlHRU5NQVNLKDQsIDApDQo+ID4gKw0KPiA+ICAgc3RydWN0IG1hY19kZWxheV9zdHJ1Y3Qg ew0KPiA+ICAgCXUzMiB0eF9kZWxheTsNCj4gPiAgIAl1MzIgcnhfZGVsYXk7DQo+ID4gQEAgLTU4 LDExICs4NSwxMyBAQCBzdHJ1Y3QgbWVkaWF0ZWtfZHdtYWNfcGxhdF9kYXRhIHsNCj4gPiAgIAlp bnQgbnVtX2Nsa3NfdG9fY29uZmlnOw0KPiA+ICAgCWJvb2wgcm1paV9jbGtfZnJvbV9tYWM7DQo+ ID4gICAJYm9vbCBybWlpX3J4YzsNCj4gPiArCWJvb2wgbWFjX3dvbDsNCj4gPiAgIH07DQo+ID4g ICANCj4gPiAgIHN0cnVjdCBtZWRpYXRla19kd21hY192YXJpYW50IHsNCj4gPiAgIAlpbnQgKCpk d21hY19zZXRfcGh5X2ludGVyZmFjZSkoc3RydWN0IG1lZGlhdGVrX2R3bWFjX3BsYXRfZGF0YQ0K PiA+ICpwbGF0KTsNCj4gPiAgIAlpbnQgKCpkd21hY19zZXRfZGVsYXkpKHN0cnVjdCBtZWRpYXRl a19kd21hY19wbGF0X2RhdGEgKnBsYXQpOw0KPiA+ICsJdm9pZCAoKmR3bWFjX2ZpeF9tYWNfc3Bl ZWQpKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBzcGVlZCk7DQo+ID4gICANCj4gPiAgIAkvKiBj bG9jayBpZHMgdG8gYmUgcmVxdWVzdGVkICovDQo+ID4gICAJY29uc3QgY2hhciAqIGNvbnN0ICpj bGtfbGlzdDsNCj4gPiBAQCAtNzgsNiArMTA3LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29u c3QgbXQyNzEyX2R3bWFjX2Nsa19sW10NCj4gPiA9IHsNCj4gPiAgIAkiYXhpIiwgImFwYiIsICJt YWNfbWFpbiIsICJwdHBfcmVmIiwgInJtaWlfaW50ZXJuYWwiDQo+ID4gICB9Ow0KPiA+ICAgDQo+ ID4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbXQ4MTk1X2R3bWFjX2Nsa19sW10gPSB7DQo+ ID4gKwkiYXhpIiwgImFwYiIsICJtYWNfY2ciLCAibWFjX21haW4iLCAicHRwX3JlZiIsICJybWlp X2ludGVybmFsIg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgIHN0YXRpYyBpbnQgbXQyNzEyX3NldF9p bnRlcmZhY2Uoc3RydWN0IG1lZGlhdGVrX2R3bWFjX3BsYXRfZGF0YQ0KPiA+ICpwbGF0KQ0KPiA+ ICAgew0KPiA+ICAgCWludCBybWlpX2Nsa19mcm9tX21hYyA9IHBsYXQtPnJtaWlfY2xrX2Zyb21f bWFjID8NCj4gPiBSTUlJX0NMS19TUkNfSU5URVJOQUwgOiAwOw0KPiA+IEBAIC0yNjgsNiArMzAx LDIwNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhdGVrX2R3bWFjX3ZhcmlhbnQNCj4gPiBt dDI3MTJfZ21hY192YXJpYW50ID0gew0KPiA+ICAgCQkudHhfZGVsYXlfbWF4ID0gMTc2MDAsDQo+ ID4gICB9Ow0KPiA+ICAgDQo+ID4gK3N0YXRpYyBpbnQgbXQ4MTk1X3NldF9pbnRlcmZhY2Uoc3Ry dWN0IG1lZGlhdGVrX2R3bWFjX3BsYXRfZGF0YQ0KPiA+ICpwbGF0KQ0KPiA+ICt7DQo+ID4gKwlp bnQgcm1paV9jbGtfZnJvbV9tYWMgPSBwbGF0LT5ybWlpX2Nsa19mcm9tX21hYyA/DQo+ID4gTVQ4 MTk1X1JNSUlfQ0xLX1NSQ19JTlRFUk5BTCA6IDA7DQo+ID4gKwlpbnQgcm1paV9yeGMgPSBwbGF0 LT5ybWlpX3J4YyA/IE1UODE5NV9STUlJX0NMS19TUkNfUlhDIDogMDsNCj4gPiArCXUzMiBpbnRm X3ZhbCA9IDA7DQo+ID4gKw0KPiA+ICsJLyogVGhlIGNsb2NrIGxhYmVsZWQgYXMgInJtaWlfaW50 ZXJuYWwiIGluIG10ODE5NV9kd21hY19jbGtfbA0KPiA+IGlzIG5lZWRlZA0KPiA+ICsJICogb25s eSBpbiBSTUlJKHdoZW4gTUFDIHByb3ZpZGVzIHRoZSByZWZlcmVuY2UgY2xvY2spLCBhbmQNCj4g PiB1c2VsZXNzIGZvcg0KPiA+ICsJICogUkdNSUkvTUlJL1JNSUkod2hlbiBQSFkgcHJvdmlkZXMg dGhlIHJlZmVyZW5jZSBjbG9jaykuDQo+ID4gKwkgKiBudW1fY2xrc190b19jb25maWcgaW5kaWNh dGVzIHRoZSByZWFsIG51bWJlciBvZiBjbG9ja3MNCj4gPiBzaG91bGQgYmUNCj4gPiArCSAqIGNv bmZpZ3VyZWQsIGVxdWFscyB0byAocGxhdC0+dmFyaWFudC0+bnVtX2Nsa3MgLSAxKSBpbg0KPiA+ IGRlZmF1bHQgZm9yIGFsbCB0aGUgY2FzZSwNCj4gPiArCSAqIHRoZW4gKzEgZm9yIHJtaWlfY2xr X2Zyb21fbWFjIGNhc2UuDQo+ID4gKwkgKi8NCj4gPiArCXBsYXQtPm51bV9jbGtzX3RvX2NvbmZp ZyA9IHBsYXQtPnZhcmlhbnQtPm51bV9jbGtzIC0gMTsNCj4gPiArDQo+ID4gKwkvKiBzZWxlY3Qg cGh5IGludGVyZmFjZSBpbiB0b3AgY29udHJvbCBkb21haW4gKi8NCj4gPiArCXN3aXRjaCAocGxh dC0+cGh5X21vZGUpIHsNCj4gPiArCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX01JSToNCj4gPiAr CQlpbnRmX3ZhbCB8PSBGSUVMRF9QUkVQKE1UODE5NV9FVEhfSU5URl9TRUwsDQo+ID4gUEhZX0lO VEZfTUlJKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JN SUk6DQo+ID4gKwkJaWYgKHBsYXQtPnJtaWlfY2xrX2Zyb21fbWFjKQ0KPiA+ICsJCQlwbGF0LT5u dW1fY2xrc190b19jb25maWcrKzsNCj4gPiArCQlpbnRmX3ZhbCB8PSAocm1paV9yeGMgfCBybWlp X2Nsa19mcm9tX21hYyk7DQo+ID4gKwkJaW50Zl92YWwgfD0gRklFTERfUFJFUChNVDgxOTVfRVRI X0lOVEZfU0VMLA0KPiA+IFBIWV9JTlRGX1JNSUkpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2Fz ZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6DQo+ID4gKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9E RV9SR01JSV9UWElEOg0KPiA+ICsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoN Cj4gPiArCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOg0KPiA+ICsJCWludGZfdmFs IHw9IEZJRUxEX1BSRVAoTVQ4MTk1X0VUSF9JTlRGX1NFTCwNCj4gPiBQSFlfSU5URl9SR01JSSk7 DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCWRldl9lcnIocGxhdC0+ZGV2 LCAicGh5IGludGVyZmFjZSBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBNVDgxOTUgb25seSBzdXBwb3J0IGV4dGVybmFs IFBIWSAqLw0KPiA+ICsJaW50Zl92YWwgfD0gTVQ4MTk1X0VYVF9QSFlfTU9ERTsNCj4gPiArDQo+ ID4gKwlyZWdtYXBfd3JpdGUocGxhdC0+cGVyaV9yZWdtYXAsIE1UODE5NV9QRVJJX0VUSF9DVFJM MCwNCj4gPiBpbnRmX3ZhbCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyB2b2lkIG10ODE5NV9kZWxheV9wczJzdGFnZShzdHJ1Y3QgbWVkaWF0ZWtf ZHdtYWNfcGxhdF9kYXRhDQo+ID4gKnBsYXQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBtYWNfZGVs YXlfc3RydWN0ICptYWNfZGVsYXkgPSAmcGxhdC0+bWFjX2RlbGF5Ow0KPiA+ICsNCj4gPiArCS8q IDI5MHBzIHBlciBzdGFnZSAqLw0KPiA+ICsJbWFjX2RlbGF5LT50eF9kZWxheSAvPSAyOTA7DQo+ ID4gKwltYWNfZGVsYXktPnJ4X2RlbGF5IC89IDI5MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIHZvaWQgbXQ4MTk1X2RlbGF5X3N0YWdlMnBzKHN0cnVjdCBtZWRpYXRla19kd21hY19wbGF0 X2RhdGENCj4gPiAqcGxhdCkNCj4gPiArew0KPiA+ICsJc3RydWN0IG1hY19kZWxheV9zdHJ1Y3Qg Km1hY19kZWxheSA9ICZwbGF0LT5tYWNfZGVsYXk7DQo+ID4gKw0KPiA+ICsJLyogMjkwcHMgcGVy IHN0YWdlICovDQo+ID4gKwltYWNfZGVsYXktPnR4X2RlbGF5ICo9IDI5MDsNCj4gPiArCW1hY19k ZWxheS0+cnhfZGVsYXkgKj0gMjkwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10 ODE5NV9zZXRfZGVsYXkoc3RydWN0IG1lZGlhdGVrX2R3bWFjX3BsYXRfZGF0YSAqcGxhdCkNCj4g PiArew0KPiA+ICsJc3RydWN0IG1hY19kZWxheV9zdHJ1Y3QgKm1hY19kZWxheSA9ICZwbGF0LT5t YWNfZGVsYXk7DQo+ID4gKwl1MzIgZ3R4Y19kZWxheV92YWwsIGRlbGF5X3ZhbCA9IDAsIHJtaWlf ZGVsYXlfdmFsID0gMDsNCj4gPiArDQo+ID4gKwltdDgxOTVfZGVsYXlfcHMyc3RhZ2UocGxhdCk7 DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChwbGF0LT5waHlfbW9kZSkgew0KPiA+ICsJY2FzZSBQSFlf SU5URVJGQUNFX01PREVfTUlJOg0KPiA+ICsJCWRlbGF5X3ZhbCB8PSBGSUVMRF9QUkVQKE1UODE5 NV9ETFlfVFhDX0VOQUJMRSwNCj4gPiAhIW1hY19kZWxheS0+dHhfZGVsYXkpOw0KPiA+ICsJCWRl bGF5X3ZhbCB8PSBGSUVMRF9QUkVQKE1UODE5NV9ETFlfVFhDX1NUQUdFUywNCj4gPiBtYWNfZGVs YXktPnR4X2RlbGF5KTsNCj4gPiArCQlkZWxheV92YWwgfD0gRklFTERfUFJFUChNVDgxOTVfRExZ X1RYQ19JTlYsIG1hY19kZWxheS0NCj4gPiA+dHhfaW52KTsNCj4gPiArDQo+ID4gKwkJZGVsYXlf dmFsIHw9IEZJRUxEX1BSRVAoTVQ4MTk1X0RMWV9SWENfRU5BQkxFLA0KPiA+ICEhbWFjX2RlbGF5 LT5yeF9kZWxheSk7DQo+ID4gKwkJZGVsYXlfdmFsIHw9IEZJRUxEX1BSRVAoTVQ4MTk1X0RMWV9S WENfU1RBR0VTLA0KPiA+IG1hY19kZWxheS0+cnhfZGVsYXkpOw0KPiA+ICsJCWRlbGF5X3ZhbCB8 PSBGSUVMRF9QUkVQKE1UODE5NV9ETFlfUlhDX0lOViwgbWFjX2RlbGF5LQ0KPiA+ID5yeF9pbnYp Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSToNCj4g PiArCQlpZiAocGxhdC0+cm1paV9jbGtfZnJvbV9tYWMpIHsNCj4gPiArCQkJLyogY2FzZSAxOiBt YWMgcHJvdmlkZXMgdGhlIHJtaWkgcmVmZXJlbmNlDQo+ID4gY2xvY2ssDQo+ID4gKwkJCSAqIGFu ZCB0aGUgY2xvY2sgb3V0cHV0IHRvIFRYQyBwaW4uDQo+ID4gKwkJCSAqIFRoZSBlZ3Jlc3MgdGlt aW5nIGNhbiBiZSBhZGp1c3RlZCBieQ0KPiA+IFJNSUlfVFhDIGRlbGF5IG1hY3JvIGNpcmN1aXQu DQo+ID4gKwkJCSAqIFRoZSBpbmdyZXNzIHRpbWluZyBjYW4gYmUgYWRqdXN0ZWQgYnkNCj4gPiBS TUlJX1JYQyBkZWxheSBtYWNybyBjaXJjdWl0Lg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJcm1paV9k ZWxheV92YWwgfD0NCj4gPiBGSUVMRF9QUkVQKE1UODE5NV9ETFlfUk1JSV9UWENfRU5BQkxFLA0K PiA+ICsJCQkJCQkgICAgICEhbWFjX2RlbGF5LQ0KPiA+ID50eF9kZWxheSk7DQo+ID4gKwkJCXJt aWlfZGVsYXlfdmFsIHw9DQo+ID4gRklFTERfUFJFUChNVDgxOTVfRExZX1JNSUlfVFhDX1NUQUdF UywNCj4gPiArCQkJCQkJICAgICBtYWNfZGVsYXktDQo+ID4gPnR4X2RlbGF5KTsNCj4gPiArCQkJ cm1paV9kZWxheV92YWwgfD0NCj4gPiBGSUVMRF9QUkVQKE1UODE5NV9ETFlfUk1JSV9UWENfSU5W LA0KPiA+ICsJCQkJCQkgICAgIG1hY19kZWxheS0NCj4gPiA+dHhfaW52KTsNCj4gPiArDQo+ID4g KwkJCXJtaWlfZGVsYXlfdmFsIHw9DQo+ID4gRklFTERfUFJFUChNVDgxOTVfRExZX1JNSUlfUlhD X0VOQUJMRSwNCj4gPiArCQkJCQkJICAgICAhIW1hY19kZWxheS0NCj4gPiA+cnhfZGVsYXkpOw0K PiA+ICsJCQlybWlpX2RlbGF5X3ZhbCB8PQ0KPiA+IEZJRUxEX1BSRVAoTVQ4MTk1X0RMWV9STUlJ X1JYQ19TVEFHRVMsDQo+ID4gKwkJCQkJCSAgICAgbWFjX2RlbGF5LQ0KPiA+ID5yeF9kZWxheSk7 DQo+ID4gKwkJCXJtaWlfZGVsYXlfdmFsIHw9DQo+ID4gRklFTERfUFJFUChNVDgxOTVfRExZX1JN SUlfUlhDX0lOViwNCj4gPiArCQkJCQkJICAgICBtYWNfZGVsYXktDQo+ID4gPnJ4X2ludik7DQo+ ID4gKwkJfSBlbHNlIHsNCj4gPiArCQkJLyogY2FzZSAyOiB0aGUgcm1paSByZWZlcmVuY2UgY2xv Y2sgaXMgZnJvbQ0KPiA+IGV4dGVybmFsIHBoeSwNCj4gPiArCQkJICogYW5kIHRoZSBwcm9wZXJ0 eSAicm1paV9yeGMiIGluZGljYXRlcyB3aGljaA0KPiA+IHBpbihUWEMvUlhDKQ0KPiA+ICsJCQkg KiB0aGUgcmVmZXJlbmNlIGNsayBpcyBjb25uZWN0ZWQgdG8uIFRoZQ0KPiA+IHJlZmVyZW5jZSBj bG9jayBpcyBhDQo+ID4gKwkJCSAqIHJlY2VpdmVkIHNpZ25hbCwgc28gcnhfZGVsYXkvcnhfaW52 IGFyZSB1c2VkDQo+ID4gdG8gaW5kaWNhdGUNCj4gPiArCQkJICogdGhlIHJlZmVyZW5jZSBjbG9j ayB0aW1pbmcgYWRqdXN0bWVudA0KPiA+ICsJCQkgKi8NCj4gPiArCQkJaWYgKHBsYXQtPnJtaWlf cnhjKSB7DQo+ID4gKwkJCQkvKiB0aGUgcm1paSByZWZlcmVuY2UgY2xvY2sgZnJvbQ0KPiA+IG91 dHNpZGUgaXMgY29ubmVjdGVkDQo+ID4gKwkJCQkgKiB0byBSWEMgcGluLCB0aGUgcmVmZXJlbmNl IGNsb2NrIHdpbGwNCj4gPiBiZSBhZGp1c3RlZA0KPiA+ICsJCQkJICogYnkgUlhDIGRlbGF5IG1h Y3JvIGNpcmN1aXQuDQo+ID4gKwkJCQkgKi8NCj4gPiArCQkJCWRlbGF5X3ZhbCB8PQ0KPiA+IEZJ RUxEX1BSRVAoTVQ4MTk1X0RMWV9SWENfRU5BQkxFLA0KPiA+ICsJCQkJCQkJISFtYWNfZGVsYXkt DQo+ID4gPnJ4X2RlbGF5KTsNCj4gPiArCQkJCWRlbGF5X3ZhbCB8PQ0KPiA+IEZJRUxEX1BSRVAo TVQ4MTk1X0RMWV9SWENfU1RBR0VTLA0KPiA+ICsJCQkJCQkJbWFjX2RlbGF5LQ0KPiA+ID5yeF9k ZWxheSk7DQo+ID4gKwkJCQlkZWxheV92YWwgfD0NCj4gPiBGSUVMRF9QUkVQKE1UODE5NV9ETFlf UlhDX0lOViwNCj4gPiArCQkJCQkJCW1hY19kZWxheS0NCj4gPiA+cnhfaW52KTsNCj4gPiArCQkJ fSBlbHNlIHsNCj4gPiArCQkJCS8qIHRoZSBybWlpIHJlZmVyZW5jZSBjbG9jayBmcm9tDQo+ID4g b3V0c2lkZSBpcyBjb25uZWN0ZWQNCj4gPiArCQkJCSAqIHRvIFRYQyBwaW4sIHRoZSByZWZlcmVu Y2UgY2xvY2sgd2lsbA0KPiA+IGJlIGFkanVzdGVkDQo+ID4gKwkJCQkgKiBieSBUWEMgZGVsYXkg bWFjcm8gY2lyY3VpdC4NCj4gPiArCQkJCSAqLw0KPiA+ICsJCQkJZGVsYXlfdmFsIHw9DQo+ID4g RklFTERfUFJFUChNVDgxOTVfRExZX1RYQ19FTkFCTEUsDQo+ID4gKwkJCQkJCQkhIW1hY19kZWxh eS0NCj4gPiA+cnhfZGVsYXkpOw0KPiA+ICsJCQkJZGVsYXlfdmFsIHw9DQo+ID4gRklFTERfUFJF UChNVDgxOTVfRExZX1RYQ19TVEFHRVMsDQo+ID4gKwkJCQkJCQltYWNfZGVsYXktDQo+ID4gPnJ4 X2RlbGF5KTsNCj4gPiArCQkJCWRlbGF5X3ZhbCB8PQ0KPiA+IEZJRUxEX1BSRVAoTVQ4MTk1X0RM WV9UWENfSU5WLA0KPiA+ICsJCQkJCQkJbWFjX2RlbGF5LQ0KPiA+ID5yeF9pbnYpOw0KPiA+ICsJ CQl9DQo+ID4gKwkJfQ0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBQSFlfSU5URVJGQUNFX01P REVfUkdNSUk6DQo+ID4gKwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOg0KPiA+ ICsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoNCj4gPiArCWNhc2UgUEhZX0lO VEVSRkFDRV9NT0RFX1JHTUlJX0lEOg0KPiA+ICsJCWd0eGNfZGVsYXlfdmFsIHw9IEZJRUxEX1BS RVAoTVQ4MTk1X0RMWV9HVFhDX0VOQUJMRSwNCj4gPiAhIW1hY19kZWxheS0+dHhfZGVsYXkpOw0K PiA+ICsJCWd0eGNfZGVsYXlfdmFsIHw9IEZJRUxEX1BSRVAoTVQ4MTk1X0RMWV9HVFhDX1NUQUdF UywNCj4gPiBtYWNfZGVsYXktPnR4X2RlbGF5KTsNCj4gPiArCQlndHhjX2RlbGF5X3ZhbCB8PSBG SUVMRF9QUkVQKE1UODE5NV9ETFlfR1RYQ19JTlYsDQo+ID4gbWFjX2RlbGF5LT50eF9pbnYpOw0K PiA+ICsNCj4gPiArCQlkZWxheV92YWwgfD0gRklFTERfUFJFUChNVDgxOTVfRExZX1JYQ19FTkFC TEUsDQo+ID4gISFtYWNfZGVsYXktPnJ4X2RlbGF5KTsNCj4gPiArCQlkZWxheV92YWwgfD0gRklF TERfUFJFUChNVDgxOTVfRExZX1JYQ19TVEFHRVMsDQo+ID4gbWFjX2RlbGF5LT5yeF9kZWxheSk7 DQo+ID4gKwkJZGVsYXlfdmFsIHw9IEZJRUxEX1BSRVAoTVQ4MTk1X0RMWV9SWENfSU5WLCBtYWNf ZGVsYXktDQo+ID4gPnJ4X2ludik7DQo+ID4gKw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVs dDoNCj4gPiArCQlkZXZfZXJyKHBsYXQtPmRldiwgInBoeSBpbnRlcmZhY2Ugbm90IHN1cHBvcnRl ZFxuIik7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmVn bWFwX3VwZGF0ZV9iaXRzKHBsYXQtPnBlcmlfcmVnbWFwLA0KPiA+ICsJCQkgICBNVDgxOTVfUEVS SV9FVEhfQ1RSTDAsDQo+ID4gKwkJCSAgIE1UODE5NV9SR01JSV9UWENfUEhBU0VfQ1RSTCB8DQo+ ID4gKwkJCSAgIE1UODE5NV9ETFlfR1RYQ19JTlYgfA0KPiA+ICsJCQkgICBNVDgxOTVfRExZX0dU WENfRU5BQkxFIHwNCj4gPiArCQkJICAgTVQ4MTk1X0RMWV9HVFhDX1NUQUdFUywNCj4gPiArCQkJ ICAgZ3R4Y19kZWxheV92YWwpOw0KPiA+ICsJcmVnbWFwX3dyaXRlKHBsYXQtPnBlcmlfcmVnbWFw LCBNVDgxOTVfUEVSSV9FVEhfQ1RSTDEsDQo+ID4gZGVsYXlfdmFsKTsNCj4gPiArCXJlZ21hcF93 cml0ZShwbGF0LT5wZXJpX3JlZ21hcCwgTVQ4MTk1X1BFUklfRVRIX0NUUkwyLA0KPiA+IHJtaWlf ZGVsYXlfdmFsKTsNCj4gPiArDQo+ID4gKwltdDgxOTVfZGVsYXlfc3RhZ2UycHMocGxhdCk7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIG10 ODE5NV9maXhfbWFjX3NwZWVkKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBzcGVlZCkNCj4gPiAr ew0KPiA+ICsJc3RydWN0IG1lZGlhdGVrX2R3bWFjX3BsYXRfZGF0YSAqcHJpdl9wbGF0ID0gcHJp djsNCj4gPiArDQo+ID4gKwlpZiAoKHBoeV9pbnRlcmZhY2VfbW9kZV9pc19yZ21paShwcml2X3Bs YXQtPnBoeV9tb2RlKSkpIHsNCj4gPiArCQkvKiBwcmVmZXIgMm5zIGZpeGVkIGRlbGF5IHdoaWNo IGlzIGNvbnRyb2xsZWQgYnkNCj4gPiBUWENfUEhBU0VfQ1RSTCwNCj4gPiArCQkgKiB3aGVuIGxp bmsgc3BlZWQgaXMgMUdicHMgd2l0aCBSR01JSSBpbnRlcmZhY2UsDQo+ID4gKwkJICogRmFsbCBi YWNrIHRvIGRlbGF5IG1hY3JvIGNpcmN1aXQgZm9yIDEwLzEwME1icHMgbGluaw0KPiA+IHNwZWVk Lg0KPiA+ICsJCSAqLw0KPiA+ICsJCWlmIChzcGVlZCA9PSBTUEVFRF8xMDAwKQ0KPiA+ICsJCQly ZWdtYXBfdXBkYXRlX2JpdHMocHJpdl9wbGF0LT5wZXJpX3JlZ21hcCwNCj4gPiArCQkJCQkgICBN VDgxOTVfUEVSSV9FVEhfQ1RSTDAsDQo+ID4gKwkJCQkJICAgTVQ4MTk1X1JHTUlJX1RYQ19QSEFT RV9DVFJMDQo+ID4gfA0KPiA+ICsJCQkJCSAgIE1UODE5NV9ETFlfR1RYQ19FTkFCTEUgfA0KPiA+ ICsJCQkJCSAgIE1UODE5NV9ETFlfR1RYQ19JTlYgfA0KPiA+ICsJCQkJCSAgIE1UODE5NV9ETFlf R1RYQ19TVEFHRVMsDQo+ID4gKwkJCQkJICAgTVQ4MTk1X1JHTUlJX1RYQ19QSEFTRV9DVFJMKQ0K PiA+IDsNCj4gPiArCQllbHNlDQo+ID4gKwkJCW10ODE5NV9zZXRfZGVsYXkocHJpdl9wbGF0KTsN Cj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtZWRpYXRl a19kd21hY192YXJpYW50IG10ODE5NV9nbWFjX3ZhcmlhbnQgPSB7DQo+ID4gKwkuZHdtYWNfc2V0 X3BoeV9pbnRlcmZhY2UgPSBtdDgxOTVfc2V0X2ludGVyZmFjZSwNCj4gPiArCS5kd21hY19zZXRf ZGVsYXkgPSBtdDgxOTVfc2V0X2RlbGF5LA0KPiA+ICsJLmR3bWFjX2ZpeF9tYWNfc3BlZWQgPSBt dDgxOTVfZml4X21hY19zcGVlZCwNCj4gPiArCS5jbGtfbGlzdCA9IG10ODE5NV9kd21hY19jbGtf bCwNCj4gPiArCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUobXQ4MTk1X2R3bWFjX2Nsa19sKSwNCj4g PiArCS5kbWFfYml0X21hc2sgPSAzNSwNCj4gPiArCS5yeF9kZWxheV9tYXggPSA5MjgwLA0KPiA+ ICsJLnR4X2RlbGF5X21heCA9IDkyODAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICAgc3RhdGljIGlu dCBtZWRpYXRla19kd21hY19jb25maWdfZHQoc3RydWN0DQo+ID4gbWVkaWF0ZWtfZHdtYWNfcGxh dF9kYXRhICpwbGF0KQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCBtYWNfZGVsYXlfc3RydWN0ICpt YWNfZGVsYXkgPSAmcGxhdC0+bWFjX2RlbGF5Ow0KPiA+IEBAIC0zMDgsNiArNTM5LDcgQEAgc3Rh dGljIGludCBtZWRpYXRla19kd21hY19jb25maWdfZHQoc3RydWN0DQo+ID4gbWVkaWF0ZWtfZHdt YWNfcGxhdF9kYXRhICpwbGF0KQ0KPiA+ICAgCW1hY19kZWxheS0+cnhfaW52ID0gb2ZfcHJvcGVy dHlfcmVhZF9ib29sKHBsYXQtPm5wLA0KPiA+ICJtZWRpYXRlayxyeGMtaW52ZXJzZSIpOw0KPiA+ ICAgCXBsYXQtPnJtaWlfcnhjID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKHBsYXQtPm5wLA0KPiA+ ICJtZWRpYXRlayxybWlpLXJ4YyIpOw0KPiA+ICAgCXBsYXQtPnJtaWlfY2xrX2Zyb21fbWFjID0g b2ZfcHJvcGVydHlfcmVhZF9ib29sKHBsYXQtPm5wLA0KPiA+ICJtZWRpYXRlayxybWlpLWNsay1m cm9tLW1hYyIpOw0KPiA+ICsJcGxhdC0+bWFjX3dvbCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChw bGF0LT5ucCwgIm1lZGlhdGVrLG1hYy0NCj4gPiB3b2wiKTsNCj4gPiAgIA0KPiA+ICAgCXJldHVy biAwOw0KPiA+ICAgfQ0KPiA+IEBAIC0zODQsNiArNjE2LDE2IEBAIHN0YXRpYyBpbnQgbWVkaWF0 ZWtfZHdtYWNfY2xrc19jb25maWcodm9pZA0KPiA+ICpwcml2LCBib29sIGVuYWJsZWQpDQo+ID4g ICANCj4gPiAgIAlyZXR1cm4gcmV0Ow0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg bWVkaWF0ZWtfZml4X21hY19zcGVlZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgc3BlZWQpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBtZWRpYXRla19kd21hY19wbGF0X2RhdGEgKnBsYXQgPSBwcml2 Ow0KPiA+ICsJY29uc3Qgc3RydWN0IG1lZGlhdGVrX2R3bWFjX3ZhcmlhbnQgKnZhcmlhbnQgPSBw bGF0LT52YXJpYW50Ow0KPiA+ICsNCj4gPiArCWlmICh2YXJpYW50LT5kd21hY19maXhfbWFjX3Nw ZWVkKQ0KPiA+ICsJCXZhcmlhbnQtPmR3bWFjX2ZpeF9tYWNfc3BlZWQocHJpdiwgc3BlZWQpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICAgc3RhdGljIGludCBtZWRpYXRla19kd21hY19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCBtZWRpYXRl a19kd21hY19wbGF0X2RhdGEgKnByaXZfcGxhdDsNCj4gPiBAQCAtNDIxLDcgKzY2Myw3IEBAIHN0 YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0DQo+ID4gcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQ0KPiA+ICAgCQlyZXR1cm4gUFRSX0VSUihwbGF0X2RhdCk7DQo+ID4gICANCj4gPiAg IAlwbGF0X2RhdC0+aW50ZXJmYWNlID0gcHJpdl9wbGF0LT5waHlfbW9kZTsNCj4gPiAtCXBsYXRf ZGF0LT51c2VfcGh5X3dvbCA9IDE7DQo+ID4gKwlwbGF0X2RhdC0+dXNlX3BoeV93b2wgPSBwcml2 X3BsYXQtPm1hY193b2wgPyAwIDogMTsNCj4gPiAgIAlwbGF0X2RhdC0+cml3dF9vZmYgPSAxOw0K PiA+ICAgCXBsYXRfZGF0LT5tYXhtdHUgPSBFVEhfREFUQV9MRU47DQo+ID4gICAJcGxhdF9kYXQt PmFkZHI2NCA9IHByaXZfcGxhdC0+dmFyaWFudC0+ZG1hX2JpdF9tYXNrOw0KPiA+IEBAIC00Mjks NyArNjcxLDIyIEBAIHN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0DQo+ID4g cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAgCXBsYXRfZGF0LT5pbml0ID0gbWVkaWF0ZWtf ZHdtYWNfaW5pdDsNCj4gPiAgIAlwbGF0X2RhdC0+ZXhpdCA9IG1lZGlhdGVrX2R3bWFjX2V4aXQ7 DQo+ID4gICAJcGxhdF9kYXQtPmNsa3NfY29uZmlnID0gbWVkaWF0ZWtfZHdtYWNfY2xrc19jb25m aWc7DQo+ID4gKwlwbGF0X2RhdC0+Zml4X21hY19zcGVlZCA9IG1lZGlhdGVrX2ZpeF9tYWNfc3Bl ZWQ7DQo+IA0KPiANCj4gDQo+IFNvLCBzaW5jZSB0aGF0IGZ1bmN0aW9uIHNlcnZlcyBhcyBhIHdy YXBwZXIgb25seS4uLi4NCj4gDQo+IA0KPiANCj4gCWlmIChwcml2X3BsYXQtPnZhcmlhbnQtPmR3 bWFjX2ZpeF9tYWNfc3BlZWQpDQo+IA0KPiAJCWxhdF9kYXQtPmZpeF9tYWNfc3BlZWQgPSBwcml2 X3BsYXQtPnZhcmlhbnQtDQo+ID5kd21hY19maXhfbWFjX3NwZWVkOw0KPiANCj4gDQo+IA0KPiBz ZWVtcyB0byBiZSBhIGdvb2Qgb3B0aW9uIDopDQo+IA0KWWVzLCB0aGF0IG1ha2VzIHNlbnNlLCB3 aWxsIGZpeCBpdCBpbiBuZXh0IHNlbmQuDQo+IA0KPiANCj4gDQo+IA0KPiBSZWdhcmRzLA0KPiAN Cj4gLSBBbmdlbG8NCj4gDQo=