Received: by 10.223.176.5 with SMTP id f5csp3868923wra; Mon, 29 Jan 2018 21:34:53 -0800 (PST) X-Google-Smtp-Source: AH8x227wpY5RTSSx2bwuNfnHJg9XwKc5wLV1Zjvyr11+IOZhSh1jUz7rtVVqBtOI6pc4cziO7Bsb X-Received: by 10.99.49.88 with SMTP id x85mr22543644pgx.77.1517290493474; Mon, 29 Jan 2018 21:34:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517290493; cv=none; d=google.com; s=arc-20160816; b=E17lorpSnDNG4rRVC5ZGGTJi5xUTIlGa4oP/rdtdXMn1+Mnyqc8EuzNMx21D7eNi0u f7Szusi7IpPK63sdWA8Zm7mzqtWlg4Sz4uxoxxLsVln4t41ukxh54SLhiCxGN7apjV30 jzSlGYH/QJJcUngW0XDcsFYbNY+sRfEa+TyE8amewyJCQ94yr0wGKpxsAzIypMJKNcYT +zXTcyq+nXTifyKFjvdLmk96KdnyuZEjvch2fQZHLzPjI2mEGgd55BIz8SBWn/EcbQuI PERAxNzvfC8ST6P4wgsclvk4ksWXzj7lLWasVetEei0Io8tQIxIw1Jeaiq3SoPXS94QR 1sNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from :arc-authentication-results; bh=R4rcnH6TYNActAnDRFJ2qBw6RZmSrcVNDbRnSW4si9E=; b=N1MnEaPR83Ft9IWTJK0rK3D6780idAl1Kf1lt1MG/nz3cpPhdStdsOoullAq5GGWXC J3i6ESS3f0k1o4a5UOTL0QPjss0dSycTtcoZqf8wdOz41XTZv4+W2IbdOIbN0NbIu6Vq i9aUjEHaejqByL1brT3IMxh4B2640l2zyWMdofz0InKH1uACjWUewzKvePuQieyV69J9 otBtomE9dRRnUzEzEf6u69Wk8zp4duFr9brLuoKPvp2XQiiV8q6rEZXhEEFRIgJ3uqps tAeTbOnPUkGTNv34Vy2XAfvUgE8KJl7H8GA5ncEbQqNi3whgkr66gZ96VGXa33AT4jbi GO6A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d20-v6si1188941plr.660.2018.01.29.21.34.38; Mon, 29 Jan 2018 21:34:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752711AbeA3FeP (ORCPT + 99 others); Tue, 30 Jan 2018 00:34:15 -0500 Received: from szxga03-in.huawei.com ([45.249.212.189]:2091 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752232AbeA3FeO (ORCPT ); Tue, 30 Jan 2018 00:34:14 -0500 Received: from DGGEML404-HUB.china.huawei.com (unknown [172.30.72.57]) by Forcepoint Email with ESMTP id C92AAE9D5CF1; Tue, 30 Jan 2018 13:34:08 +0800 (CST) Received: from DGGEML508-MBX.china.huawei.com ([169.254.3.22]) by DGGEML404-HUB.china.huawei.com ([fe80::b177:a243:7a69:5ab8%31]) with mapi id 14.03.0361.001; Tue, 30 Jan 2018 13:34:04 +0800 From: "zhangheng (AC)" To: Boqun Feng , "Paul E. McKenney" CC: "lianglihao@huawei.com" , "Guohanjun (Hanjun Guo)" , "Chenhaibo (Haibo, OS Lab)" , "lihao.liang@gmail.com" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH RFC 01/16] prcu: Add PRCU implementation Thread-Topic: [PATCH RFC 01/16] prcu: Add PRCU implementation Thread-Index: AQHTlCFdZVEps8k4qEi1V4BR0MIw1qODmaYAgAAUv4CACDoBUA== Date: Tue, 30 Jan 2018 05:34:03 +0000 Message-ID: <3FF961283AE1E144A2F945F1AD5573FD014DF00C@dggeml508-mbx.china.huawei.com> References: <1516694381-20333-1-git-send-email-lianglihao@huawei.com> <1516694381-20333-2-git-send-email-lianglihao@huawei.com> <20180125061618.GU3741@linux.vnet.ibm.com> <20180125073033.4rl7bun62newplb3@tardis> In-Reply-To: <20180125073033.4rl7bun62newplb3@tardis> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.142.78.241] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBCb3F1biBGZW5nIFttYWlsdG86Ym9x dW4uZmVuZ0BnbWFpbC5jb21dIA0KPlNlbnQ6IDIwMTjE6jHUwjI1yNUgMTU6MzENCj5UbzogUGF1 bCBFLiBNY0tlbm5leSA8cGF1bG1ja0BsaW51eC52bmV0LmlibS5jb20+DQo+Q2M6IGxpYW5nbGlo YW9AaHVhd2VpLmNvbTsgR3VvaGFuanVuIChIYW5qdW4gR3VvKSA8Z3VvaGFuanVuQGh1YXdlaS5j b20+OyB6aGFuZ2hlbmcgKEFDKSA8aGVuZy56QGh1YXdlaS5jb20+OyBDaGVuaGFpYm8gKEhhaWJv LCBPUyBMYWIpIDxoYi5jaGVuQGh1YXdlaS5jb20+OyBsaWhhby5saWFuZ0BnbWFpbC5jb207IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj5TdWJqZWN0OiBSZTogW1BBVENIIFJGQyAwMS8x Nl0gcHJjdTogQWRkIFBSQ1UgaW1wbGVtZW50YXRpb24NCj4NCj5PbiBXZWQsIEphbiAyNCwgMjAx OCBhdCAxMDoxNjoxOFBNIC0wODAwLCBQYXVsIEUuIE1jS2VubmV5IHdyb3RlOg0KPj4gT24gVHVl LCBKYW4gMjMsIDIwMTggYXQgMDM6NTk6MjZQTSArMDgwMCwgbGlhbmdsaWhhb0BodWF3ZWkuY29t IHdyb3RlOg0KPj4gPiBGcm9tOiBIZW5nIFpoYW5nIDxoZW5nLnpAaHVhd2VpLmNvbT4NCj4+ID4g DQo+PiA+IFRoaXMgUkNVIGltcGxlbWVudGF0aW9uIChQUkNVKSBpcyBiYXNlZCBvbiBhIGZhc3Qg Y29uc2Vuc3VzIHByb3RvY29sIA0KPj4gPiBwdWJsaXNoZWQgaW4gdGhlIGZvbGxvd2luZyBwYXBl cjoNCj4+ID4gDQo+PiA+IEZhc3QgQ29uc2Vuc3VzIFVzaW5nIEJvdW5kZWQgU3RhbGVuZXNzIGZv ciBTY2FsYWJsZSBSZWFkLW1vc3RseSBTeW5jaHJvbml6YXRpb24uDQo+PiA+IEhhaWJvIENoZW4s IEhlbmcgWmhhbmcsIFJhbiBMaXUsIEJpbnl1IFphbmcsIGFuZCBIYWliaW5nIEd1YW4uDQo+PiA+ IElFRUUgVHJhbnNhY3Rpb25zIG9uIFBhcmFsbGVsIGFuZCBEaXN0cmlidXRlZCBTeXN0ZW1zIChU UERTKSwgMjAxNi4NCj4+ID4gaHR0cHM6Ly9kbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD0zMDI0 MTE0LjMwMjQxNDMNCj4+ID4gDQo+PiA+IFNpZ25lZC1vZmYtYnk6IEhlbmcgWmhhbmcgPGhlbmcu ekBodWF3ZWkuY29tPg0KPj4gPiBTaWduZWQtb2ZmLWJ5OiBMaWhhbyBMaWFuZyA8bGlhbmdsaWhh b0BodWF3ZWkuY29tPg0KPj4gDQo+PiBBIGZldyBjb21tZW50cyBhbmQgcXVlc3Rpb25zIGludGVy c3BlcnNlZC4NCj4+IA0KPj4gCQkJCQkJCVRoYW54LCBQYXVsDQo+PiANCj4+ID4gLS0tDQo+PiA+ ICBpbmNsdWRlL2xpbnV4L3ByY3UuaCB8ICAzNyArKysrKysrKysrKysrKysNCj4+ID4gIGtlcm5l bC9yY3UvTWFrZWZpbGUgIHwgICAyICstDQo+PiA+ICBrZXJuZWwvcmN1L3ByY3UuYyAgICB8IDEy NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ ID4gIGtlcm5lbC9zY2hlZC9jb3JlLmMgIHwgICAyICsNCj4+ID4gIDQgZmlsZXMgY2hhbmdlZCwg MTY1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkgIGNyZWF0ZSBtb2RlIA0KPj4gPiAxMDA2 NDQgaW5jbHVkZS9saW51eC9wcmN1LmggIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvcmN1L3By Y3UuYw0KPj4gPiANCj4+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHJjdS5oIGIvaW5j bHVkZS9saW51eC9wcmN1LmggbmV3IGZpbGUgDQo+PiA+IG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAw MDAwLi42NTNiNDYzMw0KPj4gPiAtLS0gL2Rldi9udWxsDQo+PiA+ICsrKyBiL2luY2x1ZGUvbGlu dXgvcHJjdS5oDQo+PiA+IEBAIC0wLDAgKzEsMzcgQEANCj4+ID4gKyNpZm5kZWYgX19MSU5VWF9Q UkNVX0gNCj4+ID4gKyNkZWZpbmUgX19MSU5VWF9QUkNVX0gNCj4+ID4gKw0KPj4gPiArI2luY2x1 ZGUgPGxpbnV4L2F0b21pYy5oPg0KPj4gPiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+DQo+PiA+ ICsjaW5jbHVkZSA8bGludXgvd2FpdC5oPg0KPj4gPiArDQo+PiA+ICsjZGVmaW5lIENPTkZJR19Q UkNVDQo+PiA+ICsNCj4+ID4gK3N0cnVjdCBwcmN1X2xvY2FsX3N0cnVjdCB7DQo+PiA+ICsJdW5z aWduZWQgaW50IGxvY2tlZDsNCj4+ID4gKwl1bnNpZ25lZCBpbnQgb25saW5lOw0KPj4gPiArCXVu c2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uOw0KPj4gPiArfTsNCj4+ID4gKw0KPj4gPiArc3RydWN0 IHByY3Vfc3RydWN0IHsNCj4+ID4gKwlhdG9taWM2NF90IGdsb2JhbF92ZXJzaW9uOw0KPj4gPiAr CWF0b21pY190IGFjdGl2ZV9jdHI7DQo+PiA+ICsJc3RydWN0IG11dGV4IG10eDsNCj4+ID4gKwl3 YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X3E7DQo+PiA+ICt9Ow0KPj4gPiArDQo+PiA+ICsjaWZkZWYg Q09ORklHX1BSQ1UNCj4+ID4gK3ZvaWQgcHJjdV9yZWFkX2xvY2sodm9pZCk7DQo+PiA+ICt2b2lk IHByY3VfcmVhZF91bmxvY2sodm9pZCk7DQo+PiA+ICt2b2lkIHN5bmNocm9uaXplX3ByY3Uodm9p ZCk7DQo+PiA+ICt2b2lkIHByY3Vfbm90ZV9jb250ZXh0X3N3aXRjaCh2b2lkKTsNCj4+ID4gKw0K Pj4gPiArI2Vsc2UgLyogI2lmZGVmIENPTkZJR19QUkNVICovDQo+PiA+ICsNCj4+ID4gKyNkZWZp bmUgcHJjdV9yZWFkX2xvY2soKSBkbyB7fSB3aGlsZSAoMCkgI2RlZmluZSBwcmN1X3JlYWRfdW5s b2NrKCkgDQo+PiA+ICtkbyB7fSB3aGlsZSAoMCkgI2RlZmluZSBzeW5jaHJvbml6ZV9wcmN1KCkg ZG8ge30gd2hpbGUgKDApICNkZWZpbmUgDQo+PiA+ICtwcmN1X25vdGVfY29udGV4dF9zd2l0Y2go KSBkbyB7fSB3aGlsZSAoMCkNCj4+IA0KPj4gSWYgQ09ORklHX1BSQ1U9biBhbmQgc29tZSBjb2Rl IGlzIGJ1aWx0IHRoYXQgdXNlcyBQUkNVLCBzaG91bGRuJ3QgeW91IA0KPj4gZ2V0IGEgYnVpbGQg ZXJyb3IgcmF0aGVyIHRoYW4gYW4gZXJyb3ItZnJlZSBidXQgaW5vcGVyYXRpdmUgUFJDVT8NCj4+ IA0KPj4gT2YgY291cnNlLCBQZXRlcidzIHF1ZXN0aW9uIGFib3V0IHB1cnBvc2Ugb2YgdGhlIHBh dGNoIHNldCBhcHBsaWVzIA0KPj4gaGVyZSBhcyB3ZWxsLg0KPj4gDQo+PiA+ICsNCj4+ID4gKyNl bmRpZiAvKiAjaWZkZWYgQ09ORklHX1BSQ1UgKi8NCj4+ID4gKyNlbmRpZiAvKiBfX0xJTlVYX1BS Q1VfSCAqLw0KPj4gPiBkaWZmIC0tZ2l0IGEva2VybmVsL3JjdS9NYWtlZmlsZSBiL2tlcm5lbC9y Y3UvTWFrZWZpbGUgaW5kZXggDQo+PiA+IDIzODAzYzdkLi44NzkxNDE5YyAxMDA2NDQNCj4+ID4g LS0tIGEva2VybmVsL3JjdS9NYWtlZmlsZQ0KPj4gPiArKysgYi9rZXJuZWwvcmN1L01ha2VmaWxl DQo+PiA+IEBAIC0yLDcgKzIsNyBAQA0KPj4gPiAgIyBhbmQgaXMgZ2VuZXJhbGx5IG5vdCBhIGZ1 bmN0aW9uIG9mIHN5c3RlbSBjYWxsIGlucHV0cy4NCj4+ID4gIEtDT1ZfSU5TVFJVTUVOVCA6PSBu DQo+PiA+IA0KPj4gPiAtb2JqLXkgKz0gdXBkYXRlLm8gc3luYy5vDQo+PiA+ICtvYmoteSArPSB1 cGRhdGUubyBzeW5jLm8gcHJjdS5vDQo+PiA+ICBvYmotJChDT05GSUdfQ0xBU1NJQ19TUkNVKSAr PSBzcmN1Lm8NCj4+ID4gIG9iai0kKENPTkZJR19UUkVFX1NSQ1UpICs9IHNyY3V0cmVlLm8NCj4+ ID4gIG9iai0kKENPTkZJR19USU5ZX1NSQ1UpICs9IHNyY3V0aW55Lm8gZGlmZiAtLWdpdCANCj4+ ID4gYS9rZXJuZWwvcmN1L3ByY3UuYyBiL2tlcm5lbC9yY3UvcHJjdS5jIG5ldyBmaWxlIG1vZGUg MTAwNjQ0IGluZGV4IA0KPj4gPiAwMDAwMDAwMC4uYTAwYjk0MjANCj4+ID4gLS0tIC9kZXYvbnVs bA0KPj4gPiArKysgYi9rZXJuZWwvcmN1L3ByY3UuYw0KPj4gPiBAQCAtMCwwICsxLDEyNSBAQA0K Pj4gPiArI2luY2x1ZGUgPGxpbnV4L3NtcC5oPg0KPj4gPiArI2luY2x1ZGUgPGxpbnV4L3ByY3Uu aD4NCj4+ID4gKyNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4NCj4+ID4gKyNpbmNsdWRlIDxsaW51 eC9jb21waWxlci5oPg0KPj4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQo+PiA+ICsNCj4+ ID4gKyNpbmNsdWRlIDxhc20vYmFycmllci5oPg0KPj4gPiArDQo+PiA+ICtERUZJTkVfUEVSX0NQ VV9TSEFSRURfQUxJR05FRChzdHJ1Y3QgcHJjdV9sb2NhbF9zdHJ1Y3QsIA0KPj4gPiArcHJjdV9s b2NhbCk7DQo+PiA+ICsNCj4+ID4gK3N0cnVjdCBwcmN1X3N0cnVjdCBnbG9iYWxfcHJjdSA9IHsN Cj4+ID4gKwkuZ2xvYmFsX3ZlcnNpb24gPSBBVE9NSUM2NF9JTklUKDApLA0KPj4gPiArCS5hY3Rp dmVfY3RyID0gQVRPTUlDX0lOSVQoMCksDQo+PiA+ICsJLm10eCA9IF9fTVVURVhfSU5JVElBTEla RVIoZ2xvYmFsX3ByY3UubXR4KSwNCj4+ID4gKwkud2FpdF9xID0gX19XQUlUX1FVRVVFX0hFQURf SU5JVElBTElaRVIoZ2xvYmFsX3ByY3Uud2FpdF9xKQ0KPj4gPiArfTsNCj4+ID4gK3N0cnVjdCBw cmN1X3N0cnVjdCAqcHJjdSA9ICZnbG9iYWxfcHJjdTsNCj4+ID4gKw0KPj4gPiArc3RhdGljIGlu bGluZSB2b2lkIHByY3VfcmVwb3J0KHN0cnVjdCBwcmN1X2xvY2FsX3N0cnVjdCAqbG9jYWwpIHsN Cj4+ID4gKwl1bnNpZ25lZCBsb25nIGxvbmcgZ2xvYmFsX3ZlcnNpb247DQo+PiA+ICsJdW5zaWdu ZWQgbG9uZyBsb25nIGxvY2FsX3ZlcnNpb247DQo+PiA+ICsNCj4+ID4gKwlnbG9iYWxfdmVyc2lv biA9IGF0b21pYzY0X3JlYWQoJnByY3UtPmdsb2JhbF92ZXJzaW9uKTsNCj4+ID4gKwlsb2NhbF92 ZXJzaW9uID0gbG9jYWwtPnZlcnNpb247DQo+PiA+ICsJaWYgKGdsb2JhbF92ZXJzaW9uID4gbG9j YWxfdmVyc2lvbikNCj4+ID4gKwkJY21weGNoZygmbG9jYWwtPnZlcnNpb24sIGxvY2FsX3ZlcnNp b24sIGdsb2JhbF92ZXJzaW9uKTsgfQ0KPj4gPiArDQo+PiA+ICt2b2lkIHByY3VfcmVhZF9sb2Nr KHZvaWQpDQo+PiA+ICt7DQo+PiA+ICsJc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2NhbDsN Cj4+ID4gKw0KPj4gPiArCWxvY2FsID0gZ2V0X2NwdV9wdHIoJnByY3VfbG9jYWwpOw0KPj4gPiAr CWlmICghbG9jYWwtPm9ubGluZSkgew0KPj4gPiArCQlXUklURV9PTkNFKGxvY2FsLT5vbmxpbmUs IDEpOw0KPj4gPiArCQlzbXBfbWIoKTsNCj4+ID4gKwl9DQo+PiA+ICsNCj4+ID4gKwlsb2NhbC0+ bG9ja2VkKys7DQo+PiA+ICsJcHV0X2NwdV9wdHIoJnByY3VfbG9jYWwpOw0KPj4gPiArfQ0KPj4g PiArRVhQT1JUX1NZTUJPTChwcmN1X3JlYWRfbG9jayk7DQo+PiA+ICsNCj4+ID4gK3ZvaWQgcHJj dV9yZWFkX3VubG9jayh2b2lkKQ0KPj4gPiArew0KPj4gPiArCWludCBsb2NrZWQ7DQo+PiA+ICsJ c3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2NhbDsNCj4+ID4gKw0KPj4gPiArCWJhcnJpZXIo KTsNCj4+ID4gKwlsb2NhbCA9IGdldF9jcHVfcHRyKCZwcmN1X2xvY2FsKTsNCj4+ID4gKwlsb2Nr ZWQgPSBsb2NhbC0+bG9ja2VkOw0KPj4gPiArCWlmIChsb2NrZWQpIHsNCj4+ID4gKwkJbG9jYWwt PmxvY2tlZC0tOw0KPj4gPiArCQlpZiAobG9ja2VkID09IDEpDQo+PiA+ICsJCQlwcmN1X3JlcG9y dChsb2NhbCk7DQo+PiANCj4+IElzIG9yZGVyaW5nIGltcG9ydGFudCBoZXJlPyAgSXQgbG9va3Mg dG8gbWUgdGhhdCB0aGUgY29tcGlsZXIgY291bGQgDQo+PiByZWFycmFuZ2Ugc29tZSBvZiB0aGUg YWNjZXNzZXMgd2l0aGluIHByY3VfcmVwb3J0KCkgd2l0aCB0aGUgDQo+PiBsb2NhbC0+bG9ja2Vk IGRlY3JlbWVudC4gIFRoZXJlIGFwcGVhcnMgdG8gYmUgc29tZSBwb3RlbnRpYWwgZm9yIGxvYWQg DQo+PiBhbmQgc3RvcmUgdGVhcmluZywgdGhvdWdoIHBlcmhhcHMgeW91IGhhdmUgdmVyaWZpZWQg dGhhdCB5b3VyIGNvbXBpbGVyIA0KPj4gYXZvaWRzIHRoaXMgb24gdGhlIGFyY2hpdGVjdHVyZSB0 aGF0IHlvdSBhcmUgdXNpbmcuDQo+PiANCj4+ID4gKwkJcHV0X2NwdV9wdHIoJnByY3VfbG9jYWwp Ow0KPj4gPiArCX0gZWxzZSB7DQo+PiANCj4+IEhtbW0uLi4gIFdlIGdldCBoZXJlIGlmIHRoZSBS Q1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24gd2FzIHByZWVtcHRlZC4NCj4+IElmIG5vbmUg b2YgdGhlbSBhcmUgcHJlZW1wdGVkLCAtPmFjdGl2ZV9jdHIgcmVtYWlucyB6ZXJvLg0KPj4gDQo+ PiA+ICsJCXB1dF9jcHVfcHRyKCZwcmN1X2xvY2FsKTsNCj4+ID4gKwkJaWYgKCFhdG9taWNfZGVj X3JldHVybigmcHJjdS0+YWN0aXZlX2N0cikpDQo+PiA+ICsJCQl3YWtlX3VwKCZwcmN1LT53YWl0 X3EpOw0KPj4gPiArCX0NCj4+ID4gK30NCj4+ID4gK0VYUE9SVF9TWU1CT0wocHJjdV9yZWFkX3Vu bG9jayk7DQo+PiA+ICsNCj4+ID4gK3N0YXRpYyB2b2lkIHByY3VfaGFuZGxlcih2b2lkICppbmZv KSB7DQo+PiA+ICsJc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2NhbDsNCj4+ID4gKw0KPj4g PiArCWxvY2FsID0gdGhpc19jcHVfcHRyKCZwcmN1X2xvY2FsKTsNCj4+ID4gKwlpZiAoIWxvY2Fs LT5sb2NrZWQpDQo+DQo+QW5kIEkgdGhpbmsgYSBzbXBfbWIoKSBpcyBuZWVkZWQgaGVyZSwgYmVj YXVzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6DQo+DQo+CUNQVSAwCQkJCSAgICAgICAgICBDUFUg MQ0KPgk9PT09PT09PT09PT09PT09PT0JCT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+CXtY IGlzIGluaXRpYWxseSAwfQ0KPg0KPglXUklURV9PTkNFKFgsIDEpOw0KPg0KPgkgICAgICAgICAg ICAgICAgICAgICAgcHJjdV9yZWFkX3VubG9jayh2b2lkKToNCj4JICAgICAgICAgICAgICAgICAg ICAgIGlmIChsb2NrZWQpIHsNCj4JICAJCQkJICAgICAgICAgICAgICBzeW5jaHJvbml6ZV9wcmN1 KHZvaWQpOg0KPgkJCQkJICAgICAgICAgICAgICAgIC4uLg0KPgkJCQkJICAgICAgICAgICAgICAg IDxzZW5kIElQSSB0byBDUFUgMD4NCj4JbG9jYWwtPmxvY2tlZC0tOw0KPgkgICAgICAgICAgICAg ICAgICAgICAgIyBzd2l0Y2ggdG8gSVBJDQo+IFdSSVRFX09OQ0UobG9jYWwtPnZlcnNpb24sLi4u LikNCj4JICAJCQkJICAgICAgICAgICAgPHJlYWQgQ1BVIDAgdmVyc2lvbiB0byBiZSBsYXRlc3Q+ DQo+CQkJCQkgICAgICAgICAgICAgIDxyZXR1cm4+DQo+DQo+CQkJCQkgICAgICAgICAgICAgIHIx ID0gUkVBRF9PTkNFKFgpOw0KPg0KPnIxIGNvdWxkIGJlIDAsIHdoaWNoIGJyZWFrcyBSQ1UgZ3Vh cmFudGVlcy4NCj4NCg0KVGhhbmsgeW91Lg0KQXMgSSBrbm93LA0KaXQgZ3VhcmFudGVlcyB0aGF0 IHRoZSBpbnRlcnJ1cHQgdG8gYmUgaGFuZGxlZCBhZnRlciBhbGwgd3JpdGUgaW5zdHJ1Y3Rpb25z IGlzc3VlZCBiZWZvcmUgaGF2ZSBjb21wbGV0ZSBpbiB4ODYgYXJjaC4NClNvIHRoZSBzbXBfbWIg aXMgbWVhbmluZ2xlc3MgaW4geDg2IGFyY2guDQpCdXQgSSBhbSBub3Qgc3VyZSB3aGV0aGVyIG90 aGVyIGFyY2hzIGd1YXJhbnRlZSB0aGlzIGZlYXR1cmUuIElmIG5vdCwgd2UgZG8gbmVlZCBhIHNt cF9tYiBoZXJlLg0KDQo+PiA+ICsJCVdSSVRFX09OQ0UobG9jYWwtPnZlcnNpb24sIGF0b21pYzY0 X3JlYWQoJnByY3UtPmdsb2JhbF92ZXJzaW9uKSk7DQo+PiA+ICt9DQo+PiA+ICsNCj4+ID4gK3Zv aWQgc3luY2hyb25pemVfcHJjdSh2b2lkKQ0KPj4gPiArew0KPj4gPiArCWludCBjcHU7DQo+PiA+ ICsJY3B1bWFza190IGNwdXM7DQo+PiA+ICsJdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb247DQo+ PiA+ICsJc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2NhbDsNCj4+ID4gKw0KPj4gPiArCXZl cnNpb24gPSBhdG9taWM2NF9hZGRfcmV0dXJuKDEsICZwcmN1LT5nbG9iYWxfdmVyc2lvbik7DQo+ PiA+ICsJbXV0ZXhfbG9jaygmcHJjdS0+bXR4KTsNCj4+ID4gKw0KPj4gPiArCWxvY2FsID0gZ2V0 X2NwdV9wdHIoJnByY3VfbG9jYWwpOw0KPj4gPiArCWxvY2FsLT52ZXJzaW9uID0gdmVyc2lvbjsN Cj4+ID4gKwlwdXRfY3B1X3B0cigmcHJjdV9sb2NhbCk7DQo+PiA+ICsNCj4+ID4gKwljcHVtYXNr X2NsZWFyKCZjcHVzKTsNCj4+ID4gKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7DQo+PiA+ ICsJCWxvY2FsID0gcGVyX2NwdV9wdHIoJnByY3VfbG9jYWwsIGNwdSk7DQo+PiA+ICsJCWlmICgh UkVBRF9PTkNFKGxvY2FsLT5vbmxpbmUpKQ0KPj4gPiArCQkJY29udGludWU7DQo+PiA+ICsJCWlm IChSRUFEX09OQ0UobG9jYWwtPnZlcnNpb24pIDwgdmVyc2lvbikgew0KPj4gDQo+PiBPbiAzMi1i aXQgc3lzdGVtcywgZ2l2ZW4gdGhhdCAtPnZlcnNpb24gaXMgbG9uZyBsb25nLCB5b3UgbWlnaHQg c2VlIA0KPj4gbG9hZCB0ZWFyaW5nLiAgQW5kIG9uIHNvbWUgMzItYml0IHN5c3RlbXMsIHRoZSBj bXB4Y2hnKCkgaW4gDQo+PiBwcmN1X2hhbmRlcigpIG1pZ2h0IG5vdCBidWlsZC4NCj4+IA0KPg0K Pi9tZSBjdXJpb3VzIGFib3V0IHdoeSBhbiBhdG9taWM2NF90IGlzIHVzZWQgaGVyZSBmb3IgZ2xv YmFsIHZlcnNpb24uIEkgdGhpbmsgbWF5YmUgMzJiaXQgZ2xvYmFsIHZlcnNpb24gc3RpbGwgc3Vm ZmljZXMuDQo+DQo+UmVnYXJkcywNCj5Cb3F1bg0KDQpCZWNhdXNlIHRoZSBzeW5jaHJvbml6YXRp b24gbGF0ZW5jeSBpcyBsb3csIGl0IGNhbiBoYXZlIGhpZ2hlciBncCBmcmVxdWVuY3kuDQpJdCBz ZWVtcyB0aGF0IDMyYml0IGNhbiBvbmx5IGNvcnJlY3RseSB3b3JrIGZvciBzZXZlcmFsIHllYXJz IGlmIHRoZXJlIGFyZSAyMCsgZ3BzIHBlciBzZWNvbmQuDQoNCj4NCj4+IE9yIGlzIHRoZSBpZGVh IHRoYXQgb25seSBwcmN1X2hhbmRsZXIoKSB1cGRhdGVzIC0+dmVyc2lvbj8gIEJ1dCBpbiANCj4+ IHRoYXQgY2FzZSwgeW91IHdvdWxkbid0IG5lZWQgdGhlIFJFQURfT05DRSgpIGFib3ZlLiAgV2hh dCBhbSBJIG1pc3NpbmcgaGVyZT8NCj4+IA0KPj4gPiArCQkJc21wX2NhbGxfZnVuY3Rpb25fc2lu Z2xlKGNwdSwgcHJjdV9oYW5kbGVyLCBOVUxMLCAwKTsNCj4+ID4gKwkJCWNwdW1hc2tfc2V0X2Nw dShjcHUsICZjcHVzKTsNCj4+ID4gKwkJfQ0KPj4gPiArCX0NCj4+ID4gKw0KPj4gPiArCWZvcl9l YWNoX2NwdShjcHUsICZjcHVzKSB7DQo+PiA+ICsJCWxvY2FsID0gcGVyX2NwdV9wdHIoJnByY3Vf bG9jYWwsIGNwdSk7DQo+PiA+ICsJCXdoaWxlIChSRUFEX09OQ0UobG9jYWwtPnZlcnNpb24pIDwg dmVyc2lvbikNCj4+IA0KPj4gVGhpcyAtPnZlcnNpb24gcmVhZCBjYW4gYWxzbyB0ZWFyIG9uIHNv bWUgMzItYml0IHN5c3RlbXMsIGFuZCB0aGlzIG9uZSANCj4+IG1vc3QgZGVmaW5pdGVseSBjYW4g cmFjZSB3aXRoIHRoZSBwcmN1X2hhbmRsZXIoKSBhYm92ZS4gIERvZXMgdGhlIA0KPj4gYWxnb3Jp dGhtIG9wZXJhdGUgY29ycmVjdGx5IGluIHRoYXQgY2FzZT8gIChJdCBkb2Vzbid0IGxvb2sgdGhh dCB3YXkgDQo+PiB0byBtZSwgYnV0IEkgbWlnaHQgYmUgbWlzc2luZyBzb21ldGhpbmcuKSBPciBh cmUgMzItYml0IHN5c3RlbXMgZXhjbHVkZWQ/DQo+PiANCj4+ID4gKwkJCWNwdV9yZWxheCgpOw0K Pj4gPiArCX0NCj4+IA0KPj4gSSBtaWdodCBiZSBtaXNzaW5nIHNvbWV0aGluZywgYnV0IEkgYmVs aWV2ZSB3ZSBuZWVkIGEgbWVtb3J5IGJhcnJpZXIgDQo+PiBoZXJlIG9uIG5vbi1UU08gc3lzdGVt cy4gIFdpdGhvdXQgdGhhdCwgY291bGRuJ3Qgd2UgbWlzcyBhIHByZWVtcHRpb24/DQo+PiANCj4+ ID4gKw0KPj4gPiArCWlmIChhdG9taWNfcmVhZCgmcHJjdS0+YWN0aXZlX2N0cikpDQo+PiA+ICsJ CXdhaXRfZXZlbnQocHJjdS0+d2FpdF9xLCAhYXRvbWljX3JlYWQoJnByY3UtPmFjdGl2ZV9jdHIp KTsNCj4+ID4gKw0KPj4gPiArCW11dGV4X3VubG9jaygmcHJjdS0+bXR4KTsNCj4+ID4gK30NCj4+ ID4gK0VYUE9SVF9TWU1CT0woc3luY2hyb25pemVfcHJjdSk7DQo+PiA+ICsNCj4+ID4gK3ZvaWQg cHJjdV9ub3RlX2NvbnRleHRfc3dpdGNoKHZvaWQpIHsNCj4+ID4gKwlzdHJ1Y3QgcHJjdV9sb2Nh bF9zdHJ1Y3QgKmxvY2FsOw0KPj4gPiArDQo+PiA+ICsJbG9jYWwgPSBnZXRfY3B1X3B0cigmcHJj dV9sb2NhbCk7DQo+PiA+ICsJaWYgKGxvY2FsLT5sb2NrZWQpIHsNCj4+ID4gKwkJYXRvbWljX2Fk ZChsb2NhbC0+bG9ja2VkLCAmcHJjdS0+YWN0aXZlX2N0cik7DQo+PiA+ICsJCWxvY2FsLT5sb2Nr ZWQgPSAwOw0KPj4gPiArCX0NCj4+ID4gKwlsb2NhbC0+b25saW5lID0gMDsNCj4+ID4gKwlwcmN1 X3JlcG9ydChsb2NhbCk7DQo+PiA+ICsJcHV0X2NwdV9wdHIoJnByY3VfbG9jYWwpOw0KPj4gPiAr fQ0KPj4gPiBkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2NvcmUuYyBiL2tlcm5lbC9zY2hlZC9j b3JlLmMgaW5kZXggDQo+PiA+IDMyNmQ0Zjg4Li5hMzA4NTgxYiAxMDA2NDQNCj4+ID4gLS0tIGEv a2VybmVsL3NjaGVkL2NvcmUuYw0KPj4gPiArKysgYi9rZXJuZWwvc2NoZWQvY29yZS5jDQo+PiA+ IEBAIC0xNSw2ICsxNSw3IEBADQo+PiA+ICAjaW5jbHVkZSA8bGludXgvaW5pdF90YXNrLmg+DQo+ PiA+ICAjaW5jbHVkZSA8bGludXgvY29udGV4dF90cmFja2luZy5oPiAgI2luY2x1ZGUgDQo+PiA+ IDxsaW51eC9yY3VwZGF0ZV93YWl0Lmg+DQo+PiA+ICsjaW5jbHVkZSA8bGludXgvcHJjdS5oPg0K Pj4gPiANCj4+ID4gICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4NCj4+ID4gICNpbmNsdWRlIDxs aW51eC9rcHJvYmVzLmg+DQo+PiA+IEBAIC0zMzgzLDYgKzMzODQsNyBAQCBzdGF0aWMgdm9pZCBf X3NjaGVkIG5vdHJhY2UgX19zY2hlZHVsZShib29sIA0KPj4gPiBwcmVlbXB0KQ0KPj4gPiANCj4+ ID4gIAlsb2NhbF9pcnFfZGlzYWJsZSgpOw0KPj4gPiAgCXJjdV9ub3RlX2NvbnRleHRfc3dpdGNo KHByZWVtcHQpOw0KPj4gPiArCXByY3Vfbm90ZV9jb250ZXh0X3N3aXRjaCgpOw0KPj4gPiANCj4+ ID4gIAkvKg0KPj4gPiAgCSAqIE1ha2Ugc3VyZSB0aGF0IHNpZ25hbF9wZW5kaW5nX3N0YXRlKCkt PnNpZ25hbF9wZW5kaW5nKCkgYmVsb3cNCj4+ID4gLS0NCj4+ID4gMi4xNC4xLjcyOS5nNTljMGVh MTgzDQo+PiA+IA0KPj4gDQo+DQo=