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 C3824C433DB for ; Mon, 21 Dec 2020 23:37:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CB8FC207A1 for ; Mon, 21 Dec 2020 23:37:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB8FC207A1 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 EF8156B0070; Mon, 21 Dec 2020 18:37:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EA95F6B0071; Mon, 21 Dec 2020 18:37:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D99476B0072; Mon, 21 Dec 2020 18:37:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0211.hostedemail.com [216.40.44.211]) by kanga.kvack.org (Postfix) with ESMTP id C0AEB6B0070 for ; Mon, 21 Dec 2020 18:37:06 -0500 (EST) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 85EB91EF2 for ; Mon, 21 Dec 2020 23:37:06 +0000 (UTC) X-FDA: 77618902452.06.order23_2b000f22745b Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id 5F72D1003A213 for ; Mon, 21 Dec 2020 23:37:06 +0000 (UTC) X-HE-Tag: order23_2b000f22745b X-Filterd-Recvd-Size: 15557 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Dec 2020 23:37:04 +0000 (UTC) Received: from DGGEMM403-HUB.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4D0G7p2P4TzQvCM; Tue, 22 Dec 2020 07:36:22 +0800 (CST) Received: from dggemi709-chm.china.huawei.com (10.3.20.108) by DGGEMM403-HUB.china.huawei.com (10.3.20.211) with Microsoft SMTP Server (TLS) id 14.3.498.0; Tue, 22 Dec 2020 07:35:27 +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 07:35:27 +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 07:35:27 +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//jYeAgACME8CAAA+J8A== Date: Mon, 21 Dec 2020 23:35:27 +0000 Message-ID: References: <18669bd607ae9efbf4e00e36532c7aa167d0fa12.camel@gmx.de> <20201220002228.38697-1-vitaly.wool@konsulko.com> <8cc0e01fd03245a4994f2e0f54b264fa@hisilicon.com> 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: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU29uZyBCYW8gSHVhIChC YXJyeSBTb25nKQ0KPiBTZW50OiBUdWVzZGF5LCBEZWNlbWJlciAyMiwgMjAyMCAxMTozOCBBTQ0K PiBUbzogJ1ZpdGFseSBXb29sJyA8dml0YWx5Lndvb2xAa29uc3Vsa28uY29tPg0KPiBDYzogU2hh a2VlbCBCdXR0IDxzaGFrZWVsYkBnb29nbGUuY29tPjsgTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2Vy bmVsLm9yZz47IE1pa2UNCj4gR2FsYnJhaXRoIDxlZmF1bHRAZ214LmRlPjsgTEtNTCA8bGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZz47IGxpbnV4LW1tDQo+IDxsaW51eC1tbUBrdmFjay5vcmc+ OyBTZWJhc3RpYW4gQW5kcnplaiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+Ow0KPiBO aXRpbkd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz47IFNlcmdleSBTZW5vemhhdHNreQ0KPiA8c2Vy Z2V5LnNlbm96aGF0c2t5LndvcmtAZ21haWwuY29tPjsgQW5kcmV3IE1vcnRvbg0KPiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4NCj4gU3ViamVjdDogUkU6IFtQQVRDSF0genNtYWxsb2M6IGRv IG5vdCB1c2UgYml0X3NwaW5fbG9jaw0KPiANCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gRnJvbTogVml0YWx5IFdvb2wgW21haWx0bzp2aXRhbHkud29vbEBrb25z dWxrby5jb21dDQo+ID4gU2VudDogVHVlc2RheSwgRGVjZW1iZXIgMjIsIDIwMjAgMTE6MTIgQU0N Cj4gPiBUbzogU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKSA8c29uZy5iYW8uaHVhQGhpc2lsaWNv bi5jb20+DQo+ID4gQ2M6IFNoYWtlZWwgQnV0dCA8c2hha2VlbGJAZ29vZ2xlLmNvbT47IE1pbmNo YW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+Ow0KPiBNaWtlDQo+ID4gR2FsYnJhaXRoIDxlZmF1 bHRAZ214LmRlPjsgTEtNTCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz47IGxpbnV4LW1t DQo+ID4gPGxpbnV4LW1tQGt2YWNrLm9yZz47IFNlYmFzdGlhbiBBbmRyemVqIFNpZXdpb3IgPGJp Z2Vhc3lAbGludXRyb25peC5kZT47DQo+ID4gTml0aW5HdXB0YSA8bmd1cHRhQHZmbGFyZS5vcmc+ OyBTZXJnZXkgU2Vub3poYXRza3kNCj4gPiA8c2VyZ2V5LnNlbm96aGF0c2t5LndvcmtAZ21haWwu Y29tPjsgQW5kcmV3IE1vcnRvbg0KPiA+IDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPg0KPiA+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHpzbWFsbG9jOiBkbyBub3QgdXNlIGJpdF9zcGluX2xvY2sN Cj4gPg0KPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDEwOjMwIFBNIFNvbmcgQmFvIEh1YSAo QmFycnkgU29uZykNCj4gPiA8c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+IHdyb3RlOg0KPiA+ ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gPiBGcm9tOiBTaGFrZWVsIEJ1dHQgW21haWx0bzpzaGFrZWVsYkBnb29nbGUuY29tXQ0KPiA+ ID4gPiBTZW50OiBUdWVzZGF5LCBEZWNlbWJlciAyMiwgMjAyMCAxMDowMyBBTQ0KPiA+ID4gPiBU bzogU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKSA8c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+ DQo+ID4gPiA+IENjOiBWaXRhbHkgV29vbCA8dml0YWx5Lndvb2xAa29uc3Vsa28uY29tPjsgTWlu Y2hhbiBLaW0NCj4gPiA8bWluY2hhbkBrZXJuZWwub3JnPjsNCj4gPiA+ID4gTWlrZSBHYWxicmFp dGggPGVmYXVsdEBnbXguZGU+OyBMS01MIDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsN Cj4gPiBsaW51eC1tbQ0KPiA+ID4gPiA8bGludXgtbW1Aa3ZhY2sub3JnPjsgU2ViYXN0aWFuIEFu ZHJ6ZWogU2lld2lvciA8YmlnZWFzeUBsaW51dHJvbml4LmRlPjsNCj4gPiA+ID4gTml0aW5HdXB0 YSA8bmd1cHRhQHZmbGFyZS5vcmc+OyBTZXJnZXkgU2Vub3poYXRza3kNCj4gPiA+ID4gPHNlcmdl eS5zZW5vemhhdHNreS53b3JrQGdtYWlsLmNvbT47IEFuZHJldyBNb3J0b24NCj4gPiA+ID4gPGFr cG1AbGludXgtZm91bmRhdGlvbi5vcmc+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHpz bWFsbG9jOiBkbyBub3QgdXNlIGJpdF9zcGluX2xvY2sNCj4gPiA+ID4NCj4gPiA+ID4gT24gTW9u LCBEZWMgMjEsIDIwMjAgYXQgMTI6MDYgUE0gU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKQ0KPiA+ ID4gPiA8c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+IHdyb3RlOg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+ID4gPiA+IEZyb206IFNoYWtlZWwgQnV0dCBbbWFpbHRvOnNoYWtlZWxiQGdvb2dsZS5j b21dDQo+ID4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBEZWNlbWJlciAyMiwgMjAyMCA4OjUwIEFN DQo+ID4gPiA+ID4gPiBUbzogVml0YWx5IFdvb2wgPHZpdGFseS53b29sQGtvbnN1bGtvLmNvbT4N Cj4gPiA+ID4gPiA+IENjOiBNaW5jaGFuIEtpbSA8bWluY2hhbkBrZXJuZWwub3JnPjsgTWlrZSBH YWxicmFpdGggPGVmYXVsdEBnbXguZGU+Ow0KPiA+IExLTUwNCj4gPiA+ID4gPiA+IDxsaW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgbGludXgtbW0gPGxpbnV4LW1tQGt2YWNrLm9yZz47IFNv bmcNCj4gPiBCYW8NCj4gPiA+ID4gSHVhDQo+ID4gPiA+ID4gPiAoQmFycnkgU29uZykgPHNvbmcu YmFvLmh1YUBoaXNpbGljb24uY29tPjsgU2ViYXN0aWFuIEFuZHJ6ZWogU2lld2lvcg0KPiA+ID4g PiA+ID4gPGJpZ2Vhc3lAbGludXRyb25peC5kZT47IE5pdGluR3VwdGEgPG5ndXB0YUB2ZmxhcmUu b3JnPjsgU2VyZ2V5DQo+ID4gPiA+IFNlbm96aGF0c2t5DQo+ID4gPiA+ID4gPiA8c2VyZ2V5LnNl bm96aGF0c2t5LndvcmtAZ21haWwuY29tPjsgQW5kcmV3IE1vcnRvbg0KPiA+ID4gPiA+ID4gPGFr cG1AbGludXgtZm91bmRhdGlvbi5vcmc+DQo+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENI XSB6c21hbGxvYzogZG8gbm90IHVzZSBiaXRfc3Bpbl9sb2NrDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gT24gTW9uLCBEZWMgMjEsIDIwMjAgYXQgMTE6MjAgQU0gVml0YWx5IFdvb2wgPHZpdGFs eS53b29sQGtvbnN1bGtvLmNvbT4NCj4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDY6MjQgUE0gTWluY2hhbiBLaW0gPG1p bmNoYW5Aa2VybmVsLm9yZz4NCj4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiBPbiBTdW4sIERlYyAyMCwgMjAyMCBhdCAwMjoyMjoyOEFNICswMjAwLCBWaXRhbHkgV29v bCB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+IHpzbWFsbG9jIHRha2VzIGJpdCBzcGlubG9jayBp biBpdHMgX21hcCgpIGNhbGxiYWNrIGFuZCByZWxlYXNlcw0KPiA+IGl0DQo+ID4gPiA+ID4gPiA+ ID4gPiBvbmx5IGluIHVubWFwKCkgd2hpY2ggaXMgdW5zYWZlIGFuZCBsZWFkcyB0byB6c3dhcCBj b21wbGFpbmluZw0KPiA+ID4gPiA+ID4gPiA+ID4gYWJvdXQgc2NoZWR1bGluZyBpbiBhdG9taWMg Y29udGV4dC4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBUbyBmaXggdGhh dCBhbmQgdG8gaW1wcm92ZSBSVCBwcm9wZXJ0aWVzIG9mIHpzbWFsbG9jLCByZW1vdmUNCj4gdGhh dA0KPiA+ID4gPiA+ID4gPiA+ID4gYml0IHNwaW5sb2NrIGNvbXBsZXRlbHkgYW5kIHVzZSBhIGJp dCBmbGFnIGluc3RlYWQuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJIGRvbid0 IHdhbnQgdG8gdXNlIHN1Y2ggb3BlbiBjb2RlIGZvciB0aGUgbG9jay4NCj4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+IEkgc2VlIGZyb20gTWlrZSdzIHBhdGNoLCByZWNlbnQgenN3YXAg Y2hhbmdlIGludHJvZHVjZWQgdGhlIGxvY2tkZXANCj4gPiA+ID4gPiA+ID4gPiBzcGxhdCBidWcg YW5kIHlvdSB3YW50IHRvIGltcHJvdmUgenNtYWxsb2MgdG8gZml4IHRoZSB6c3dhcCBidWcNCj4g PiBhbmQNCj4gPiA+ID4gPiA+ID4gPiBpbnRyb2R1Y2UgdGhpcyBwYXRjaCB3aXRoIGFsbG93aW5n IHByZWVtcHRpb24gZW5hYmxpbmcuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoaXMg dW5kZXJzdGFuZGluZyBpcyB1cHNpZGUgZG93bi4gVGhlIGNvZGUgaW4genN3YXAgeW91IGFyZSBy ZWZlcnJpbmcNCj4gPiA+ID4gPiA+ID4gdG8gaXMgbm90IGJ1Z2d5LiAgWW91IG1heSBjbGFpbSB0 aGF0IGl0IGlzIHN1Ym9wdGltYWwgYnV0IHRoZXJlIGlzDQo+ID4gPiA+ID4gPiA+IG5vdGhpbmcg d3JvbmcgaW4gdGFraW5nIGEgbXV0ZXguDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gSXMgdGhpcyBzdWJvcHRpbWFsIGZvciBhbGwgb3IganVzdCB0aGUgaGFyZHdhcmUg YWNjZWxlcmF0b3JzPyBTb3JyeSwNCj4gPiBJDQo+ID4gPiA+ID4gPiBhbSBub3QgdmVyeSBmYW1p bGlhciB3aXRoIHRoZSBjcnlwdG8gQVBJLiBJZiBJIHNlbGVjdCBsem8gb3IgbHo0IGFzDQo+ID4g YQ0KPiA+ID4gPiA+ID4genN3YXAgY29tcHJlc3NvciB3aWxsIHRoZSBbZGVdY29tcHJlc3Npb24g YmUgYXN5bmMgb3Igc3luYz8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFJpZ2h0IG5vdywgaW4gY3J5 cHRvIHN1YnN5c3RlbSwgbmV3IGRyaXZlcnMgYXJlIHJlcXVpcmVkIHRvIHdyaXRlIGJhc2VkDQo+ ID4gb24NCj4gPiA+ID4gPiBhc3luYyBBUElzLiBUaGUgb2xkIHN5bmMgQVBJIGNhbid0IHdvcmsg aW4gbmV3IGFjY2VsZXJhdG9yIGRyaXZlcnMgYXMNCj4gPiB0aGV5DQo+ID4gPiA+ID4gYXJlIG5v dCBzdXBwb3J0ZWQgYXQgYWxsLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT2xkIGRyaXZlcnMgYXJl IHVzZWQgdG8gc3luYywgYnV0IHRoZXkndmUgZ290IGFzeW5jIHdyYXBwZXJzIHRvIHN1cHBvcnQN Cj4gPiBhc3luYw0KPiA+ID4gPiA+IEFQSXMuIEVnLg0KPiA+ID4gPiA+IGNyeXB0bzogYWNvbXAg LSBhZGQgc3VwcG9ydCBmb3IgbHo0IHZpYSBzY29tcA0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4N Cj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFs ZHMvbGludXguZ2l0L2NvbW1pdC8NCj4gPiA+ID4gY3J5cHRvL2x6NC5jP2lkPThjZDkzMzBlMGE2 MTVjOTMxMDM3ZDRkZWY5OGI1Y2UwZDU0MGYwOGQNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGNyeXB0 bzogYWNvbXAgLSBhZGQgc3VwcG9ydCBmb3IgbHpvIHZpYSBzY29tcA0KPiA+ID4gPiA+DQo+ID4g PiA+DQo+ID4NCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n aXQvdG9ydmFsZHMvbGludXguZ2l0L2NvbW1pdC8NCj4gPiA+ID4gY3J5cHRvL2x6by5jP2lkPWFj OWQyYzRiMzllMDIyZDJjNjE0ODZiZmMzM2I3MzBjZmQwMjg5OGUNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IHNvIHRoZXkgYXJlIHN1cHBvcnRpbmcgYXN5bmMgQVBJcyBidXQgdGhleSBhcmUgc3RpbGwg d29ya2luZyBpbiBzeW5jDQo+IG1vZGUNCj4gPiA+ID4gYXMNCj4gPiA+ID4gPiB0aG9zZSBvbGQg ZHJpdmVycyBkb24ndCBzbGVlcC4NCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBHb29kIHRv IGtub3cgdGhhdCB0aG9zZSBhcmUgc3luYyBiZWNhdXNlIEkgd2FudCB0aGVtIHRvIGJlIHN5bmMu DQo+ID4gPiA+IFBsZWFzZSBub3RlIHRoYXQgenN3YXAgaXMgYSBjYWNoZSBpbiBmcm9udCBvZiBh IHJlYWwgc3dhcCBhbmQgdGhlIGxvYWQNCj4gPiA+ID4gb3BlcmF0aW9uIGlzIGxhdGVuY3kgc2Vu c2l0aXZlIGFzIGl0IGNvbWVzIGluIHRoZSBwYWdlIGZhdWx0IHBhdGggYW5kDQo+ID4gPiA+IGRp cmVjdGx5IGltcGFjdHMgdGhlIGFwcGxpY2F0aW9ucy4gSSBkb3VidCBkZWNvbXByZXNzaW5nIHN5 bmNocm9ub3VzbHkNCj4gPiA+ID4gYSA0ayBwYWdlIG9uIGEgY3B1IHdpbGwgYmUgY29zdGxpZXIg dGhhbiBhc3luY2hyb25vdXNseSBkZWNvbXByZXNzaW5nDQo+ID4gPiA+IHRoZSBzYW1lIHBhZ2Ug ZnJvbSBoYXJkd2FyZSBhY2NlbGVyYXRvcnMuDQo+ID4gPg0KPiA+ID4gSWYgeW91IHJlYWQgdGhl IG9sZCBwYXBlcjoNCj4gPiA+DQo+ID4NCj4gaHR0cHM6Ly93d3cuaWJtLmNvbS9zdXBwb3J0L3Bh Z2VzL25ldy1saW51eC16c3dhcC1jb21wcmVzc2lvbi1mdW5jdGlvbmFsaXQNCj4gPiB5DQo+ID4g PiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBhY2NlbGVyYXRvciBzcGVlZHMgdXAgY29tcHJlc3Npb24s IGxvb2tpbmcgYXQgdGhlIHpzd2FwDQo+ID4gPiBtZXRyaWNzIHdlIG9ic2VydmVkIHRoYXQgdGhl cmUgd2VyZSBtb3JlIHN0b3JlIGFuZCBsb2FkIHJlcXVlc3RzIGluIGEgZ2l2ZW4NCj4gPiA+IGFt b3VudCBvZiB0aW1lLCB3aGljaCBmaWxsZWQgdXAgdGhlIHpzd2FwIHBvb2wgZmFzdGVyIHRoYW4g YSBzb2Z0d2FyZQ0KPiA+ID4gY29tcHJlc3Npb24gcnVuLiBCZWNhdXNlIG9mIHRoaXMgYmVoYXZp b3IsIHdlIHNldCB0aGUgbWF4X3Bvb2xfcGVyY2VudA0KPiA+ID4gcGFyYW1ldGVyIHRvIDMwIGZv ciB0aGUgaGFyZHdhcmUgY29tcHJlc3Npb24gcnVucyAtIHRoaXMgbWVhbnMgdGhhdCB6c3dhcA0K PiA+ID4gY2FuIHVzZSB1cCB0byAzMCUgb2YgdGhlIDEwR0Igb2YgdG90YWwgbWVtb3J5Lg0KPiA+ ID4NCj4gPiA+IFNvIHVzaW5nIGhhcmR3YXJlIGFjY2VsZXJhdG9ycywgd2UgZ2V0IGEgY2hhbmNl IHRvIHNwZWVkIHVwIGNvbXByZXNzaW9uDQo+ID4gPiB3aGlsZSBkZWNyZWFzaW5nIGNwdSB1dGls aXphdGlvbi4NCj4gPiA+DQo+ID4gPiBCVFcsIElmIGl0IGlzIG5vdCBlYXN5IHRvIGNoYW5nZSB6 c21hbGxvYywgb25lIHF1aWNrIHdvcmthcm91bmQgd2UgbWlnaHQNCj4gZG8NCj4gPiA+IGluIHpz d2FwIGlzIGFkZGluZyB0aGUgYmVsb3cgYWZ0ZXIgYXBwbHlpbmcgTWlrZSdzIG9yaWdpbmFsIHBh dGNoOg0KPiA+ID4NCj4gPiA+IGlmKGluX2F0b21pYygpKSAvKiBmb3IgenNtYWxsb2MgKi8NCj4g PiA+ICAgICAgICAgd2hpbGUoIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZyZXEtPmRvbmUpOw0K PiA+ID4gZWxzZSAvKiBmb3IgemJ1ZCwgejNmb2xkICovDQo+ID4gPiAgICAgICAgIGNyeXB0b193 YWl0X3JlcSguLi4uKTsNCj4gPg0KPiA+IEkgZG9uJ3QgdGhpbmsgSSdtIGdvaW5nIHRvIGFjayB0 aGlzLCBzb3JyeS4NCj4gPg0KPiANCj4gRmFpciBlbm91Z2guIEFuZCBJIGFtIGFsc28gdGhpbmtp bmcgaWYgd2UgY2FuIG1vdmUgenBvb2xfdW5tYXBfaGFuZGxlKCkNCj4gcXVpdGUgYWZ0ZXIgenBv b2xfbWFwX2hhbmRsZSgpIGFzIGJlbG93Og0KPiANCj4gCWRsZW4gPSBQQUdFX1NJWkU7DQo+IAlz cmMgPSB6cG9vbF9tYXBfaGFuZGxlKGVudHJ5LT5wb29sLT56cG9vbCwgZW50cnktPmhhbmRsZSwg WlBPT0xfTU1fUk8pOw0KPiAJaWYgKHpwb29sX2V2aWN0YWJsZShlbnRyeS0+cG9vbC0+enBvb2wp KQ0KPiAJCXNyYyArPSBzaXplb2Yoc3RydWN0IHpzd2FwX2hlYWRlcik7DQo+ICsJenBvb2xfdW5t YXBfaGFuZGxlKGVudHJ5LT5wb29sLT56cG9vbCwgZW50cnktPmhhbmRsZSk7DQo+IA0KPiAJYWNv bXBfY3R4ID0gcmF3X2NwdV9wdHIoZW50cnktPnBvb2wtPmFjb21wX2N0eCk7DQo+IAltdXRleF9s b2NrKGFjb21wX2N0eC0+bXV0ZXgpOw0KPiAJc2dfaW5pdF9vbmUoJmlucHV0LCBzcmMsIGVudHJ5 LT5sZW5ndGgpOw0KPiAJc2dfaW5pdF90YWJsZSgmb3V0cHV0LCAxKTsNCj4gCXNnX3NldF9wYWdl KCZvdXRwdXQsIHBhZ2UsIFBBR0VfU0laRSwgMCk7DQo+IAlhY29tcF9yZXF1ZXN0X3NldF9wYXJh bXMoYWNvbXBfY3R4LT5yZXEsICZpbnB1dCwgJm91dHB1dCwgZW50cnktPmxlbmd0aCwNCj4gZGxl bik7DQo+IAlyZXQgPSBjcnlwdG9fd2FpdF9yZXEoY3J5cHRvX2Fjb21wX2RlY29tcHJlc3MoYWNv bXBfY3R4LT5yZXEpLA0KPiAmYWNvbXBfY3R4LT53YWl0KTsNCj4gCW11dGV4X3VubG9jayhhY29t cF9jdHgtPm11dGV4KTsNCj4gDQo+IC0JenBvb2xfdW5tYXBfaGFuZGxlKGVudHJ5LT5wb29sLT56 cG9vbCwgZW50cnktPmhhbmRsZSk7DQo+IA0KPiBTaW5jZSBzcmMgaXMgYWx3YXlzIGxvdyBtZW1v cnkgYW5kIHdlIG9ubHkgbmVlZCBpdHMgdmlydHVhbCBhZGRyZXNzDQo+IHRvIGdldCB0aGUgcGFn ZSBvZiBzcmMgaW4gc2dfaW5pdF9vbmUoKS4gV2UgZG9uJ3QgYWN0dWFsbHkgcmVhZCBpdA0KPiBi eSBDUFUgYW55d2hlcmUuDQoNClRoZSBiZWxvdyBjb2RlIG1pZ2h0IGJlIGJldHRlcjoNCg0KCWRs ZW4gPSBQQUdFX1NJWkU7DQoJc3JjID0genBvb2xfbWFwX2hhbmRsZShlbnRyeS0+cG9vbC0+enBv b2wsIGVudHJ5LT5oYW5kbGUsIFpQT09MX01NX1JPKTsNCglpZiAoenBvb2xfZXZpY3RhYmxlKGVu dHJ5LT5wb29sLT56cG9vbCkpDQoJCXNyYyArPSBzaXplb2Yoc3RydWN0IHpzd2FwX2hlYWRlcik7 DQoNCglhY29tcF9jdHggPSByYXdfY3B1X3B0cihlbnRyeS0+cG9vbC0+YWNvbXBfY3R4KTsNCg0K Kwl6cG9vbF91bm1hcF9oYW5kbGUoZW50cnktPnBvb2wtPnpwb29sLCBlbnRyeS0+aGFuZGxlKTsN Cg0KCW11dGV4X2xvY2soYWNvbXBfY3R4LT5tdXRleCk7DQoJc2dfaW5pdF9vbmUoJmlucHV0LCBz cmMsIGVudHJ5LT5sZW5ndGgpOw0KCXNnX2luaXRfdGFibGUoJm91dHB1dCwgMSk7DQoJc2dfc2V0 X3BhZ2UoJm91dHB1dCwgcGFnZSwgUEFHRV9TSVpFLCAwKTsNCglhY29tcF9yZXF1ZXN0X3NldF9w YXJhbXMoYWNvbXBfY3R4LT5yZXEsICZpbnB1dCwgJm91dHB1dCwgZW50cnktPmxlbmd0aCwgZGxl bik7DQoJcmV0ID0gY3J5cHRvX3dhaXRfcmVxKGNyeXB0b19hY29tcF9kZWNvbXByZXNzKGFjb21w X2N0eC0+cmVxKSwgJmFjb21wX2N0eC0+d2FpdCk7DQoJbXV0ZXhfdW5sb2NrKGFjb21wX2N0eC0+ bXV0ZXgpOw0KDQotCXpwb29sX3VubWFwX2hhbmRsZShlbnRyeS0+cG9vbC0+enBvb2wsIGVudHJ5 LT5oYW5kbGUpOw0KDQo+IA0KPiA+IEJlc3QgcmVnYXJkcywNCj4gPiAgICBWaXRhbHkNCj4gPg0K PiA+ID4gY3J5cHRvX3dhaXRfcmVxKCkgaXMgYWN0dWFsbHkgZG9pbmcgd2FpdF9mb3JfY29tcGxl dGlvbigpOg0KPiA+ID4gc3RhdGljIGlubGluZSBpbnQgY3J5cHRvX3dhaXRfcmVxKGludCBlcnIs IHN0cnVjdCBjcnlwdG9fd2FpdCAqd2FpdCkNCj4gPiA+IHsNCj4gPiA+ICAgICAgICAgc3dpdGNo IChlcnIpIHsNCj4gPiA+ICAgICAgICAgY2FzZSAtRUlOUFJPR1JFU1M6DQo+ID4gPiAgICAgICAg IGNhc2UgLUVCVVNZOg0KPiA+ID4gICAgICAgICAgICAgICAgIHdhaXRfZm9yX2NvbXBsZXRpb24o JndhaXQtPmNvbXBsZXRpb24pOw0KPiA+ID4gICAgICAgICAgICAgICAgIHJlaW5pdF9jb21wbGV0 aW9uKCZ3YWl0LT5jb21wbGV0aW9uKTsNCj4gPiA+ICAgICAgICAgICAgICAgICBlcnIgPSB3YWl0 LT5lcnI7DQo+ID4gPiAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiAgICAgICAgIH0NCj4g PiA+DQo+ID4gPiAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gPiB9DQoNClRoYW5rcw0KQmFycnkN Cg==