Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4099026imm; Mon, 18 Jun 2018 09:07:16 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLwA1JqheBqCcFP3x+MsUJfbSam7/fYNgQyI/9vDR0FqdXEMZlQ6ciWls85/v3s7jYNPGi+ X-Received: by 2002:a62:918:: with SMTP id e24-v6mr13862534pfd.30.1529338036660; Mon, 18 Jun 2018 09:07:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529338036; cv=none; d=google.com; s=arc-20160816; b=LhDSlkXLnUxWH/chr6fedquA430t4ZmZDMlswb48oKJVSY33fBYV6AqwHmrfqwAe2w YVA9fFGmuXjCvHlmekdteGC/lPO82JPhEhN0v9yRLZFjm5QTqROZW70BAtLFUl4cisfA HPyAIaqasTvjntg3UBlA/a7MT7ceqo6Pm4iXCQUgOctR89Hr6QpXeLDG70+ZSAwEy49V 6LVBCM3AsExIBt9t+RLC6MIKE+uvMt/WZQPBeP2TnfyytRgKFTdIOK2SVBF4jolC9wwu bKaI9wyBrOAMMMVkOK8rZDg2Le1DhM4+V3tzUmP4IXWPiKoM+qRIzJgToHrcKeOw6TEH 1vTw== 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=isyNPbsdwuF9GVCwHC3jBkQr/rk57V1Sy+prb/RlLCM=; b=FQ9PzXYRDGGbOn+j3ityja9oO5VXlQmezRNhq4iQnC8Bjf0RHfGJwDvQaa4Vb7Qp18 KH8EOG5NdFFoaXC0ToB3MdR+cdFuAbjTeyAO4DSd41nLllkJrc5NFvrUg3GPvQ6Az04n +hlyri2gPggn2+wY83V7PDusuCN7Y4CjIj9K3xHyEAV/lWINYiVfyrbBGCZIDUNZxDI0 e05cDoPQn2SzWl4UshUZF0gnffksefgOJlvtHyw8p/auA57/xeVrATIXxrw1y4gZknQW DWsi5elWWxSWAH1xIyuC5kiCRYdTBBXlu652Jl4GQRFV/BjLVx1ipByJWGsfbcR8yVPO tumQ== 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 h1-v6si12481789pgs.221.2018.06.18.09.07.02; Mon, 18 Jun 2018 09:07:16 -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 S934674AbeFRQGO (ORCPT + 99 others); Mon, 18 Jun 2018 12:06:14 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:63384 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754743AbeFRQGK (ORCPT ); Mon, 18 Jun 2018 12:06:10 -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 w5IG3idt026723; Mon, 18 Jun 2018 18:05:52 +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 2jmxgfcfyh-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 18 Jun 2018 18:05:52 +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 2DF5A34; Mon, 18 Jun 2018 16:05:52 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag5node2.st.com [10.75.127.14]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id E41741158; Mon, 18 Jun 2018 16:05:51 +0000 (GMT) Received: from SFHDAG6NODE3.st.com (10.75.127.18) by SFHDAG5NODE2.st.com (10.75.127.14) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 18 Jun 2018 18:05:51 +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:05:51 +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 3/7] drm: sti: make planes use atomic_print_state instead of debugfs Thread-Topic: [PATCH v1 3/7] drm: sti: make planes use atomic_print_state instead of debugfs Thread-Index: AQHUBw9x4JFuMjkTqE+cZ3OV9AglCKRmDM0A Date: Mon, 18 Jun 2018 16:05:51 +0000 Message-ID: <95bb4f5d-5152-151a-d1ca-34b1cd895a31@st.com> References: <20180605135407.20214-1-benjamin.gaignard@linaro.org> <20180605135407.20214-4-benjamin.gaignard@linaro.org> In-Reply-To: <20180605135407.20214-4-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.45] Content-Type: text/plain; charset="utf-8" Content-ID: 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 SGkgQmVuamFtaW4sDQoNCk5pY2UgdG8gc2VlIGFsbCB0aGVzZSBsaW5lcyByZW1vdmVkIDotKQ0K UmV2aWV3ZWQtYnk6IFBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+DQpNYW55 IHRoYW5rcw0KUGhpbGlwcGUgOi0pDQoNCk9uIDA2LzA1LzIwMTggMDM6NTQgUE0sIEJlbmphbWlu IEdhaWduYXJkIHdyb3RlOg0KPiBDb252ZXJ0IGFsbCBzdGkgcGxhbmVzIHRvIGF0b21pY19wcmlu dF9zdGF0ZSB1c2FnZSByYXRoZXIgdGhhbiB1c2UgYSBkZWJ1Z2ZzDQo+IGVudHJ5Lg0KPiANCj4g U2lnbmVkLW9mZi1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFy by5vcmc+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2N1cnNvci5jIHwgIDY1 ICsrKysrLS0tLS0tLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9nZHAuYyAgICB8IDE5 NiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gICBkcml2ZXJzL2dw dS9kcm0vc3RpL3N0aV9ocXZkcC5jICB8IDE0OSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LQ0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDI2NCBkZWxldGlvbnMo LSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJzb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2N1cnNvci5jDQo+IGluZGV4IGRmMGEyODJiOTYxNS4u NjlmNmIxMDkxNDIyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJz b3IuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJzb3IuYw0KPiBAQCAtNzQs NzIgKzc0LDU3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBjdXJzb3Jfc3VwcG9ydGVkX2Zvcm1h dHNbXSA9IHsNCj4gICANCj4gICAjZGVmaW5lIHRvX3N0aV9jdXJzb3IoeCkgY29udGFpbmVyX29m KHgsIHN0cnVjdCBzdGlfY3Vyc29yLCBwbGFuZSkNCj4gICANCj4gLSNkZWZpbmUgREJHRlNfRFVN UChyZWcpIHNlcV9wcmludGYocywgIlxuICAlLTI1cyAweCUwOFgiLCAjcmVnLCBcDQo+ICsjZGVm aW5lIERCR0ZTX0RVTVAocmVnKSBkcm1fcHJpbnRmKHAsICJcblx0XHQlLTI1cyAweCUwOFgiLCAj cmVnLCBcDQo+ICAgCQkJCSAgIHJlYWRsKGN1cnNvci0+cmVncyArIHJlZykpDQo+ICAgDQo+IC1z dGF0aWMgdm9pZCBjdXJzb3JfZGJnX3ZwbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHUzMiB2YWwpDQo+ ICtzdGF0aWMgdm9pZCBjdXJzb3JfZGJnX3ZwbyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHUzMiB2 YWwpDQo+ICAgew0KPiAtCXNlcV9wcmludGYocywgIlx0eGRvOiU0ZFx0eWRvOiU0ZCIsIHZhbCAm IDB4MEZGRiwgKHZhbCA+PiAxNikgJiAweDBGRkYpOw0KPiArCWRybV9wcmludGYocCwgIlx0eGRv OiU0ZFx0eWRvOiU0ZCIsIHZhbCAmIDB4MEZGRiwgKHZhbCA+PiAxNikgJiAweDBGRkYpOw0KPiAg IH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGN1cnNvcl9kYmdfc2l6ZShzdHJ1Y3Qgc2VxX2ZpbGUg KnMsIHUzMiB2YWwpDQo+ICtzdGF0aWMgdm9pZCBjdXJzb3JfZGJnX3NpemUoc3RydWN0IGRybV9w cmludGVyICpwLCB1MzIgdmFsKQ0KPiAgIHsNCj4gLQlzZXFfcHJpbnRmKHMsICJcdCVkIHggJWQi LCB2YWwgJiAweDA3RkYsICh2YWwgPj4gMTYpICYgMHgwN0ZGKTsNCj4gKwlkcm1fcHJpbnRmKHAs ICJcdCVkIHggJWQiLCB2YWwgJiAweDA3RkYsICh2YWwgPj4gMTYpICYgMHgwN0ZGKTsNCj4gICB9 DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBjdXJzb3JfZGJnX3BtbChzdHJ1Y3Qgc2VxX2ZpbGUgKnMs DQo+ICtzdGF0aWMgdm9pZCBjdXJzb3JfZGJnX3BtbChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsDQo+ ICAgCQkJICAgc3RydWN0IHN0aV9jdXJzb3IgKmN1cnNvciwgdTMyIHZhbCkNCj4gICB7DQo+ICAg CWlmIChjdXJzb3ItPnBpeG1hcC5wYWRkciA9PSB2YWwpDQo+IC0JCXNlcV9wcmludGYocywgIlx0 VmlydCBAOiAlcCIsIGN1cnNvci0+cGl4bWFwLmJhc2UpOw0KPiArCQlkcm1fcHJpbnRmKHAsICJc dFZpcnQgQDogJXBLIiwgY3Vyc29yLT5waXhtYXAuYmFzZSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIHZvaWQgY3Vyc29yX2RiZ19jbWwoc3RydWN0IHNlcV9maWxlICpzLA0KPiArc3RhdGljIHZv aWQgY3Vyc29yX2RiZ19jbWwoc3RydWN0IGRybV9wcmludGVyICpwLA0KPiAgIAkJCSAgIHN0cnVj dCBzdGlfY3Vyc29yICpjdXJzb3IsIHUzMiB2YWwpDQo+ICAgew0KPiAgIAlpZiAoY3Vyc29yLT5j bHV0X3BhZGRyID09IHZhbCkNCj4gLQkJc2VxX3ByaW50ZihzLCAiXHRWaXJ0IEA6ICVwIiwgY3Vy c29yLT5jbHV0KTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiXHRWaXJ0IEA6ICVwSyIsIGN1cnNvci0+ Y2x1dCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjdXJzb3JfZGJnX3Nob3coc3RydWN0 IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQ0KPiArc3RhdGljIHZvaWQgc3RpX2N1cnNvcl9wbGFu ZV9wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsDQo+ICsJCQkJCSBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4gICB7DQo+IC0Jc3RydWN0IGRybV9pbmZvX25v ZGUgKm5vZGUgPSBzLT5wcml2YXRlOw0KPiAtCXN0cnVjdCBzdGlfY3Vyc29yICpjdXJzb3IgPSAo c3RydWN0IHN0aV9jdXJzb3IgKilub2RlLT5pbmZvX2VudC0+ZGF0YTsNCj4gKwlzdHJ1Y3Qgc3Rp X3BsYW5lICpwbGFuZSA9IHRvX3N0aV9wbGFuZShzdGF0ZS0+cGxhbmUpOw0KPiArCXN0cnVjdCBz dGlfY3Vyc29yICpjdXJzb3IgPSB0b19zdGlfY3Vyc29yKHBsYW5lKTsNCj4gICANCj4gLQlzZXFf cHJpbnRmKHMsICIlczogKHZhZGRyID0gMHglcCkiLA0KPiArCWRybV9wcmludGYocCwgIlx0JXM6 ICh2YWRkciA9IDB4JXBLKSIsDQo+ICAgCQkgICBzdGlfcGxhbmVfdG9fc3RyKCZjdXJzb3ItPnBs YW5lKSwgY3Vyc29yLT5yZWdzKTsNCj4gICANCj4gICAJREJHRlNfRFVNUChDVVJfQ1RMKTsNCj4g ICAJREJHRlNfRFVNUChDVVJfVlBPKTsNCj4gLQljdXJzb3JfZGJnX3ZwbyhzLCByZWFkbChjdXJz b3ItPnJlZ3MgKyBDVVJfVlBPKSk7DQo+ICsJY3Vyc29yX2RiZ192cG8ocCwgcmVhZGwoY3Vyc29y LT5yZWdzICsgQ1VSX1ZQTykpOw0KPiAgIAlEQkdGU19EVU1QKENVUl9QTUwpOw0KPiAtCWN1cnNv cl9kYmdfcG1sKHMsIGN1cnNvciwgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1BNTCkpOw0KPiAr CWN1cnNvcl9kYmdfcG1sKHAsIGN1cnNvciwgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1BNTCkp Ow0KPiAgIAlEQkdGU19EVU1QKENVUl9QTVApOw0KPiAgIAlEQkdGU19EVU1QKENVUl9TSVpFKTsN Cj4gLQljdXJzb3JfZGJnX3NpemUocywgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1NJWkUpKTsN Cj4gKwljdXJzb3JfZGJnX3NpemUocCwgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1NJWkUpKTsN Cj4gICAJREJHRlNfRFVNUChDVVJfQ01MKTsNCj4gLQljdXJzb3JfZGJnX2NtbChzLCBjdXJzb3Is IHJlYWRsKGN1cnNvci0+cmVncyArIENVUl9DTUwpKTsNCj4gKwljdXJzb3JfZGJnX2NtbChwLCBj dXJzb3IsIHJlYWRsKGN1cnNvci0+cmVncyArIENVUl9DTUwpKTsNCj4gICAJREJHRlNfRFVNUChD VVJfQVdTKTsNCj4gICAJREJHRlNfRFVNUChDVVJfQVdFKTsNCj4gLQlzZXFfcHV0YyhzLCAnXG4n KTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW5mb19s aXN0IGN1cnNvcl9kZWJ1Z2ZzX2ZpbGVzW10gPSB7DQo+IC0JeyAiY3Vyc29yIiwgY3Vyc29yX2Ri Z19zaG93LCAwLCBOVUxMIH0sDQo+IC19Ow0KPiAtDQo+IC1zdGF0aWMgaW50IGN1cnNvcl9kZWJ1 Z2ZzX2luaXQoc3RydWN0IHN0aV9jdXJzb3IgKmN1cnNvciwNCj4gLQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX21pbm9yICptaW5vcikNCj4gLXsNCj4gLQl1bnNpZ25lZCBpbnQgaTsNCj4gICANCj4gLQlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdXJzb3JfZGVidWdmc19maWxlcyk7IGkrKykNCj4g LQkJY3Vyc29yX2RlYnVnZnNfZmlsZXNbaV0uZGF0YSA9IGN1cnNvcjsNCj4gLQ0KPiAtCXJldHVy biBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMoY3Vyc29yX2RlYnVnZnNfZmlsZXMsDQo+IC0JCQkJ CUFSUkFZX1NJWkUoY3Vyc29yX2RlYnVnZnNfZmlsZXMpLA0KPiAtCQkJCQltaW5vci0+ZGVidWdm c19yb290LCBtaW5vcik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQlcyVzXG4iLA0KPiArCQkgICBw bGFuZS0+ZnBzX2luZm8uZnBzX3N0ciwgcGxhbmUtPmZwc19pbmZvLmZpcHNfc3RyKTsNCj4gICB9 DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgc3RpX2N1cnNvcl9hcmdiODg4OF90b19jbHV0OChzdHJ1 Y3Qgc3RpX2N1cnNvciAqY3Vyc29yLCB1MzIgKnNyYykNCj4gQEAgLTMzNiwxNCArMzIxLDYgQEAg c3RhdGljIHZvaWQgc3RpX2N1cnNvcl9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFu ZSkNCj4gICAJZHJtX3BsYW5lX2NsZWFudXAoZHJtX3BsYW5lKTsNCj4gICB9DQo+ICAgDQo+IC1z dGF0aWMgaW50IHN0aV9jdXJzb3JfbGF0ZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3BsYW5lICpkcm1f cGxhbmUpDQo+IC17DQo+IC0Jc3RydWN0IHN0aV9wbGFuZSAqcGxhbmUgPSB0b19zdGlfcGxhbmUo ZHJtX3BsYW5lKTsNCj4gLQlzdHJ1Y3Qgc3RpX2N1cnNvciAqY3Vyc29yID0gdG9fc3RpX2N1cnNv cihwbGFuZSk7DQo+IC0NCj4gLQlyZXR1cm4gY3Vyc29yX2RlYnVnZnNfaW5pdChjdXJzb3IsIGRy bV9wbGFuZS0+ZGV2LT5wcmltYXJ5KTsNCj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9jdXJzb3JfcGxhbmVfaGVscGVyc19mdW5jcyA9IHsNCj4g ICAJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwNCj4gICAJ LmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLA0KPiBAQCAt MzUxLDcgKzMyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9j dXJzb3JfcGxhbmVfaGVscGVyc19mdW5jcyA9IHsNCj4gICAJLnJlc2V0ID0gc3RpX3BsYW5lX3Jl c2V0LA0KPiAgIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3Bs YW5lX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwNCj4gLQkubGF0ZV9yZWdpc3RlciA9IHN0 aV9jdXJzb3JfbGF0ZV9yZWdpc3RlciwNCj4gKwkuYXRvbWljX3ByaW50X3N0YXRlID0gc3RpX2N1 cnNvcl9wbGFuZV9wcmludF9zdGF0ZSwNCj4gICB9Ow0KPiAgIA0KPiAgIHN0cnVjdCBkcm1fcGxh bmUgKnN0aV9jdXJzb3JfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LA0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfZ2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0v c3RpL3N0aV9nZHAuYw0KPiBpbmRleCA0OTgxM2QzNGJkZjAuLjU1Nzg5YmFlNzJjMSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfZ2RwLmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3N0aS9zdGlfZ2RwLmMNCj4gQEAgLTEzOSw0MiArMTM5LDQyIEBAIHN0YXRpYyBjb25z dCB1aW50MzJfdCBnZHBfc3VwcG9ydGVkX2Zvcm1hdHNbXSA9IHsNCj4gICAJRFJNX0ZPUk1BVF9S R0I4ODgsDQo+ICAgfTsNCj4gICANCj4gLSNkZWZpbmUgREJHRlNfRFVNUChyZWcpIHNlcV9wcmlu dGYocywgIlxuICAlLTI1cyAweCUwOFgiLCAjcmVnLCBcDQo+ICsjZGVmaW5lIERCR0ZTX0RVTVAo cmVnKSBkcm1fcHJpbnRmKHAsICJcblx0XHQlLTI1cyAweCUwOFgiLCAjcmVnLCBcDQo+ICAgCQkJ CSAgIHJlYWRsKGdkcC0+cmVncyArIHJlZyAjIyBfT0ZGU0VUKSkNCj4gICANCj4gLXN0YXRpYyB2 b2lkIGdkcF9kYmdfY3RsKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IHZhbCkNCj4gK3N0YXRpYyB2 b2lkIGdkcF9kYmdfY3RsKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgaW50IHZhbCkNCj4gICB7DQo+ ICAgCWludCBpOw0KPiAgIA0KPiAtCXNlcV9wdXRzKHMsICJcdENvbG9yOiIpOw0KPiArCWRybV9w cmludGYocCwgIlx0Q29sb3I6Iik7DQo+ICAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdk cF9mb3JtYXRfdG9fc3RyKTsgaSsrKSB7DQo+ICAgCQlpZiAoZ2RwX2Zvcm1hdF90b19zdHJbaV0u Zm9ybWF0ID09ICh2YWwgJiAweDFGKSkgew0KPiAtCQkJc2VxX3B1dHMocywgZ2RwX2Zvcm1hdF90 b19zdHJbaV0ubmFtZSk7DQo+ICsJCQlkcm1fcHJpbnRmKHAsIGdkcF9mb3JtYXRfdG9fc3RyW2ld Lm5hbWUpOw0KPiAgIAkJCWJyZWFrOw0KPiAgIAkJfQ0KPiAgIAl9DQo+ICAgCWlmIChpID09IEFS UkFZX1NJWkUoZ2RwX2Zvcm1hdF90b19zdHIpKQ0KPiAtCQlzZXFfcHV0cyhzLCAiPFVOS05PV04+ Iik7DQo+ICsJCWRybV9wcmludGYocCwgIjxVTktOT1dOPiIpOw0KPiAgIA0KPiAtCXNlcV9wcmlu dGYocywgIlx0V2FpdE5leHRWc3luYzolZCIsIHZhbCAmIFdBSVRfTkVYVF9WU1lOQyA/IDEgOiAw KTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdFdhaXROZXh0VnN5bmM6JWQiLCB2YWwgJiBXQUlUX05F WFRfVlNZTkMgPyAxIDogMCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgZ2RwX2RiZ192 cG8oc3RydWN0IHNlcV9maWxlICpzLCBpbnQgdmFsKQ0KPiArc3RhdGljIHZvaWQgZ2RwX2RiZ192 cG8oc3RydWN0IGRybV9wcmludGVyICpwLCBpbnQgdmFsKQ0KPiAgIHsNCj4gLQlzZXFfcHJpbnRm KHMsICJcdHhkbzolNGRcdHlkbzolNGQiLCB2YWwgJiAweEZGRkYsICh2YWwgPj4gMTYpICYgMHhG RkZGKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdHhkbzolNGRcdHlkbzolNGQiLCB2YWwgJiAweEZG RkYsICh2YWwgPj4gMTYpICYgMHhGRkZGKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBn ZHBfZGJnX3ZwcyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCB2YWwpDQo+ICtzdGF0aWMgdm9pZCBn ZHBfZGJnX3ZwcyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGludCB2YWwpDQo+ICAgew0KPiAtCXNl cV9wcmludGYocywgIlx0eGRzOiU0ZFx0eWRzOiU0ZCIsIHZhbCAmIDB4RkZGRiwgKHZhbCA+PiAx NikgJiAweEZGRkYpOw0KPiArCWRybV9wcmludGYocCwgIlx0eGRzOiU0ZFx0eWRzOiU0ZCIsIHZh bCAmIDB4RkZGRiwgKHZhbCA+PiAxNikgJiAweEZGRkYpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRp YyB2b2lkIGdkcF9kYmdfc2l6ZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCB2YWwpDQo+ICtzdGF0 aWMgdm9pZCBnZHBfZGJnX3NpemUoc3RydWN0IGRybV9wcmludGVyICpwLCBpbnQgdmFsKQ0KPiAg IHsNCj4gLQlzZXFfcHJpbnRmKHMsICJcdCVkIHggJWQiLCB2YWwgJiAweEZGRkYsICh2YWwgPj4g MTYpICYgMHhGRkZGKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdCVkIHggJWQiLCB2YWwgJiAweEZG RkYsICh2YWwgPj4gMTYpICYgMHhGRkZGKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBn ZHBfZGJnX252bihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBzdGlfZ2RwICpnZHAsIGludCB2 YWwpDQo+ICtzdGF0aWMgdm9pZCBnZHBfZGJnX252bihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0 cnVjdCBzdGlfZ2RwICpnZHAsIGludCB2YWwpDQo+ICAgew0KPiAgIAl2b2lkICpiYXNlID0gTlVM TDsNCj4gICAJdW5zaWduZWQgaW50IGk7DQo+IEBAIC0xOTEsMTU3ICsxOTEsOTMgQEAgc3RhdGlj IHZvaWQgZ2RwX2RiZ19udm4oc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qgc3RpX2dkcCAqZ2Rw LCBpbnQgdmFsKQ0KPiAgIAl9DQo+ICAgDQo+ICAgCWlmIChiYXNlKQ0KPiAtCQlzZXFfcHJpbnRm KHMsICJcdFZpcnQgQDogJXAiLCBiYXNlKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiXHRWaXJ0IEA6 ICVwSyIsIGJhc2UpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGdkcF9kYmdfcHB0KHN0 cnVjdCBzZXFfZmlsZSAqcywgaW50IHZhbCkNCj4gK3N0YXRpYyB2b2lkIGdkcF9kYmdfcHB0KHN0 cnVjdCBkcm1fcHJpbnRlciAqcCwgaW50IHZhbCkNCj4gICB7DQo+ICAgCWlmICh2YWwgJiBHQU1f R0RQX1BQVF9JR05PUkUpDQo+IC0JCXNlcV9wdXRzKHMsICJcdE5vdCBkaXNwbGF5ZWQgb24gbWl4 ZXIhIik7DQo+ICsJCWRybV9wcmludGYocCwgIlx0Tm90IGRpc3BsYXllZCBvbiBtaXhlciEiKTsN Cj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBnZHBfZGJnX21zdChzdHJ1Y3Qgc2VxX2ZpbGUg KnMsIGludCB2YWwpDQo+ICtzdGF0aWMgdm9pZCBnZHBfZGJnX21zdChzdHJ1Y3QgZHJtX3ByaW50 ZXIgKnAsIGludCB2YWwpDQo+ICAgew0KPiAgIAlpZiAodmFsICYgMSkNCj4gLQkJc2VxX3B1dHMo cywgIlx0QlVGRkVSIFVOREVSRkxPVyEiKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiXHRCVUZGRVIg VU5ERVJGTE9XISIpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgZ2RwX2RiZ19zaG93KHN0 cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCj4gK3N0YXRpYyBpbnQgZ2RwX2RiZ19zaG93 KHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHN0aV9nZHAgKmdkcCkNCj4gICB7DQo+IC0J c3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBzLT5wcml2YXRlOw0KPiAtCXN0cnVjdCBzdGlf Z2RwICpnZHAgPSAoc3RydWN0IHN0aV9nZHAgKilub2RlLT5pbmZvX2VudC0+ZGF0YTsNCj4gLQlz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUgPSAmZ2RwLT5wbGFuZS5kcm1fcGxhbmU7DQo+IC0J c3RydWN0IGRybV9jcnRjICpjcnRjOw0KPiAtDQo+IC0JZHJtX21vZGVzZXRfbG9jaygmZHJtX3Bs YW5lLT5tdXRleCwgTlVMTCk7DQo+IC0JY3J0YyA9IGRybV9wbGFuZS0+c3RhdGUtPmNydGM7DQo+ IC0JZHJtX21vZGVzZXRfdW5sb2NrKCZkcm1fcGxhbmUtPm11dGV4KTsNCj4gLQ0KPiAtCXNlcV9w cmludGYocywgIiVzOiAodmFkZHIgPSAweCVwKSIsDQo+ICsJZHJtX3ByaW50ZihwLCAiXHQlczog KHZhZGRyID0gMHglcEspIiwNCj4gICAJCSAgIHN0aV9wbGFuZV90b19zdHIoJmdkcC0+cGxhbmUp LCBnZHAtPnJlZ3MpOw0KPiAgIA0KPiAgIAlEQkdGU19EVU1QKEdBTV9HRFBfQ1RMKTsNCj4gLQln ZHBfZGJnX2N0bChzLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX0NUTF9PRkZTRVQpKTsNCj4g KwlnZHBfZGJnX2N0bChwLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX0NUTF9PRkZTRVQpKTsN Cj4gICAJREJHRlNfRFVNUChHQU1fR0RQX0FHQyk7DQo+ICAgCURCR0ZTX0RVTVAoR0FNX0dEUF9W UE8pOw0KPiAtCWdkcF9kYmdfdnBvKHMsIHJlYWRsKGdkcC0+cmVncyArIEdBTV9HRFBfVlBPX09G RlNFVCkpOw0KPiArCWdkcF9kYmdfdnBvKHAsIHJlYWRsKGdkcC0+cmVncyArIEdBTV9HRFBfVlBP X09GRlNFVCkpOw0KPiAgIAlEQkdGU19EVU1QKEdBTV9HRFBfVlBTKTsNCj4gLQlnZHBfZGJnX3Zw cyhzLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX1ZQU19PRkZTRVQpKTsNCj4gKwlnZHBfZGJn X3ZwcyhwLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX1ZQU19PRkZTRVQpKTsNCj4gICAJREJH RlNfRFVNUChHQU1fR0RQX1BNTCk7DQo+ICAgCURCR0ZTX0RVTVAoR0FNX0dEUF9QTVApOw0KPiAg IAlEQkdGU19EVU1QKEdBTV9HRFBfU0laRSk7DQo+IC0JZ2RwX2RiZ19zaXplKHMsIHJlYWRsKGdk cC0+cmVncyArIEdBTV9HRFBfU0laRV9PRkZTRVQpKTsNCj4gKwlnZHBfZGJnX3NpemUocCwgcmVh ZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9TSVpFX09GRlNFVCkpOw0KPiAgIAlEQkdGU19EVU1QKEdB TV9HRFBfTlZOKTsNCj4gLQlnZHBfZGJnX252bihzLCBnZHAsIHJlYWRsKGdkcC0+cmVncyArIEdB TV9HRFBfTlZOX09GRlNFVCkpOw0KPiArCWdkcF9kYmdfbnZuKHAsIGdkcCwgcmVhZGwoZ2RwLT5y ZWdzICsgR0FNX0dEUF9OVk5fT0ZGU0VUKSk7DQo+ICAgCURCR0ZTX0RVTVAoR0FNX0dEUF9LRVkx KTsNCj4gICAJREJHRlNfRFVNUChHQU1fR0RQX0tFWTIpOw0KPiAgIAlEQkdGU19EVU1QKEdBTV9H RFBfUFBUKTsNCj4gLQlnZHBfZGJnX3BwdChzLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX1BQ VF9PRkZTRVQpKTsNCj4gKwlnZHBfZGJnX3BwdChwLCByZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQ X1BQVF9PRkZTRVQpKTsNCj4gICAJREJHRlNfRFVNUChHQU1fR0RQX0NNTCk7DQo+ICAgCURCR0ZT X0RVTVAoR0FNX0dEUF9NU1QpOw0KPiAtCWdkcF9kYmdfbXN0KHMsIHJlYWRsKGdkcC0+cmVncyAr IEdBTV9HRFBfTVNUX09GRlNFVCkpOw0KPiAtDQo+IC0Jc2VxX3B1dHMocywgIlxuXG4iKTsNCj4g LQlpZiAoIWNydGMpDQo+IC0JCXNlcV9wdXRzKHMsICIgIE5vdCBjb25uZWN0ZWQgdG8gYW55IERS TSBDUlRDXG4iKTsNCj4gLQllbHNlDQo+IC0JCXNlcV9wcmludGYocywgIiAgQ29ubmVjdGVkIHRv IERSTSBDUlRDICMlZCAoJXMpXG4iLA0KPiAtCQkJICAgY3J0Yy0+YmFzZS5pZCwgc3RpX21peGVy X3RvX3N0cih0b19zdGlfbWl4ZXIoY3J0YykpKTsNCj4gKwlnZHBfZGJnX21zdChwLCByZWFkbChn ZHAtPnJlZ3MgKyBHQU1fR0RQX01TVF9PRkZTRVQpKTsNCj4gICANCj4gKwlkcm1fcHJpbnRmKHAs ICJcbiIpOw0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBnZHBf bm9kZV9kdW1wX25vZGUoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qgc3RpX2dkcF9ub2RlICpu b2RlKQ0KPiArc3RhdGljIHZvaWQgZ2RwX25vZGVfZHVtcF9ub2RlKHN0cnVjdCBkcm1fcHJpbnRl ciAqcCwgc3RydWN0IHN0aV9nZHBfbm9kZSAqbm9kZSkNCj4gICB7DQo+IC0Jc2VxX3ByaW50Zihz LCAiXHRAOjB4JXAiLCBub2RlKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0Q1RMICAweCUwOFgi LCBub2RlLT5nYW1fZ2RwX2N0bCk7DQo+IC0JZ2RwX2RiZ19jdGwocywgbm9kZS0+Z2FtX2dkcF9j dGwpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHRBR0MgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBf YWdjKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0VlBPICAweCUwOFgiLCBub2RlLT5nYW1fZ2Rw X3Zwbyk7DQo+IC0JZ2RwX2RiZ192cG8ocywgbm9kZS0+Z2FtX2dkcF92cG8pOw0KPiAtCXNlcV9w cmludGYocywgIlxuXHRWUFMgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfdnBzKTsNCj4gLQlnZHBf ZGJnX3ZwcyhzLCBub2RlLT5nYW1fZ2RwX3Zwcyk7DQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cdFBN TCAgMHglMDhYIiwgbm9kZS0+Z2FtX2dkcF9wbWwpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHRQ TVAgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfcG1wKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0 U0laRSAweCUwOFgiLCBub2RlLT5nYW1fZ2RwX3NpemUpOw0KPiAtCWdkcF9kYmdfc2l6ZShzLCBu b2RlLT5nYW1fZ2RwX3NpemUpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHROVk4gIDB4JTA4WCIs IG5vZGUtPmdhbV9nZHBfbnZuKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0S0VZMSAweCUwOFgi LCBub2RlLT5nYW1fZ2RwX2tleTEpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHRLRVkyIDB4JTA4 WCIsIG5vZGUtPmdhbV9nZHBfa2V5Mik7DQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cdFBQVCAgMHgl MDhYIiwgbm9kZS0+Z2FtX2dkcF9wcHQpOw0KPiAtCWdkcF9kYmdfcHB0KHMsIG5vZGUtPmdhbV9n ZHBfcHB0KTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0Q01MICAweCUwOFhcbiIsIG5vZGUtPmdh bV9nZHBfY21sKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcdEA6MHglcEsiLCBub2RlKTsNCj4gKwlk cm1fcHJpbnRmKHAsICJcblx0XHRDVEwgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfY3RsKTsNCj4g KwlnZHBfZGJnX2N0bChwLCBub2RlLT5nYW1fZ2RwX2N0bCk7DQo+ICsJZHJtX3ByaW50ZihwLCAi XG5cdFx0QUdDICAweCUwOFgiLCBub2RlLT5nYW1fZ2RwX2FnYyk7DQo+ICsJZHJtX3ByaW50Zihw LCAiXG5cdFx0VlBPICAweCUwOFgiLCBub2RlLT5nYW1fZ2RwX3Zwbyk7DQo+ICsJZ2RwX2RiZ192 cG8ocCwgbm9kZS0+Z2FtX2dkcF92cG8pOw0KPiArCWRybV9wcmludGYocCwgIlxuXHRcdFZQUyAg MHglMDhYIiwgbm9kZS0+Z2FtX2dkcF92cHMpOw0KPiArCWdkcF9kYmdfdnBzKHAsIG5vZGUtPmdh bV9nZHBfdnBzKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0XHRQTUwgIDB4JTA4WCIsIG5vZGUt PmdhbV9nZHBfcG1sKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0XHRQTVAgIDB4JTA4WCIsIG5v ZGUtPmdhbV9nZHBfcG1wKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0XHRTSVpFIDB4JTA4WCIs IG5vZGUtPmdhbV9nZHBfc2l6ZSk7DQo+ICsJZ2RwX2RiZ19zaXplKHAsIG5vZGUtPmdhbV9nZHBf c2l6ZSk7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdFx0TlZOICAweCUwOFgiLCBub2RlLT5nYW1f Z2RwX252bik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdFx0S0VZMSAweCUwOFgiLCBub2RlLT5n YW1fZ2RwX2tleTEpOw0KPiArCWRybV9wcmludGYocCwgIlxuXHRcdEtFWTIgMHglMDhYIiwgbm9k ZS0+Z2FtX2dkcF9rZXkyKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0XHRQUFQgIDB4JTA4WCIs IG5vZGUtPmdhbV9nZHBfcHB0KTsNCj4gKwlnZHBfZGJnX3BwdChwLCBub2RlLT5nYW1fZ2RwX3Bw dCk7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdFx0Q01MICAweCUwOFhcbiIsIG5vZGUtPmdhbV9n ZHBfY21sKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgaW50IGdkcF9ub2RlX2RiZ19zaG93KHN0 cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqYXJnKQ0KPiArc3RhdGljIHZvaWQgc3RpX2dkcF9wbGFu ZV9wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsDQo+ICsJCQkJICAgICAgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpDQo+ICAgew0KPiAtCXN0cnVjdCBkcm1faW5m b19ub2RlICpub2RlID0gcy0+cHJpdmF0ZTsNCj4gLQlzdHJ1Y3Qgc3RpX2dkcCAqZ2RwID0gKHN0 cnVjdCBzdGlfZ2RwICopbm9kZS0+aW5mb19lbnQtPmRhdGE7DQo+ICsJc3RydWN0IHN0aV9wbGFu ZSAqcGxhbmUgPSB0b19zdGlfcGxhbmUoc3RhdGUtPnBsYW5lKTsNCj4gKwlzdHJ1Y3Qgc3RpX2dk cCAqZ2RwID0gdG9fc3RpX2dkcChwbGFuZSk7DQo+ICAgCXVuc2lnbmVkIGludCBiOw0KPiAgIA0K PiAtCWZvciAoYiA9IDA7IGIgPCBHRFBfTk9ERV9OQl9CQU5LOyBiKyspIHsNCj4gLQkJc2VxX3By aW50ZihzLCAiXG4lc1slZF0udG9wIiwgc3RpX3BsYW5lX3RvX3N0cigmZ2RwLT5wbGFuZSksIGIp Ow0KPiAtCQlnZHBfbm9kZV9kdW1wX25vZGUocywgZ2RwLT5ub2RlX2xpc3RbYl0udG9wX2ZpZWxk KTsNCj4gLQkJc2VxX3ByaW50ZihzLCAiXG4lc1slZF0uYnRtIiwgc3RpX3BsYW5lX3RvX3N0cigm Z2RwLT5wbGFuZSksIGIpOw0KPiAtCQlnZHBfbm9kZV9kdW1wX25vZGUocywgZ2RwLT5ub2RlX2xp c3RbYl0uYnRtX2ZpZWxkKTsNCj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0K PiAtc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGdkcDBfZGVidWdmc19maWxlc1tdID0gew0K PiAtCXsgImdkcDAiLCBnZHBfZGJnX3Nob3csIDAsIE5VTEwgfSwNCj4gLQl7ICJnZHAwX25vZGUi LCBnZHBfbm9kZV9kYmdfc2hvdywgMCwgTlVMTCB9LA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIHN0 cnVjdCBkcm1faW5mb19saXN0IGdkcDFfZGVidWdmc19maWxlc1tdID0gew0KPiAtCXsgImdkcDEi LCBnZHBfZGJnX3Nob3csIDAsIE5VTEwgfSwNCj4gLQl7ICJnZHAxX25vZGUiLCBnZHBfbm9kZV9k Ymdfc2hvdywgMCwgTlVMTCB9LA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW5m b19saXN0IGdkcDJfZGVidWdmc19maWxlc1tdID0gew0KPiAtCXsgImdkcDIiLCBnZHBfZGJnX3No b3csIDAsIE5VTEwgfSwNCj4gLQl7ICJnZHAyX25vZGUiLCBnZHBfbm9kZV9kYmdfc2hvdywgMCwg TlVMTCB9LA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGdkcDNf ZGVidWdmc19maWxlc1tdID0gew0KPiAtCXsgImdkcDMiLCBnZHBfZGJnX3Nob3csIDAsIE5VTEwg fSwNCj4gLQl7ICJnZHAzX25vZGUiLCBnZHBfbm9kZV9kYmdfc2hvdywgMCwgTlVMTCB9LA0KPiAt fTsNCj4gLQ0KPiAtc3RhdGljIGludCBnZHBfZGVidWdmc19pbml0KHN0cnVjdCBzdGlfZ2RwICpn ZHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQ0KPiAtew0KPiAtCXVuc2lnbmVkIGludCBpOw0K PiAtCXN0cnVjdCBkcm1faW5mb19saXN0ICpnZHBfZGVidWdmc19maWxlczsNCj4gLQlpbnQgbmJf ZmlsZXM7DQo+ICsJZ2RwX2RiZ19zaG93KHAsIGdkcCk7DQo+ICAgDQo+IC0Jc3dpdGNoIChnZHAt PnBsYW5lLmRlc2MpIHsNCj4gLQljYXNlIFNUSV9HRFBfMDoNCj4gLQkJZ2RwX2RlYnVnZnNfZmls ZXMgPSBnZHAwX2RlYnVnZnNfZmlsZXM7DQo+IC0JCW5iX2ZpbGVzID0gQVJSQVlfU0laRShnZHAw X2RlYnVnZnNfZmlsZXMpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFNUSV9HRFBfMToNCj4gLQkJ Z2RwX2RlYnVnZnNfZmlsZXMgPSBnZHAxX2RlYnVnZnNfZmlsZXM7DQo+IC0JCW5iX2ZpbGVzID0g QVJSQVlfU0laRShnZHAxX2RlYnVnZnNfZmlsZXMpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFNU SV9HRFBfMjoNCj4gLQkJZ2RwX2RlYnVnZnNfZmlsZXMgPSBnZHAyX2RlYnVnZnNfZmlsZXM7DQo+ IC0JCW5iX2ZpbGVzID0gQVJSQVlfU0laRShnZHAyX2RlYnVnZnNfZmlsZXMpOw0KPiAtCQlicmVh azsNCj4gLQljYXNlIFNUSV9HRFBfMzoNCj4gLQkJZ2RwX2RlYnVnZnNfZmlsZXMgPSBnZHAzX2Rl YnVnZnNfZmlsZXM7DQo+IC0JCW5iX2ZpbGVzID0gQVJSQVlfU0laRShnZHAzX2RlYnVnZnNfZmls ZXMpOw0KPiAtCQlicmVhazsNCj4gLQlkZWZhdWx0Og0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4g Kwlmb3IgKGIgPSAwOyBiIDwgR0RQX05PREVfTkJfQkFOSzsgYisrKSB7DQo+ICsJCWRybV9wcmlu dGYocCwgIlx0JXNbJWRdLnRvcFxuIiwNCj4gKwkJCSAgIHN0aV9wbGFuZV90b19zdHIoJmdkcC0+ cGxhbmUpLCBiKTsNCj4gKwkJZ2RwX25vZGVfZHVtcF9ub2RlKHAsIGdkcC0+bm9kZV9saXN0W2Jd LnRvcF9maWVsZCk7DQo+ICsJCWRybV9wcmludGYocCwgIlx0JXNbJWRdLmJ0bVxuIiwNCj4gKwkJ CSAgIHN0aV9wbGFuZV90b19zdHIoJmdkcC0+cGxhbmUpLCBiKTsNCj4gKwkJZ2RwX25vZGVfZHVt cF9ub2RlKHAsIGdkcC0+bm9kZV9saXN0W2JdLmJ0bV9maWVsZCk7DQo+ICAgCX0NCj4gICANCj4g LQlmb3IgKGkgPSAwOyBpIDwgbmJfZmlsZXM7IGkrKykNCj4gLQkJZ2RwX2RlYnVnZnNfZmlsZXNb aV0uZGF0YSA9IGdkcDsNCj4gLQ0KPiAtCXJldHVybiBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMo Z2RwX2RlYnVnZnNfZmlsZXMsDQo+IC0JCQkJCW5iX2ZpbGVzLA0KPiAtCQkJCQltaW5vci0+ZGVi dWdmc19yb290LCBtaW5vcik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQlcyVzXG4iLA0KPiArCQkg ICBwbGFuZS0+ZnBzX2luZm8uZnBzX3N0ciwgcGxhbmUtPmZwc19pbmZvLmZpcHNfc3RyKTsNCj4g ICB9DQo+ICAgDQo+ICAgc3RhdGljIGludCBzdGlfZ2RwX2ZvdXJjYzJmb3JtYXQoaW50IGZvdXJj YykNCj4gQEAgLTg4NywxNCArODIzLDYgQEAgc3RhdGljIHZvaWQgc3RpX2dkcF9kZXN0cm95KHN0 cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSkNCj4gICAJZHJtX3BsYW5lX2NsZWFudXAoZHJtX3Bs YW5lKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgaW50IHN0aV9nZHBfbGF0ZV9yZWdpc3Rlcihz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUpDQo+IC17DQo+IC0Jc3RydWN0IHN0aV9wbGFuZSAq cGxhbmUgPSB0b19zdGlfcGxhbmUoZHJtX3BsYW5lKTsNCj4gLQlzdHJ1Y3Qgc3RpX2dkcCAqZ2Rw ID0gdG9fc3RpX2dkcChwbGFuZSk7DQo+IC0NCj4gLQlyZXR1cm4gZ2RwX2RlYnVnZnNfaW5pdChn ZHAsIGRybV9wbGFuZS0+ZGV2LT5wcmltYXJ5KTsNCj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9nZHBfcGxhbmVfaGVscGVyc19mdW5jcyA9IHsN Cj4gICAJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwNCj4g ICAJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLA0KPiBA QCAtOTAyLDcgKzgzMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0 aV9nZHBfcGxhbmVfaGVscGVyc19mdW5jcyA9IHsNCj4gICAJLnJlc2V0ID0gc3RpX3BsYW5lX3Jl c2V0LA0KPiAgIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3Bs YW5lX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwNCj4gLQkubGF0ZV9yZWdpc3RlciA9IHN0 aV9nZHBfbGF0ZV9yZWdpc3RlciwNCj4gKwkuYXRvbWljX3ByaW50X3N0YXRlID0gc3RpX2dkcF9w bGFuZV9wcmludF9zdGF0ZSwNCj4gICB9Ow0KPiAgIA0KPiAgIHN0cnVjdCBkcm1fcGxhbmUgKnN0 aV9nZHBfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaHF2ZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2hxdmRwLmMNCj4gaW5kZXggMTA2YmU4YzRlNThiLi5mMjE4ZjYzNjk2NmMgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hxdmRwLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3N0aS9zdGlfaHF2ZHAuYw0KPiBAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgc3Rp X2hxdmRwX2dldF9uZXh0X2NtZChzdHJ1Y3Qgc3RpX2hxdmRwICpocXZkcCkNCj4gICAJcmV0dXJu IC0xOw0KPiAgIH0NCj4gICANCj4gLSNkZWZpbmUgREJHRlNfRFVNUChyZWcpIHNlcV9wcmludGYo cywgIlxuICAlLTI1cyAweCUwOFgiLCAjcmVnLCBcDQo+ICsjZGVmaW5lIERCR0ZTX0RVTVAocmVn KSBkcm1fcHJpbnRmKHAsICJcblx0XHQlLTI1cyAweCUwOFgiLCAjcmVnLCBcDQo+ICAgCQkJCSAg IHJlYWRsKGhxdmRwLT5yZWdzICsgcmVnKSkNCj4gICANCj4gICBzdGF0aWMgY29uc3QgY2hhciAq aHF2ZHBfZGJnX2dldF9sdXQodTMyICpjb2VmKQ0KPiBAQCAtNDY5LDk5ICs0NjksMTAwIEBAIHN0 YXRpYyBjb25zdCBjaGFyICpocXZkcF9kYmdfZ2V0X2x1dCh1MzIgKmNvZWYpDQo+ICAgCXJldHVy biAiPFVOS05PV04+IjsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBocXZkcF9kYmdfZHVt cF9jbWQoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qgc3RpX2hxdmRwX2NtZCAqYykNCj4gK3N0 YXRpYyB2b2lkIGhxdmRwX2RiZ19kdW1wX2NtZChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVj dCBzdGlfaHF2ZHBfY21kICpjKQ0KPiAgIHsNCj4gICAJaW50IHNyY193LCBzcmNfaCwgZHN0X3cs IGRzdF9oOw0KPiAgIA0KPiAtCXNlcV9wdXRzKHMsICJcblx0VE9QOiIpOw0KPiAtCXNlcV9wcmlu dGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkNvbmZpZyIsIGMtPnRvcC5jb25maWcpOw0KPiAr CWRybV9wcmludGYocCwgIlxuXHRUT1A6Iik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIw cyAweCUwOFgiLCAiQ29uZmlnIiwgYy0+dG9wLmNvbmZpZyk7DQo+ICAgCXN3aXRjaCAoYy0+dG9w LmNvbmZpZykgew0KPiAgIAljYXNlIFRPUF9DT05GSUdfUFJPR1JFU1NJVkU6DQo+IC0JCXNlcV9w dXRzKHMsICJcdFByb2dyZXNzaXZlIik7DQo+ICsJCWRybV9wcmludGYocCwgIlx0UHJvZ3Jlc3Np dmUiKTsNCj4gICAJCWJyZWFrOw0KPiAgIAljYXNlIFRPUF9DT05GSUdfSU5URVJfVE9QOg0KPiAt CQlzZXFfcHV0cyhzLCAiXHRJbnRlcmxhY2VkLCB0b3AgZmllbGQiKTsNCj4gKwkJZHJtX3ByaW50 ZihwLCAiXHRJbnRlcmxhY2VkLCB0b3AgZmllbGQiKTsNCj4gICAJCWJyZWFrOw0KPiAgIAljYXNl IFRPUF9DT05GSUdfSU5URVJfQlRNOg0KPiAtCQlzZXFfcHV0cyhzLCAiXHRJbnRlcmxhY2VkLCBi b3R0b20gZmllbGQiKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiXHRJbnRlcmxhY2VkLCBib3R0b20g ZmllbGQiKTsNCj4gICAJCWJyZWFrOw0KPiAgIAlkZWZhdWx0Og0KPiAtCQlzZXFfcHV0cyhzLCAi XHQ8VU5LTk9XTj4iKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiXHQ8VU5LTk9XTj4iKTsNCj4gICAJ CWJyZWFrOw0KPiAgIAl9DQo+ICAgDQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cdCAlLTIwcyAweCUw OFgiLCAiTWVtRm9ybWF0IiwgYy0+dG9wLm1lbV9mb3JtYXQpOw0KPiAtCXNlcV9wcmludGYocywg IlxuXHQgJS0yMHMgMHglMDhYIiwgIkN1cnJlbnRZIiwgYy0+dG9wLmN1cnJlbnRfbHVtYSk7DQo+ IC0Jc2VxX3ByaW50ZihzLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiQ3VycmVudEMiLCBjLT50b3Au Y3VycmVudF9jaHJvbWEpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwg IllTcmNQaXRjaCIsIGMtPnRvcC5sdW1hX3NyY19waXRjaCk7DQo+IC0Jc2VxX3ByaW50ZihzLCAi XG5cdCAlLTIwcyAweCUwOFgiLCAiQ1NyY1BpdGNoIiwNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0 ICUtMjBzIDB4JTA4WCIsICJNZW1Gb3JtYXQiLCBjLT50b3AubWVtX2Zvcm1hdCk7DQo+ICsJZHJt X3ByaW50ZihwLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiQ3VycmVudFkiLCBjLT50b3AuY3VycmVu dF9sdW1hKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIsICJDdXJyZW50 QyIsIGMtPnRvcC5jdXJyZW50X2Nocm9tYSk7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIw cyAweCUwOFgiLCAiWVNyY1BpdGNoIiwgYy0+dG9wLmx1bWFfc3JjX3BpdGNoKTsNCj4gKwlkcm1f cHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIsICJDU3JjUGl0Y2giLA0KPiAgIAkJICAgYy0+ dG9wLmNocm9tYV9zcmNfcGl0Y2gpOw0KPiAtCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHgl MDhYIiwgIklucHV0RnJhbWVTaXplIiwNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4 JTA4WCIsICJJbnB1dEZyYW1lU2l6ZSIsDQo+ICAgCQkgICBjLT50b3AuaW5wdXRfZnJhbWVfc2l6 ZSk7DQo+IC0Jc2VxX3ByaW50ZihzLCAiXHQlZHglZCIsDQo+ICsJZHJtX3ByaW50ZihwLCAiXHQl ZHglZCIsDQo+ICAgCQkgICBjLT50b3AuaW5wdXRfZnJhbWVfc2l6ZSAmIDB4MDAwMEZGRkYsDQo+ ICAgCQkgICBjLT50b3AuaW5wdXRfZnJhbWVfc2l6ZSA+PiAxNik7DQo+IC0Jc2VxX3ByaW50Zihz LCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiSW5wdXRWaWV3cG9ydFNpemUiLA0KPiArCWRybV9wcmlu dGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIklucHV0Vmlld3BvcnRTaXplIiwNCj4gICAJCSAg IGMtPnRvcC5pbnB1dF92aWV3cG9ydF9zaXplKTsNCj4gICAJc3JjX3cgPSBjLT50b3AuaW5wdXRf dmlld3BvcnRfc2l6ZSAmIDB4MDAwMEZGRkY7DQo+ICAgCXNyY19oID0gYy0+dG9wLmlucHV0X3Zp ZXdwb3J0X3NpemUgPj4gMTY7DQo+IC0Jc2VxX3ByaW50ZihzLCAiXHQlZHglZCIsIHNyY193LCBz cmNfaCk7DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQlZHglZCIsIHNyY193LCBzcmNfaCk7DQo+ICAg DQo+IC0Jc2VxX3B1dHMocywgIlxuXHRIVlNSQzoiKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0 ICUtMjBzIDB4JTA4WCIsICJPdXRwdXRQaWN0dXJlU2l6ZSIsDQo+ICsJZHJtX3ByaW50ZihwLCAi XG5cdEhWU1JDOiIpOw0KPiArCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIk91 dHB1dFBpY3R1cmVTaXplIiwNCj4gICAJCSAgIGMtPmh2c3JjLm91dHB1dF9waWN0dXJlX3NpemUp Ow0KPiAgIAlkc3RfdyA9IGMtPmh2c3JjLm91dHB1dF9waWN0dXJlX3NpemUgJiAweDAwMDBGRkZG Ow0KPiAgIAlkc3RfaCA9IGMtPmh2c3JjLm91dHB1dF9waWN0dXJlX3NpemUgPj4gMTY7DQo+IC0J c2VxX3ByaW50ZihzLCAiXHQlZHglZCIsIGRzdF93LCBkc3RfaCk7DQo+IC0Jc2VxX3ByaW50Zihz LCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiUGFyYW1DdHJsIiwgYy0+aHZzcmMucGFyYW1fY3RybCk7 DQo+ICsJZHJtX3ByaW50ZihwLCAiXHQlZHglZCIsIGRzdF93LCBkc3RfaCk7DQo+ICsJZHJtX3By aW50ZihwLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiUGFyYW1DdHJsIiwgYy0+aHZzcmMucGFyYW1f Y3RybCk7DQo+ICAgDQo+IC0Jc2VxX3ByaW50ZihzLCAiXG5cdCAlLTIwcyAlcyIsICJ5aF9jb2Vm IiwNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzICVzIiwgInloX2NvZWYiLA0KPiAgIAkJ ICAgaHF2ZHBfZGJnX2dldF9sdXQoYy0+aHZzcmMueWhfY29lZikpOw0KPiAtCXNlcV9wcmludGYo cywgIlxuXHQgJS0yMHMgJXMiLCAiY2hfY29lZiIsDQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdCAl LTIwcyAlcyIsICJjaF9jb2VmIiwNCj4gICAJCSAgIGhxdmRwX2RiZ19nZXRfbHV0KGMtPmh2c3Jj LmNoX2NvZWYpKTsNCj4gLQlzZXFfcHJpbnRmKHMsICJcblx0ICUtMjBzICVzIiwgInl2X2NvZWYi LA0KPiArCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgJXMiLCAieXZfY29lZiIsDQo+ICAgCQkg ICBocXZkcF9kYmdfZ2V0X2x1dChjLT5odnNyYy55dl9jb2VmKSk7DQo+IC0Jc2VxX3ByaW50Zihz LCAiXG5cdCAlLTIwcyAlcyIsICJjdl9jb2VmIiwNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUt MjBzICVzIiwgImN2X2NvZWYiLA0KPiAgIAkJICAgaHF2ZHBfZGJnX2dldF9sdXQoYy0+aHZzcmMu Y3ZfY29lZikpOw0KPiAgIA0KPiAtCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMiLCAiU2NhbGVI Iik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyIsICJTY2FsZUgiKTsNCj4gICAJaWYg KGRzdF93ID4gc3JjX3cpDQo+IC0JCXNlcV9wcmludGYocywgIiAlZC8xIiwgZHN0X3cgLyBzcmNf dyk7DQo+ICsJCWRybV9wcmludGYocCwgIiAlZC8xIiwgZHN0X3cgLyBzcmNfdyk7DQo+ICAgCWVs c2UNCj4gLQkJc2VxX3ByaW50ZihzLCAiIDEvJWQiLCBzcmNfdyAvIGRzdF93KTsNCj4gKwkJZHJt X3ByaW50ZihwLCAiIDEvJWQiLCBzcmNfdyAvIGRzdF93KTsNCj4gICANCj4gLQlzZXFfcHJpbnRm KHMsICJcblx0ICUtMjBzIiwgInRTY2FsZVYiKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUt MjBzIiwgInRTY2FsZVYiKTsNCj4gICAJaWYgKGRzdF9oID4gc3JjX2gpDQo+IC0JCXNlcV9wcmlu dGYocywgIiAlZC8xIiwgZHN0X2ggLyBzcmNfaCk7DQo+ICsJCWRybV9wcmludGYocCwgIiAlZC8x IiwgZHN0X2ggLyBzcmNfaCk7DQo+ICAgCWVsc2UNCj4gLQkJc2VxX3ByaW50ZihzLCAiIDEvJWQi LCBzcmNfaCAvIGRzdF9oKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiIDEvJWQiLCBzcmNfaCAvIGRz dF9oKTsNCj4gICANCj4gLQlzZXFfcHV0cyhzLCAiXG5cdENTREk6Iik7DQo+IC0Jc2VxX3ByaW50 ZihzLCAiXG5cdCAlLTIwcyAweCUwOFhcdCIsICJDb25maWciLCBjLT5jc2RpLmNvbmZpZyk7DQo+ ICsJZHJtX3ByaW50ZihwLCAiXG5cdENTREk6Iik7DQo+ICsJZHJtX3ByaW50ZihwLCAiXG5cdCAl LTIwcyAweCUwOFhcdCIsICJDb25maWciLCBjLT5jc2RpLmNvbmZpZyk7DQo+ICAgCXN3aXRjaCAo Yy0+Y3NkaS5jb25maWcpIHsNCj4gICAJY2FzZSBDU0RJX0NPTkZJR19QUk9HOg0KPiAtCQlzZXFf cHV0cyhzLCAiQnlwYXNzIik7DQo+ICsJCWRybV9wcmludGYocCwgIkJ5cGFzcyIpOw0KPiAgIAkJ YnJlYWs7DQo+ICAgCWNhc2UgQ1NESV9DT05GSUdfSU5URVJfRElSOg0KPiAtCQlzZXFfcHV0cyhz LCAiRGVpbnRlcmxhY2UsIGRpcmVjdGlvbmFsIik7DQo+ICsJCWRybV9wcmludGYocCwgIkRlaW50 ZXJsYWNlLCBkaXJlY3Rpb25hbCIpOw0KPiAgIAkJYnJlYWs7DQo+ICAgCWRlZmF1bHQ6DQo+IC0J CXNlcV9wdXRzKHMsICI8VU5LTk9XTj4iKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAiPFVOS05PV04+ Iik7DQo+ICAgCQlicmVhazsNCj4gICAJfQ0KPiAgIA0KPiAtCXNlcV9wcmludGYocywgIlxuXHQg JS0yMHMgMHglMDhYIiwgIkNvbmZpZzIiLCBjLT5jc2RpLmNvbmZpZzIpOw0KPiAtCXNlcV9wcmlu dGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkRjZGlDb25maWciLCBjLT5jc2RpLmRjZGlfY29u ZmlnKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIsICJDb25maWcyIiwg Yy0+Y3NkaS5jb25maWcyKTsNCj4gKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIs ICJEY2RpQ29uZmlnIiwgYy0+Y3NkaS5kY2RpX2NvbmZpZyk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIGludCBocXZkcF9kYmdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpDQo+ ICtzdGF0aWMgdm9pZCBzdGlfaHF2ZHBfcGxhbmVfcHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmlu dGVyICpwLA0KPiArCQkJCQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4g ICB7DQo+IC0Jc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBzLT5wcml2YXRlOw0KPiAtCXN0 cnVjdCBzdGlfaHF2ZHAgKmhxdmRwID0gKHN0cnVjdCBzdGlfaHF2ZHAgKilub2RlLT5pbmZvX2Vu dC0+ZGF0YTsNCj4gKwlzdHJ1Y3Qgc3RpX3BsYW5lICpwbGFuZSA9IHRvX3N0aV9wbGFuZShzdGF0 ZS0+cGxhbmUpOw0KPiArCXN0cnVjdCBzdGlfaHF2ZHAgKmhxdmRwID0gdG9fc3RpX2hxdmRwKHBs YW5lKTsNCj4gICAJaW50IGNtZCwgY21kX29mZnNldCwgaW5mb3hwNzA7DQo+ICAgCXZvaWQgKnZp cnQ7DQo+ICAgDQo+IC0Jc2VxX3ByaW50ZihzLCAiJXM6ICh2YWRkciA9IDB4JXApIiwNCj4gKwlk cm1fcHJpbnRmKHAsICJcdCVzOiAodmFkZHIgPSAweCVwSykiLA0KPiAgIAkJICAgc3RpX3BsYW5l X3RvX3N0cigmaHF2ZHAtPnBsYW5lKSwgaHF2ZHAtPnJlZ3MpOw0KPiAgIA0KPiAgIAlEQkdGU19E VU1QKEhRVkRQX01CWF9JUlFfVE9fWFA3MCk7DQo+IEBAIC01NjksODAgKzU3MCw2NCBAQCBzdGF0 aWMgaW50IGhxdmRwX2RiZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCj4g ICAJREJHRlNfRFVNUChIUVZEUF9NQlhfSVJRX1RPX0hPU1QpOw0KPiAgIAlEQkdGU19EVU1QKEhR VkRQX01CWF9JTkZPX1hQNzApOw0KPiAgIAlpbmZveHA3MCA9IHJlYWRsKGhxdmRwLT5yZWdzICsg SFFWRFBfTUJYX0lORk9fWFA3MCk7DQo+IC0Jc2VxX3B1dHMocywgIlx0RmlybXdhcmUgc3RhdGU6 ICIpOw0KPiArCWRybV9wcmludGYocCwgIlx0RmlybXdhcmUgc3RhdGU6ICIpOw0KPiAgIAlpZiAo aW5mb3hwNzAgJiBJTkZPX1hQNzBfRldfUkVBRFkpDQo+IC0JCXNlcV9wdXRzKHMsICJpZGxlIGFu ZCByZWFkeSIpOw0KPiArCQlkcm1fcHJpbnRmKHAsICJpZGxlIGFuZCByZWFkeSIpOw0KPiAgIAll bHNlIGlmIChpbmZveHA3MCAmIElORk9fWFA3MF9GV19QUk9DRVNTSU5HKQ0KPiAtCQlzZXFfcHV0 cyhzLCAicHJvY2Vzc2luZyBhIHBpY3R1cmUiKTsNCj4gKwkJZHJtX3ByaW50ZihwLCAicHJvY2Vz c2luZyBhIHBpY3R1cmUiKTsNCj4gICAJZWxzZSBpZiAoaW5mb3hwNzAgJiBJTkZPX1hQNzBfRldf SU5JVFFVRVVFUykNCj4gLQkJc2VxX3B1dHMocywgInByb2dyYW1taW5nIHF1ZXVlcyIpOw0KPiAr CQlkcm1fcHJpbnRmKHAsICJwcm9ncmFtbWluZyBxdWV1ZXMiKTsNCj4gICAJZWxzZQ0KPiAtCQlz ZXFfcHV0cyhzLCAiTk9UIFJFQURZIik7DQo+ICsJCWRybV9wcmludGYocCwgIk5PVCBSRUFEWSIp Ow0KPiAgIA0KPiAgIAlEQkdGU19EVU1QKEhRVkRQX01CWF9TV19SRVNFVF9DVFJMKTsNCj4gICAJ REJHRlNfRFVNUChIUVZEUF9NQlhfU1RBUlRVUF9DVFJMMSk7DQo+ICAgCWlmIChyZWFkbChocXZk cC0+cmVncyArIEhRVkRQX01CWF9TVEFSVFVQX0NUUkwxKQ0KPiAgIAkJCQkJJiBTVEFSVFVQX0NU UkwxX1JTVF9ET05FKQ0KPiAtCQlzZXFfcHV0cyhzLCAiXHRSZXNldCBpcyBkb25lIik7DQo+ICsJ CWRybV9wcmludGYocCwgIlx0UmVzZXQgaXMgZG9uZSIpOw0KPiAgIAllbHNlDQo+IC0JCXNlcV9w dXRzKHMsICJcdFJlc2V0IGlzIE5PVCBkb25lIik7DQo+ICsJCWRybV9wcmludGYocCwgIlx0UmVz ZXQgaXMgTk9UIGRvbmUiKTsNCj4gICAJREJHRlNfRFVNUChIUVZEUF9NQlhfU1RBUlRVUF9DVFJM Mik7DQo+ICAgCWlmIChyZWFkbChocXZkcC0+cmVncyArIEhRVkRQX01CWF9TVEFSVFVQX0NUUkwy KQ0KPiAgIAkJCQkJJiBTVEFSVFVQX0NUUkwyX0ZFVENIX0VOKQ0KPiAtCQlzZXFfcHV0cyhzLCAi XHRGZXRjaCBpcyBlbmFibGVkIik7DQo+ICsJCWRybV9wcmludGYocCwgIlx0RmV0Y2ggaXMgZW5h YmxlZCIpOw0KPiAgIAllbHNlDQo+IC0JCXNlcV9wdXRzKHMsICJcdEZldGNoIGlzIE5PVCBlbmFi bGVkIik7DQo+ICsJCWRybV9wcmludGYocCwgIlx0RmV0Y2ggaXMgTk9UIGVuYWJsZWQiKTsNCj4g ICAJREJHRlNfRFVNUChIUVZEUF9NQlhfR1BfU1RBVFVTKTsNCj4gICAJREJHRlNfRFVNUChIUVZE UF9NQlhfTkVYVF9DTUQpOw0KPiAgIAlEQkdGU19EVU1QKEhRVkRQX01CWF9DVVJSRU5UX0NNRCk7 DQo+ICAgCURCR0ZTX0RVTVAoSFFWRFBfTUJYX1NPRlRfVlNZTkMpOw0KPiAgIAlpZiAoIShyZWFk bChocXZkcC0+cmVncyArIEhRVkRQX01CWF9TT0ZUX1ZTWU5DKSAmIDMpKQ0KPiAtCQlzZXFfcHV0 cyhzLCAiXHRIVyBWc3luYyIpOw0KPiArCQlkcm1fcHJpbnRmKHAsICJcdEhXIFZzeW5jIik7DQo+ ICAgCWVsc2UNCj4gLQkJc2VxX3B1dHMocywgIlx0U1cgVnN5bmMgPyE/ISIpOw0KPiArCQlkcm1f cHJpbnRmKHAsICJcdFNXIFZzeW5jID8hPyEiKTsNCj4gICANCj4gICAJLyogTGFzdCBjb21tYW5k ICovDQo+ICAgCWNtZCA9IHJlYWRsKGhxdmRwLT5yZWdzICsgSFFWRFBfTUJYX0NVUlJFTlRfQ01E KTsNCj4gICAJY21kX29mZnNldCA9IHN0aV9ocXZkcF9nZXRfY3Vycl9jbWQoaHF2ZHApOw0KPiAg IAlpZiAoY21kX29mZnNldCA9PSAtMSkgew0KPiAtCQlzZXFfcHV0cyhzLCAiXG5cbiAgTGFzdCBj b21tYW5kOiB1bmtub3duIik7DQo+ICsJCWRybV9wcmludGYocCwgIlxuXG5cdFx0TGFzdCBjb21t YW5kOiB1bmtub3duIik7DQo+ICAgCX0gZWxzZSB7DQo+ICAgCQl2aXJ0ID0gaHF2ZHAtPmhxdmRw X2NtZCArIGNtZF9vZmZzZXQ7DQo+IC0JCXNlcV9wcmludGYocywgIlxuXG4gIExhc3QgY29tbWFu ZDogYWRkcmVzcyBAIDB4JXggKDB4JXApIiwNCj4gKwkJZHJtX3ByaW50ZihwLCAiXG5cblx0XHRM YXN0IGNvbW1hbmQ6IGFkZHJlc3MgQCAweCV4ICgweCVwKSIsDQo+ICAgCQkJICAgY21kLCB2aXJ0 KTsNCj4gLQkJaHF2ZHBfZGJnX2R1bXBfY21kKHMsIChzdHJ1Y3Qgc3RpX2hxdmRwX2NtZCAqKXZp cnQpOw0KPiArCQlocXZkcF9kYmdfZHVtcF9jbWQocCwgKHN0cnVjdCBzdGlfaHF2ZHBfY21kICop dmlydCk7DQo+ICAgCX0NCj4gICANCj4gICAJLyogTmV4dCBjb21tYW5kICovDQo+ICAgCWNtZCA9 IHJlYWRsKGhxdmRwLT5yZWdzICsgSFFWRFBfTUJYX05FWFRfQ01EKTsNCj4gICAJY21kX29mZnNl dCA9IHN0aV9ocXZkcF9nZXRfbmV4dF9jbWQoaHF2ZHApOw0KPiAgIAlpZiAoY21kX29mZnNldCA9 PSAtMSkgew0KPiAtCQlzZXFfcHV0cyhzLCAiXG5cbiAgTmV4dCBjb21tYW5kOiB1bmtub3duIik7 DQo+ICsJCWRybV9wcmludGYocCwgIlxuXG5cdFx0TmV4dCBjb21tYW5kOiB1bmtub3duIik7DQo+ ICAgCX0gZWxzZSB7DQo+ICAgCQl2aXJ0ID0gaHF2ZHAtPmhxdmRwX2NtZCArIGNtZF9vZmZzZXQ7 DQo+IC0JCXNlcV9wcmludGYocywgIlxuXG4gIE5leHQgY29tbWFuZCBhZGRyZXNzOiBAIDB4JXgg KDB4JXApIiwNCj4gKwkJZHJtX3ByaW50ZihwLCAiXG5cblx0XHROZXh0IGNvbW1hbmQgYWRkcmVz czogQCAweCV4ICgweCVwKSIsDQo+ICAgCQkJICAgY21kLCB2aXJ0KTsNCj4gLQkJaHF2ZHBfZGJn X2R1bXBfY21kKHMsIChzdHJ1Y3Qgc3RpX2hxdmRwX2NtZCAqKXZpcnQpOw0KPiArCQlocXZkcF9k YmdfZHVtcF9jbWQocCwgKHN0cnVjdCBzdGlfaHF2ZHBfY21kICopdmlydCk7DQo+ICAgCX0NCj4g ICANCj4gLQlzZXFfcHV0YyhzLCAnXG4nKTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAt c3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGhxdmRwX2RlYnVnZnNfZmlsZXNbXSA9IHsNCj4g LQl7ICJocXZkcCIsIGhxdmRwX2RiZ19zaG93LCAwLCBOVUxMIH0sDQo+IC19Ow0KPiAtDQo+IC1z dGF0aWMgaW50IGhxdmRwX2RlYnVnZnNfaW5pdChzdHJ1Y3Qgc3RpX2hxdmRwICpocXZkcCwgc3Ry dWN0IGRybV9taW5vciAqbWlub3IpDQo+IC17DQo+IC0JdW5zaWduZWQgaW50IGk7DQo+IC0NCj4g LQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShocXZkcF9kZWJ1Z2ZzX2ZpbGVzKTsgaSsrKQ0K PiAtCQlocXZkcF9kZWJ1Z2ZzX2ZpbGVzW2ldLmRhdGEgPSBocXZkcDsNCj4gLQ0KPiAtCXJldHVy biBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMoaHF2ZHBfZGVidWdmc19maWxlcywNCj4gLQkJCQkJ QVJSQVlfU0laRShocXZkcF9kZWJ1Z2ZzX2ZpbGVzKSwNCj4gLQkJCQkJbWlub3ItPmRlYnVnZnNf cm9vdCwgbWlub3IpOw0KPiArCWRybV9wcmludGYocCwgIlx0JXMlc1xuIiwNCj4gKwkJICAgcGxh bmUtPmZwc19pbmZvLmZwc19zdHIsIHBsYW5lLT5mcHNfaW5mby5maXBzX3N0cik7DQo+ICAgfQ0K PiAgIA0KPiAgIC8qKg0KPiBAQCAtMTI2NCwxNCArMTI0OSw2IEBAIHN0YXRpYyB2b2lkIHN0aV9o cXZkcF9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSkNCj4gICAJZHJtX3BsYW5l X2NsZWFudXAoZHJtX3BsYW5lKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgaW50IHN0aV9ocXZk cF9sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSkNCj4gLXsNCj4gLQlz dHJ1Y3Qgc3RpX3BsYW5lICpwbGFuZSA9IHRvX3N0aV9wbGFuZShkcm1fcGxhbmUpOw0KPiAtCXN0 cnVjdCBzdGlfaHF2ZHAgKmhxdmRwID0gdG9fc3RpX2hxdmRwKHBsYW5lKTsNCj4gLQ0KPiAtCXJl dHVybiBocXZkcF9kZWJ1Z2ZzX2luaXQoaHF2ZHAsIGRybV9wbGFuZS0+ZGV2LT5wcmltYXJ5KTsN Cj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9o cXZkcF9wbGFuZV9oZWxwZXJzX2Z1bmNzID0gew0KPiAgIAkudXBkYXRlX3BsYW5lID0gZHJtX2F0 b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLA0KPiAgIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9t aWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsDQo+IEBAIC0xMjc5LDcgKzEyNTYsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBzdGlfaHF2ZHBfcGxhbmVfaGVscGVyc19mdW5j cyA9IHsNCj4gICAJLnJlc2V0ID0gc3RpX3BsYW5lX3Jlc2V0LA0KPiAgIAkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwNCj4g ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJv eV9zdGF0ZSwNCj4gLQkubGF0ZV9yZWdpc3RlciA9IHN0aV9ocXZkcF9sYXRlX3JlZ2lzdGVyLA0K PiArCS5hdG9taWNfcHJpbnRfc3RhdGUgPSBzdGlfaHF2ZHBfcGxhbmVfcHJpbnRfc3RhdGUsDQo+ ICAgfTsNCj4gICANCj4gICBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqc3RpX2hxdmRwX2NyZWF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwNCj4g