Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp4592117pxu; Mon, 21 Dec 2020 17:15:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJxYvVnW9umYck4iS8l64yjBlCavUY9db59yki5EqPAF0nMayA4FcOsXUuqXMIbp5x8iaCoM X-Received: by 2002:a17:907:2131:: with SMTP id qo17mr17467375ejb.546.1608599738935; Mon, 21 Dec 2020 17:15:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608599738; cv=none; d=google.com; s=arc-20160816; b=CGdtM1VcgjfZoAVzx1e5Nc706kph5j09kY8VeSi1YsVUFHIoX4Ip0PDwATVO/esHmG EU/9pcXncMVm7yWz//bUTpZ5PWDHzmyi/O8+gJowT56lF2R8F18/R3rRuSb5X3wZa2xt gS2NirQDRIq0+BqbRLCyLTbaeI/6LpUIOVNkpKYjaSHQeRK3l5BFG33EGWH3BPNg53Bt ojX4TUb7WX9j303MJ3QcIuq7cKtVVxUcuMezUOE9B4WfCHnPaIJ3E/wDAlfysbKubEwi tPm8cKAm8ZG4t5MJ4QiGQVvu8nEA3RA3LUMfkYD03blSkP8O/+CHcPhxkvWeh3Yp5WJ3 D//Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=4KQhvBPKRLbCpIh/JgzVz/vGfW6uqZYNexU30111uQ4=; b=gTGZIlyX4KF2NywApi8WdXkAXhM3XHXpJ3LENSYSJRpxeFtvIqkv3Mi92vtTRgCOa/ ec7gjx+77L7M5UBe9VAqoU7XOZi36EqTL7UFJ5jBL6x6Qeg+L0IMrIB+y7V71Bo/q8Ze cSk5jIiDF6ZBD69ZQBXSEwbF+1MoCumy8YDhwLOpoTEUtuX8XGoLlEN3rswJaz2M476V KAyIlCRTxQmdyS5vXmXgnTtvMARfZSV2UfGFF5kIupITvFAgz3N5L64VcJq5RNv3j3w0 1tSU+0cK8Xw/mJkdslOORIFe3osvdUp9Pc1I+FzwWqqh8qh5YmnGp+XdNq7vlRh6hG3w v5aw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j23si9258795ejb.158.2020.12.21.17.15.16; Mon, 21 Dec 2020 17:15:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726197AbgLVBNs (ORCPT + 99 others); Mon, 21 Dec 2020 20:13:48 -0500 Received: from szxga08-in.huawei.com ([45.249.212.255]:2343 "EHLO szxga08-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725780AbgLVBNs (ORCPT ); Mon, 21 Dec 2020 20:13:48 -0500 Received: from DGGEMM402-HUB.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4D0JG13dgJz13X2h; Tue, 22 Dec 2020 09:11:53 +0800 (CST) Received: from dggemi710-chm.china.huawei.com (10.3.20.109) by DGGEMM402-HUB.china.huawei.com (10.3.20.210) with Microsoft SMTP Server (TLS) id 14.3.498.0; Tue, 22 Dec 2020 09:10:48 +0800 Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by dggemi710-chm.china.huawei.com (10.3.20.109) 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 09:10:47 +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 09:10:48 +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+J8P//k2OAABCudWA= Date: Tue, 22 Dec 2020 01:10:48 +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 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVml0YWx5IFdvb2wgW21h aWx0bzp2aXRhbHkud29vbEBrb25zdWxrby5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVy IDIyLCAyMDIwIDI6MDAgUE0NCj4gVG86IFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykgPHNvbmcu YmFvLmh1YUBoaXNpbGljb24uY29tPg0KPiBDYzogU2hha2VlbCBCdXR0IDxzaGFrZWVsYkBnb29n bGUuY29tPjsgTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz47IE1pa2UNCj4gR2FsYnJh aXRoIDxlZmF1bHRAZ214LmRlPjsgTEtNTCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz47 IGxpbnV4LW1tDQo+IDxsaW51eC1tbUBrdmFjay5vcmc+OyBTZWJhc3RpYW4gQW5kcnplaiBTaWV3 aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+Ow0KPiBOaXRpbkd1cHRhIDxuZ3VwdGFAdmZsYXJl Lm9yZz47IFNlcmdleSBTZW5vemhhdHNreQ0KPiA8c2VyZ2V5LnNlbm96aGF0c2t5LndvcmtAZ21h aWwuY29tPjsgQW5kcmV3IE1vcnRvbg0KPiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4NCj4g U3ViamVjdDogUmU6IFtQQVRDSF0genNtYWxsb2M6IGRvIG5vdCB1c2UgYml0X3NwaW5fbG9jaw0K PiANCj4gT24gVHVlLCBEZWMgMjIsIDIwMjAgYXQgMTI6MzcgQU0gU29uZyBCYW8gSHVhIChCYXJy eSBTb25nKQ0KPiA8c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+IHdyb3RlOg0KPiA+DQo+ID4N Cj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFNvbmcg QmFvIEh1YSAoQmFycnkgU29uZykNCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDIyLCAy MDIwIDExOjM4IEFNDQo+ID4gPiBUbzogJ1ZpdGFseSBXb29sJyA8dml0YWx5Lndvb2xAa29uc3Vs a28uY29tPg0KPiA+ID4gQ2M6IFNoYWtlZWwgQnV0dCA8c2hha2VlbGJAZ29vZ2xlLmNvbT47IE1p bmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+Ow0KPiBNaWtlDQo+ID4gPiBHYWxicmFpdGgg PGVmYXVsdEBnbXguZGU+OyBMS01MIDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgbGlu dXgtbW0NCj4gPiA+IDxsaW51eC1tbUBrdmFjay5vcmc+OyBTZWJhc3RpYW4gQW5kcnplaiBTaWV3 aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+Ow0KPiA+ID4gTml0aW5HdXB0YSA8bmd1cHRhQHZm bGFyZS5vcmc+OyBTZXJnZXkgU2Vub3poYXRza3kNCj4gPiA+IDxzZXJnZXkuc2Vub3poYXRza3ku d29ya0BnbWFpbC5jb20+OyBBbmRyZXcgTW9ydG9uDQo+ID4gPiA8YWtwbUBsaW51eC1mb3VuZGF0 aW9uLm9yZz4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIHpzbWFsbG9jOiBkbyBub3QgdXNl IGJpdF9zcGluX2xvY2sNCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogVml0YWx5IFdvb2wgW21haWx0bzp2aXRhbHku d29vbEBrb25zdWxrby5jb21dDQo+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDIyLCAy MDIwIDExOjEyIEFNDQo+ID4gPiA+IFRvOiBTb25nIEJhbyBIdWEgKEJhcnJ5IFNvbmcpIDxzb25n LmJhby5odWFAaGlzaWxpY29uLmNvbT4NCj4gPiA+ID4gQ2M6IFNoYWtlZWwgQnV0dCA8c2hha2Vl bGJAZ29vZ2xlLmNvbT47IE1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+Ow0KPiA+ID4g TWlrZQ0KPiA+ID4gPiBHYWxicmFpdGggPGVmYXVsdEBnbXguZGU+OyBMS01MIDxsaW51eC1rZXJu ZWxAdmdlci5rZXJuZWwub3JnPjsgbGludXgtbW0NCj4gPiA+ID4gPGxpbnV4LW1tQGt2YWNrLm9y Zz47IFNlYmFzdGlhbiBBbmRyemVqIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT47DQo+ ID4gPiA+IE5pdGluR3VwdGEgPG5ndXB0YUB2ZmxhcmUub3JnPjsgU2VyZ2V5IFNlbm96aGF0c2t5 DQo+ID4gPiA+IDxzZXJnZXkuc2Vub3poYXRza3kud29ya0BnbWFpbC5jb20+OyBBbmRyZXcgTW9y dG9uDQo+ID4gPiA+IDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPg0KPiA+ID4gPiBTdWJqZWN0 OiBSZTogW1BBVENIXSB6c21hbGxvYzogZG8gbm90IHVzZSBiaXRfc3Bpbl9sb2NrDQo+ID4gPiA+ DQo+ID4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDEwOjMwIFBNIFNvbmcgQmFvIEh1YSAo QmFycnkgU29uZykNCj4gPiA+ID4gPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPiB3cm90ZToN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBTaGFrZWVsIEJ1dHQgW21haWx0bzpz aGFrZWVsYkBnb29nbGUuY29tXQ0KPiA+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgRGVjZW1iZXIg MjIsIDIwMjAgMTA6MDMgQU0NCj4gPiA+ID4gPiA+IFRvOiBTb25nIEJhbyBIdWEgKEJhcnJ5IFNv bmcpIDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNvbT4NCj4gPiA+ID4gPiA+IENjOiBWaXRhbHkg V29vbCA8dml0YWx5Lndvb2xAa29uc3Vsa28uY29tPjsgTWluY2hhbiBLaW0NCj4gPiA+ID4gPG1p bmNoYW5Aa2VybmVsLm9yZz47DQo+ID4gPiA+ID4gPiBNaWtlIEdhbGJyYWl0aCA8ZWZhdWx0QGdt eC5kZT47IExLTUwgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+Ow0KPiA+ID4gPiBsaW51 eC1tbQ0KPiA+ID4gPiA+ID4gPGxpbnV4LW1tQGt2YWNrLm9yZz47IFNlYmFzdGlhbiBBbmRyemVq IFNpZXdpb3INCj4gPGJpZ2Vhc3lAbGludXRyb25peC5kZT47DQo+ID4gPiA+ID4gPiBOaXRpbkd1 cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz47IFNlcmdleSBTZW5vemhhdHNreQ0KPiA+ID4gPiA+ID4g PHNlcmdleS5zZW5vemhhdHNreS53b3JrQGdtYWlsLmNvbT47IEFuZHJldyBNb3J0b24NCj4gPiA+ ID4gPiA+IDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPg0KPiA+ID4gPiA+ID4gU3ViamVjdDog UmU6IFtQQVRDSF0genNtYWxsb2M6IGRvIG5vdCB1c2UgYml0X3NwaW5fbG9jaw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDEyOjA2IFBNIFNvbmcgQmFv IEh1YSAoQmFycnkgU29uZykNCj4gPiA+ID4gPiA+IDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNv bT4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4g PiBGcm9tOiBTaGFrZWVsIEJ1dHQgW21haWx0bzpzaGFrZWVsYkBnb29nbGUuY29tXQ0KPiA+ID4g PiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDIyLCAyMDIwIDg6NTAgQU0NCj4gPiA+ ID4gPiA+ID4gPiBUbzogVml0YWx5IFdvb2wgPHZpdGFseS53b29sQGtvbnN1bGtvLmNvbT4NCj4g PiA+ID4gPiA+ID4gPiBDYzogTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz47IE1pa2Ug R2FsYnJhaXRoDQo+IDxlZmF1bHRAZ214LmRlPjsNCj4gPiA+ID4gTEtNTA0KPiA+ID4gPiA+ID4g PiA+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgbGludXgtbW0gPGxpbnV4LW1tQGt2 YWNrLm9yZz47DQo+IFNvbmcNCj4gPiA+ID4gQmFvDQo+ID4gPiA+ID4gPiBIdWENCj4gPiA+ID4g PiA+ID4gPiAoQmFycnkgU29uZykgPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPjsgU2ViYXN0 aWFuIEFuZHJ6ZWoNCj4gU2lld2lvcg0KPiA+ID4gPiA+ID4gPiA+IDxiaWdlYXN5QGxpbnV0cm9u aXguZGU+OyBOaXRpbkd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz47IFNlcmdleQ0KPiA+ID4gPiA+ ID4gU2Vub3poYXRza3kNCj4gPiA+ID4gPiA+ID4gPiA8c2VyZ2V5LnNlbm96aGF0c2t5LndvcmtA Z21haWwuY29tPjsgQW5kcmV3IE1vcnRvbg0KPiA+ID4gPiA+ID4gPiA+IDxha3BtQGxpbnV4LWZv dW5kYXRpb24ub3JnPg0KPiA+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHpzbWFs bG9jOiBkbyBub3QgdXNlIGJpdF9zcGluX2xvY2sNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+IE9uIE1vbiwgRGVjIDIxLCAyMDIwIGF0IDExOjIwIEFNIFZpdGFseSBXb29sDQo+IDx2 aXRhbHkud29vbEBrb25zdWxrby5jb20+DQo+ID4gPiA+ID4gPiB3cm90ZToNCj4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBPbiBNb24sIERlYyAyMSwgMjAyMCBhdCA2OjI0IFBN IE1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+DQo+ID4gPiB3cm90ZToNCj4gPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gT24gU3VuLCBEZWMgMjAsIDIwMjAgYXQg MDI6MjI6MjhBTSArMDIwMCwgVml0YWx5IFdvb2wgd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4genNtYWxsb2MgdGFrZXMgYml0IHNwaW5sb2NrIGluIGl0cyBfbWFwKCkgY2FsbGJhY2sgYW5k IHJlbGVhc2VzDQo+ID4gPiA+IGl0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gb25seSBpbiB1bm1h cCgpIHdoaWNoIGlzIHVuc2FmZSBhbmQgbGVhZHMgdG8genN3YXAgY29tcGxhaW5pbmcNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBhYm91dCBzY2hlZHVsaW5nIGluIGF0b21pYyBjb250ZXh0Lg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVG8gZml4IHRoYXQgYW5k IHRvIGltcHJvdmUgUlQgcHJvcGVydGllcyBvZiB6c21hbGxvYywgcmVtb3ZlDQo+ID4gPiB0aGF0 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYml0IHNwaW5sb2NrIGNvbXBsZXRlbHkgYW5kIHVzZSBh IGJpdCBmbGFnIGluc3RlYWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+IEkgZG9uJ3Qgd2FudCB0byB1c2Ugc3VjaCBvcGVuIGNvZGUgZm9yIHRoZSBsb2NrLg0KPiA+ ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBJIHNlZSBmcm9tIE1pa2UncyBw YXRjaCwgcmVjZW50IHpzd2FwIGNoYW5nZSBpbnRyb2R1Y2VkIHRoZQ0KPiBsb2NrZGVwDQo+ID4g PiA+ID4gPiA+ID4gPiA+IHNwbGF0IGJ1ZyBhbmQgeW91IHdhbnQgdG8gaW1wcm92ZSB6c21hbGxv YyB0byBmaXggdGhlIHpzd2FwDQo+IGJ1Zw0KPiA+ID4gPiBhbmQNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gaW50cm9kdWNlIHRoaXMgcGF0Y2ggd2l0aCBhbGxvd2luZyBwcmVlbXB0aW9uIGVuYWJsaW5n Lg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IFRoaXMgdW5kZXJzdGFuZGlu ZyBpcyB1cHNpZGUgZG93bi4gVGhlIGNvZGUgaW4genN3YXAgeW91IGFyZQ0KPiByZWZlcnJpbmcN Cj4gPiA+ID4gPiA+ID4gPiA+IHRvIGlzIG5vdCBidWdneS4gIFlvdSBtYXkgY2xhaW0gdGhhdCBp dCBpcyBzdWJvcHRpbWFsIGJ1dCB0aGVyZQ0KPiBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gbm90aGlu ZyB3cm9uZyBpbiB0YWtpbmcgYSBtdXRleC4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJcyB0aGlzIHN1Ym9wdGltYWwgZm9yIGFsbCBvciBqdXN0 IHRoZSBoYXJkd2FyZSBhY2NlbGVyYXRvcnM/DQo+IFNvcnJ5LA0KPiA+ID4gPiBJDQo+ID4gPiA+ ID4gPiA+ID4gYW0gbm90IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGUgY3J5cHRvIEFQSS4gSWYgSSBz ZWxlY3QgbHpvIG9yIGx6NA0KPiBhcw0KPiA+ID4gPiBhDQo+ID4gPiA+ID4gPiA+ID4genN3YXAg Y29tcHJlc3NvciB3aWxsIHRoZSBbZGVdY29tcHJlc3Npb24gYmUgYXN5bmMgb3Igc3luYz8NCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gUmlnaHQgbm93LCBpbiBjcnlwdG8gc3Vic3lzdGVt LCBuZXcgZHJpdmVycyBhcmUgcmVxdWlyZWQgdG8gd3JpdGUNCj4gYmFzZWQNCj4gPiA+ID4gb24N Cj4gPiA+ID4gPiA+ID4gYXN5bmMgQVBJcy4gVGhlIG9sZCBzeW5jIEFQSSBjYW4ndCB3b3JrIGlu IG5ldyBhY2NlbGVyYXRvciBkcml2ZXJzDQo+IGFzDQo+ID4gPiA+IHRoZXkNCj4gPiA+ID4gPiA+ ID4gYXJlIG5vdCBzdXBwb3J0ZWQgYXQgYWxsLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiBPbGQgZHJpdmVycyBhcmUgdXNlZCB0byBzeW5jLCBidXQgdGhleSd2ZSBnb3QgYXN5bmMgd3Jh cHBlcnMgdG8NCj4gc3VwcG9ydA0KPiA+ID4gPiBhc3luYw0KPiA+ID4gPiA+ID4gPiBBUElzLiBF Zy4NCj4gPiA+ID4gPiA+ID4gY3J5cHRvOiBhY29tcCAtIGFkZCBzdXBwb3J0IGZvciBsejQgdmlh IHNjb21wDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4NCj4gaHR0 cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGlu dXguZ2l0L2NvbW1pdC8NCj4gPiA+ID4gPiA+IGNyeXB0by9sejQuYz9pZD04Y2Q5MzMwZTBhNjE1 YzkzMTAzN2Q0ZGVmOThiNWNlMGQ1NDBmMDhkDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ IGNyeXB0bzogYWNvbXAgLSBhZGQgc3VwcG9ydCBmb3IgbHpvIHZpYSBzY29tcA0KPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC9jb21taXQvDQo+ ID4gPiA+ID4gPiBjcnlwdG8vbHpvLmM/aWQ9YWM5ZDJjNGIzOWUwMjJkMmM2MTQ4NmJmYzMzYjcz MGNmZDAyODk4ZQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBzbyB0aGV5IGFyZSBzdXBw b3J0aW5nIGFzeW5jIEFQSXMgYnV0IHRoZXkgYXJlIHN0aWxsIHdvcmtpbmcgaW4NCj4gc3luYw0K PiA+ID4gbW9kZQ0KPiA+ID4gPiA+ID4gYXMNCj4gPiA+ID4gPiA+ID4gdGhvc2Ugb2xkIGRyaXZl cnMgZG9uJ3Qgc2xlZXAuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g R29vZCB0byBrbm93IHRoYXQgdGhvc2UgYXJlIHN5bmMgYmVjYXVzZSBJIHdhbnQgdGhlbSB0byBi ZSBzeW5jLg0KPiA+ID4gPiA+ID4gUGxlYXNlIG5vdGUgdGhhdCB6c3dhcCBpcyBhIGNhY2hlIGlu IGZyb250IG9mIGEgcmVhbCBzd2FwIGFuZCB0aGUNCj4gbG9hZA0KPiA+ID4gPiA+ID4gb3BlcmF0 aW9uIGlzIGxhdGVuY3kgc2Vuc2l0aXZlIGFzIGl0IGNvbWVzIGluIHRoZSBwYWdlIGZhdWx0IHBh dGgNCj4gYW5kDQo+ID4gPiA+ID4gPiBkaXJlY3RseSBpbXBhY3RzIHRoZSBhcHBsaWNhdGlvbnMu IEkgZG91YnQgZGVjb21wcmVzc2luZyBzeW5jaHJvbm91c2x5DQo+ID4gPiA+ID4gPiBhIDRrIHBh Z2Ugb24gYSBjcHUgd2lsbCBiZSBjb3N0bGllciB0aGFuIGFzeW5jaHJvbm91c2x5IGRlY29tcHJl c3NpbmcNCj4gPiA+ID4gPiA+IHRoZSBzYW1lIHBhZ2UgZnJvbSBoYXJkd2FyZSBhY2NlbGVyYXRv cnMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJZiB5b3UgcmVhZCB0aGUgb2xkIHBhcGVyOg0KPiA+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPg0KPiBodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQvcGFn ZXMvbmV3LWxpbnV4LXpzd2FwLWNvbXByZXNzaW9uLWZ1bmN0aW9uYWxpdA0KPiA+ID4gPiB5DQo+ ID4gPiA+ID4gQmVjYXVzZSB0aGUgaGFyZHdhcmUgYWNjZWxlcmF0b3Igc3BlZWRzIHVwIGNvbXBy ZXNzaW9uLCBsb29raW5nIGF0IHRoZQ0KPiB6c3dhcA0KPiA+ID4gPiA+IG1ldHJpY3Mgd2Ugb2Jz ZXJ2ZWQgdGhhdCB0aGVyZSB3ZXJlIG1vcmUgc3RvcmUgYW5kIGxvYWQgcmVxdWVzdHMgaW4NCj4g YSBnaXZlbg0KPiA+ID4gPiA+IGFtb3VudCBvZiB0aW1lLCB3aGljaCBmaWxsZWQgdXAgdGhlIHpz d2FwIHBvb2wgZmFzdGVyIHRoYW4gYSBzb2Z0d2FyZQ0KPiA+ID4gPiA+IGNvbXByZXNzaW9uIHJ1 bi4gQmVjYXVzZSBvZiB0aGlzIGJlaGF2aW9yLCB3ZSBzZXQgdGhlIG1heF9wb29sX3BlcmNlbnQN Cj4gPiA+ID4gPiBwYXJhbWV0ZXIgdG8gMzAgZm9yIHRoZSBoYXJkd2FyZSBjb21wcmVzc2lvbiBy dW5zIC0gdGhpcyBtZWFucyB0aGF0DQo+IHpzd2FwDQo+ID4gPiA+ID4gY2FuIHVzZSB1cCB0byAz MCUgb2YgdGhlIDEwR0Igb2YgdG90YWwgbWVtb3J5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU28g dXNpbmcgaGFyZHdhcmUgYWNjZWxlcmF0b3JzLCB3ZSBnZXQgYSBjaGFuY2UgdG8gc3BlZWQgdXAg Y29tcHJlc3Npb24NCj4gPiA+ID4gPiB3aGlsZSBkZWNyZWFzaW5nIGNwdSB1dGlsaXphdGlvbi4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEJUVywgSWYgaXQgaXMgbm90IGVhc3kgdG8gY2hhbmdlIHpz bWFsbG9jLCBvbmUgcXVpY2sgd29ya2Fyb3VuZCB3ZSBtaWdodA0KPiA+ID4gZG8NCj4gPiA+ID4g PiBpbiB6c3dhcCBpcyBhZGRpbmcgdGhlIGJlbG93IGFmdGVyIGFwcGx5aW5nIE1pa2UncyBvcmln aW5hbCBwYXRjaDoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGlmKGluX2F0b21pYygpKSAvKiBmb3Ig enNtYWxsb2MgKi8NCj4gPiA+ID4gPiAgICAgICAgIHdoaWxlKCF0cnlfd2FpdF9mb3JfY29tcGxl dGlvbigmcmVxLT5kb25lKTsNCj4gPiA+ID4gPiBlbHNlIC8qIGZvciB6YnVkLCB6M2ZvbGQgKi8N Cj4gPiA+ID4gPiAgICAgICAgIGNyeXB0b193YWl0X3JlcSguLi4uKTsNCj4gPiA+ID4NCj4gPiA+ ID4gSSBkb24ndCB0aGluayBJJ20gZ29pbmcgdG8gYWNrIHRoaXMsIHNvcnJ5Lg0KPiA+ID4gPg0K PiA+ID4NCj4gPiA+IEZhaXIgZW5vdWdoLiBBbmQgSSBhbSBhbHNvIHRoaW5raW5nIGlmIHdlIGNh biBtb3ZlIHpwb29sX3VubWFwX2hhbmRsZSgpDQo+ID4gPiBxdWl0ZSBhZnRlciB6cG9vbF9tYXBf aGFuZGxlKCkgYXMgYmVsb3c6DQo+ID4gPg0KPiA+ID4gICAgICAgZGxlbiA9IFBBR0VfU0laRTsN Cj4gPiA+ICAgICAgIHNyYyA9IHpwb29sX21hcF9oYW5kbGUoZW50cnktPnBvb2wtPnpwb29sLCBl bnRyeS0+aGFuZGxlLA0KPiBaUE9PTF9NTV9STyk7DQo+ID4gPiAgICAgICBpZiAoenBvb2xfZXZp Y3RhYmxlKGVudHJ5LT5wb29sLT56cG9vbCkpDQo+ID4gPiAgICAgICAgICAgICAgIHNyYyArPSBz aXplb2Yoc3RydWN0IHpzd2FwX2hlYWRlcik7DQo+ID4gPiArICAgICB6cG9vbF91bm1hcF9oYW5k bGUoZW50cnktPnBvb2wtPnpwb29sLCBlbnRyeS0+aGFuZGxlKTsNCj4gPiA+DQo+ID4gPiAgICAg ICBhY29tcF9jdHggPSByYXdfY3B1X3B0cihlbnRyeS0+cG9vbC0+YWNvbXBfY3R4KTsNCj4gPiA+ ICAgICAgIG11dGV4X2xvY2soYWNvbXBfY3R4LT5tdXRleCk7DQo+ID4gPiAgICAgICBzZ19pbml0 X29uZSgmaW5wdXQsIHNyYywgZW50cnktPmxlbmd0aCk7DQo+ID4gPiAgICAgICBzZ19pbml0X3Rh YmxlKCZvdXRwdXQsIDEpOw0KPiA+ID4gICAgICAgc2dfc2V0X3BhZ2UoJm91dHB1dCwgcGFnZSwg UEFHRV9TSVpFLCAwKTsNCj4gPiA+ICAgICAgIGFjb21wX3JlcXVlc3Rfc2V0X3BhcmFtcyhhY29t cF9jdHgtPnJlcSwgJmlucHV0LCAmb3V0cHV0LA0KPiBlbnRyeS0+bGVuZ3RoLA0KPiA+ID4gZGxl bik7DQo+ID4gPiAgICAgICByZXQgPSBjcnlwdG9fd2FpdF9yZXEoY3J5cHRvX2Fjb21wX2RlY29t cHJlc3MoYWNvbXBfY3R4LT5yZXEpLA0KPiA+ID4gJmFjb21wX2N0eC0+d2FpdCk7DQo+ID4gPiAg ICAgICBtdXRleF91bmxvY2soYWNvbXBfY3R4LT5tdXRleCk7DQo+ID4gPg0KPiA+ID4gLSAgICAg enBvb2xfdW5tYXBfaGFuZGxlKGVudHJ5LT5wb29sLT56cG9vbCwgZW50cnktPmhhbmRsZSk7DQo+ ID4gPg0KPiA+ID4gU2luY2Ugc3JjIGlzIGFsd2F5cyBsb3cgbWVtb3J5IGFuZCB3ZSBvbmx5IG5l ZWQgaXRzIHZpcnR1YWwgYWRkcmVzcw0KPiA+ID4gdG8gZ2V0IHRoZSBwYWdlIG9mIHNyYyBpbiBz Z19pbml0X29uZSgpLiBXZSBkb24ndCBhY3R1YWxseSByZWFkIGl0DQo+ID4gPiBieSBDUFUgYW55 d2hlcmUuDQo+ID4NCj4gPiBUaGUgYmVsb3cgY29kZSBtaWdodCBiZSBiZXR0ZXI6DQo+ID4NCj4g PiAgICAgICAgIGRsZW4gPSBQQUdFX1NJWkU7DQo+ID4gICAgICAgICBzcmMgPSB6cG9vbF9tYXBf aGFuZGxlKGVudHJ5LT5wb29sLT56cG9vbCwgZW50cnktPmhhbmRsZSwNCj4gWlBPT0xfTU1fUk8p Ow0KPiA+ICAgICAgICAgaWYgKHpwb29sX2V2aWN0YWJsZShlbnRyeS0+cG9vbC0+enBvb2wpKQ0K PiA+ICAgICAgICAgICAgICAgICBzcmMgKz0gc2l6ZW9mKHN0cnVjdCB6c3dhcF9oZWFkZXIpOw0K PiA+DQo+ID4gICAgICAgICBhY29tcF9jdHggPSByYXdfY3B1X3B0cihlbnRyeS0+cG9vbC0+YWNv bXBfY3R4KTsNCj4gPg0KPiA+ICsgICAgICAgenBvb2xfdW5tYXBfaGFuZGxlKGVudHJ5LT5wb29s LT56cG9vbCwgZW50cnktPmhhbmRsZSk7DQo+ID4NCj4gPiAgICAgICAgIG11dGV4X2xvY2soYWNv bXBfY3R4LT5tdXRleCk7DQo+ID4gICAgICAgICBzZ19pbml0X29uZSgmaW5wdXQsIHNyYywgZW50 cnktPmxlbmd0aCk7DQo+ID4gICAgICAgICBzZ19pbml0X3RhYmxlKCZvdXRwdXQsIDEpOw0KPiA+ ICAgICAgICAgc2dfc2V0X3BhZ2UoJm91dHB1dCwgcGFnZSwgUEFHRV9TSVpFLCAwKTsNCj4gPiAg ICAgICAgIGFjb21wX3JlcXVlc3Rfc2V0X3BhcmFtcyhhY29tcF9jdHgtPnJlcSwgJmlucHV0LCAm b3V0cHV0LA0KPiBlbnRyeS0+bGVuZ3RoLCBkbGVuKTsNCj4gPiAgICAgICAgIHJldCA9IGNyeXB0 b193YWl0X3JlcShjcnlwdG9fYWNvbXBfZGVjb21wcmVzcyhhY29tcF9jdHgtPnJlcSksDQo+ICZh Y29tcF9jdHgtPndhaXQpOw0KPiA+ICAgICAgICAgbXV0ZXhfdW5sb2NrKGFjb21wX2N0eC0+bXV0 ZXgpOw0KPiA+DQo+ID4gLSAgICAgICB6cG9vbF91bm1hcF9oYW5kbGUoZW50cnktPnBvb2wtPnpw b29sLCBlbnRyeS0+aGFuZGxlKTsNCj4gDQo+IEkgZG9uJ3Qgc2VlIGhvdyB0aGlzIGlzIGdvaW5n IHRvIHdvcmsgc2luY2Ugd2UgY2FuJ3QgZ3VhcmFudGVlIHNyYw0KPiB3aWxsIGJlIGEgdmFsaWQg cG9pbnRlciBhZnRlciB0aGUgenBvb2xfdW5tYXBfaGFuZGxlKCkgY2FsbCwgY2FuIHdlPw0KPiBD b3VsZCB5b3UgcGxlYXNlIGVsYWJvcmF0ZT8NCg0KQSB2YWxpZCBwb2ludGVyIGlzIGZvciBjcHUg dG8gcmVhZCBhbmQgd3JpdGUuIEhlcmUsIGNwdSBkb2Vzbid0IHJlYWQNCmFuZCB3cml0ZSBpdCwg d2Ugb25seSBuZWVkIHRvIGdldCBwYWdlIHN0cnVjdCBmcm9tIHRoZSBhZGRyZXNzLg0KDQp2b2lk IHNnX2luaXRfb25lKHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGNvbnN0IHZvaWQgKmJ1ZiwgdW5z aWduZWQgaW50IGJ1ZmxlbikNCnsNCglzZ19pbml0X3RhYmxlKHNnLCAxKTsNCglzZ19zZXRfYnVm KHNnLCBidWYsIGJ1Zmxlbik7DQp9DQoNCnN0YXRpYyBpbmxpbmUgdm9pZCBzZ19zZXRfYnVmKHN0 cnVjdCBzY2F0dGVybGlzdCAqc2csIGNvbnN0IHZvaWQgKmJ1ZiwNCgkJCSAgICAgIHVuc2lnbmVk IGludCBidWZsZW4pDQp7DQojaWZkZWYgQ09ORklHX0RFQlVHX1NHDQoJQlVHX09OKCF2aXJ0X2Fk ZHJfdmFsaWQoYnVmKSk7DQojZW5kaWYNCglzZ19zZXRfcGFnZShzZywgdmlydF90b19wYWdlKGJ1 ZiksIGJ1Zmxlbiwgb2Zmc2V0X2luX3BhZ2UoYnVmKSk7DQp9DQoNCnNnX2luaXRfb25lKCkgaXMg YWx3YXlzIHVzaW5nIGFuIGFkZHJlc3Mgd2hpY2ggaGFzIGEgbGluZWFyIG1hcHBpbmcNCndpdGgg cGh5c2ljYWwgYWRkcmVzcy4NClNvIG9uY2Ugd2UgZ2V0IHRoZSB2YWx1ZSBvZiBzcmMsIHdlIGNh biBnZXQgdGhlIHBhZ2Ugc3RydWN0Lg0KDQpzcmMgaGFzIGEgbGluZWFyIG1hcHBpbmcgd2l0aCBw aHlzaWNhbCBhZGRyZXNzLiBJdCBkb2Vzbid0IHJlcXVpcmUNCnBhZ2UgdGFibGUgd2FsayB3aGlj aCB2bWFsbG9jX3RvX3BhZ2UoKSB3YW50cy4NCg0KVGhlIHJlcSBvbmx5IHJlcXVpcmVzIHBhZ2Ug dG8gaW5pdGlhbGl6ZSBzZyB0YWJsZSwgSSB0aGluayBpZg0Kd2UgYXJlIGdvaW5nIHRvIHVzZSBh IGNwdS1iYXNlZCAoZGUpY29tcHJlc3Npb24sIHRoZSBjcnlwdG8NCmRyaXZlciB3aWxsIGttYXAg aXQgYWdhaW4uDQoNCj4gDQo+IH5WaXRhbHkNCg0KVGhhbmtzDQpCYXJyeQ0KDQo=