From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85DF3C433EF for ; Mon, 6 Dec 2021 12:09:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242946AbhLFMMz (ORCPT ); Mon, 6 Dec 2021 07:12:55 -0500 Received: from rtits2.realtek.com ([211.75.126.72]:48660 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242896AbhLFMMy (ORCPT ); Mon, 6 Dec 2021 07:12:54 -0500 Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.73 with qID 1B6C9IMF0018550, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36504.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.71/5.88) with ESMTPS id 1B6C9IMF0018550 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Mon, 6 Dec 2021 20:09:19 +0800 Received: from RTEXMBS02.realtek.com.tw (172.21.6.95) by RTEXH36504.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 6 Dec 2021 20:09:18 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXMBS02.realtek.com.tw (172.21.6.95) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.15; Mon, 6 Dec 2021 20:09:17 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::38af:5429:2b43:3b95]) by RTEXMBS01.realtek.com.tw ([fe80::38af:5429:2b43:3b95%5]) with mapi id 15.01.2308.015; Mon, 6 Dec 2021 20:09:17 +0800 From: Ricky WU To: Ulf Hansson CC: "gregkh@linuxfoundation.org" , "tommyhebb@gmail.com" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH] mmc: rtsx: improve rw performance Thread-Topic: [PATCH] mmc: rtsx: improve rw performance Thread-Index: AQHX6DEYTJKGBpnS2UOXrkrK9OF1RqwgTsWAgAUMTOA= Date: Mon, 6 Dec 2021 12:09:17 +0000 Message-ID: References: <5a38e5eb9fdc4b53ba4a11602e2cef0d@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.22.88.113] x-kse-serverinfo: RTEXMBS02.realtek.com.tw, 9 x-kse-attachmentfiltering-interceptor-info: no applicable attachment filtering rules found x-kse-antivirus-interceptor-info: scan successful x-kse-antivirus-info: =?utf-8?B?Q2xlYW4sIGJhc2VzOiAyMDIxLzEyLzYg5LiK5Y2IIDA5OjA5OjAw?= x-kse-bulkmessagesfiltering-scan-result: protection disabled Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-ServerInfo: RTEXH36504.realtek.com.tw, 9 X-KSE-Attachment-Filter-Triggered-Rules: Clean X-KSE-Attachment-Filter-Triggered-Filters: Clean X-KSE-BulkMessagesFiltering-Scan-Result: protection disabled Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVWxmIEhhbnNzb24gPHVs Zi5oYW5zc29uQGxpbmFyby5vcmc+DQo+IFNlbnQ6IEZyaWRheSwgRGVjZW1iZXIgMywgMjAyMSAx MDozMyBQTQ0KPiBUbzogUmlja3kgV1UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KPiBDYzogZ3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IHRvbW15aGViYkBnbWFpbC5jb207DQo+IGxpbnV4LW1t Y0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVj dDogUmU6IFtQQVRDSF0gbW1jOiBydHN4OiBpbXByb3ZlIHJ3IHBlcmZvcm1hbmNlDQo+IA0KPiBP biBGcmksIDMgRGVjIDIwMjEgYXQgMTE6NDMsIFJpY2t5IFdVIDxyaWNreV93dUByZWFsdGVrLmNv bT4gd3JvdGU6DQo+ID4NCj4gPiBzZF9jaGVja19zZXEoKSB0byBkaXN0aW5ndWlzaCBzZXF1ZW50 aWFsIHJ3IG9yIG5vcm1hbCBydyBpZiB0aGlzIGRhdGENCj4gPiBpcyBzZXF1ZW50aWFsIGNhbGwg dG8gc2Rfcndfc2VxdWVudGlhbCgpDQo+IA0KPiBDYW4geW91IHBsZWFzZSBleHRlbmQgdGhpcyBj b21taXQgbWVzc2FnZT8gVGhpcyBkb2Vzbid0IGFuc3dlciB3aHkgb3Igd2hhdA0KPiB0aGlzIGNo YW5nZSByZWFsbHkgZG9lcywgcGxlYXNlIHRyeSB0byBkbyB0aGF0LCBhcyB0byBoZWxwIG1lIHRv IHJldmlldyB0aGlzLg0KPiANCg0KVGhpcyBwYXRjaCBpcyBmb3IgaW1wcm92aW5nIHNlcXVlbnRp YWwgcmVhZC93cml0ZSBwZXJmb3JtYW5jZS4NCkJlZm9yZSB0aGlzLCB3aGV0aGVyIENNRCBpcyBt dXRpLVJXIG9yIHNpbmdsZS1SVyB0aGUgZHJpdmVyIGRvIHRoZSBzYW1lIGZsb3cuDQpUaGlzIHBh dGNoIGRpc3Rpbmd1aXNoZXMgdGhlIHR3byBhbmQgZG8gZGlmZmVyZW50IGZsb3cgdG8gZ2V0IG1v cmUgcGVyZm9ybWFuY2UNCm9uIHNlcXVlbnRpYWwgUlcuDQpzZF9jaGVja19zZXEoKSB0byBkaXN0 aW5ndWlzaCBzZXF1ZW50aWFsIFJXIChDTUQgMTgvMjUpIG9yIG5vcm1hbCBSVyAoQ01EIDE3LzI0 KQ0KaWYgdGhlIGRhdGEgaXMgc2VxdWVudGlhbCBjYWxsIHRvIHNkX3J3X3NlcXVlbnRpYWwoKQ0K DQo+IEtpbmQgcmVnYXJkcw0KPiBVZmZlDQo+IA0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUmlj a3kgV3UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL21tYy9o b3N0L3J0c3hfcGNpX3NkbW1jLmMgfCAxODUNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDE4MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2Rt bWMuYw0KPiA+IGIvZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jDQo+ID4gaW5kZXgg NThjZmFmZmEzYzJkLi45ZWI0MzNiMWY2ZjggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tbWMv aG9zdC9ydHN4X3BjaV9zZG1tYy5jDQo+ID4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9ydHN4X3Bj aV9zZG1tYy5jDQo+ID4gQEAgLTIyLDYgKzIyLDggQEANCj4gPiAgI2luY2x1ZGUgPGFzbS91bmFs aWduZWQuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gPg0KPiA+ICtl bnVtIFJXX01PREUgICB7Tk9STUFMX1JXLCBTRVFfUld9Ow0KPiA+ICsNCj4gPiAgc3RydWN0IHJl YWx0ZWtfcGNpX3NkbW1jIHsNCj4gPiAgICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgICpw ZGV2Ow0KPiA+ICAgICAgICAgc3RydWN0IHJ0c3hfcGNyICAgICAgICAgKnBjcjsNCj4gPiBAQCAt MzEsNiArMzMsNyBAQCBzdHJ1Y3QgcmVhbHRla19wY2lfc2RtbWMgew0KPiA+DQo+ID4gICAgICAg ICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICB3b3JrOw0KPiA+ICAgICAgICAgc3RydWN0IG11dGV4 ICAgICAgICAgICAgaG9zdF9tdXRleDsNCj4gPiArICAgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsg ICAgICAgICAgICAgcndfaWRsZV93b3JrOw0KPiA+DQo+ID4gICAgICAgICB1OCAgICAgICAgICAg ICAgICAgICAgICBzc2NfZGVwdGg7DQo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAg ICBjbG9jazsNCj4gPiBAQCAtNDYsNiArNDksMTIgQEAgc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1j IHsNCj4gPiAgICAgICAgIHMzMiAgICAgICAgICAgICAgICAgICAgIGNvb2tpZTsNCj4gPiAgICAg ICAgIGludCAgICAgICAgICAgICAgICAgICAgIGNvb2tpZV9zZ19jb3VudDsNCj4gPiAgICAgICAg IGJvb2wgICAgICAgICAgICAgICAgICAgIHVzaW5nX2Nvb2tpZTsNCj4gPiArDQo+ID4gKyAgICAg ICBlbnVtIFJXX01PREUgICAgICAgICAgICByd19tb2RlOw0KPiA+ICsgICAgICAgdTggICAgICAg ICAgICAgIHByZXZfZGlyOw0KPiA+ICsgICAgICAgdTggICAgICAgICAgICAgIGN1cl9kaXI7DQo+ ID4gKyAgICAgICB1NjQgICAgICAgICAgICAgcHJldl9zZWNfYWRkcjsNCj4gPiArICAgICAgIHUz MiAgICAgICAgICAgICBwcmV2X3NlY19jbnQ7DQo+ID4gIH07DQo+ID4NCj4gPiAgc3RhdGljIGlu dCBzZG1tY19pbml0X3NkX2V4cHJlc3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNf aW9zDQo+ID4gKmlvcyk7IEBAIC0yMjYsNiArMjM1LDE0IEBAIHN0YXRpYyB2b2lkIHNkX3NlbmRf Y21kX2dldF9yc3Aoc3RydWN0DQo+IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LA0KPiA+ICAgICAg ICAgZGV2X2RiZyhzZG1tY19kZXYoaG9zdCksICIlczogU0QvTU1DIENNRCAlZCwgYXJnID0NCj4g MHglMDh4XG4iLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBjbWRfaWR4 LCBhcmcpOw0KPiA+DQo+ID4gKyAgICAgICBpZiAoY21kX2lkeCA9PSBNTUNfU0VORF9TVEFUVVMg JiYgaG9zdC0+cndfbW9kZSA9PQ0KPiBTRVFfUlcpIHsNCj4gPiArICAgICAgICAgICAgICAgY21k LT5yZXNwWzBdID0gUjFfUkVBRFlfRk9SX0RBVEEgfA0KPiAoUjFfU1RBVEVfVFJBTiA8PCA5KTsN Cj4gPiArICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKCFtbWNfb3BfbXVsdGkoY21kLT5vcGNvZGUpKQ0KPiA+ICsgICAgICAgICAg ICAgICBob3N0LT5yd19tb2RlID0gTk9STUFMX1JXOw0KPiA+ICsNCj4gPiAgICAgICAgIHJzcF90 eXBlID0gc2RfcmVzcG9uc2VfdHlwZShjbWQpOw0KPiA+ICAgICAgICAgaWYgKHJzcF90eXBlIDwg MCkNCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gQEAgLTU0Miw2ICs1NTksOTMg QEAgc3RhdGljIGludCBzZF93cml0ZV9sb25nX2RhdGEoc3RydWN0DQo+IHJlYWx0ZWtfcGNpX3Nk bW1jICpob3N0LA0KPiA+ICAgICAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0 aWMgaW50IHNkX3J3X3NlcXVlbnRpYWwoc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LCBz dHJ1Y3QNCj4gPiArbW1jX3JlcXVlc3QgKm1ycSkgew0KPiA+ICsgICAgICAgc3RydWN0IHJ0c3hf cGNyICpwY3IgPSBob3N0LT5wY3I7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9 IGhvc3QtPm1tYzsNCj4gPiArICAgICAgIHN0cnVjdCBtbWNfY2FyZCAqY2FyZCA9IG1tYy0+Y2Fy ZDsNCj4gPiArICAgICAgIHN0cnVjdCBtbWNfZGF0YSAqZGF0YSA9IG1ycS0+ZGF0YTsNCj4gPiAr ICAgICAgIGludCB1aHMgPSBtbWNfY2FyZF91aHMoY2FyZCk7DQo+ID4gKyAgICAgICB1OCBjZmcy Ow0KPiA+ICsgICAgICAgaW50IGVycjsNCj4gPiArICAgICAgIHNpemVfdCBkYXRhX2xlbiA9IGRh dGEtPmJsa3N6ICogZGF0YS0+YmxvY2tzOw0KPiA+ICsNCj4gPiArICAgICAgIGNmZzIgPSBTRF9O T19DQUxDVUxBVEVfQ1JDNyB8IFNEX0NIRUNLX0NSQzE2IHwNCj4gPiArICAgICAgICAgICAgICAg U0RfTk9fV0FJVF9CVVNZX0VORCB8IFNEX05PX0NIRUNLX0NSQzcgfA0KPiBTRF9SU1BfTEVOXzA7 DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCF1aHMpDQo+ID4gKyAgICAgICAgICAgICAgIGNmZzIg fD0gU0RfTk9fQ0hFQ0tfV0FJVF9DUkNfVE87DQo+ID4gKw0KPiA+ICsgICAgICAgcnRzeF9wY2lf aW5pdF9jbWQocGNyKTsNCj4gPiArICAgICAgIHNkX2NtZF9zZXRfZGF0YV9sZW4ocGNyLCBkYXRh LT5ibG9ja3MsIGRhdGEtPmJsa3N6KTsNCj4gPiArICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNy LCBXUklURV9SRUdfQ01ELCBJUlFTVEFUMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBE TUFfRE9ORV9JTlQsIERNQV9ET05FX0lOVCk7DQo+ID4gKyAgICAgICBydHN4X3BjaV9hZGRfY21k KHBjciwgV1JJVEVfUkVHX0NNRCwgRE1BVEMzLA0KPiA+ICsgICAgICAgICAgICAgICAweEZGLCAo dTgpKGRhdGFfbGVuID4+IDI0KSk7DQo+ID4gKyAgICAgICBydHN4X3BjaV9hZGRfY21kKHBjciwg V1JJVEVfUkVHX0NNRCwgRE1BVEMyLA0KPiA+ICsgICAgICAgICAgICAgICAweEZGLCAodTgpKGRh dGFfbGVuID4+IDE2KSk7DQo+ID4gKyAgICAgICBydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVf UkVHX0NNRCwgRE1BVEMxLA0KPiA+ICsgICAgICAgICAgICAgICAweEZGLCAodTgpKGRhdGFfbGVu ID4+IDgpKTsNCj4gPiArICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01E LCBETUFUQzAsIDB4RkYsDQo+ID4gKyAodTgpZGF0YV9sZW4pOw0KPiA+ICsNCj4gPiArICAgICAg IGlmIChob3N0LT5jdXJfZGlyID09IERNQV9ESVJfRlJPTV9DQVJEKQ0KPiA+ICsgICAgICAgICAg ICAgICBydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgRE1BQ1RMLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIDB4MDMgfCBETUFfUEFDS19TSVpFX01BU0ssDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgRE1BX0RJUl9GUk9NX0NBUkQgfCBETUFfRU4gfA0KPiBETUFf NTEyKTsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfYWRk X2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIERNQUNUTCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAweDAzIHwgRE1BX1BBQ0tfU0laRV9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIERNQV9ESVJfVE9fQ0FSRCB8IERNQV9FTiB8IERNQV81MTIpOw0KPiA+ICsNCj4gPiArICAg ICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBDQVJEX0RBVEFfU09VUkNF LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsIFJJTkdfQlVGRkVSKTsNCj4gPiAr ICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTRF9DRkcyLCAweEZG LCBjZmcyKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaG9zdC0+Y3VyX2RpciA9PSBETUFfRElS X0ZST01fQ0FSRCkNCj4gPiArICAgICAgICAgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdS SVRFX1JFR19DTUQsIFNEX1RSQU5TRkVSLA0KPiAweEZGLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU0RfVFJBTlNGRVJfU1RBUlQgfA0KPiBTRF9UTV9BVVRPX1JFQURfMyk7 DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIHJ0c3hfcGNpX2FkZF9jbWQo cGNyLCBXUklURV9SRUdfQ01ELCBTRF9UUkFOU0ZFUiwNCj4gMHhGRiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNEX1RSQU5TRkVSX1NUQVJUIHwNCj4gPiArIFNEX1RNX0FV VE9fV1JJVEVfMyk7DQo+ID4gKw0KPiA+ICsgICAgICAgcnRzeF9wY2lfYWRkX2NtZChwY3IsIENI RUNLX1JFR19DTUQsIFNEX1RSQU5TRkVSLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFNE X1RSQU5TRkVSX0VORCwgU0RfVFJBTlNGRVJfRU5EKTsNCj4gPiArICAgICAgIHJ0c3hfcGNpX3Nl bmRfY21kX25vX3dhaXQocGNyKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaG9zdC0+Y3VyX2Rp ciA9PSBETUFfRElSX0ZST01fQ0FSRCkNCj4gPiArICAgICAgICAgICAgICAgZXJyID0gcnRzeF9w Y2lfZG1hX3RyYW5zZmVyKHBjciwgZGF0YS0+c2csDQo+IGhvc3QtPnNnX2NvdW50LCAxLCAxMDAw MCk7DQo+ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IHJ0c3hfcGNp X2RtYV90cmFuc2ZlcihwY3IsIGRhdGEtPnNnLA0KPiA+ICsgaG9zdC0+c2dfY291bnQsIDAsIDEw MDAwKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoZXJyIDwgMCkgew0KPiA+ICsgICAgICAgICAg ICAgICBzZF9jbGVhcl9lcnJvcihob3N0KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVy cjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBzZF9zdG9wX3NlcXVlbnRpYWwoc3RydWN0IHJlYWx0ZWtf cGNpX3NkbW1jICpob3N0LCBzdHJ1Y3QNCj4gPiArbW1jX3JlcXVlc3QgKm1ycSkgew0KPiA+ICsg ICAgICAgc3RydWN0IHJ0c3hfcGNyICpwY3IgPSBob3N0LT5wY3I7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgbW1jX2NvbW1hbmQgKmNtZDsNCj4gPiArDQo+ID4gKyAgICAgICBjbWQgPSBremFsbG9jKHNp emVvZigqY21kKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKw0KPiA+ICsgICAgICAgY21kLT5vcGNvZGUg PSBNTUNfU1RPUF9UUkFOU01JU1NJT047DQo+ID4gKyAgICAgICBjbWQtPmFyZyA9IDA7DQo+ID4g KyAgICAgICBjbWQtPmJ1c3lfdGltZW91dCA9IDA7DQo+ID4gKyAgICAgICBpZiAoaG9zdC0+Y3Vy X2RpciA9PSBETUFfRElSX0ZST01fQ0FSRCkNCj4gPiArICAgICAgICAgICAgICAgY21kLT5mbGFn cyA9IE1NQ19SU1BfU1BJX1IxIHwgTU1DX1JTUF9SMSB8DQo+IE1NQ19DTURfQUM7DQo+ID4gKyAg ICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGNtZC0+ZmxhZ3MgPSBNTUNfUlNQX1NQSV9S MUIgfCBNTUNfUlNQX1IxQiB8DQo+IE1NQ19DTURfQUM7DQo+ID4gKyAgICAgICBzZF9zZW5kX2Nt ZF9nZXRfcnNwKGhvc3QsIGNtZCk7DQo+ID4gKyAgICAgICB1ZGVsYXkoNTApOw0KPiA+ICsgICAg ICAgcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSQkNUTCwgUkJfRkxVU0gsIFJCX0ZMVVNI KTsNCj4gPiArICAgICAgIGtmcmVlKGNtZCk7DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiAgc3RhdGljIGlubGluZSB2b2lkIHNkX2VuYWJsZV9pbml0aWFsX21vZGUo c3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jDQo+ID4gKmhvc3QpICB7DQo+ID4gICAgICAgICBydHN4 X3BjaV93cml0ZV9yZWdpc3Rlcihob3N0LT5wY3IsIFNEX0NGRzEsIEBAIC03OTYsNiArOTAwLDQ1 DQo+ID4gQEAgc3RhdGljIGlubGluZSBpbnQgc2RfcndfY21kKHN0cnVjdCBtbWNfY29tbWFuZCAq Y21kKQ0KPiA+ICAgICAgICAgICAgICAgICAoY21kLT5vcGNvZGUgPT0gTU1DX1dSSVRFX0JMT0NL KTsgIH0NCj4gPg0KPiA+ICtzdGF0aWMgdm9pZCBzZF9yd19pZGxlX3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayA9 IHRvX2RlbGF5ZWRfd29yayh3b3JrKTsNCj4gPiArICAgICAgIHN0cnVjdCByZWFsdGVrX3BjaV9z ZG1tYyAqaG9zdCA9IGNvbnRhaW5lcl9vZihkd29yaywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcmVhbHRla19wY2lfc2RtbWMsIHJ3X2lkbGVfd29yayk7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZDsNCj4gPiArDQo+ID4gKyAgICAgICBjbWQgPSBremFs bG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKw0KPiA+ICsgICAgICAgY21kLT5v cGNvZGUgPSBNTUNfU1RPUF9UUkFOU01JU1NJT047DQo+ID4gKyAgICAgICBjbWQtPmFyZyA9IDA7 DQo+ID4gKyAgICAgICBjbWQtPmJ1c3lfdGltZW91dCA9IDA7DQo+ID4gKyAgICAgICBpZiAoaG9z dC0+Y3VyX2RpciA9PSBETUFfRElSX0ZST01fQ0FSRCkNCj4gPiArICAgICAgICAgICAgICAgY21k LT5mbGFncyA9IE1NQ19SU1BfU1BJX1IxIHwgTU1DX1JTUF9SMSB8DQo+IE1NQ19DTURfQUM7DQo+ ID4gKyAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGNtZC0+ZmxhZ3MgPSBNTUNfUlNQ X1NQSV9SMUIgfCBNTUNfUlNQX1IxQiB8DQo+ID4gKyBNTUNfQ01EX0FDOw0KPiA+ICsNCj4gPiAr ICAgICAgIHNkX3NlbmRfY21kX2dldF9yc3AoaG9zdCwgY21kKTsNCj4gPiArICAgICAgIGhvc3Qt PnJ3X21vZGUgPSBOT1JNQUxfUlc7DQo+ID4gKyAgICAgICBrZnJlZShjbWQpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNkX2NoZWNrX3NlcShzdHJ1Y3QgcmVhbHRla19wY2lfc2Rt bWMgKmhvc3QsIHN0cnVjdA0KPiA+ICttbWNfcmVxdWVzdCAqbXJxKSB7DQo+ID4gKyAgICAgICBz dHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCA9IG1ycS0+Y21kOw0KPiA+ICsgICAgICAgc3RydWN0IG1t Y19kYXRhICpkYXRhID0gbXJxLT5kYXRhOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghbW1jX29w X211bHRpKGNtZC0+b3Bjb2RlKSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4g Kw0KPiA+ICsgICAgICAgaWYgKGhvc3QtPnByZXZfZGlyICE9IGhvc3QtPmN1cl9kaXIpDQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICgoaG9zdC0+ cHJldl9zZWNfYWRkciArIGhvc3QtPnByZXZfc2VjX2NudCkgIT0gZGF0YS0+YmxrX2FkZHIpDQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAx Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZCBzZF9yZXF1ZXN0KHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykgIHsNCj4gPiAgICAgICAgIHN0cnVjdCByZWFsdGVrX3BjaV9zZG1tYyAq aG9zdCA9IGNvbnRhaW5lcl9vZih3b3JrLCBAQCAtODQxLDEyDQo+ID4gKzk4NCwzNiBAQCBzdGF0 aWMgdm9pZCBzZF9yZXF1ZXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiAgICAgICAg IGlmICghZGF0YV9zaXplKSB7DQo+ID4gICAgICAgICAgICAgICAgIHNkX3NlbmRfY21kX2dldF9y c3AoaG9zdCwgY21kKTsNCj4gPiAgICAgICAgIH0gZWxzZSBpZiAoc2RfcndfY21kKGNtZCkgfHwg c2Rpb19leHRibG9ja19jbWQoY21kLCBkYXRhKSkgew0KPiA+IC0gICAgICAgICAgICAgICBjbWQt PmVycm9yID0gc2RfcndfbXVsdGkoaG9zdCwgbXJxKTsNCj4gPiAtICAgICAgICAgICAgICAgaWYg KCFob3N0LT51c2luZ19jb29raWUpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc2RtbWNf cG9zdF9yZXEoaG9zdC0+bW1jLCBob3N0LT5tcnEsIDApOw0KPiA+ICsgICAgICAgICAgICAgICAv KiBDaGVjayBzZXEgZnVuY3Rpb24qLw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZGF0YS0+Zmxh Z3MgJiBNTUNfREFUQV9SRUFEKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPmN1 cl9kaXIgPSBETUFfRElSX0ZST01fQ0FSRDsNCj4gPiArICAgICAgICAgICAgICAgZWxzZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPmN1cl9kaXIgPSBETUFfRElSX1RPX0NBUkQ7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoaG9zdC0+cndfbW9kZSA9PSBTRVFfUlcp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxfZGVsYXllZF93b3JrKCZob3N0 LT5yd19pZGxlX3dvcmspOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2RfY2hl Y2tfc2VxKGhvc3QsIG1ycSkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNkX3N0b3Bfc2VxdWVudGlhbChob3N0LCBtcnEpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaG9zdC0+cndfbW9kZSA9IE5PUk1BTF9SVzsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICAgIGlmIChob3N0LT5yd19tb2RlID09IFNFUV9SVykNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBjbWQtPmVycm9yID0gc2Rfcndfc2VxdWVudGlhbChob3N0LCBtcnEpOw0KPiA+ICsg ICAgICAgICAgICAgICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAobW1j X29wX211bHRpKGNtZC0+b3Bjb2RlKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhvc3QtPnJ3X21vZGUgPSBTRVFfUlc7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg Y21kLT5lcnJvciA9IHNkX3J3X211bHRpKGhvc3QsIG1ycSk7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCFob3N0LT51c2luZ19jb29raWUpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZG1tY19wb3N0X3JlcShob3N0LT5tbWMsDQo+IGhvc3QtPm1ycSwgMCk7 DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChj bWQtPmVycm9yKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGhvc3QtPnJ3X21vZGUgPSBO T1JNQUxfUlc7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAobW1jX29wX211bHRpKGNt ZC0+b3Bjb2RlKSAmJiBob3N0LT5yd19tb2RlID09DQo+IFNFUV9SVykNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBtb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwNCj4gPiArICZob3N0LT5y d19pZGxlX3dvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTUwKSk7DQo+ID4NCj4gPiAtICAgICAgICAg ICAgICAgaWYgKG1tY19vcF9tdWx0aShjbWQtPm9wY29kZSkgJiYgbXJxLT5zdG9wKQ0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgIHNkX3NlbmRfY21kX2dldF9yc3AoaG9zdCwgbXJxLT5zdG9w KTsNCj4gPiAgICAgICAgIH0gZWxzZSB7DQo+ID4gICAgICAgICAgICAgICAgIHNkX25vcm1hbF9y dyhob3N0LCBtcnEpOw0KPiA+ICAgICAgICAgfQ0KPiA+IEBAIC04NjcsNiArMTAzNCwxMSBAQCBz dGF0aWMgdm9pZCBzZF9yZXF1ZXN0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiAgICAg ICAgIH0NCj4gPg0KPiA+ICAgICAgICAgbXV0ZXhfbG9jaygmaG9zdC0+aG9zdF9tdXRleCk7DQo+ ID4gKyAgICAgICBpZiAoc2RfcndfY21kKGNtZCkgfHwgc2Rpb19leHRibG9ja19jbWQoY21kLCBk YXRhKSkgew0KPiA+ICsgICAgICAgICAgICAgICBob3N0LT5wcmV2X2RpciA9IGhvc3QtPmN1cl9k aXI7DQo+ID4gKyAgICAgICAgICAgICAgIGhvc3QtPnByZXZfc2VjX2FkZHIgPSBkYXRhLT5ibGtf YWRkcjsNCj4gPiArICAgICAgICAgICAgICAgaG9zdC0+cHJldl9zZWNfY250ID0gZGF0YS0+Ymxv Y2tzOw0KPiA+ICsgICAgICAgfQ0KPiA+ICAgICAgICAgaG9zdC0+bXJxID0gTlVMTDsNCj4gPiAg ICAgICAgIG11dGV4X3VubG9jaygmaG9zdC0+aG9zdF9tdXRleCk7DQo+ID4NCj4gPiBAQCAtMTQ1 Nyw2ICsxNjI5LDcgQEAgc3RhdGljIHZvaWQgcnRzeF9wY2lfc2RtbWNfY2FyZF9ldmVudChzdHJ1 Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAgICAgICAgc3RydWN0IHJlYWx0ZWtf cGNpX3NkbW1jICpob3N0ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4NCj4gPiAg ICAgICAgIGhvc3QtPmNvb2tpZSA9IC0xOw0KPiA+ICsgICAgICAgaG9zdC0+cndfbW9kZSA9IE5P Uk1BTF9SVzsNCj4gPiAgICAgICAgIG1tY19kZXRlY3RfY2hhbmdlKGhvc3QtPm1tYywgMCk7ICB9 DQo+ID4NCj4gPiBAQCAtMTQ4Nyw2ICsxNjYwLDcgQEAgc3RhdGljIGludCBydHN4X3BjaV9zZG1t Y19kcnZfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgICAgICAg IGhvc3QtPmNvb2tpZSA9IC0xOw0KPiA+ICAgICAgICAgaG9zdC0+cG93ZXJfc3RhdGUgPSBTRE1N Q19QT1dFUl9PRkY7DQo+ID4gICAgICAgICBJTklUX1dPUksoJmhvc3QtPndvcmssIHNkX3JlcXVl c3QpOw0KPiA+ICsgICAgICAgSU5JVF9ERUxBWUVEX1dPUksoJmhvc3QtPnJ3X2lkbGVfd29yaywg c2RfcndfaWRsZV93b3JrKTsNCj4gPiAgICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGhvc3QpOw0KPiA+ICAgICAgICAgcGNyLT5zbG90c1tSVFNYX1NEX0NBUkRdLnBfZGV2ID0gcGRl djsNCj4gPiAgICAgICAgIHBjci0+c2xvdHNbUlRTWF9TRF9DQVJEXS5jYXJkX2V2ZW50ID0NCj4g PiBydHN4X3BjaV9zZG1tY19jYXJkX2V2ZW50OyBAQCAtMTUyNiw2ICsxNzAwLDcgQEAgc3RhdGlj IGludA0KPiBydHN4X3BjaV9zZG1tY19kcnZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ID4gICAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2 KTsNCj4gPiAgICAgICAgIH0NCj4gPg0KPiA+ICsgICAgICAgY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKCZob3N0LT5yd19pZGxlX3dvcmspOw0KPiA+ICAgICAgICAgY2FuY2VsX3dvcmtfc3luYygm aG9zdC0+d29yayk7DQo+ID4NCj4gPiAgICAgICAgIG11dGV4X2xvY2soJmhvc3QtPmhvc3RfbXV0 ZXgpOw0KPiA+IC0tDQo+ID4gMi4yNS4xDQo+IC0tLS0tLVBsZWFzZSBjb25zaWRlciB0aGUgZW52 aXJvbm1lbnQgYmVmb3JlIHByaW50aW5nIHRoaXMgZS1tYWlsLg0K