Received: by 10.223.176.5 with SMTP id f5csp3906885wra; Mon, 29 Jan 2018 22:22:08 -0800 (PST) X-Google-Smtp-Source: AH8x227TcK75+ioIByVVcaWhhPDH7WITUCpJBcVnMnoQCX229DDxgCNR1HVLd8JfGDR2I00KvOu1 X-Received: by 10.98.75.146 with SMTP id d18mr29546131pfj.11.1517293327940; Mon, 29 Jan 2018 22:22:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517293327; cv=none; d=google.com; s=arc-20160816; b=xz4YQg1Ggg54A8APKkcbPCXHcGeusI3m9l7jgFk5giittacGGp+Jz6fCxqWqU4Onap X8oe0MkPnbrJieUM3VWkNR7mJptc+eE7i80yViXHpSr45PSFR+kJJxlTI+1euCTuTyAD Pxo3+GUU62BBWPB16pAwxj0bRpZrzAKW90/PjqzISHd083XyOw6XCrZxwJ85NIxYdRIA +EI/5We4GScSal85tSBoE7pyZI6xQ2FbH8c0PzkjrSEtNVe5DaTHOGE2O4GFROQ1q6Ne b4NmreX7AA8T5fNDckmOmGF6UfTURbqm1cXDQosEafmTCd4YH+V0XvqsUic9vEznYDKX 4HTQ== 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=RUe0HO20ylbvVjfETQ76AyHDvZsZqETXrLTvLCAY+ec=; b=m3e4MnF1YrtZTI9mRzf5x77sFl3LEop5TDJLTpPnzbMpg3sgJB6wEg8BdJ33v2CVxT 9fwMu36aLg1350HZQLFxK73mXz43E3XLYtHFm5HEsTr1vLRPXQD017+wwcGb4xHpHRrK J3GIRWtscA72F4JOandIxu6XybjF8AU0NbaHi6PsQoDCnSUMsKIUtx7iJTwiwFX1Iws2 7rV/+5ovRebM0c7Zszcn+uTxIOnQNzqesyJ/zrLRdfAo1is57/gIEHCWu/F1f2wOOhpw oMGt091W58se6ddDQ5njSPmJuAZ4rjtMU8vzuyUuiHOl9sCz0BPM3NYWcEFLxFgFLLPd +ttQ== 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 w34-v6si1361360pla.629.2018.01.29.22.21.52; Mon, 29 Jan 2018 22:22:07 -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 S1752738AbeA3GVa (ORCPT + 99 others); Tue, 30 Jan 2018 01:21:30 -0500 Received: from szxga01-in.huawei.com ([45.249.212.187]:2447 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752325AbeA3GV3 (ORCPT ); Tue, 30 Jan 2018 01:21:29 -0500 Received: from dggeml405-hub.china.huawei.com (unknown [172.30.72.56]) by Forcepoint Email with ESMTP id A1E8F6807F7AD; Tue, 30 Jan 2018 14:21:24 +0800 (CST) Received: from DGGEML508-MBX.china.huawei.com ([169.254.3.22]) by dggeml405-hub.china.huawei.com ([10.3.17.49]) with mapi id 14.03.0361.001; Tue, 30 Jan 2018 14:21:05 +0800 From: "zhangheng (AC)" To: Lai Jiangshan , "lianglihao@huawei.com" CC: "Paul E. McKenney" , "Guohanjun (Hanjun Guo)" , "Chenhaibo (Haibo, OS Lab)" , "lihao.liang@gmail.com" , LKML Subject: RE: [PATCH RFC 01/16] prcu: Add PRCU implementation Thread-Topic: [PATCH RFC 01/16] prcu: Add PRCU implementation Thread-Index: AQHTlCFdZVEps8k4qEi1V4BR0MIw1qOKE7yAgAHb7IA= Date: Tue, 30 Jan 2018 06:21:05 +0000 Message-ID: <3FF961283AE1E144A2F945F1AD5573FD014E002B@dggeml508-mbx.china.huawei.com> References: <1516694381-20333-1-git-send-email-lianglihao@huawei.com> <1516694381-20333-2-git-send-email-lianglihao@huawei.com> In-Reply-To: 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="utf-8" 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 Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogamlhbmdzaGFubGFpQGdtYWlsLmNv bSBbbWFpbHRvOmppYW5nc2hhbmxhaUBnbWFpbC5jb21dIE9uIEJlaGFsZiBPZiBMYWkgSmlhbmdz aGFuDQo+U2VudDogMjAxOOW5tDHmnIgyOeaXpSAxNzoxMQ0KPlRvOiBsaWFuZ2xpaGFvQGh1YXdl aS5jb20NCj5DYzogUGF1bCBFLiBNY0tlbm5leSA8cGF1bG1ja0BsaW51eC52bmV0LmlibS5jb20+ OyBHdW9oYW5qdW4gKEhhbmp1biBHdW8pIDxndW9oYW5qdW5AaHVhd2VpLmNvbT47IHpoYW5naGVu ZyAoQUMpIDxoZW5nLnpAaHVhd2VpLmNvbT47IENoZW5oYWlibyAoSGFpYm8sIE9TIExhYikgPGhi LmNoZW5AaHVhd2VpLmNvbT47IGxpaGFvLmxpYW5nQGdtYWlsLmNvbTsgTEtNTCA8bGludXgta2Vy bmVsQHZnZXIua2VybmVsLm9yZz4NCj5TdWJqZWN0OiBSZTogW1BBVENIIFJGQyAwMS8xNl0gcHJj dTogQWRkIFBSQ1UgaW1wbGVtZW50YXRpb24NCj4NCj5PbiBUdWUsIEphbiAyMywgMjAxOCBhdCAz OjU5IFBNLCAgPGxpYW5nbGloYW9AaHVhd2VpLmNvbT4gd3JvdGU6DQo+PiBGcm9tOiBIZW5nIFpo YW5nIDxoZW5nLnpAaHVhd2VpLmNvbT4NCj4+DQo+PiBUaGlzIFJDVSBpbXBsZW1lbnRhdGlvbiAo UFJDVSkgaXMgYmFzZWQgb24gYSBmYXN0IGNvbnNlbnN1cyBwcm90b2NvbCANCj4+IHB1Ymxpc2hl ZCBpbiB0aGUgZm9sbG93aW5nIHBhcGVyOg0KPj4NCj4+IEZhc3QgQ29uc2Vuc3VzIFVzaW5nIEJv dW5kZWQgU3RhbGVuZXNzIGZvciBTY2FsYWJsZSBSZWFkLW1vc3RseSBTeW5jaHJvbml6YXRpb24u DQo+PiBIYWlibyBDaGVuLCBIZW5nIFpoYW5nLCBSYW4gTGl1LCBCaW55dSBaYW5nLCBhbmQgSGFp YmluZyBHdWFuLg0KPj4gSUVFRSBUcmFuc2FjdGlvbnMgb24gUGFyYWxsZWwgYW5kIERpc3RyaWJ1 dGVkIFN5c3RlbXMgKFRQRFMpLCAyMDE2Lg0KPj4gaHR0cHM6Ly9kbC5hY20ub3JnL2NpdGF0aW9u LmNmbT9pZD0zMDI0MTE0LjMwMjQxNDMNCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBIZW5nIFpoYW5n IDxoZW5nLnpAaHVhd2VpLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IExpaGFvIExpYW5nIDxsaWFu Z2xpaGFvQGh1YXdlaS5jb20+DQo+PiAtLS0NCj4+ICBpbmNsdWRlL2xpbnV4L3ByY3UuaCB8ICAz NyArKysrKysrKysrKysrKysNCj4+ICBrZXJuZWwvcmN1L01ha2VmaWxlICB8ICAgMiArLQ0KPj4g IGtlcm5lbC9yY3UvcHJjdS5jICAgIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPj4gIGtlcm5lbC9zY2hlZC9jb3JlLmMgIHwgICAyICsN Cj4+ICA0IGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pICBj cmVhdGUgbW9kZSAxMDA2NDQgDQo+PiBpbmNsdWRlL2xpbnV4L3ByY3UuaCAgY3JlYXRlIG1vZGUg MTAwNjQ0IGtlcm5lbC9yY3UvcHJjdS5jDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvcHJjdS5oIGIvaW5jbHVkZS9saW51eC9wcmN1LmggbmV3IGZpbGUgbW9kZSANCj4+IDEwMDY0 NCBpbmRleCAwMDAwMDAwMC4uNjUzYjQ2MzMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2lu Y2x1ZGUvbGludXgvcHJjdS5oDQo+PiBAQCAtMCwwICsxLDM3IEBADQo+PiArI2lmbmRlZiBfX0xJ TlVYX1BSQ1VfSA0KPj4gKyNkZWZpbmUgX19MSU5VWF9QUkNVX0gNCj4+ICsNCj4+ICsjaW5jbHVk ZSA8bGludXgvYXRvbWljLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+DQo+PiArI2lu Y2x1ZGUgPGxpbnV4L3dhaXQuaD4NCj4+ICsNCj4+ICsjZGVmaW5lIENPTkZJR19QUkNVDQo+PiAr DQo+PiArc3RydWN0IHByY3VfbG9jYWxfc3RydWN0IHsNCj4+ICsgICAgICAgdW5zaWduZWQgaW50 IGxvY2tlZDsNCj4+ICsgICAgICAgdW5zaWduZWQgaW50IG9ubGluZTsNCj4+ICsgICAgICAgdW5z aWduZWQgbG9uZyBsb25nIHZlcnNpb247DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgcHJjdV9z dHJ1Y3Qgew0KPj4gKyAgICAgICBhdG9taWM2NF90IGdsb2JhbF92ZXJzaW9uOw0KPj4gKyAgICAg ICBhdG9taWNfdCBhY3RpdmVfY3RyOw0KPj4gKyAgICAgICBzdHJ1Y3QgbXV0ZXggbXR4Ow0KPj4g KyAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X3E7DQo+PiArfTsNCj4+ICsNCj4+ICsjaWZk ZWYgQ09ORklHX1BSQ1UNCj4+ICt2b2lkIHByY3VfcmVhZF9sb2NrKHZvaWQpOw0KPj4gK3ZvaWQg cHJjdV9yZWFkX3VubG9jayh2b2lkKTsNCj4+ICt2b2lkIHN5bmNocm9uaXplX3ByY3Uodm9pZCk7 DQo+PiArdm9pZCBwcmN1X25vdGVfY29udGV4dF9zd2l0Y2godm9pZCk7DQo+PiArDQo+PiArI2Vs c2UgLyogI2lmZGVmIENPTkZJR19QUkNVICovDQo+PiArDQo+PiArI2RlZmluZSBwcmN1X3JlYWRf bG9jaygpIGRvIHt9IHdoaWxlICgwKSAjZGVmaW5lIHByY3VfcmVhZF91bmxvY2soKSANCj4+ICtk byB7fSB3aGlsZSAoMCkgI2RlZmluZSBzeW5jaHJvbml6ZV9wcmN1KCkgZG8ge30gd2hpbGUgKDAp ICNkZWZpbmUgDQo+PiArcHJjdV9ub3RlX2NvbnRleHRfc3dpdGNoKCkgZG8ge30gd2hpbGUgKDAp DQo+PiArDQo+PiArI2VuZGlmIC8qICNpZmRlZiBDT05GSUdfUFJDVSAqLw0KPj4gKyNlbmRpZiAv KiBfX0xJTlVYX1BSQ1VfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL2tlcm5lbC9yY3UvTWFrZWZpbGUg Yi9rZXJuZWwvcmN1L01ha2VmaWxlIGluZGV4IA0KPj4gMjM4MDNjN2QuLjg3OTE0MTljIDEwMDY0 NA0KPj4gLS0tIGEva2VybmVsL3JjdS9NYWtlZmlsZQ0KPj4gKysrIGIva2VybmVsL3JjdS9NYWtl ZmlsZQ0KPj4gQEAgLTIsNyArMiw3IEBADQo+PiAgIyBhbmQgaXMgZ2VuZXJhbGx5IG5vdCBhIGZ1 bmN0aW9uIG9mIHN5c3RlbSBjYWxsIGlucHV0cy4NCj4+ICBLQ09WX0lOU1RSVU1FTlQgOj0gbg0K Pj4NCj4+IC1vYmoteSArPSB1cGRhdGUubyBzeW5jLm8NCj4+ICtvYmoteSArPSB1cGRhdGUubyBz eW5jLm8gcHJjdS5vDQo+PiAgb2JqLSQoQ09ORklHX0NMQVNTSUNfU1JDVSkgKz0gc3JjdS5vDQo+ PiAgb2JqLSQoQ09ORklHX1RSRUVfU1JDVSkgKz0gc3JjdXRyZWUubw0KPj4gIG9iai0kKENPTkZJ R19USU5ZX1NSQ1UpICs9IHNyY3V0aW55Lm8gZGlmZiAtLWdpdCBhL2tlcm5lbC9yY3UvcHJjdS5j IA0KPj4gYi9rZXJuZWwvcmN1L3ByY3UuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAw MDAwMC4uYTAwYjk0MjANCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2tlcm5lbC9yY3UvcHJj dS5jDQo+PiBAQCAtMCwwICsxLDEyNSBAQA0KPj4gKyNpbmNsdWRlIDxsaW51eC9zbXAuaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvcHJjdS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4N Cj4+ICsjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvc2No ZWQuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSA8YXNtL2JhcnJpZXIuaD4NCj4+ICsNCj4+ICtERUZJ TkVfUEVSX0NQVV9TSEFSRURfQUxJR05FRChzdHJ1Y3QgcHJjdV9sb2NhbF9zdHJ1Y3QsIHByY3Vf bG9jYWwpOw0KPj4gKw0KPj4gK3N0cnVjdCBwcmN1X3N0cnVjdCBnbG9iYWxfcHJjdSA9IHsNCj4+ ICsgICAgICAgLmdsb2JhbF92ZXJzaW9uID0gQVRPTUlDNjRfSU5JVCgwKSwNCj4+ICsgICAgICAg LmFjdGl2ZV9jdHIgPSBBVE9NSUNfSU5JVCgwKSwNCj4+ICsgICAgICAgLm10eCA9IF9fTVVURVhf SU5JVElBTElaRVIoZ2xvYmFsX3ByY3UubXR4KSwNCj4+ICsgICAgICAgLndhaXRfcSA9IF9fV0FJ VF9RVUVVRV9IRUFEX0lOSVRJQUxJWkVSKGdsb2JhbF9wcmN1LndhaXRfcSkNCj4+ICt9Ow0KPj4g K3N0cnVjdCBwcmN1X3N0cnVjdCAqcHJjdSA9ICZnbG9iYWxfcHJjdTsNCj4+ICsNCj4+ICtzdGF0 aWMgaW5saW5lIHZvaWQgcHJjdV9yZXBvcnQoc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2Nh bCkgew0KPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2xvYmFsX3ZlcnNpb247DQo+PiAr ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2NhbF92ZXJzaW9uOw0KPj4gKw0KPj4gKyAgICAg ICBnbG9iYWxfdmVyc2lvbiA9IGF0b21pYzY0X3JlYWQoJnByY3UtPmdsb2JhbF92ZXJzaW9uKTsN Cj4+ICsgICAgICAgbG9jYWxfdmVyc2lvbiA9IGxvY2FsLT52ZXJzaW9uOw0KPj4gKyAgICAgICBp ZiAoZ2xvYmFsX3ZlcnNpb24gPiBsb2NhbF92ZXJzaW9uKQ0KPj4gKyAgICAgICAgICAgICAgIGNt cHhjaGcoJmxvY2FsLT52ZXJzaW9uLCBsb2NhbF92ZXJzaW9uLCANCj4+ICsgZ2xvYmFsX3ZlcnNp b24pOw0KPg0KPkl0IGlzIGNhbGxlZCB3aXRoIGlycS1kaXNhYmxlZCwgYW5kIGxvY2FsLT52ZXJz aW9uIGNhbid0IGJlIG1vZGlmaWVkIG9uIG90aGVyIGNwdS4gd2h5IGNtcHhjaGcgaXMgbmVlZGVk Pw0KDQpObywgaXQgd2lsbCBhbHNvIGJlIGNhbGxlZCBieSBwcmN1X3JlYWRfdW5sb2NrIGluIHRo aXMgaW1wbGVtZW50YXRpb24uDQoNCj4+ICt9DQo+PiArDQo+PiArdm9pZCBwcmN1X3JlYWRfbG9j ayh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2Nh bDsNCj4+ICsNCj4+ICsgICAgICAgbG9jYWwgPSBnZXRfY3B1X3B0cigmcHJjdV9sb2NhbCk7DQo+ PiArICAgICAgIGlmICghbG9jYWwtPm9ubGluZSkgew0KPj4gKyAgICAgICAgICAgICAgIFdSSVRF X09OQ0UobG9jYWwtPm9ubGluZSwgMSk7DQo+PiArICAgICAgICAgICAgICAgc21wX21iKCk7DQo+ DQo+V2hhdCdzIGlzIHRoZSBwYWlyZWQgY29kZT8NCg0KSXQgaXMgcGFpcmVkIHdpdGggdGhlIG11 dGV4X2xvY2sgaW4gc3luY2hyb25pemVfcHJjdS4NCkl0IGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQg aWYgd3JpdGVyIHNlZSB0aGUgb25saW5lIGlzIGZhbHNlLCB0aGVyZSBtdXN0IGJlIG5vIG9ubGlu ZSByZWFkZXIgb24gdGhpcyBjb3JlLg0KDQo+DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgbG9jYWwtPmxvY2tlZCsrOw0KPj4gKyAgICAgICBwdXRfY3B1X3B0cigmcHJjdV9sb2NhbCk7 DQo+PiArfQ0KPj4gK0VYUE9SVF9TWU1CT0wocHJjdV9yZWFkX2xvY2spOw0KPj4gKw0KPj4gK3Zv aWQgcHJjdV9yZWFkX3VubG9jayh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IGxvY2tlZDsN Cj4+ICsgICAgICAgc3RydWN0IHByY3VfbG9jYWxfc3RydWN0ICpsb2NhbDsNCj4+ICsNCj4+ICsg ICAgICAgYmFycmllcigpOw0KPj4gKyAgICAgICBsb2NhbCA9IGdldF9jcHVfcHRyKCZwcmN1X2xv Y2FsKTsNCj4+ICsgICAgICAgbG9ja2VkID0gbG9jYWwtPmxvY2tlZDsNCj4+ICsgICAgICAgaWYg KGxvY2tlZCkgew0KPj4gKyAgICAgICAgICAgICAgIGxvY2FsLT5sb2NrZWQtLTsNCj4+ICsgICAg ICAgICAgICAgICBpZiAobG9ja2VkID09IDEpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBw cmN1X3JlcG9ydChsb2NhbCk7DQo+PiArICAgICAgICAgICAgICAgcHV0X2NwdV9wdHIoJnByY3Vf bG9jYWwpOw0KPj4gKyAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgICAgIHB1dF9jcHVf cHRyKCZwcmN1X2xvY2FsKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIWF0b21pY19kZWNfcmV0 dXJuKCZwcmN1LT5hY3RpdmVfY3RyKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHdha2Vf dXAoJnByY3UtPndhaXRfcSk7DQo+PiArICAgICAgIH0NCj4+ICt9DQo+PiArRVhQT1JUX1NZTUJP TChwcmN1X3JlYWRfdW5sb2NrKTsNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBwcmN1X2hhbmRsZXIo dm9pZCAqaW5mbykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBwcmN1X2xvY2FsX3N0cnVjdCAq bG9jYWw7DQo+PiArDQo+PiArICAgICAgIGxvY2FsID0gdGhpc19jcHVfcHRyKCZwcmN1X2xvY2Fs KTsNCj4+ICsgICAgICAgaWYgKCFsb2NhbC0+bG9ja2VkKQ0KPj4gKyAgICAgICAgICAgICAgIFdS SVRFX09OQ0UobG9jYWwtPnZlcnNpb24sIA0KPj4gK2F0b21pYzY0X3JlYWQoJnByY3UtPmdsb2Jh bF92ZXJzaW9uKSk7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgc3luY2hyb25pemVfcHJjdSh2b2lk KQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IGNwdTsNCj4+ICsgICAgICAgY3B1bWFza190IGNwdXM7 DQo+DQo+SXQgbWlnaHQgb3ZlcmZsb3cgdGhlIHN0YWNrIGlmIHRoZSBjcHVtYXNrIGlzIGxhcmdl LCBwbGVhc2UgbW92ZSBpdCB0byBzdHJ1Y3QgcHJjdS4NCk9LLCB0aGFuayB5b3UuDQoNCj4+ICsg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb247DQo+PiArICAgICAgIHN0cnVjdCBwcmN1 X2xvY2FsX3N0cnVjdCAqbG9jYWw7DQo+PiArDQo+PiArICAgICAgIHZlcnNpb24gPSBhdG9taWM2 NF9hZGRfcmV0dXJuKDEsICZwcmN1LT5nbG9iYWxfdmVyc2lvbik7DQo+DQo+SSB0aGluayB0aGlz IGxpbmUgb2YgY29kZSBhdCBsZWFzdCBjYXVzZXMgdGhlIGZvbGxvd2luZyBwcm9ibGVtLg0KPg0K Pj4gKyAgICAgICBtdXRleF9sb2NrKCZwcmN1LT5tdHgpOw0KPj4gKw0KPj4gKyAgICAgICBsb2Nh bCA9IGdldF9jcHVfcHRyKCZwcmN1X2xvY2FsKTsNCj4+ICsgICAgICAgbG9jYWwtPnZlcnNpb24g PSB2ZXJzaW9uOw0KPg0KPlRoZSBzdWNjZXNzZnVsIG9yZGVycyBvZiBtdXRleF9sb2NrKCkgbWln aHQgbm90IGJlIHRoZSBzYW1lIHRoZSBvcmRlcnMgb2YgYXRvbWljNjRfYWRkX3JldHVybigpLiBJ biB0aGlzIGNhc2UsDQo+bG9jYWwtPnZlcnNpb24gd2lsbCBiZSBkZWNyZWFzZWQuDQoNClllcywg aXQgc2hvdWxkIHJlYWQgdGhlIGdsb2JhbF92ZXJzaW9uIGFnYWluLg0KQnV0IEkgdGhpbmsgaXQg aXMgYWxzbyBjb3JyZWN0Lg0KDQo+DQo+cHJjdV9yZXBvcnQoKSBjYW4gYWxzbyBoYXBwZW4gaGVy ZSBub3cuIEl0IGlzIHVuc3VyZSB3aG8gd2lsbCBjaGFuZ2Ugc3VjY2Vzc2Z1bGx5IHRoZSBsb2Nh bC0+dmVyc2lvbi4NCj4NCj4+ICsgICAgICAgcHV0X2NwdV9wdHIoJnByY3VfbG9jYWwpOw0KPj4g Kw0KPj4gKyAgICAgICBjcHVtYXNrX2NsZWFyKCZjcHVzKTsNCj4+ICsgICAgICAgZm9yX2VhY2hf cG9zc2libGVfY3B1KGNwdSkgew0KPj4gKyAgICAgICAgICAgICAgIGxvY2FsID0gcGVyX2NwdV9w dHIoJnByY3VfbG9jYWwsIGNwdSk7DQo+PiArICAgICAgICAgICAgICAgaWYgKCFSRUFEX09OQ0Uo bG9jYWwtPm9ubGluZSkpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4N Cj5JdCBzZWVtcyBsaWtlIHJlYWRpbmcgb24gbG9jYWwtPm9ubGluZSBpcyB1bnJlbGlhYmxlLg0K DQpBbnkgcHJvYmxlbT8NCg0KPg0KPj4gKyAgICAgICAgICAgICAgIGlmIChSRUFEX09OQ0UobG9j YWwtPnZlcnNpb24pIDwgdmVyc2lvbikgew0KPg0KPnBsZWFzZSBoYW5kbGUgdGhlIGNhc2VzIHdo ZW4gdmVyc2lvbiB3cmFwcyBhcm91bmQgdGhlIG1heGltdW0uDQoNClRoYXQncyB3aHkgSSBqdXN0 IHdhbnQgdG8gdXNlIDY0Yml0IGNvdW50ZXJzLg0KUmVzZXR0aW5nIGNvdW50ZXJzIG5lZWRzIGEg ZnVsbCBzeXN0ZW0gc3luY2hyb25pemF0aW9uLCB3aGljaCBuZWVkcyB0byBpbnZvbHZlIGEgY29t cGxleCBwcm90b2NvbC4NCg0KPg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc21wX2NhbGxf ZnVuY3Rpb25fc2luZ2xlKGNwdSwgcHJjdV9oYW5kbGVyLCANCj4+ICsgTlVMTCwgMCk7DQo+DQo+ aXQgc21lbGxzIGJhZCB3aGVuIGl0IGlzIGluIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdSgpIGxvb3Au DQo+DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmY3B1 cyk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAg IGZvcl9lYWNoX2NwdShjcHUsICZjcHVzKSB7DQo+PiArICAgICAgICAgICAgICAgbG9jYWwgPSBw ZXJfY3B1X3B0cigmcHJjdV9sb2NhbCwgY3B1KTsNCj4+ICsgICAgICAgICAgICAgICB3aGlsZSAo UkVBRF9PTkNFKGxvY2FsLT52ZXJzaW9uKSA8IHZlcnNpb24pDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBjcHVfcmVsYXgoKTsNCj4+ICsgICAgICAgfQ0KPj4NCj4NCj5PdWNoLCB0aGUgY3B1 X3JlbGF4KCkgbG9vcCB3b3VsZCB0YWtlIGEgbG9uZyB0aW1lLg0KPlNpbmNlIGl0IHdpbGwgd2Fp dCB1bnRpbCBhbGwgdGhlIHJlbGV2YW50IGNwdXMgc2NoZWR1bGVkLg0KPnJlbGV2YW50IGNwdXM6 IHByY3UgcmVhZGVyIGFjdGl2ZSBjcHVzLg0KPlNvIHRoaXMgYmxvY2sgb2YgY29kZSBlcXVhbHMg dG8gc3luY2hyb256ZV9zY2hlZCgpIGluIG1hbnkgY2FzZXMgd2hlbiBwcmN1IGlzIG1hc3NpdmVs eSB1c2VkLiBpc24ndCBpdD8NCg0KTm8sIGl0IHdhaXRzIGZvciBhbGwgb25saW5lIHJlYWRlcnMg dG8gZG8gdW5sb2NraW5nLiBJIHRoaW5rIHRoZSByZWFkIENTIHNob3VsZCBub3QgYmUgbG9uZy4N CklmIHByY3UgY2FuIGJlIG1hc3NpdmVseSB1c2VkIChJIGRvbid0IGJlbGlldmUuLi4pLCBJIHBs YW4gdG8gc3BsaXQgdGhlIHNpbmdsZXRvbiBwcmN1IGludG8gbXVsdGlwbGUgYWxsb2NhYmxlIGlu c3RhbmNlcy4NCkJlY2F1c2UgZWFjaCBpbnN0YW5jZSBvbmx5IHNlbnRzIGlwaXMgdG8gaXRzIG93 biBvbmxpbmUgcmVhZGVycywgSSB0aGluayBpdCBjb3VsZCB3b3JrIGJldHRlci4NCg0KPg0KPg0K PnNtcF9tYigpIC8qIEEgcGFpcmVkIHdpdGggQiAqLw0KPg0KPj4gKyAgICAgICBpZiAoYXRvbWlj X3JlYWQoJnByY3UtPmFjdGl2ZV9jdHIpKQ0KPj4gKyAgICAgICAgICAgICAgIHdhaXRfZXZlbnQo cHJjdS0+d2FpdF9xLCANCj4+ICsgIWF0b21pY19yZWFkKCZwcmN1LT5hY3RpdmVfY3RyKSk7DQo+ PiArDQo+PiArICAgICAgIG11dGV4X3VubG9jaygmcHJjdS0+bXR4KTsNCj4+ICt9DQo+PiArRVhQ T1JUX1NZTUJPTChzeW5jaHJvbml6ZV9wcmN1KTsNCj4+ICsNCj4+ICt2b2lkIHByY3Vfbm90ZV9j b250ZXh0X3N3aXRjaCh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHByY3VfbG9jYWxf c3RydWN0ICpsb2NhbDsNCj4+ICsNCj4+ICsgICAgICAgbG9jYWwgPSBnZXRfY3B1X3B0cigmcHJj dV9sb2NhbCk7DQo+PiArICAgICAgIGlmIChsb2NhbC0+bG9ja2VkKSB7DQo+PiArICAgICAgICAg ICAgICAgYXRvbWljX2FkZChsb2NhbC0+bG9ja2VkLCAmcHJjdS0+YWN0aXZlX2N0cik7DQo+DQo+ c21wX21iKCkgLyogQiBwYWlyZWQgd2l0aCBBICovDQoNClRoYW5rIHlvdSwgSSBzaG91bGQgY29u c2lkZXIgbW9yZSBmb3Igbm9uLVRTTyBhcmNoLg0KDQo+DQo+PiArICAgICAgICAgICAgICAgbG9j YWwtPmxvY2tlZCA9IDA7DQo+PiArICAgICAgIH0NCj4+ICsgICAgICAgbG9jYWwtPm9ubGluZSA9 IDA7DQo+PiArICAgICAgIHByY3VfcmVwb3J0KGxvY2FsKTsNCj4+ICsgICAgICAgcHV0X2NwdV9w dHIoJnByY3VfbG9jYWwpOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvY29y ZS5jIGIva2VybmVsL3NjaGVkL2NvcmUuYyBpbmRleCANCj4+IDMyNmQ0Zjg4Li5hMzA4NTgxYiAx MDA2NDQNCj4+IC0tLSBhL2tlcm5lbC9zY2hlZC9jb3JlLmMNCj4+ICsrKyBiL2tlcm5lbC9zY2hl ZC9jb3JlLmMNCj4+IEBAIC0xNSw2ICsxNSw3IEBADQo+PiAgI2luY2x1ZGUgPGxpbnV4L2luaXRf dGFzay5oPg0KPj4gICNpbmNsdWRlIDxsaW51eC9jb250ZXh0X3RyYWNraW5nLmg+DQo+PiAgI2lu Y2x1ZGUgPGxpbnV4L3JjdXBkYXRlX3dhaXQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcHJjdS5o Pg0KPj4NCj4+ICAjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+DQo+PiAgI2luY2x1ZGUgPGxpbnV4 L2twcm9iZXMuaD4NCj4+IEBAIC0zMzgzLDYgKzMzODQsNyBAQCBzdGF0aWMgdm9pZCBfX3NjaGVk IG5vdHJhY2UgX19zY2hlZHVsZShib29sIA0KPj4gcHJlZW1wdCkNCj4+DQo+PiAgICAgICAgIGxv Y2FsX2lycV9kaXNhYmxlKCk7DQo+PiAgICAgICAgIHJjdV9ub3RlX2NvbnRleHRfc3dpdGNoKHBy ZWVtcHQpOw0KPj4gKyAgICAgICBwcmN1X25vdGVfY29udGV4dF9zd2l0Y2goKTsNCj4+DQo+PiAg ICAgICAgIC8qDQo+PiAgICAgICAgICAqIE1ha2Ugc3VyZSB0aGF0IHNpZ25hbF9wZW5kaW5nX3N0 YXRlKCktPnNpZ25hbF9wZW5kaW5nKCkgDQo+PiBiZWxvdw0KPj4gLS0NCj4+IDIuMTQuMS43Mjku ZzU5YzBlYTE4Mw0KPj4NCj4NCg==