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 X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3EE6C433DB for ; Mon, 21 Dec 2020 22:42:39 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 18B1E22BF3 for ; Mon, 21 Dec 2020 22:42:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 18B1E22BF3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=hisilicon.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 479606B0036; Mon, 21 Dec 2020 17:42:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 402DA6B005C; Mon, 21 Dec 2020 17:42:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2F1E16B0068; Mon, 21 Dec 2020 17:42:38 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0111.hostedemail.com [216.40.44.111]) by kanga.kvack.org (Postfix) with ESMTP id 1A1B26B0036 for ; Mon, 21 Dec 2020 17:42:38 -0500 (EST) Received: from smtpin08.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id CDCD33644 for ; Mon, 21 Dec 2020 22:42:37 +0000 (UTC) X-FDA: 77618765154.08.jeans55_3f0d9232745b Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin08.hostedemail.com (Postfix) with ESMTP id AE7751819E769 for ; Mon, 21 Dec 2020 22:42:37 +0000 (UTC) X-HE-Tag: jeans55_3f0d9232745b X-Filterd-Recvd-Size: 13259 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf04.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Dec 2020 22:42:36 +0000 (UTC) Received: from DGGEMM402-HUB.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4D0Dws1wW0z57bw; Tue, 22 Dec 2020 06:41:49 +0800 (CST) Received: from dggemi709-chm.china.huawei.com (10.3.20.108) by DGGEMM402-HUB.china.huawei.com (10.3.20.210) with Microsoft SMTP Server (TLS) id 14.3.498.0; Tue, 22 Dec 2020 06:42:31 +0800 Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by dggemi709-chm.china.huawei.com (10.3.20.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2; Tue, 22 Dec 2020 06:42:31 +0800 Received: from dggemi761-chm.china.huawei.com ([10.9.49.202]) by dggemi761-chm.china.huawei.com ([10.9.49.202]) with mapi id 15.01.2106.002; Tue, 22 Dec 2020 06:42:31 +0800 From: "Song Bao Hua (Barry Song)" To: Vitaly Wool CC: Shakeel Butt , Minchan Kim , Mike Galbraith , LKML , linux-mm , Sebastian Andrzej Siewior , NitinGupta , Sergey Senozhatsky , Andrew Morton Subject: RE: [PATCH] zsmalloc: do not use bit_spin_lock Thread-Topic: [PATCH] zsmalloc: do not use bit_spin_lock Thread-Index: AQHW1mZAeBjE5clI7UKUuMSOCQsyuqoBSTyAgAAghwCAAAhXgIAAhndA//+NyICAAIW5IP//jYeAgACME8A= Date: Mon, 21 Dec 2020 22:42:31 +0000 Message-ID: References: <18669bd607ae9efbf4e00e36532c7aa167d0fa12.camel@gmx.de> <20201220002228.38697-1-vitaly.wool@konsulko.com> <8cc0e01fd03245a4994f2e0f54b264fa@hisilicon.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.200.103] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVml0YWx5IFdvb2wgW21h aWx0bzp2aXRhbHkud29vbEBrb25zdWxrby5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVy IDIyLCAyMDIwIDExOjEyIEFNDQo+IFRvOiBTb25nIEJhbyBIdWEgKEJhcnJ5IFNvbmcpIDxzb25n LmJhby5odWFAaGlzaWxpY29uLmNvbT4NCj4gQ2M6IFNoYWtlZWwgQnV0dCA8c2hha2VlbGJAZ29v Z2xlLmNvbT47IE1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+OyBNaWtlDQo+IEdhbGJy YWl0aCA8ZWZhdWx0QGdteC5kZT47IExLTUwgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+ OyBsaW51eC1tbQ0KPiA8bGludXgtbW1Aa3ZhY2sub3JnPjsgU2ViYXN0aWFuIEFuZHJ6ZWogU2ll d2lvciA8YmlnZWFzeUBsaW51dHJvbml4LmRlPjsNCj4gTml0aW5HdXB0YSA8bmd1cHRhQHZmbGFy ZS5vcmc+OyBTZXJnZXkgU2Vub3poYXRza3kNCj4gPHNlcmdleS5zZW5vemhhdHNreS53b3JrQGdt YWlsLmNvbT47IEFuZHJldyBNb3J0b24NCj4gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+DQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHpzbWFsbG9jOiBkbyBub3QgdXNlIGJpdF9zcGluX2xvY2sN Cj4gDQo+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDEwOjMwIFBNIFNvbmcgQmFvIEh1YSAoQmFy cnkgU29uZykNCj4gPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPiB3cm90ZToNCj4gPg0KPiA+ DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBTaGFr ZWVsIEJ1dHQgW21haWx0bzpzaGFrZWVsYkBnb29nbGUuY29tXQ0KPiA+ID4gU2VudDogVHVlc2Rh eSwgRGVjZW1iZXIgMjIsIDIwMjAgMTA6MDMgQU0NCj4gPiA+IFRvOiBTb25nIEJhbyBIdWEgKEJh cnJ5IFNvbmcpIDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNvbT4NCj4gPiA+IENjOiBWaXRhbHkg V29vbCA8dml0YWx5Lndvb2xAa29uc3Vsa28uY29tPjsgTWluY2hhbiBLaW0NCj4gPG1pbmNoYW5A a2VybmVsLm9yZz47DQo+ID4gPiBNaWtlIEdhbGJyYWl0aCA8ZWZhdWx0QGdteC5kZT47IExLTUwg PGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+Ow0KPiBsaW51eC1tbQ0KPiA+ID4gPGxpbnV4 LW1tQGt2YWNrLm9yZz47IFNlYmFzdGlhbiBBbmRyemVqIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRy b25peC5kZT47DQo+ID4gPiBOaXRpbkd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz47IFNlcmdleSBT ZW5vemhhdHNreQ0KPiA+ID4gPHNlcmdleS5zZW5vemhhdHNreS53b3JrQGdtYWlsLmNvbT47IEFu ZHJldyBNb3J0b24NCj4gPiA+IDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPg0KPiA+ID4gU3Vi amVjdDogUmU6IFtQQVRDSF0genNtYWxsb2M6IGRvIG5vdCB1c2UgYml0X3NwaW5fbG9jaw0KPiA+ ID4NCj4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDEyOjA2IFBNIFNvbmcgQmFvIEh1YSAo QmFycnkgU29uZykNCj4gPiA+IDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNvbT4gd3JvdGU6DQo+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBTaGFrZWVsIEJ1dHQgW21haWx0bzpzaGFrZWVsYkBnb29n bGUuY29tXQ0KPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDIyLCAyMDIwIDg6NTAg QU0NCj4gPiA+ID4gPiBUbzogVml0YWx5IFdvb2wgPHZpdGFseS53b29sQGtvbnN1bGtvLmNvbT4N Cj4gPiA+ID4gPiBDYzogTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz47IE1pa2UgR2Fs YnJhaXRoIDxlZmF1bHRAZ214LmRlPjsNCj4gTEtNTA0KPiA+ID4gPiA+IDxsaW51eC1rZXJuZWxA dmdlci5rZXJuZWwub3JnPjsgbGludXgtbW0gPGxpbnV4LW1tQGt2YWNrLm9yZz47IFNvbmcNCj4g QmFvDQo+ID4gPiBIdWENCj4gPiA+ID4gPiAoQmFycnkgU29uZykgPHNvbmcuYmFvLmh1YUBoaXNp bGljb24uY29tPjsgU2ViYXN0aWFuIEFuZHJ6ZWogU2lld2lvcg0KPiA+ID4gPiA+IDxiaWdlYXN5 QGxpbnV0cm9uaXguZGU+OyBOaXRpbkd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz47IFNlcmdleQ0K PiA+ID4gU2Vub3poYXRza3kNCj4gPiA+ID4gPiA8c2VyZ2V5LnNlbm96aGF0c2t5LndvcmtAZ21h aWwuY29tPjsgQW5kcmV3IE1vcnRvbg0KPiA+ID4gPiA+IDxha3BtQGxpbnV4LWZvdW5kYXRpb24u b3JnPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHpzbWFsbG9jOiBkbyBub3QgdXNl IGJpdF9zcGluX2xvY2sNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIw IGF0IDExOjIwIEFNIFZpdGFseSBXb29sIDx2aXRhbHkud29vbEBrb25zdWxrby5jb20+DQo+ID4g PiB3cm90ZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBPbiBNb24sIERlYyAyMSwgMjAyMCBh dCA2OjI0IFBNIE1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+IHdyb3RlOg0KPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBPbiBTdW4sIERlYyAyMCwgMjAyMCBhdCAwMjoyMjoyOEFN ICswMjAwLCBWaXRhbHkgV29vbCB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiB6c21hbGxvYyB0YWtl cyBiaXQgc3BpbmxvY2sgaW4gaXRzIF9tYXAoKSBjYWxsYmFjayBhbmQgcmVsZWFzZXMNCj4gaXQN Cj4gPiA+ID4gPiA+ID4gPiBvbmx5IGluIHVubWFwKCkgd2hpY2ggaXMgdW5zYWZlIGFuZCBsZWFk cyB0byB6c3dhcCBjb21wbGFpbmluZw0KPiA+ID4gPiA+ID4gPiA+IGFib3V0IHNjaGVkdWxpbmcg aW4gYXRvbWljIGNvbnRleHQuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBUbyBm aXggdGhhdCBhbmQgdG8gaW1wcm92ZSBSVCBwcm9wZXJ0aWVzIG9mIHpzbWFsbG9jLCByZW1vdmUg dGhhdA0KPiA+ID4gPiA+ID4gPiA+IGJpdCBzcGlubG9jayBjb21wbGV0ZWx5IGFuZCB1c2UgYSBi aXQgZmxhZyBpbnN0ZWFkLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJIGRvbid0IHdh bnQgdG8gdXNlIHN1Y2ggb3BlbiBjb2RlIGZvciB0aGUgbG9jay4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gSSBzZWUgZnJvbSBNaWtlJ3MgcGF0Y2gsIHJlY2VudCB6c3dhcCBjaGFuZ2Ug aW50cm9kdWNlZCB0aGUgbG9ja2RlcA0KPiA+ID4gPiA+ID4gPiBzcGxhdCBidWcgYW5kIHlvdSB3 YW50IHRvIGltcHJvdmUgenNtYWxsb2MgdG8gZml4IHRoZSB6c3dhcCBidWcNCj4gYW5kDQo+ID4g PiA+ID4gPiA+IGludHJvZHVjZSB0aGlzIHBhdGNoIHdpdGggYWxsb3dpbmcgcHJlZW1wdGlvbiBl bmFibGluZy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGlzIHVuZGVyc3RhbmRpbmcgaXMg dXBzaWRlIGRvd24uIFRoZSBjb2RlIGluIHpzd2FwIHlvdSBhcmUgcmVmZXJyaW5nDQo+ID4gPiA+ ID4gPiB0byBpcyBub3QgYnVnZ3kuICBZb3UgbWF5IGNsYWltIHRoYXQgaXQgaXMgc3Vib3B0aW1h bCBidXQgdGhlcmUgaXMNCj4gPiA+ID4gPiA+IG5vdGhpbmcgd3JvbmcgaW4gdGFraW5nIGEgbXV0 ZXguDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSXMgdGhpcyBzdWJvcHRpbWFs IGZvciBhbGwgb3IganVzdCB0aGUgaGFyZHdhcmUgYWNjZWxlcmF0b3JzPyBTb3JyeSwNCj4gSQ0K PiA+ID4gPiA+IGFtIG5vdCB2ZXJ5IGZhbWlsaWFyIHdpdGggdGhlIGNyeXB0byBBUEkuIElmIEkg c2VsZWN0IGx6byBvciBsejQgYXMNCj4gYQ0KPiA+ID4gPiA+IHpzd2FwIGNvbXByZXNzb3Igd2ls bCB0aGUgW2RlXWNvbXByZXNzaW9uIGJlIGFzeW5jIG9yIHN5bmM/DQo+ID4gPiA+DQo+ID4gPiA+ IFJpZ2h0IG5vdywgaW4gY3J5cHRvIHN1YnN5c3RlbSwgbmV3IGRyaXZlcnMgYXJlIHJlcXVpcmVk IHRvIHdyaXRlIGJhc2VkDQo+IG9uDQo+ID4gPiA+IGFzeW5jIEFQSXMuIFRoZSBvbGQgc3luYyBB UEkgY2FuJ3Qgd29yayBpbiBuZXcgYWNjZWxlcmF0b3IgZHJpdmVycyBhcw0KPiB0aGV5DQo+ID4g PiA+IGFyZSBub3Qgc3VwcG9ydGVkIGF0IGFsbC4NCj4gPiA+ID4NCj4gPiA+ID4gT2xkIGRyaXZl cnMgYXJlIHVzZWQgdG8gc3luYywgYnV0IHRoZXkndmUgZ290IGFzeW5jIHdyYXBwZXJzIHRvIHN1 cHBvcnQNCj4gYXN5bmMNCj4gPiA+ID4gQVBJcy4gRWcuDQo+ID4gPiA+IGNyeXB0bzogYWNvbXAg LSBhZGQgc3VwcG9ydCBmb3IgbHo0IHZpYSBzY29tcA0KPiA+ID4gPg0KPiA+ID4NCj4gaHR0cHM6 Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgu Z2l0L2NvbW1pdC8NCj4gPiA+IGNyeXB0by9sejQuYz9pZD04Y2Q5MzMwZTBhNjE1YzkzMTAzN2Q0 ZGVmOThiNWNlMGQ1NDBmMDhkDQo+ID4gPiA+DQo+ID4gPiA+IGNyeXB0bzogYWNvbXAgLSBhZGQg c3VwcG9ydCBmb3IgbHpvIHZpYSBzY29tcA0KPiA+ID4gPg0KPiA+ID4NCj4gaHR0cHM6Ly9naXQu a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2Nv bW1pdC8NCj4gPiA+IGNyeXB0by9sem8uYz9pZD1hYzlkMmM0YjM5ZTAyMmQyYzYxNDg2YmZjMzNi NzMwY2ZkMDI4OThlDQo+ID4gPiA+DQo+ID4gPiA+IHNvIHRoZXkgYXJlIHN1cHBvcnRpbmcgYXN5 bmMgQVBJcyBidXQgdGhleSBhcmUgc3RpbGwgd29ya2luZyBpbiBzeW5jIG1vZGUNCj4gPiA+IGFz DQo+ID4gPiA+IHRob3NlIG9sZCBkcml2ZXJzIGRvbid0IHNsZWVwLg0KPiA+ID4gPg0KPiA+ID4N Cj4gPiA+IEdvb2QgdG8ga25vdyB0aGF0IHRob3NlIGFyZSBzeW5jIGJlY2F1c2UgSSB3YW50IHRo ZW0gdG8gYmUgc3luYy4NCj4gPiA+IFBsZWFzZSBub3RlIHRoYXQgenN3YXAgaXMgYSBjYWNoZSBp biBmcm9udCBvZiBhIHJlYWwgc3dhcCBhbmQgdGhlIGxvYWQNCj4gPiA+IG9wZXJhdGlvbiBpcyBs YXRlbmN5IHNlbnNpdGl2ZSBhcyBpdCBjb21lcyBpbiB0aGUgcGFnZSBmYXVsdCBwYXRoIGFuZA0K PiA+ID4gZGlyZWN0bHkgaW1wYWN0cyB0aGUgYXBwbGljYXRpb25zLiBJIGRvdWJ0IGRlY29tcHJl c3Npbmcgc3luY2hyb25vdXNseQ0KPiA+ID4gYSA0ayBwYWdlIG9uIGEgY3B1IHdpbGwgYmUgY29z dGxpZXIgdGhhbiBhc3luY2hyb25vdXNseSBkZWNvbXByZXNzaW5nDQo+ID4gPiB0aGUgc2FtZSBw YWdlIGZyb20gaGFyZHdhcmUgYWNjZWxlcmF0b3JzLg0KPiA+DQo+ID4gSWYgeW91IHJlYWQgdGhl IG9sZCBwYXBlcjoNCj4gPg0KPiBodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQvcGFnZXMvbmV3 LWxpbnV4LXpzd2FwLWNvbXByZXNzaW9uLWZ1bmN0aW9uYWxpdA0KPiB5DQo+ID4gQmVjYXVzZSB0 aGUgaGFyZHdhcmUgYWNjZWxlcmF0b3Igc3BlZWRzIHVwIGNvbXByZXNzaW9uLCBsb29raW5nIGF0 IHRoZSB6c3dhcA0KPiA+IG1ldHJpY3Mgd2Ugb2JzZXJ2ZWQgdGhhdCB0aGVyZSB3ZXJlIG1vcmUg c3RvcmUgYW5kIGxvYWQgcmVxdWVzdHMgaW4gYSBnaXZlbg0KPiA+IGFtb3VudCBvZiB0aW1lLCB3 aGljaCBmaWxsZWQgdXAgdGhlIHpzd2FwIHBvb2wgZmFzdGVyIHRoYW4gYSBzb2Z0d2FyZQ0KPiA+ IGNvbXByZXNzaW9uIHJ1bi4gQmVjYXVzZSBvZiB0aGlzIGJlaGF2aW9yLCB3ZSBzZXQgdGhlIG1h eF9wb29sX3BlcmNlbnQNCj4gPiBwYXJhbWV0ZXIgdG8gMzAgZm9yIHRoZSBoYXJkd2FyZSBjb21w cmVzc2lvbiBydW5zIC0gdGhpcyBtZWFucyB0aGF0IHpzd2FwDQo+ID4gY2FuIHVzZSB1cCB0byAz MCUgb2YgdGhlIDEwR0Igb2YgdG90YWwgbWVtb3J5Lg0KPiA+DQo+ID4gU28gdXNpbmcgaGFyZHdh cmUgYWNjZWxlcmF0b3JzLCB3ZSBnZXQgYSBjaGFuY2UgdG8gc3BlZWQgdXAgY29tcHJlc3Npb24N Cj4gPiB3aGlsZSBkZWNyZWFzaW5nIGNwdSB1dGlsaXphdGlvbi4NCj4gPg0KPiA+IEJUVywgSWYg aXQgaXMgbm90IGVhc3kgdG8gY2hhbmdlIHpzbWFsbG9jLCBvbmUgcXVpY2sgd29ya2Fyb3VuZCB3 ZSBtaWdodCBkbw0KPiA+IGluIHpzd2FwIGlzIGFkZGluZyB0aGUgYmVsb3cgYWZ0ZXIgYXBwbHlp bmcgTWlrZSdzIG9yaWdpbmFsIHBhdGNoOg0KPiA+DQo+ID4gaWYoaW5fYXRvbWljKCkpIC8qIGZv ciB6c21hbGxvYyAqLw0KPiA+ICAgICAgICAgd2hpbGUoIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9u KCZyZXEtPmRvbmUpOw0KPiA+IGVsc2UgLyogZm9yIHpidWQsIHozZm9sZCAqLw0KPiA+ICAgICAg ICAgY3J5cHRvX3dhaXRfcmVxKC4uLi4pOw0KPiANCj4gSSBkb24ndCB0aGluayBJJ20gZ29pbmcg dG8gYWNrIHRoaXMsIHNvcnJ5Lg0KPiANCg0KRmFpciBlbm91Z2guIEFuZCBJIGFtIGFsc28gdGhp bmtpbmcgaWYgd2UgY2FuIG1vdmUgenBvb2xfdW5tYXBfaGFuZGxlKCkNCnF1aXRlIGFmdGVyIHpw b29sX21hcF9oYW5kbGUoKSBhcyBiZWxvdzoNCg0KCWRsZW4gPSBQQUdFX1NJWkU7DQoJc3JjID0g enBvb2xfbWFwX2hhbmRsZShlbnRyeS0+cG9vbC0+enBvb2wsIGVudHJ5LT5oYW5kbGUsIFpQT09M X01NX1JPKTsNCglpZiAoenBvb2xfZXZpY3RhYmxlKGVudHJ5LT5wb29sLT56cG9vbCkpDQoJCXNy YyArPSBzaXplb2Yoc3RydWN0IHpzd2FwX2hlYWRlcik7DQorCXpwb29sX3VubWFwX2hhbmRsZShl bnRyeS0+cG9vbC0+enBvb2wsIGVudHJ5LT5oYW5kbGUpOw0KDQoJYWNvbXBfY3R4ID0gcmF3X2Nw dV9wdHIoZW50cnktPnBvb2wtPmFjb21wX2N0eCk7DQoJbXV0ZXhfbG9jayhhY29tcF9jdHgtPm11 dGV4KTsNCglzZ19pbml0X29uZSgmaW5wdXQsIHNyYywgZW50cnktPmxlbmd0aCk7DQoJc2dfaW5p dF90YWJsZSgmb3V0cHV0LCAxKTsNCglzZ19zZXRfcGFnZSgmb3V0cHV0LCBwYWdlLCBQQUdFX1NJ WkUsIDApOw0KCWFjb21wX3JlcXVlc3Rfc2V0X3BhcmFtcyhhY29tcF9jdHgtPnJlcSwgJmlucHV0 LCAmb3V0cHV0LCBlbnRyeS0+bGVuZ3RoLCBkbGVuKTsNCglyZXQgPSBjcnlwdG9fd2FpdF9yZXEo Y3J5cHRvX2Fjb21wX2RlY29tcHJlc3MoYWNvbXBfY3R4LT5yZXEpLCAmYWNvbXBfY3R4LT53YWl0 KTsNCgltdXRleF91bmxvY2soYWNvbXBfY3R4LT5tdXRleCk7DQoNCi0JenBvb2xfdW5tYXBfaGFu ZGxlKGVudHJ5LT5wb29sLT56cG9vbCwgZW50cnktPmhhbmRsZSk7DQoNClNpbmNlIHNyYyBpcyBh bHdheXMgbG93IG1lbW9yeSBhbmQgd2Ugb25seSBuZWVkIGl0cyB2aXJ0dWFsIGFkZHJlc3MNCnRv IGdldCB0aGUgcGFnZSBvZiBzcmMgaW4gc2dfaW5pdF9vbmUoKS4gV2UgZG9uJ3QgYWN0dWFsbHkg cmVhZCBpdA0KYnkgQ1BVIGFueXdoZXJlLg0KDQo+IEJlc3QgcmVnYXJkcywNCj4gICAgVml0YWx5 DQo+IA0KPiA+IGNyeXB0b193YWl0X3JlcSgpIGlzIGFjdHVhbGx5IGRvaW5nIHdhaXRfZm9yX2Nv bXBsZXRpb24oKToNCj4gPiBzdGF0aWMgaW5saW5lIGludCBjcnlwdG9fd2FpdF9yZXEoaW50IGVy ciwgc3RydWN0IGNyeXB0b193YWl0ICp3YWl0KQ0KPiA+IHsNCj4gPiAgICAgICAgIHN3aXRjaCAo ZXJyKSB7DQo+ID4gICAgICAgICBjYXNlIC1FSU5QUk9HUkVTUzoNCj4gPiAgICAgICAgIGNhc2Ug LUVCVVNZOg0KPiA+ICAgICAgICAgICAgICAgICB3YWl0X2Zvcl9jb21wbGV0aW9uKCZ3YWl0LT5j b21wbGV0aW9uKTsNCj4gPiAgICAgICAgICAgICAgICAgcmVpbml0X2NvbXBsZXRpb24oJndhaXQt PmNvbXBsZXRpb24pOw0KPiA+ICAgICAgICAgICAgICAgICBlcnIgPSB3YWl0LT5lcnI7DQo+ID4g ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICBy ZXR1cm4gZXJyOw0KPiA+IH0NCj4gPg0KVGhhbmtzDQpCYXJyeQ0K