Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4101911imm; Mon, 18 Jun 2018 09:09:54 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJiktlqU6Qwf+b5xgK+CasMJVMyZWtMLX/KGyVV4sZ1iWYEeps7T9Z8fga+cxgTVXxN1wwT X-Received: by 2002:a65:5844:: with SMTP id s4-v6mr11730609pgr.417.1529338194661; Mon, 18 Jun 2018 09:09:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529338194; cv=none; d=google.com; s=arc-20160816; b=FMtfpBHJIJXeFVVNZMMaeYE6KecxdKsyoSa7zSv5akorqkPQQ5bVfRUBQowfQm3TFG ZrKFzvnLw+s0oNjixTgUrbKxpq+OUk8ltLJvZrpzJiHsmeZ/GCXMqiMvG/LG+KAoUGHR FRPHuwM5RP8w4ddea59ctmubiUgR2RGGvfy3oURsksrNigBEHrLkYaVxnEPRKdyUJva+ RlRHenWbqaEnKjo6tJz5naQssQo0tYm7yBXwmuJQut7ewtbcm45VqgnVKze0PGbKCcwC z8f0IMQX/VEMtwiyNe0TcBR6VQhRK9DsC01SWHBawPKHJLRzO/advaYAEzuCHk5hnwgY Fr2w== 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-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:arc-authentication-results; bh=sJ5XxMsEUL5Jm+M8PL2Qod8QWAEZaFy67N/9yC+q6V0=; b=FkxYOxZFbPUidxKH0G/NoVZI7vKLtc+p6qQLlJOWmaych+qgr+8d9ZKQC8KrmCmSFw 7RZDlVxe5tClL1LWI3143Ix9Ps4V0pTBo3MALKSYDUQA7k0G+vh4qu9x/9A2BSZcBXc7 OSYlKR/eupO3NVfeJRMs5ycfhJ3sXxj9LXXIrhhfYanFUoykUbmUQRQbw/80NqeG/6+h 6wA2ieys7eP5nT7EnOK/g3S4T70Wclhi/zXzY0SAMNyw5CxKReWCjeR0vQn4pzfkeyl/ HdvZ30CS2HoeNUMqzv1gE0KmbCPrq9F6Yhj6yamPQ8rhVY8/qaHnopShSg4bCGNPknC5 ZVdA== 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 l12-v6si15077852plc.215.2018.06.18.09.09.40; Mon, 18 Jun 2018 09:09:54 -0700 (PDT) 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 S934808AbeFRQIS (ORCPT + 99 others); Mon, 18 Jun 2018 12:08:18 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:34071 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932547AbeFRQIQ (ORCPT ); Mon, 18 Jun 2018 12:08:16 -0400 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w5IG3jr9026726; Mon, 18 Jun 2018 18:08:00 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2jmxgfcg6a-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 18 Jun 2018 18:08:00 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id D08EB31; Mon, 18 Jun 2018 16:07:59 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag5node3.st.com [10.75.127.15]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9DD6B1168; Mon, 18 Jun 2018 16:07:59 +0000 (GMT) Received: from SFHDAG6NODE3.st.com (10.75.127.18) by SFHDAG5NODE3.st.com (10.75.127.15) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 18 Jun 2018 18:07:59 +0200 Received: from SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6]) by SFHDAG6NODE3.st.com ([fe80::d04:5337:ab17:b6f6%20]) with mapi id 15.00.1347.000; Mon, 18 Jun 2018 18:07:59 +0200 From: Philippe CORNU To: Benjamin Gaignard , "gustavo@padovan.org" , "maarten.lankhorst@linux.intel.com" , "seanpaul@chromium.org" , "airlied@linux.ie" , "Vincent ABRIOU" CC: "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" Subject: Re: [PATCH v1 4/7] drm: sti: make connectors use atomic_print_state instead of debugfs Thread-Topic: [PATCH v1 4/7] drm: sti: make connectors use atomic_print_state instead of debugfs Thread-Index: AQHUBw9wWrIgDCsZUEaYMvDHubxUVqRmDWYA Date: Mon, 18 Jun 2018 16:07:59 +0000 Message-ID: <977a7d06-5319-e5a3-eb71-38ac59b202e7@st.com> References: <20180605135407.20214-1-benjamin.gaignard@linaro.org> <20180605135407.20214-5-benjamin.gaignard@linaro.org> In-Reply-To: <20180605135407.20214-5-benjamin.gaignard@linaro.org> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.46] Content-Type: text/plain; charset="utf-8" Content-ID: <488E6A9C85607845AA763A3CF4362FBF@st.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-06-18_06:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQmVuamFtaW4sDQoNClJldmlld2VkLWJ5OiBQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29y bnVAc3QuY29tPg0KTWFueSB0aGFua3MNClBoaWxpcHBlDQoNCk9uIDA2LzA1LzIwMTggMDM6NTQg UE0sIEJlbmphbWluIEdhaWduYXJkIHdyb3RlOg0KPiBDb252ZXJ0IGFsbCBzdGkgY29ubmVjdG9y cyB0byBhdG9taWNfcHJpbnRfc3RhdGUgdXNhZ2UgcmF0aGVyIHRoYW4NCj4gdXNlIGEgZGVidWdm cyBlbnRyeS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1p bi5nYWlnbmFyZEBsaW5hcm8ub3JnPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vc3RpL3N0 aV9kdm8uYyAgfCAgNjAgKysrKystLS0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9z dGkvc3RpX2hkYS5jICB8ICA3NSArKysrKysrLS0tLS0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMv Z3B1L2RybS9zdGkvc3RpX2hkbWkuYyB8IDEzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTc3 IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfZHZvLmMNCj4gaW5kZXggYTU5NzljZDI1 Y2M3Li41NjYyNjEzYWU2ZTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2R2by5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2R2by5jDQo+IEBAIC02LDcg KzYsNiBAQA0KPiAgIA0KPiAgICNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gICAjaW5jbHVkZSA8 bGludXgvY29tcG9uZW50Lmg+DQo+IC0jaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPg0KPiAgICNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPg0K PiAgICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gQEAgLTE1OCw1MiArMTU3 LDM3IEBAIHN0YXRpYyB2b2lkIGR2b19hd2dfY29uZmlndXJlKHN0cnVjdCBzdGlfZHZvICpkdm8s IHUzMiAqYXdnX3JhbV9jb2RlLCBpbnQgbmIpDQo+ICAgCXdyaXRlbChEVk9fQVdHX0NUUkxfRU4s IGR2by0+cmVncyArIERWT19BV0dfRElHU1lOQ19DVFJMKTsNCj4gICB9DQo+ICAgDQo+IC0jZGVm aW5lIERCR0ZTX0RVTVAocmVnKSBzZXFfcHJpbnRmKHMsICJcbiAgJS0yNXMgMHglMDhYIiwgI3Jl ZywgXA0KPiArI2RlZmluZSBEQkdGU19EVU1QKHJlZykgZHJtX3ByaW50ZihwLCAiXG5cdFx0JS0y NXMgMHglMDhYIiwgI3JlZywgXA0KPiAgIAkJCQkgICByZWFkbChkdm8tPnJlZ3MgKyByZWcpKQ0K PiAgIA0KPiAtc3RhdGljIHZvaWQgZHZvX2RiZ19hd2dfbWljcm9jb2RlKHN0cnVjdCBzZXFfZmls ZSAqcywgdm9pZCBfX2lvbWVtICpyZWcpDQo+ICtzdGF0aWMgdm9pZCBkdm9fZGJnX2F3Z19taWNy b2NvZGUoc3RydWN0IGRybV9wcmludGVyICpwLCB2b2lkIF9faW9tZW0gKnJlZykNCj4gICB7DQo+ ICAgCXVuc2lnbmVkIGludCBpOw0KPiAgIA0KPiAtCXNlcV9wdXRzKHMsICJcblxuIik7DQo+IC0J c2VxX3B1dHMocywgIiAgRFZPIEFXRyBtaWNyb2NvZGU6Iik7DQo+ICsJZHJtX3ByaW50ZihwLCAi XG5cbiIpOw0KPiArCWRybV9wcmludGYocCwgIiAgRFZPIEFXRyBtaWNyb2NvZGU6Iik7DQo+ICAg CWZvciAoaSA9IDA7IGkgPCBBV0dfTUFYX0lOU1Q7IGkrKykgew0KPiAgIAkJaWYgKGkgJSA4ID09 IDApDQo+IC0JCQlzZXFfcHJpbnRmKHMsICJcbiAgJTA0WDoiLCBpKTsNCj4gLQkJc2VxX3ByaW50 ZihzLCAiICUwNFgiLCByZWFkbChyZWcgKyBpICogNCkpOw0KPiArCQkJZHJtX3ByaW50ZihwLCAi XG4gICUwNFg6IiwgaSk7DQo+ICsJCWRybV9wcmludGYocCwgIiAlMDRYIiwgcmVhZGwocmVnICsg aSAqIDQpKTsNCj4gICAJfQ0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgZHZvX2RiZ19zaG93 KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCj4gK3N0YXRpYyB2b2lkIHN0aV9kdm9f cHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmludGVyICpwLA0KPiArCQkJCWNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSkNCj4gICB7DQo+IC0Jc3RydWN0IGRybV9pbmZvX25v ZGUgKm5vZGUgPSBzLT5wcml2YXRlOw0KPiAtCXN0cnVjdCBzdGlfZHZvICpkdm8gPSAoc3RydWN0 IHN0aV9kdm8gKilub2RlLT5pbmZvX2VudC0+ZGF0YTsNCj4gKwlzdHJ1Y3Qgc3RpX2R2b19jb25u ZWN0b3IgKmR2b19jb25uZWN0b3INCj4gKwkJPSB0b19zdGlfZHZvX2Nvbm5lY3RvcihzdGF0ZS0+ Y29ubmVjdG9yKTsNCj4gKwlzdHJ1Y3Qgc3RpX2R2byAqZHZvID0gZHZvX2Nvbm5lY3Rvci0+ZHZv Ow0KPiAgIA0KPiAtCXNlcV9wcmludGYocywgIkRWTzogKHZhZGRyID0gMHglcCkiLCBkdm8tPnJl Z3MpOw0KPiArCWRybV9wcmludGYocCwgIkRWTzogKHZhZGRyID0gMHglcCkiLCBkdm8tPnJlZ3Mp Ow0KPiAgIAlEQkdGU19EVU1QKERWT19BV0dfRElHU1lOQ19DVFJMKTsNCj4gICAJREJHRlNfRFVN UChEVk9fRE9GX0NGRyk7DQo+ICAgCURCR0ZTX0RVTVAoRFZPX0xVVF9QUk9HX0xPVyk7DQo+ICAg CURCR0ZTX0RVTVAoRFZPX0xVVF9QUk9HX01JRCk7DQo+ICAgCURCR0ZTX0RVTVAoRFZPX0xVVF9Q Uk9HX0hJR0gpOw0KPiAtCWR2b19kYmdfYXdnX21pY3JvY29kZShzLCBkdm8tPnJlZ3MgKyBEVk9f RElHU1lOQ19JTlNUUl9JKTsNCj4gLQlzZXFfcHV0YyhzLCAnXG4nKTsNCj4gLQlyZXR1cm4gMDsN Cj4gLX0NCj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGR2b19kZWJ1Z2ZzX2Zp bGVzW10gPSB7DQo+IC0JeyAiZHZvIiwgZHZvX2RiZ19zaG93LCAwLCBOVUxMIH0sDQo+IC19Ow0K PiAtDQo+IC1zdGF0aWMgaW50IGR2b19kZWJ1Z2ZzX2luaXQoc3RydWN0IHN0aV9kdm8gKmR2bywg c3RydWN0IGRybV9taW5vciAqbWlub3IpDQo+IC17DQo+IC0JdW5zaWduZWQgaW50IGk7DQo+IC0N Cj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkdm9fZGVidWdmc19maWxlcyk7IGkrKykN Cj4gLQkJZHZvX2RlYnVnZnNfZmlsZXNbaV0uZGF0YSA9IGR2bzsNCj4gLQ0KPiAtCXJldHVybiBk cm1fZGVidWdmc19jcmVhdGVfZmlsZXMoZHZvX2RlYnVnZnNfZmlsZXMsDQo+IC0JCQkJCUFSUkFZ X1NJWkUoZHZvX2RlYnVnZnNfZmlsZXMpLA0KPiAtCQkJCQltaW5vci0+ZGVidWdmc19yb290LCBt aW5vcik7DQo+ICsJZHZvX2RiZ19hd2dfbWljcm9jb2RlKHAsIGR2by0+cmVncyArIERWT19ESUdT WU5DX0lOU1RSX0kpOw0KPiArCWRybV9wcmludGYocCwgIlxuIik7DQo+ICAgfQ0KPiAgIA0KPiAg IHN0YXRpYyB2b2lkIHN0aV9kdm9fZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0K PiBAQCAtMzk3LDIwICszODEsNiBAQCBzdGlfZHZvX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4gICAJcmV0dXJuIGNvbm5lY3Rv cl9zdGF0dXNfZGlzY29ubmVjdGVkOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgc3RpX2R2 b19sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+IC17DQo+ IC0Jc3RydWN0IHN0aV9kdm9fY29ubmVjdG9yICpkdm9fY29ubmVjdG9yDQo+IC0JCT0gdG9fc3Rp X2R2b19jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gLQlzdHJ1Y3Qgc3RpX2R2byAqZHZvID0gZHZv X2Nvbm5lY3Rvci0+ZHZvOw0KPiAtDQo+IC0JaWYgKGR2b19kZWJ1Z2ZzX2luaXQoZHZvLCBkdm8t PmRybV9kZXYtPnByaW1hcnkpKSB7DQo+IC0JCURSTV9FUlJPUigiRFZPIGRlYnVnZnMgc2V0dXAg ZmFpbGVkXG4iKTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtDQo+IC0JcmV0dXJu IDA7DQo+IC19DQo+IC0NCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVu Y3Mgc3RpX2R2b19jb25uZWN0b3JfZnVuY3MgPSB7DQo+ICAgCS5maWxsX21vZGVzID0gZHJtX2hl bHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPiAgIAkuZGV0ZWN0ID0gc3RpX2R2 b19jb25uZWN0b3JfZGV0ZWN0LA0KPiBAQCAtNDE4LDcgKzM4OCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBzdGlfZHZvX2Nvbm5lY3Rvcl9mdW5jcyA9IHsNCj4g ICAJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiAgIAkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNh dGVfc3RhdGUsDQo+ICAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLA0KPiAtCS5sYXRlX3JlZ2lzdGVyID0gc3RpX2R2b19s YXRlX3JlZ2lzdGVyLA0KPiArCS5hdG9taWNfcHJpbnRfc3RhdGUgPSBzdGlfZHZvX3ByaW50X3N0 YXRlLA0KPiAgIH07DQo+ICAgDQo+ICAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqc3RpX2R2 b19maW5kX2VuY29kZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkYS5jIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRh LmMNCj4gaW5kZXggNjdiYmRiNDlmZmZjLi4wNzM0ZjI3NTE1MDUgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkYS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkv c3RpX2hkYS5jDQo+IEBAIC0zMDcsNzEgKzMwNyw1NiBAQCBzdGF0aWMgdm9pZCBoZGFfZW5hYmxl X2hkX2RhY3Moc3RydWN0IHN0aV9oZGEgKmhkYSwgYm9vbCBlbmFibGUpDQo+ICAgCX0NCj4gICB9 DQo+ICAgDQo+IC0jZGVmaW5lIERCR0ZTX0RVTVAocmVnKSBzZXFfcHJpbnRmKHMsICJcbiAgJS0y NXMgMHglMDhYIiwgI3JlZywgXA0KPiArI2RlZmluZSBEQkdGU19EVU1QKHJlZykgZHJtX3ByaW50 ZihwLCAiXG5cdFx0JS0yNXMgMHglMDhYIiwgI3JlZywgXA0KPiAgIAkJCQkgICByZWFkbChoZGEt PnJlZ3MgKyByZWcpKQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgaGRhX2RiZ19jZmcoc3RydWN0IHNl cV9maWxlICpzLCBpbnQgdmFsKQ0KPiArc3RhdGljIHZvaWQgaGRhX2RiZ19jZmcoc3RydWN0IGRy bV9wcmludGVyICpwLCBpbnQgdmFsKQ0KPiAgIHsNCj4gLQlzZXFfcHV0cyhzLCAiXHRBV0cgIik7 DQo+IC0Jc2VxX3B1dHMocywgdmFsICYgQ0ZHX0FXR19BU1lOQ19FTiA/ICJlbmFibGVkIiA6ICJk aXNhYmxlZCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0QVdHICIpOw0KPiArCWRybV9wcmludGYo cCwgdmFsICYgQ0ZHX0FXR19BU1lOQ19FTiA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOw0KPiAg IH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGhkYV9kYmdfYXdnX21pY3JvY29kZShzdHJ1Y3Qgc2Vx X2ZpbGUgKnMsIHZvaWQgX19pb21lbSAqcmVnKQ0KPiArc3RhdGljIHZvaWQgaGRhX2RiZ19hd2df bWljcm9jb2RlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdm9pZCBfX2lvbWVtICpyZWcpDQo+ICAg ew0KPiAgIAl1bnNpZ25lZCBpbnQgaTsNCj4gICANCj4gLQlzZXFfcHV0cyhzLCAiXG5cbiAgSERB IEFXRyBtaWNyb2NvZGU6Iik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cbiAgSERBIEFXRyBtaWNy b2NvZGU6Iik7DQo+ICAgCWZvciAoaSA9IDA7IGkgPCBBV0dfTUFYX0lOU1Q7IGkrKykgew0KPiAg IAkJaWYgKGkgJSA4ID09IDApDQo+IC0JCQlzZXFfcHJpbnRmKHMsICJcbiAgJTA0WDoiLCBpKTsN Cj4gLQkJc2VxX3ByaW50ZihzLCAiICUwNFgiLCByZWFkbChyZWcgKyBpICogNCkpOw0KPiArCQkJ ZHJtX3ByaW50ZihwLCAiXG4gICUwNFg6IiwgaSk7DQo+ICsJCWRybV9wcmludGYocCwgIiAlMDRY IiwgcmVhZGwocmVnICsgaSAqIDQpKTsNCj4gICAJfQ0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2 b2lkIGhkYV9kYmdfdmlkZW9fZGFjc19jdHJsKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCBfX2lv bWVtICpyZWcpDQo+ICtzdGF0aWMgdm9pZCBoZGFfZGJnX3ZpZGVvX2RhY3NfY3RybChzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnAsIHZvaWQgX19pb21lbSAqcmVnKQ0KPiAgIHsNCj4gICAJdTMyIHZhbCA9 IHJlYWRsKHJlZyk7DQo+ICAgDQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cbiAgJS0yNXMgMHglMDhY IiwgIlZJREVPX0RBQ1NfQ09OVFJPTCIsIHZhbCk7DQo+IC0Jc2VxX3B1dHMocywgIlx0SEQgREFD cyAiKTsNCj4gLQlzZXFfcHV0cyhzLCB2YWwgJiBEQUNfQ0ZHX0hEX0haVVZXX09GRl9NQVNLID8g ImRpc2FibGVkIiA6ICJlbmFibGVkIik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cbiAgJS0yNXMg MHglMDhYIiwgIlZJREVPX0RBQ1NfQ09OVFJPTCIsIHZhbCk7DQo+ICsJZHJtX3ByaW50ZihwLCAi XHRIRCBEQUNzICIpOw0KPiArCWRybV9wcmludGYocCwgdmFsICYgREFDX0NGR19IRF9IWlVWV19P RkZfTUFTSyA/ICJkaXNhYmxlZCIgOiAiZW5hYmxlZCIpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRp YyBpbnQgaGRhX2RiZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCj4gK3N0 YXRpYyB2b2lkIHN0aV9oZGFfcHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmludGVyICpwLA0KPiAr CQkJCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSkNCj4gICB7DQo+IC0J c3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBzLT5wcml2YXRlOw0KPiAtCXN0cnVjdCBzdGlf aGRhICpoZGEgPSAoc3RydWN0IHN0aV9oZGEgKilub2RlLT5pbmZvX2VudC0+ZGF0YTsNCj4gKwlz dHJ1Y3Qgc3RpX2hkYV9jb25uZWN0b3IgKmhkYV9jb25uZWN0b3INCj4gKwkJPSB0b19zdGlfaGRh X2Nvbm5lY3RvcihzdGF0ZS0+Y29ubmVjdG9yKTsNCj4gKwlzdHJ1Y3Qgc3RpX2hkYSAqaGRhID0g aGRhX2Nvbm5lY3Rvci0+aGRhOw0KPiAgIA0KPiAtCXNlcV9wcmludGYocywgIkhEIEFuYWxvZzog KHZhZGRyID0gMHglcCkiLCBoZGEtPnJlZ3MpOw0KPiArCWRybV9wcmludGYocCwgIkhEIEFuYWxv ZzogKHZhZGRyID0gMHglcEspIiwgaGRhLT5yZWdzKTsNCj4gICAJREJHRlNfRFVNUChIREFfQU5B X0NGRyk7DQo+IC0JaGRhX2RiZ19jZmcocywgcmVhZGwoaGRhLT5yZWdzICsgSERBX0FOQV9DRkcp KTsNCj4gKwloZGFfZGJnX2NmZyhwLCByZWFkbChoZGEtPnJlZ3MgKyBIREFfQU5BX0NGRykpOw0K PiAgIAlEQkdGU19EVU1QKEhEQV9BTkFfU0NBTEVfQ1RSTF9ZKTsNCj4gICAJREJHRlNfRFVNUChI REFfQU5BX1NDQUxFX0NUUkxfQ0IpOw0KPiAgIAlEQkdGU19EVU1QKEhEQV9BTkFfU0NBTEVfQ1RS TF9DUik7DQo+ICAgCURCR0ZTX0RVTVAoSERBX0FOQV9BTkNfQ1RSTCk7DQo+ICAgCURCR0ZTX0RV TVAoSERBX0FOQV9TUkNfWV9DRkcpOw0KPiAgIAlEQkdGU19EVU1QKEhEQV9BTkFfU1JDX0NfQ0ZH KTsNCj4gLQloZGFfZGJnX2F3Z19taWNyb2NvZGUocywgaGRhLT5yZWdzICsgSERBX1NZTkNfQVdH SSk7DQo+ICsJaGRhX2RiZ19hd2dfbWljcm9jb2RlKHAsIGhkYS0+cmVncyArIEhEQV9TWU5DX0FX R0kpOw0KPiAgIAlpZiAoaGRhLT52aWRlb19kYWNzX2N0cmwpDQo+IC0JCWhkYV9kYmdfdmlkZW9f ZGFjc19jdHJsKHMsIGhkYS0+dmlkZW9fZGFjc19jdHJsKTsNCj4gLQlzZXFfcHV0YyhzLCAnXG4n KTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW5mb19s aXN0IGhkYV9kZWJ1Z2ZzX2ZpbGVzW10gPSB7DQo+IC0JeyAiaGRhIiwgaGRhX2RiZ19zaG93LCAw LCBOVUxMIH0sDQo+IC19Ow0KPiAtDQo+IC1zdGF0aWMgaW50IGhkYV9kZWJ1Z2ZzX2luaXQoc3Ry dWN0IHN0aV9oZGEgKmhkYSwgc3RydWN0IGRybV9taW5vciAqbWlub3IpDQo+IC17DQo+IC0JdW5z aWduZWQgaW50IGk7DQo+IC0NCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoZGFfZGVi dWdmc19maWxlcyk7IGkrKykNCj4gLQkJaGRhX2RlYnVnZnNfZmlsZXNbaV0uZGF0YSA9IGhkYTsN Cj4gLQ0KPiAtCXJldHVybiBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMoaGRhX2RlYnVnZnNfZmls ZXMsDQo+IC0JCQkJCUFSUkFZX1NJWkUoaGRhX2RlYnVnZnNfZmlsZXMpLA0KPiAtCQkJCQltaW5v ci0+ZGVidWdmc19yb290LCBtaW5vcik7DQo+ICsJCWhkYV9kYmdfdmlkZW9fZGFjc19jdHJsKHAs IGhkYS0+dmlkZW9fZGFjc19jdHJsKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcbiIpOw0KPiAgIH0N Cj4gICANCj4gICAvKioNCj4gQEAgLTYzMiwyNyArNjE3LDEzIEBAIHN0cnVjdCBkcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcyBzdGlfaGRhX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7DQo+ICAg CS5tb2RlX3ZhbGlkID0gc3RpX2hkYV9jb25uZWN0b3JfbW9kZV92YWxpZCwNCj4gICB9Ow0KPiAg IA0KPiAtc3RhdGljIGludCBzdGlfaGRhX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikNCj4gLXsNCj4gLQlzdHJ1Y3Qgc3RpX2hkYV9jb25uZWN0b3IgKmhkYV9j b25uZWN0b3INCj4gLQkJPSB0b19zdGlfaGRhX2Nvbm5lY3Rvcihjb25uZWN0b3IpOw0KPiAtCXN0 cnVjdCBzdGlfaGRhICpoZGEgPSBoZGFfY29ubmVjdG9yLT5oZGE7DQo+IC0NCj4gLQlpZiAoaGRh X2RlYnVnZnNfaW5pdChoZGEsIGhkYS0+ZHJtX2Rldi0+cHJpbWFyeSkpIHsNCj4gLQkJRFJNX0VS Uk9SKCJIREEgZGVidWdmcyBzZXR1cCBmYWlsZWRcbiIpOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsN Cj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBzdGlfaGRhX2Nvbm5lY3Rvcl9mdW5jcyA9IHsNCj4g ICAJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMs DQo+ICAgCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLA0KPiAgIAkucmVzZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsDQo+ICAgCS5hdG9taWNfZHVwbGljYXRl X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4g ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rl c3Ryb3lfc3RhdGUsDQo+IC0JLmxhdGVfcmVnaXN0ZXIgPSBzdGlfaGRhX2xhdGVfcmVnaXN0ZXIs DQo+ICsJLmF0b21pY19wcmludF9zdGF0ZSA9IHN0aV9oZGFfcHJpbnRfc3RhdGUsDQo+ICAgfTsN Cj4gICANCj4gICBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICpzdGlfaGRhX2ZpbmRfZW5jb2Rl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3N0aS9zdGlfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jDQo+IGluZGV4 IDU4ZjQzMTEwMjUxMi4uYjEzMTNiMzMyMWJmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vc3RpL3N0aV9oZG1pLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5j DQo+IEBAIC01ODQsNDkgKzU4NCw0OSBAQCBzdGF0aWMgdm9pZCBoZG1pX3N3cmVzZXQoc3RydWN0 IHN0aV9oZG1pICpoZG1pKQ0KPiAgIAljbGtfZGlzYWJsZV91bnByZXBhcmUoaGRtaS0+Y2xrX2F1 ZGlvKTsNCj4gICB9DQo+ICAgDQo+IC0jZGVmaW5lIERCR0ZTX1BSSU5UX1NUUihzdHIxLCBzdHIy KSBzZXFfcHJpbnRmKHMsICIlLTI0cyAlc1xuIiwgc3RyMSwgc3RyMikNCj4gLSNkZWZpbmUgREJH RlNfUFJJTlRfSU5UKHN0cjEsIGludDIpIHNlcV9wcmludGYocywgIiUtMjRzICVkXG4iLCBzdHIx LCBpbnQyKQ0KPiAtI2RlZmluZSBEQkdGU19EVU1QKHN0ciwgcmVnKSBzZXFfcHJpbnRmKHMsICIl cyAgJS0yNXMgMHglMDhYIiwgc3RyLCAjcmVnLCBcDQo+ICsjZGVmaW5lIERCR0ZTX1BSSU5UX1NU UihzdHIxLCBzdHIyKSBkcm1fcHJpbnRmKHAsICIlLTI0cyAlc1xuIiwgc3RyMSwgc3RyMikNCj4g KyNkZWZpbmUgREJHRlNfUFJJTlRfSU5UKHN0cjEsIGludDIpIGRybV9wcmludGYocCwgIiUtMjRz ICVkXG4iLCBzdHIxLCBpbnQyKQ0KPiArI2RlZmluZSBEQkdGU19EVU1QKHN0ciwgcmVnKSBkcm1f cHJpbnRmKHAsICIlc1x0JS0yNXMgMHglMDhYIiwgc3RyLCAjcmVnLCBcDQo+ICAgCQkJCQloZG1p X3JlYWQoaGRtaSwgcmVnKSkNCj4gLSNkZWZpbmUgREJHRlNfRFVNUF9ESShyZWcsIHNsb3QpIERC R0ZTX0RVTVAoIlxuIiwgcmVnKHNsb3QpKQ0KPiArI2RlZmluZSBEQkdGU19EVU1QX0RJKHJlZywg c2xvdCkgREJHRlNfRFVNUCgiXG5cdFx0IiwgcmVnKHNsb3QpKQ0KPiAgIA0KPiAtc3RhdGljIHZv aWQgaGRtaV9kYmdfY2ZnKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IHZhbCkNCj4gK3N0YXRpYyB2 b2lkIGhkbWlfZGJnX2NmZyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGludCB2YWwpDQo+ICAgew0K PiAgIAlpbnQgdG1wOw0KPiAgIA0KPiAtCXNlcV9wdXRjKHMsICdcdCcpOw0KPiArCWRybV9wcmlu dGYocCwgIlx0Iik7DQo+ICAgCXRtcCA9IHZhbCAmIEhETUlfQ0ZHX0hETUlfTk9UX0RWSTsNCj4g ICAJREJHRlNfUFJJTlRfU1RSKCJtb2RlOiIsIHRtcCA/ICJIRE1JIiA6ICJEVkkiKTsNCj4gLQlz ZXFfcHV0cyhzLCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0XHRcdFx0XHQi KTsNCj4gICAJdG1wID0gdmFsICYgSERNSV9DRkdfSERDUF9FTjsNCj4gICAJREJHRlNfUFJJTlRf U1RSKCJIRENQOiIsIHRtcCA/ICJlbmFibGUiIDogImRpc2FibGUiKTsNCj4gLQlzZXFfcHV0cyhz LCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0XHRcdFx0XHQiKTsNCj4gICAJ dG1wID0gdmFsICYgSERNSV9DRkdfRVNTX05PVF9PRVNTOw0KPiAgIAlEQkdGU19QUklOVF9TVFIo IkhEQ1AgbW9kZToiLCB0bXAgPyAiRVNTIGVuYWJsZSIgOiAiT0VTUyBlbmFibGUiKTsNCj4gLQlz ZXFfcHV0cyhzLCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0XHRcdFx0XHQi KTsNCj4gICAJdG1wID0gdmFsICYgSERNSV9DRkdfSF9TWU5DX1BPTF9ORUc7DQo+ICAgCURCR0ZT X1BSSU5UX1NUUigiSHN5bmMgcG9sYXJpdHk6IiwgdG1wID8gImludmVydGVkIiA6ICJub3JtYWwi KTsNCj4gLQlzZXFfcHV0cyhzLCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0 XHRcdFx0XHQiKTsNCj4gICAJdG1wID0gdmFsICYgSERNSV9DRkdfVl9TWU5DX1BPTF9ORUc7DQo+ ICAgCURCR0ZTX1BSSU5UX1NUUigiVnN5bmMgcG9sYXJpdHk6IiwgdG1wID8gImludmVydGVkIiA6 ICJub3JtYWwiKTsNCj4gLQlzZXFfcHV0cyhzLCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmlu dGYocCwgIlx0XHRcdFx0XHQiKTsNCj4gICAJdG1wID0gdmFsICYgSERNSV9DRkdfNDIyX0VOOw0K PiAgIAlEQkdGU19QUklOVF9TVFIoIllVVjQyMiBmb3JtYXQ6IiwgdG1wID8gImVuYWJsZSIgOiAi ZGlzYWJsZSIpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGhkbWlfZGJnX3N0YShzdHJ1 Y3Qgc2VxX2ZpbGUgKnMsIGludCB2YWwpDQo+ICtzdGF0aWMgdm9pZCBoZG1pX2RiZ19zdGEoc3Ry dWN0IGRybV9wcmludGVyICpwLCBpbnQgdmFsKQ0KPiAgIHsNCj4gICAJaW50IHRtcDsNCj4gICAN Cj4gLQlzZXFfcHV0YyhzLCAnXHQnKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdCIpOw0KPiAgIAl0 bXAgPSAodmFsICYgSERNSV9TVEFfRExMX0xDSyk7DQo+ICAgCURCR0ZTX1BSSU5UX1NUUigicGxs OiIsIHRtcCA/ICJsb2NrZWQiIDogIm5vdCBsb2NrZWQiKTsNCj4gLQlzZXFfcHV0cyhzLCAiXHRc dFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0XHRcdFx0XHQiKTsNCj4gICAJdG1wID0g KHZhbCAmIEhETUlfU1RBX0hPVF9QTFVHKTsNCj4gICAJREJHRlNfUFJJTlRfU1RSKCJoZG1pIGNh YmxlOiIsIHRtcCA/ICJjb25uZWN0ZWQiIDogIm5vdCBjb25uZWN0ZWQiKTsNCj4gICB9DQo+ICAg DQo+IC1zdGF0aWMgdm9pZCBoZG1pX2RiZ19zd19kaV9jZmcoc3RydWN0IHNlcV9maWxlICpzLCBp bnQgdmFsKQ0KPiArc3RhdGljIHZvaWQgaGRtaV9kYmdfc3dfZGlfY2ZnKHN0cnVjdCBkcm1fcHJp bnRlciAqcCwgaW50IHZhbCkNCj4gICB7DQo+ICAgCWludCB0bXA7DQo+ICAgCWNoYXIgKmNvbnN0 IGVuX2RpW10gPSB7Im5vIHRyYW5zbWlzc2lvbiIsDQo+IEBAIC02MzQsNTcgKzYzNCw1OSBAQCBz dGF0aWMgdm9pZCBoZG1pX2RiZ19zd19kaV9jZmcoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgdmFs KQ0KPiAgIAkJCSAgICAgICAib25jZSBldmVyeSBmaWVsZCIsDQo+ICAgCQkJICAgICAgICJvbmNl IGV2ZXJ5IGZyYW1lIn07DQo+ICAgDQo+IC0Jc2VxX3B1dGMocywgJ1x0Jyk7DQo+ICsJZHJtX3By aW50ZihwLCAiXHQiKTsNCj4gICAJdG1wID0gKHZhbCAmIEhETUlfSUZSQU1FX0NGR19ESV9OKEhE TUlfSUZSQU1FX01BU0ssIDEpKTsNCj4gICAJREJHRlNfUFJJTlRfU1RSKCJEYXRhIGlzbGFuZCAx OiIsIGVuX2RpW3RtcF0pOw0KPiAtCXNlcV9wdXRzKHMsICJcdFx0XHRcdFx0Iik7DQo+ICsJZHJt X3ByaW50ZihwLCAiXHRcdFx0XHRcdCIpOw0KPiAgIAl0bXAgPSAodmFsICYgSERNSV9JRlJBTUVf Q0ZHX0RJX04oSERNSV9JRlJBTUVfTUFTSywgMikpID4+IDQ7DQo+ICAgCURCR0ZTX1BSSU5UX1NU UigiRGF0YSBpc2xhbmQgMjoiLCBlbl9kaVt0bXBdKTsNCj4gLQlzZXFfcHV0cyhzLCAiXHRcdFx0 XHRcdCIpOw0KPiArCWRybV9wcmludGYocCwgIlx0XHRcdFx0XHQiKTsNCj4gICAJdG1wID0gKHZh bCAmIEhETUlfSUZSQU1FX0NGR19ESV9OKEhETUlfSUZSQU1FX01BU0ssIDMpKSA+PiA4Ow0KPiAg IAlEQkdGU19QUklOVF9TVFIoIkRhdGEgaXNsYW5kIDM6IiwgZW5fZGlbdG1wXSk7DQo+IC0Jc2Vx X3B1dHMocywgIlx0XHRcdFx0XHQiKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdFx0XHRcdFx0Iik7 DQo+ICAgCXRtcCA9ICh2YWwgJiBIRE1JX0lGUkFNRV9DRkdfRElfTihIRE1JX0lGUkFNRV9NQVNL LCA0KSkgPj4gMTI7DQo+ICAgCURCR0ZTX1BSSU5UX1NUUigiRGF0YSBpc2xhbmQgNDoiLCBlbl9k aVt0bXBdKTsNCj4gLQlzZXFfcHV0cyhzLCAiXHRcdFx0XHRcdCIpOw0KPiArCWRybV9wcmludGYo cCwgIlx0XHRcdFx0XHQiKTsNCj4gICAJdG1wID0gKHZhbCAmIEhETUlfSUZSQU1FX0NGR19ESV9O KEhETUlfSUZSQU1FX01BU0ssIDUpKSA+PiAxNjsNCj4gICAJREJHRlNfUFJJTlRfU1RSKCJEYXRh IGlzbGFuZCA1OiIsIGVuX2RpW3RtcF0pOw0KPiAtCXNlcV9wdXRzKHMsICJcdFx0XHRcdFx0Iik7 DQo+ICsJZHJtX3ByaW50ZihwLCAiXHRcdFx0XHRcdCIpOw0KPiAgIAl0bXAgPSAodmFsICYgSERN SV9JRlJBTUVfQ0ZHX0RJX04oSERNSV9JRlJBTUVfTUFTSywgNikpID4+IDIwOw0KPiAgIAlEQkdG U19QUklOVF9TVFIoIkRhdGEgaXNsYW5kIDY6IiwgZW5fZGlbdG1wXSk7DQo+ICAgfQ0KPiAgIA0K PiAtc3RhdGljIGludCBoZG1pX2RiZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0 YSkNCj4gK3N0YXRpYyB2b2lkIHN0aV9oZG1pX3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRl ciAqcCwNCj4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlKQ0K PiAgIHsNCj4gLQlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IHMtPnByaXZhdGU7DQo+IC0J c3RydWN0IHN0aV9oZG1pICpoZG1pID0gKHN0cnVjdCBzdGlfaGRtaSAqKW5vZGUtPmluZm9fZW50 LT5kYXRhOw0KPiAtDQo+IC0Jc2VxX3ByaW50ZihzLCAiSERNSTogKHZhZGRyID0gMHglcCkiLCBo ZG1pLT5yZWdzKTsNCj4gLQlEQkdGU19EVU1QKCJcbiIsIEhETUlfQ0ZHKTsNCj4gLQloZG1pX2Ri Z19jZmcocywgaGRtaV9yZWFkKGhkbWksIEhETUlfQ0ZHKSk7DQo+IC0JREJHRlNfRFVNUCgiIiwg SERNSV9JTlRfRU4pOw0KPiAtCURCR0ZTX0RVTVAoIlxuIiwgSERNSV9TVEEpOw0KPiAtCWhkbWlf ZGJnX3N0YShzLCBoZG1pX3JlYWQoaGRtaSwgSERNSV9TVEEpKTsNCj4gLQlEQkdGU19EVU1QKCIi LCBIRE1JX0FDVElWRV9WSURfWE1JTik7DQo+IC0Jc2VxX3B1dGMocywgJ1x0Jyk7DQo+ICsJc3Ry dWN0IHN0aV9oZG1pX2Nvbm5lY3RvciAqaGRtaV9jb25uZWN0b3INCj4gKwkJPSB0b19zdGlfaGRt aV9jb25uZWN0b3Ioc3RhdGUtPmNvbm5lY3Rvcik7DQo+ICsJc3RydWN0IHN0aV9oZG1pICpoZG1p ID0gaGRtaV9jb25uZWN0b3ItPmhkbWk7DQo+ICsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdEhETUk6 ICh2YWRkciA9IDB4JXBLKSIsIGhkbWktPnJlZ3MpOw0KPiArCURCR0ZTX0RVTVAoIlxuXHRcdCIs IEhETUlfQ0ZHKTsNCj4gKwloZG1pX2RiZ19jZmcocCwgaGRtaV9yZWFkKGhkbWksIEhETUlfQ0ZH KSk7DQo+ICsJREJHRlNfRFVNUCgiXHRcdCIsIEhETUlfSU5UX0VOKTsNCj4gKwlEQkdGU19EVU1Q KCJcblx0XHQiLCBIRE1JX1NUQSk7DQo+ICsJaGRtaV9kYmdfc3RhKHAsIGhkbWlfcmVhZChoZG1p LCBIRE1JX1NUQSkpOw0KPiArCURCR0ZTX0RVTVAoIlx0XHQiLCBIRE1JX0FDVElWRV9WSURfWE1J Tik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQiKTsNCj4gICAJREJHRlNfUFJJTlRfSU5UKCJYbWlu OiIsIGhkbWlfcmVhZChoZG1pLCBIRE1JX0FDVElWRV9WSURfWE1JTikpOw0KPiAtCURCR0ZTX0RV TVAoIiIsIEhETUlfQUNUSVZFX1ZJRF9YTUFYKTsNCj4gLQlzZXFfcHV0YyhzLCAnXHQnKTsNCj4g KwlEQkdGU19EVU1QKCJcdFx0IiwgSERNSV9BQ1RJVkVfVklEX1hNQVgpOw0KPiArCWRybV9wcmlu dGYocCwgIlx0Iik7DQo+ICAgCURCR0ZTX1BSSU5UX0lOVCgiWG1heDoiLCBoZG1pX3JlYWQoaGRt aSwgSERNSV9BQ1RJVkVfVklEX1hNQVgpKTsNCj4gLQlEQkdGU19EVU1QKCIiLCBIRE1JX0FDVElW RV9WSURfWU1JTik7DQo+IC0Jc2VxX3B1dGMocywgJ1x0Jyk7DQo+ICsJREJHRlNfRFVNUCgiXHRc dCIsIEhETUlfQUNUSVZFX1ZJRF9ZTUlOKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdCIpOw0KPiAg IAlEQkdGU19QUklOVF9JTlQoIlltaW46IiwgaGRtaV9yZWFkKGhkbWksIEhETUlfQUNUSVZFX1ZJ RF9ZTUlOKSk7DQo+IC0JREJHRlNfRFVNUCgiIiwgSERNSV9BQ1RJVkVfVklEX1lNQVgpOw0KPiAt CXNlcV9wdXRjKHMsICdcdCcpOw0KPiArCURCR0ZTX0RVTVAoIlx0XHQiLCBIRE1JX0FDVElWRV9W SURfWU1BWCk7DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQiKTsNCj4gICAJREJHRlNfUFJJTlRfSU5U KCJZbWF4OiIsIGhkbWlfcmVhZChoZG1pLCBIRE1JX0FDVElWRV9WSURfWU1BWCkpOw0KPiAtCURC R0ZTX0RVTVAoIiIsIEhETUlfU1dfRElfQ0ZHKTsNCj4gLQloZG1pX2RiZ19zd19kaV9jZmcocywg aGRtaV9yZWFkKGhkbWksIEhETUlfU1dfRElfQ0ZHKSk7DQo+ICsJREJHRlNfRFVNUCgiXHRcdCIs IEhETUlfU1dfRElfQ0ZHKTsNCj4gKwloZG1pX2RiZ19zd19kaV9jZmcocCwgaGRtaV9yZWFkKGhk bWksIEhETUlfU1dfRElfQ0ZHKSk7DQo+ICAgDQo+IC0JREJHRlNfRFVNUCgiXG4iLCBIRE1JX0FV RElPX0NGRyk7DQo+IC0JREJHRlNfRFVNUCgiXG4iLCBIRE1JX1NQRElGX0ZJRk9fU1RBVFVTKTsN Cj4gLQlEQkdGU19EVU1QKCJcbiIsIEhETUlfQVVETik7DQo+ICsJREJHRlNfRFVNUCgiXG5cdFx0 IiwgSERNSV9BVURJT19DRkcpOw0KPiArCURCR0ZTX0RVTVAoIlxuXHRcdCIsIEhETUlfU1BESUZf RklGT19TVEFUVVMpOw0KPiArCURCR0ZTX0RVTVAoIlxuXHRcdCIsIEhETUlfQVVETik7DQo+ICAg DQo+IC0Jc2VxX3ByaW50ZihzLCAiXG4gQVZJIEluZm9mcmFtZSAoRGF0YSBJc2xhbmQgc2xvdCBO PSVkKToiLA0KPiArCWRybV9wcmludGYocCwgIlxuXHRcdEFWSSBJbmZvZnJhbWUgKERhdGEgSXNs YW5kIHNsb3QgTj0lZCk6IiwNCj4gICAJCSAgIEhETUlfSUZSQU1FX1NMT1RfQVZJKTsNCj4gICAJ REJHRlNfRFVNUF9ESShIRE1JX1NXX0RJX05fSEVBRF9XT1JELCBIRE1JX0lGUkFNRV9TTE9UX0FW SSk7DQo+ICAgCURCR0ZTX0RVTVBfREkoSERNSV9TV19ESV9OX1BLVF9XT1JEMCwgSERNSV9JRlJB TUVfU0xPVF9BVkkpOw0KPiBAQCAtNjk0LDcgKzY5Niw3IEBAIHN0YXRpYyBpbnQgaGRtaV9kYmdf c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpDQo+ICAgCURCR0ZTX0RVTVBfREko SERNSV9TV19ESV9OX1BLVF9XT1JENCwgSERNSV9JRlJBTUVfU0xPVF9BVkkpOw0KPiAgIAlEQkdG U19EVU1QX0RJKEhETUlfU1dfRElfTl9QS1RfV09SRDUsIEhETUlfSUZSQU1FX1NMT1RfQVZJKTsN Cj4gICAJREJHRlNfRFVNUF9ESShIRE1JX1NXX0RJX05fUEtUX1dPUkQ2LCBIRE1JX0lGUkFNRV9T TE9UX0FWSSk7DQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cbiBBVURJTyBJbmZvZnJhbWUgKERhdGEg SXNsYW5kIHNsb3QgTj0lZCk6IiwNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0XHRBVURJTyBJbmZv ZnJhbWUgKERhdGEgSXNsYW5kIHNsb3QgTj0lZCk6IiwNCj4gICAJCSAgIEhETUlfSUZSQU1FX1NM T1RfQVVESU8pOw0KPiAgIAlEQkdGU19EVU1QX0RJKEhETUlfU1dfRElfTl9IRUFEX1dPUkQsIEhE TUlfSUZSQU1FX1NMT1RfQVVESU8pOw0KPiAgIAlEQkdGU19EVU1QX0RJKEhETUlfU1dfRElfTl9Q S1RfV09SRDAsIEhETUlfSUZSQU1FX1NMT1RfQVVESU8pOw0KPiBAQCAtNzA0LDcgKzcwNiw4IEBA IHN0YXRpYyBpbnQgaGRtaV9kYmdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEp DQo+ICAgCURCR0ZTX0RVTVBfREkoSERNSV9TV19ESV9OX1BLVF9XT1JENCwgSERNSV9JRlJBTUVf U0xPVF9BVURJTyk7DQo+ICAgCURCR0ZTX0RVTVBfREkoSERNSV9TV19ESV9OX1BLVF9XT1JENSwg SERNSV9JRlJBTUVfU0xPVF9BVURJTyk7DQo+ICAgCURCR0ZTX0RVTVBfREkoSERNSV9TV19ESV9O X1BLVF9XT1JENiwgSERNSV9JRlJBTUVfU0xPVF9BVURJTyk7DQo+IC0Jc2VxX3ByaW50ZihzLCAi XG5cbiBWRU5ET1IgU1BFQ0lGSUMgSW5mb2ZyYW1lIChEYXRhIElzbGFuZCBzbG90IE49JWQpOiIs DQo+ICsJZHJtX3ByaW50ZihwLA0KPiArCQkgICAiXG5cdFx0VkVORE9SIFNQRUNJRklDIEluZm9m cmFtZSAoRGF0YSBJc2xhbmQgc2xvdCBOPSVkKToiLA0KPiAgIAkJICAgSERNSV9JRlJBTUVfU0xP VF9WRU5ET1IpOw0KPiAgIAlEQkdGU19EVU1QX0RJKEhETUlfU1dfRElfTl9IRUFEX1dPUkQsIEhE TUlfSUZSQU1FX1NMT1RfVkVORE9SKTsNCj4gICAJREJHRlNfRFVNUF9ESShIRE1JX1NXX0RJX05f UEtUX1dPUkQwLCBIRE1JX0lGUkFNRV9TTE9UX1ZFTkRPUik7DQo+IEBAIC03MTQsMjQgKzcxNyw3 IEBAIHN0YXRpYyBpbnQgaGRtaV9kYmdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRh dGEpDQo+ICAgCURCR0ZTX0RVTVBfREkoSERNSV9TV19ESV9OX1BLVF9XT1JENCwgSERNSV9JRlJB TUVfU0xPVF9WRU5ET1IpOw0KPiAgIAlEQkdGU19EVU1QX0RJKEhETUlfU1dfRElfTl9QS1RfV09S RDUsIEhETUlfSUZSQU1FX1NMT1RfVkVORE9SKTsNCj4gICAJREJHRlNfRFVNUF9ESShIRE1JX1NX X0RJX05fUEtUX1dPUkQ2LCBIRE1JX0lGUkFNRV9TTE9UX1ZFTkRPUik7DQo+IC0Jc2VxX3B1dGMo cywgJ1xuJyk7DQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3QgZHJt X2luZm9fbGlzdCBoZG1pX2RlYnVnZnNfZmlsZXNbXSA9IHsNCj4gLQl7ICJoZG1pIiwgaGRtaV9k Ymdfc2hvdywgMCwgTlVMTCB9LA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIGludCBoZG1pX2RlYnVn ZnNfaW5pdChzdHJ1Y3Qgc3RpX2hkbWkgKmhkbWksIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQ0K PiAtew0KPiAtCXVuc2lnbmVkIGludCBpOw0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoaGRtaV9kZWJ1Z2ZzX2ZpbGVzKTsgaSsrKQ0KPiAtCQloZG1pX2RlYnVnZnNfZmlsZXNb aV0uZGF0YSA9IGhkbWk7DQo+IC0NCj4gLQlyZXR1cm4gZHJtX2RlYnVnZnNfY3JlYXRlX2ZpbGVz KGhkbWlfZGVidWdmc19maWxlcywNCj4gLQkJCQkJQVJSQVlfU0laRShoZG1pX2RlYnVnZnNfZmls ZXMpLA0KPiAtCQkJCQltaW5vci0+ZGVidWdmc19yb290LCBtaW5vcik7DQo+ICsJZHJtX3ByaW50 ZihwLCAiXG4iKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgc3RpX2hkbWlfZGlzYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiBAQCAtMTA5OSwyMCArMTA4NSw2IEBAIHN0 aV9oZG1pX2Nvbm5lY3Rvcl9nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwNCj4gICAJcmV0dXJuIC1FSU5WQUw7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBz dGlfaGRtaV9sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ IC17DQo+IC0Jc3RydWN0IHN0aV9oZG1pX2Nvbm5lY3RvciAqaGRtaV9jb25uZWN0b3INCj4gLQkJ PSB0b19zdGlfaGRtaV9jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gLQlzdHJ1Y3Qgc3RpX2hkbWkg KmhkbWkgPSBoZG1pX2Nvbm5lY3Rvci0+aGRtaTsNCj4gLQ0KPiAtCWlmIChoZG1pX2RlYnVnZnNf aW5pdChoZG1pLCBoZG1pLT5kcm1fZGV2LT5wcmltYXJ5KSkgew0KPiAtCQlEUk1fRVJST1IoIkhE TUkgZGVidWdmcyBzZXR1cCBmYWlsZWRcbiIpOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQl9 DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9mdW5jcyBzdGlfaGRtaV9jb25uZWN0b3JfZnVuY3MgPSB7DQo+ICAgCS5m aWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPiAg IAkuZGV0ZWN0ID0gc3RpX2hkbWlfY29ubmVjdG9yX2RldGVjdCwNCj4gQEAgLTExMjIsNyArMTA5 NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBzdGlfaGRtaV9j b25uZWN0b3JfZnVuY3MgPSB7DQo+ICAgCS5hdG9taWNfZ2V0X3Byb3BlcnR5ID0gc3RpX2hkbWlf Y29ubmVjdG9yX2dldF9wcm9wZXJ0eSwNCj4gICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0KPiAgIAkuYXRvbWlj X2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0 ZSwNCj4gLQkubGF0ZV9yZWdpc3RlciA9IHN0aV9oZG1pX2xhdGVfcmVnaXN0ZXIsDQo+ICsJLmF0 b21pY19wcmludF9zdGF0ZSA9IHN0aV9oZG1pX3ByaW50X3N0YXRlLA0KPiAgIH07DQo+ICAgDQo+ ICAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqc3RpX2hkbWlfZmluZF9lbmNvZGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpDQo+IA==