From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v3 09/21] drm/bridge: Add a drm_bridge_state object Date: Mon, 2 Dec 2019 18:42:45 +0200 Message-ID: <20191202164245.GM4929@pendragon.ideasonboard.com> References: <20191023154512.9762-1-boris.brezillon@collabora.com> <20191023154512.9762-10-boris.brezillon@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E9326E255 for ; Mon, 2 Dec 2019 16:42:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191023154512.9762-10-boris.brezillon@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon Cc: Mark Rutland , Neil Armstrong , dri-devel@lists.freedesktop.org, Thierry Reding , kernel@collabora.com, Sam Ravnborg , Nikita Yushchenko , Andrey Smirnov , Kyungmin Park , Chris Healy , devicetree@vger.kernel.org, Jonas Karlman , Rob Herring , Jernej Skrabec , Seung-Woo Kim List-Id: dri-devel@lists.freedesktop.org SGkgQm9yaXMsCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIFdlZCwgT2N0IDIzLCAyMDE5 IGF0IDA1OjQ1OjAwUE0gKzAyMDAsIEJvcmlzIEJyZXppbGxvbiB3cm90ZToKPiBPbmUgb2YgdGhl IGxhc3QgcmVtYWluaW5nIG9iamVjdHMgdG8gbm90IGhhdmUgaXRzIGF0b21pYyBzdGF0ZS4KPiAK PiBUaGlzIGlzIGJlaW5nIG1vdGl2YXRlZCBieSBvdXIgYXR0ZW1wdCB0byBzdXBwb3J0IHJ1bnRp bWUgYnVzLWZvcm1hdAo+IG5lZ290aWF0aW9uIGJldHdlZW4gZWxlbWVudHMgb2YgdGhlIGJyaWRn ZSBjaGFpbi4KPiBUaGlzIHBhdGNoIGp1c3QgcGF2ZXMgdGhlIHJvYWQgZm9yIHN1Y2ggYSBmZWF0 dXJlIGJ5IGFkZGluZyBhIG5ldwo+IGRybV9icmlkZ2Vfc3RhdGUgb2JqZWN0IGluaGVyaXRpbmcg ZnJvbSBkcm1fcHJpdmF0ZV9vYmogc28gd2UgY2FuCj4gcmUtdXNlIHNvbWUgb2YgdGhlIGV4aXN0 aW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL3RyYWNraW5nIGxvZ2ljLgo+IAo+IFNpZ25lZC1vZmYt Ynk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Cj4gLS0t Cj4gQ2hhbmdlcyBpbiB2MzoKPiAqIE5vbmUKPiAKPiBDaGFuZ2VzIGluIHYyOgo+ICogVXNlIGRy bV9mb3JfZWFjaF9icmlkZ2VfaW5fY2hhaW4oKQo+ICogUmVuYW1lIGhlbHBlcnMgdG8gYmUgbW9y ZSBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YgdGhlIERSTSBBUEkKPiAqIEltcHJvdmUvZml4 IHRoZSBkb2MKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAg MzkgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAyMCAr KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgICAgICAgIHwgMTY4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oICAgICAgICAg ICAgfCAgIDMgKwo+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgICAgICAgICB8IDExOCAr KysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggNDE5MzgxYWJiZGQx Li42YzI0OWNlMzkzODAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMzAsNiArMzAsNyBA QAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY191YXBpLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2JyaWRnZS5oPgo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9kZWJ1Z2ZzLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KPiBAQCAtMTAxMCw2ICsxMDExLDQ0IEBAIHN0YXRpYyB2 b2lkIGRybV9hdG9taWNfY29ubmVjdG9yX3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwKPiAgCQljb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfcHJpbnRfc3RhdGUocCwgc3RhdGUpOwo+ ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX2F0b21pY19hZGRfZW5jb2Rlcl9icmlkZ2VzIC0gYWRk IGJyaWRnZXMgYXR0YWNoZWQgdG8gYW4gZW5jb2Rlcgo+ICsgKiBAc3RhdGU6IGF0b21pYyBzdGF0 ZQo+ICsgKiBAZW5jb2RlcjogRFJNIGVuY29kZXIKPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBh ZGRzIGFsbCBicmlkZ2VzIGF0dGFjaGVkIHRvIEBlbmNvZGVyLiBUaGlzIGlzIG5lZWRlZCB0byBh ZGQKPiArICogYnJpZGdlIHN0YXRlcyB0byBAc3RhdGUgYW5kIG1ha2UgdGhlbSBhdmFpbGFibGUg d2hlbgo+ICsgKiAmYnJpZGdlX2Z1bmNzLmF0b21pY197Y2hlY2sscHJlX2VuYWJsZSxlbmFibGUs ZGlzYWJsZV9wb3N0X2Rpc2FibGV9KCkgYXJlCj4gKyAqIGNhbGxlZAo+ICsgKgo+ICsgKiBSZXR1 cm5zOgo+ICsgKiAwIG9uIHN1Y2Nlc3Mgb3IgY2FuIGZhaWwgd2l0aCAtRURFQURMSyBvciAtRU5P TUVNLiBXaGVuIHRoZSBlcnJvciBpcyBFREVBRExLCj4gKyAqIHRoZW4gdGhlIHcvdyBtdXRleCBj b2RlIGhhcyBkZXRlY3RlZCBhIGRlYWRsb2NrIGFuZCB0aGUgZW50aXJlIGF0b21pYwo+ICsgKiBz ZXF1ZW5jZSBtdXN0IGJlIHJlc3RhcnRlZC4gQWxsIG90aGVyIGVycm9ycyBhcmUgZmF0YWwuCj4g KyAqLwo+ICtpbnQKPiArZHJtX2F0b21pY19hZGRfZW5jb2Rlcl9icmlkZ2VzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJICAgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKPiArewo+ICsJc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9zdGF0ZTsKPiAr CXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gKwo+ICsJaWYgKCFlbmNvZGVyKQo+ICsJCXJl dHVybiAwOwo+ICsKPiArCURSTV9ERUJVR19BVE9NSUMoIkFkZGluZyBhbGwgYnJpZGdlcyBmb3Ig W2VuY29kZXI6JWQ6JXNdIHRvICVwXG4iLAo+ICsJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rl ci0+bmFtZSwgc3RhdGUpOwo+ICsKPiArCWRybV9mb3JfZWFjaF9icmlkZ2VfaW5fY2hhaW4oZW5j b2RlciwgYnJpZGdlKSB7Cj4gKwkJYnJpZGdlX3N0YXRlID0gZHJtX2F0b21pY19nZXRfYnJpZGdl X3N0YXRlKHN0YXRlLCBicmlkZ2UpOwo+ICsJCWlmIChJU19FUlIoYnJpZGdlX3N0YXRlKSkKPiAr CQkJcmV0dXJuIFBUUl9FUlIoYnJpZGdlX3N0YXRlKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYWRkX2VuY29kZXJfYnJpZGdlcyk7Cj4g Kwo+ICAvKioKPiAgICogZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyAtIGFkZCBj b25uZWN0b3JzIGZvciBjcnRjCj4gICAqIEBzdGF0ZTogYXRvbWljIHN0YXRlCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCBmMDJkZGZmZDQ5NjAuLmRlOTg1YmE3Y2UyZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTczMCw2ICs3MzAsMjYg QEAgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiArCS8qCj4gKwkgKiBJdGVyYXRlIG92ZXIg YWxsIGNvbm5lY3RvcnMgYWdhaW4sIGFuZCBhZGQgYWxsIGFmZmVjdGVkIGJyaWRnZXMgdG8KPiAr CSAqIHRoZSBzdGF0ZS4KPiArCSAqLwo+ICsJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShzdGF0ZSwgY29ubmVjdG9yLAo+ICsJCQkJCSAgIG9sZF9jb25uZWN0b3Jfc3RhdGUsCj4g KwkJCQkJICAgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICsJCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsKPiArCj4gKwkJZW5jb2RlciA9IG9sZF9jb25uZWN0b3Jfc3RhdGUtPmJlc3Rf ZW5jb2RlcjsKPiArCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9lbmNvZGVyX2JyaWRnZXMoc3RhdGUs IGVuY29kZXIpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCWVuY29k ZXIgPSBuZXdfY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXI7Cj4gKwkJcmV0ID0gZHJtX2F0 b21pY19hZGRfZW5jb2Rlcl9icmlkZ2VzKHN0YXRlLCBlbmNvZGVyKTsKPiArCQlpZiAocmV0KQo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAgCXJldCA9IG1vZGVfdmFsaWQoc3RhdGUpOwo+ ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+IGluZGV4IGM1 Y2Y4YTljNDIzNy4uYzUzOTY2NzY3NzgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYnJpZGdlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gQEAgLTI1 LDYgKzI1LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvbXV0ZXguaD4KPiAgCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIu aD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2Vu Y29kZXIuaD4KPiAgCj4gQEAgLTg5LDYgKzkwLDM4IEBAIHZvaWQgZHJtX2JyaWRnZV9yZW1vdmUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9icmlk Z2VfcmVtb3ZlKTsKPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgo+ICtk cm1fYnJpZGdlX2F0b21pY19kdXBsaWNhdGVfcHJpdl9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVf b2JqICpvYmopCj4gK3sKPiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UgPSBkcm1fcHJpdl90 b19icmlkZ2Uob2JqKTsKPiArCXN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICpzdGF0ZTsKPiArCj4g KwlpZiAoYnJpZGdlLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSkKPiArCQlzdGF0ZSA9 IGJyaWRnZS0+ZnVuY3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUoYnJpZGdlKTsKPiArCWVsc2UK PiArCQlzdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kdXBsaWNhdGVfc3RhdGUoYnJp ZGdlKTsKPiArCj4gKwlyZXR1cm4gJnN0YXRlLT5iYXNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZAo+ICtkcm1fYnJpZGdlX2F0b21pY19kZXN0cm95X3ByaXZfc3RhdGUoc3RydWN0IGRybV9wcml2 YXRlX29iaiAqb2JqLAo+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnMpCj4g K3sKPiArCXN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICpzdGF0ZSA9IGRybV9wcml2X3RvX2JyaWRn ZV9zdGF0ZShzKTsKPiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UgPSBkcm1fcHJpdl90b19i cmlkZ2Uob2JqKTsKPiArCj4gKwlpZiAoYnJpZGdlLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3Rh dGUpCj4gKwkJYnJpZGdlLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUoYnJpZGdlLCBzdGF0 ZSk7Cj4gKwllbHNlCj4gKwkJZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2Rlc3Ryb3lfc3RhdGUo YnJpZGdlLCBzdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZh dGVfc3RhdGVfZnVuY3MgZHJtX2JyaWRnZV9wcml2X3N0YXRlX2Z1bmNzID0gewo+ICsJLmF0b21p Y19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYnJpZGdlX2F0b21pY19kdXBsaWNhdGVfcHJpdl9zdGF0 ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9icmlkZ2VfYXRvbWljX2Rlc3Ryb3lf cHJpdl9zdGF0ZSwKPiArfTsKPiArCj4gIC8qKgo+ICAgKiBkcm1fYnJpZGdlX2F0dGFjaCAtIGF0 dGFjaCB0aGUgYnJpZGdlIHRvIGFuIGVuY29kZXIncyBjaGFpbgo+ICAgKgo+IEBAIC0xMTQsNiAr MTQ3LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7Cj4gIGludCBkcm1fYnJp ZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UsCj4gIAkJICAgICAgc3RydWN0IGRybV9icmlkZ2UgKnByZXZpb3VzKQo+ICB7Cj4g KwlzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqc3RhdGU7Cj4gIAlMSVNUX0hFQUQodG1wX2xpc3Qp Owo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTEzMiwxOSArMTY2LDM5IEBAIGludCBkcm1fYnJpZGdl X2F0dGFjaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4gIAo+ICAJaWYgKGJyaWRnZS0+ZnVuY3MtPmF0dGFjaCkgewo+ICAJCXJldCA9IGJy aWRnZS0+ZnVuY3MtPmF0dGFjaChicmlkZ2UpOwo+IC0JCWlmIChyZXQgPCAwKSB7Cj4gLQkJCWJy aWRnZS0+ZGV2ID0gTlVMTDsKPiAtCQkJYnJpZGdlLT5lbmNvZGVyID0gTlVMTDsKPiAtCQkJcmV0 dXJuIHJldDsKPiAtCQl9Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCWdvdG8gZXJyX3Jlc2V0X2Jy aWRnZTsKPiAgCX0KPiAgCj4gKwlpZiAoYnJpZGdlLT5mdW5jcy0+YXRvbWljX3Jlc2V0KQo+ICsJ CXN0YXRlID0gYnJpZGdlLT5mdW5jcy0+YXRvbWljX3Jlc2V0KGJyaWRnZSk7Cj4gKwllbHNlCj4g KwkJc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9icmlkZ2VfcmVzZXQoYnJpZGdlKTsKPiArCj4g KwlpZiAoSVNfRVJSKHN0YXRlKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoc3RhdGUpOwo+ICsJCWdv dG8gZXJyX2RldGFjaF9icmlkZ2U7Cj4gKwl9Cj4gKwo+ICsJZHJtX2F0b21pY19wcml2YXRlX29i al9pbml0KGJyaWRnZS0+ZGV2LCAmYnJpZGdlLT5iYXNlLAo+ICsJCQkJICAgICZzdGF0ZS0+YmFz ZSwKPiArCQkJCSAgICAmZHJtX2JyaWRnZV9wcml2X3N0YXRlX2Z1bmNzKTsKPiArCj4gIAlpZiAo cHJldmlvdXMpCj4gIAkJbGlzdF9zcGxpY2UoJnRtcF9saXN0LCAmcHJldmlvdXMtPmNoYWluX25v ZGUpOwo+ICAJZWxzZQo+ICAJCWxpc3Rfc3BsaWNlKCZ0bXBfbGlzdCwgJmVuY29kZXItPmJyaWRn ZV9jaGFpbik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfZGV0YWNoX2JyaWRnZToKPiAr CWlmIChicmlkZ2UtPmZ1bmNzLT5kZXRhY2gpCj4gKwkJYnJpZGdlLT5mdW5jcy0+ZGV0YWNoKGJy aWRnZSk7Cj4gKwo+ICtlcnJfcmVzZXRfYnJpZGdlOgo+ICsJYnJpZGdlLT5kZXYgPSBOVUxMOwo+ ICsJYnJpZGdlLT5lbmNvZGVyID0gTlVMTDsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgRVhQT1JU X1NZTUJPTChkcm1fYnJpZGdlX2F0dGFjaCk7Cj4gIAo+IEBAIC0xNTYsNiArMjEwLDggQEAgdm9p ZCBkcm1fYnJpZGdlX2RldGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAJaWYgKFdB Uk5fT04oIWJyaWRnZS0+ZGV2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICsJZHJtX2F0b21pY19wcml2 YXRlX29ial9maW5pKCZicmlkZ2UtPmJhc2UpOwo+ICsKPiAgCWlmIChicmlkZ2UtPmZ1bmNzLT5k ZXRhY2gpCj4gIAkJYnJpZGdlLT5mdW5jcy0+ZGV0YWNoKGJyaWRnZSk7Cj4gIAo+IEBAIC01MjIs NiArNTc4LDEwOCBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2NoYWluX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlk Z2VfY2hhaW5fZW5hYmxlKTsKPiAgCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9icmlk Z2VfZGVzdHJveV9zdGF0ZSgpIC0gRGVmYXVsdCBkZXN0cm95IHN0YXRlIGhlbHBlcgo+ICsgKiBA YnJpZGdlOiB0aGUgYnJpZGdlIHRoaXMgc3RhdGUgcmVmZXJzIHRvCj4gKyAqIEBzdGF0ZTogc3Rh dGUgb2JqZWN0IHRvIGRlc3Ryb3kKPiArICoKPiArICogSnVzdCBhIHNpbXBsZSBrZnJlZSgpIGZv ciBub3cuCj4gKyAqLwo+ICt2b2lkIGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kZXN0cm95X3N0 YXRlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkJICAgIHN0cnVjdCBkcm1fYnJp ZGdlX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJa2ZyZWUoc3RhdGUpOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0woZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2Rlc3Ryb3lfc3RhdGUpOwoKQXMgdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQgYXMgdGhlIGRlZmF1bHQgaW4KK2RybV9icmlkZ2VfYXRvbWljX2Rl c3Ryb3lfcHJpdl9zdGF0ZSgpLCBkb2VzIGl0IG5lZWQgdG8gYmUgZXhwb3J0ZWQgPwoKPiArCj4g Ky8qKgo+ICsgKiBfX2RybV9hdG9taWNfaGVscGVyX2JyaWRnZV9yZXNldCgpIC0gSW5pdGlhbGl6 ZSBhIGJyaWRnZSBzdGF0ZSB0byBpdHMKPiArICoJCQkJCWRlZmF1bHQKPiArICogQGJyaWRnZTog dGhlIGJyaWRnZSB0aGlzIHN0YXRlIGlzIHJlZmVycyB0bwoKcy9pcyByZWZlcnMvcmVmZXJzLwoK PiArICogQHN0YXRlOiBicmlkZ2Ugc3RhdGUgdG8gaW5pdGlhbGl6ZQo+ICsgKgo+ICsgKiBGb3Ig bm93IGl0J3MganVzdCBhIG1lbXNldCgwKSBwbHVzIGEgc3RhdGUtPmJyaWRnZSBhc3NpZ25tZW50 LiBNaWdodAo+ICsgKiBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlLgoKIk1pZ2h0IiBpcyBhbiB1 bmRlcnN0YXRlbWVudCA6LSkgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGV4dGVuZGVkIHdoZW4gdGhl CmRybV9icmlkZ2Vfc3RhdGUgc3RydWN0dXJlIHdpbGwgZ2FpbiBuZXcgZmllbGRzIHRoYXQgbmVl ZCB0byBiZQppbml0aWFsaXplZC4gSSB3b3VsZCBoYXZlIGRyb3BwZWQgdGhpcyBwYXJhZ3JhcGgs IHVwIHRvIHlvdS4gWW91IGNvdWxkCm1heWJlIHJlcGxhY2UgaXQgd2l0aAoKIkluaXRpYWxpemUg dGhlIGJyaWRnZSBzdGF0ZSB0byBkZWZhdWx0IHZhbHVlcy4gVGhpcyBpcyBtZWFudCB0byBiZQpj YWxsZWQgYnkgdGhlIGJyaWRnZSAmZHJtX3BsYW5lX2Z1bmNzLnJlc2V0IGhvb2sgZm9yIGJyaWRn ZXMgdGhhdApzdWJjbGFzcyB0aGUgYnJpZGdlIHN0YXRlLiIKCj4gKyAqLwo+ICt2b2lkIF9fZHJt X2F0b21pY19oZWxwZXJfYnJpZGdlX3Jlc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4g KwkJCQkgICAgICBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCW1lbXNl dChzdGF0ZSwgMCwgc2l6ZW9mKCpzdGF0ZSkpOwo+ICsJc3RhdGUtPmJyaWRnZSA9IGJyaWRnZTsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX3Jlc2V0KTsK PiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9icmlkZ2VfcmVzZXQoKSAtIGRlZmF1 bHQgJmRybV9wbGFuZV9mdW5jcy5yZXNldCBob29rIGZvcgo+ICsgKgkJCQkgICAgICBicmlkZ2Vz Cj4gKyAqIEBicmlkZ2U6IHRoZSBicmlkZ2UgdG8gcmVzZXQgc3RhdGUgb24KPiArICoKPiArICog UmVzZXRzIHRoZSBhdG9taWMgc3RhdGUgZm9yIEBicmlkZ2UgYnkgZnJlZWluZyB0aGUgc3RhdGUg cG9pbnRlciAod2hpY2gKPiArICogbWlnaHQgYmUgTlVMTCwgZS5nLiBhdCBkcml2ZXIgbG9hZCB0 aW1lKSBhbmQgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBzdGF0ZQo+ICsgKiBvYmplY3QuCgpUaGUg ZnVuY3Rpb24gZG9lc24ndCBmcmVlIHRoZSBzdGF0ZSBwb2ludGVyLi4uCgo+ICsgKgo+ICsgKiBS RVRVUk5TOgo+ICsgKiBBIHZhbGlkIGRybV9icmlkZ2Vfc3RhdGUgb2JqZWN0IGluIGNhc2Ugb2Yg c3VjY2VzcywgYW4gRVJSX1BUUigpCj4gKyAqIGdpdmluZyB0aGUgcmVhb24gb2YgdGhlIGZhaWx1 cmUgb3RoZXJ3aXNlLgoKcy9yZWFvbi9yZWFzb24vCgo+ICsgKi8KPiArc3RydWN0IGRybV9icmlk Z2Vfc3RhdGUgKgo+ICtkcm1fYXRvbWljX2hlbHBlcl9icmlkZ2VfcmVzZXQoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9z dGF0ZTsKPiArCj4gKwlicmlkZ2Vfc3RhdGUgPSBremFsbG9jKHNpemVvZigqYnJpZGdlX3N0YXRl KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWJyaWRnZV9zdGF0ZSkKPiArCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPiArCj4gKwlfX2RybV9hdG9taWNfaGVscGVyX2JyaWRnZV9yZXNldChicmlk Z2UsIGJyaWRnZV9zdGF0ZSk7Cj4gKwlyZXR1cm4gYnJpZGdlX3N0YXRlOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX3Jlc2V0KTsKPiArCj4gKy8qKgo+ICsg KiBfX2RybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kdXBsaWNhdGVfc3RhdGUoKSAtIENvcHkgdGhl IGNvbnRlbnQgb2YgdGhlCj4gKyAqCQkJCQkJICBjdXJyZW50IGJyaWRnZSBzdGF0ZSBpbnRvIGEK PiArICoJCQkJCQkgIG5ldyBvbmUKCk1heWJlICJDb3B5IGF0b21pYyBicmlkZ2Ugc3RhdGUiIHRv IG1hdGNoIHRoZSBvdGhlciBoZWxwZXJzID8KCj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBlbGVtZW50 IHRoZSBvbGQgYW5kIG5ldyBzdGF0ZXMgYXJlIHJlZmVycmluZyB0bwo+ICsgKiBAbmV3OiBuZXcg YnJpZGdlIHN0YXRlIHRvIGNvcHkgdG8KPiArICoKPiArICogU2hvdWxkIGJlIHVzZWQgYnkgY3Vz dG9tICZkcm1fYnJpZGdlX2Z1bmNzLmF0b21pY19kdXBsaWNhdGUoKSBpbXBsZW1lbnRhdGlvbgo+ ICsgKiB0byBjb3B5IHRoZSBwcmV2aW91cyBzdGF0ZSBpbnRvIHRoZSBuZXcgb2JqZWN0LgoKVGhl IGRvY3VtZW50YXRpb24gb2YgdGhlc2UgaGVscGVycyBzZWVtcyB0byBkaWZmZXIgZnJvbSB0aGUg b3RoZXIgYXRvbWljCnN0YXRlIGhlbHBlcnMuIFNob3VsZG4ndCB0aGV5IGJlIGNvbnNpc3RlbnQg PwoKPiArICovCj4gK3ZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9icmlkZ2VfZHVwbGljYXRlX3N0 YXRlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkJCXN0cnVjdCBkcm1fYnJpZGdl X3N0YXRlICpuZXcpCj4gK3sKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVw bGljYXRlX3N0YXRlKCZicmlkZ2UtPmJhc2UsCj4gKwkJCQkJCQkmbmV3LT5iYXNlKTsKPiArCW5l dy0+YnJpZGdlID0gYnJpZGdlOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hl bHBlcl9icmlkZ2VfZHVwbGljYXRlX3N0YXRlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWlj X2hlbHBlcl9kdXBsaWNhdGVfYnJpZGdlX3N0YXRlKCkgLSBEZWZhdWx0IGR1cGxpY2F0ZSBzdGF0 ZSBoZWxwZXIKPiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRhaW5pbmcgdGhlIHN0YXRlIHRvIGR1 cGxpY2F0ZQo+ICsgKgo+ICsgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mICZkcm1fYnJpZGdl X2Z1bmNzLmF0b21pY19kdXBsaWNhdGUoKS4KPiArICoKPiArICogUkVUVVJOUzoKPiArICogYSB2 YWxpZCBzdGF0ZSBvYmplY3Qgb3IgTlVMTCBpZiB0aGUgYWxsb2NhdGlvbiBmYWlscy4KPiArICov Cj4gK3N0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICoKPiArZHJtX2F0b21pY19oZWxwZXJfYnJpZGdl X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqbmV3Owo+ICsKPiArCWlmIChXQVJOX09OKCFicmlkZ2UtPmJh c2Uuc3RhdGUpKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCW5ldyA9IGt6YWxsb2Moc2l6ZW9m KCpuZXcpLCBHRlBfS0VSTkVMKTsKPiArCWlmIChuZXcpCj4gKwkJX19kcm1fYXRvbWljX2hlbHBl cl9icmlkZ2VfZHVwbGljYXRlX3N0YXRlKGJyaWRnZSwgbmV3KTsKPiArCj4gKwlyZXR1cm4gbmV3 Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0 ZV9zdGF0ZSk7CgpBcyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhcyB0aGUgZGVmYXVsdCBpbgpk cm1fYnJpZGdlX2F0b21pY19kdXBsaWNhdGVfcHJpdl9zdGF0ZSgpLCBkb2VzIGl0IG5lZWQgdG8g YmUgZXhwb3J0ZWQgPwoKPiArCj4gICNpZmRlZiBDT05GSUdfT0YKPiAgLyoqCj4gICAqIG9mX2Ry bV9maW5kX2JyaWRnZSAtIGZpbmQgdGhlIGJyaWRnZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZXZp Y2Ugbm9kZSBpbgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNs dWRlL2RybS9kcm1fYXRvbWljLmgKPiBpbmRleCA5MjdlMTIwNWQ3YWEuLjFjMGEwODIxNzcxMiAx MDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fYXRvbWljLmgKPiBAQCAtNjYwLDYgKzY2MCw5IEBAIF9fZHJtX2F0b21pY19nZXRfY3Vy cmVudF9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlyZXR1 cm4gcGxhbmUtPnN0YXRlOwo+ICB9Cj4gIAo+ICtpbnQgX19tdXN0X2NoZWNrCj4gK2RybV9hdG9t aWNfYWRkX2VuY29kZXJfYnJpZGdlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g KwkJCSAgICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ICBpbnQgX19tdXN0X2No ZWNrCj4gIGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICAJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRn ZS5oCj4gaW5kZXggMjM4ZTg0YWI2M2EzLi5hNjA4YzQ3ZDFkZTUgMTAwNjQ0Cj4gLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4g QEAgLTI1LDYgKzI1LDcgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gICNpbmNs dWRlIDxsaW51eC9jdHlwZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KCldoaWxl IGF0IGl0IEknZCBhZGQgYSBibGFuayBsaW5lIGFib3ZlLgoKPiAgI2luY2x1ZGUgPGRybS9kcm1f ZW5jb2Rlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9tb2Rlcy5oPgo+IEBAIC0zMyw2ICszNCwyMyBAQCBzdHJ1Y3QgZHJtX2JyaWRn ZTsKPiAgc3RydWN0IGRybV9icmlkZ2VfdGltaW5nczsKPiAgc3RydWN0IGRybV9wYW5lbDsKPiAg Cj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAtIEF0b21pYyBicmlkZ2Ugc3Rh dGUgb2JqZWN0Cj4gKyAqIEBiYXNlOiBpbmhlcml0IGZyb20gJmRybV9wcml2YXRlX3N0YXRlCj4g KyAqIEBicmlkZ2U6IHRoZSBicmlkZ2UgdGhpcyBzdGF0ZSByZWZlcnMgdG8KPiArICovCj4gK3N0 cnVjdCBkcm1fYnJpZGdlX3N0YXRlIHsKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNl Owo+ICsKPiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gK307Cj4gKwo+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICoKPiArZHJtX3ByaXZfdG9fYnJpZGdlX3N0 YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdikKPiArewo+ICsJcmV0dXJuIGNvbnRh aW5lcl9vZihwcml2LCBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSwgYmFzZSk7Cj4gK30KPiArCj4g IC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAtIGRybV9icmlkZ2UgY29udHJvbCBm dW5jdGlvbnMKPiAgICovCj4gQEAgLTMzOCw2ICszNTYsNDggQEAgc3RydWN0IGRybV9icmlkZ2Vf ZnVuY3Mgewo+ICAJICovCj4gIAl2b2lkICgqYXRvbWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwKPiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOwo+ICsKPiArCS8qKgo+ICsJICogQGF0b21pY19kdXBsaWNhdGVfc3RhdGU6Cj4gKwkgKgo+ ICsJICogRHVwbGljYXRlIHRoZSBjdXJyZW50IGJyaWRnZSBzdGF0ZSBvYmplY3QgKHdoaWNoIGlz IGd1YXJhbnRlZWQgdG8gYmUKPiArCSAqIG5vbi1OVUxMKS4KPiArCSAqCj4gKwkgKiBUaGUgYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSgpIGlzIG9wdGlvbmFsLCB0aGUgY29yZSBmYWxscyBiYWNrIG9u Cj4gKwkgKiAmZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0ZV9zdGF0ZSgpIHdoZW4g bm90IGltcGxlbWVudGVkLgo+ICsJICoKPiArCSAqIFJFVFVSTlM6Cj4gKwkgKiBBIHZhbGlkIGRy bV9icmlkZ2Vfc3RhdGUgb2JqZWN0IG9yIE5VTEwgaWYgdGhlIGFsbG9jYXRpb24gZmFpbHMuCj4g KwkgKi8KPiArCXN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICooKmF0b21pY19kdXBsaWNhdGVfc3Rh dGUpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICsKPiArCS8qKgo+ICsJICogQGF0b21p Y19kZXN0cm95X3N0YXRlOgo+ICsJICoKPiArCSAqIERlc3Ryb3kgYSBicmlkZ2Ugc3RhdGUgb2Jq ZWN0IHByZXZpb3VzbHkgYWxsb2NhdGVkIGJ5Cj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy5hdG9t aWNfZHVwbGljYXRlX3N0YXRlKCkuCj4gKwkgKgo+ICsJICogVGhlIGF0b21pY19kZXN0cm95X3N0 YXRlIGhvb2sgaXMgb3B0aW9uYWwsIHRoZSBjb3JlZiBmYWxscyBiYWNrIG9uCgpzL2NvcmVmL2Nv cmUvCgo+ICsJICogJmRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kZXN0cm95X3N0YXRlKCkgd2hl biBub3QgaW1wbGVtZW50ZWQuCj4gKwkgKi8KPiArCXZvaWQgKCphdG9taWNfZGVzdHJveV9zdGF0 ZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJCSAgICAgc3RydWN0IGRybV9icmlk Z2Vfc3RhdGUgKnN0YXRlKTsKPiArCj4gKwkvKioKPiArCSAqIEBhdG9taWNfcmVzZXQ6Cj4gKwkg Kgo+ICsJICogUmVzZXQgdGhlIGJyaWRnZSB0byBhIHByZWRlZmluZWQgc3RhdGUgKG9yIHJldHJp ZXZlIGl0cyBjdXJyZW50Cj4gKwkgKiBzdGF0ZSkgYW5kIHJldHVybiBhICZkcm1fYnJpZGdlX3N0 YXRlIG9iamVjdCBtYXRjaGluZyB0aGlzIHN0YXRlLgo+ICsJICogVGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQgYXQgYXR0YWNoIHRpbWUuCj4gKwkgKgo+ICsJICogVGhlIGF0b21pY19yZXNldCBob29r IGlzIG9wdGlvbmFsLCB0aGUgY29yZSBmYWxscyBiYWNrIG9uCj4gKwkgKiAmZHJtX2F0b21pY19o ZWxwZXJfYnJpZGdlX3Jlc2V0KCkgd2hlbiBub3QgaW1wbGVtZW50ZWQuCj4gKwkgKgo+ICsJICog UkVUVVJOUzoKPiArCSAqIEEgdmFsaWQgZHJtX2JyaWRnZV9zdGF0ZSBvYmplY3QgaW4gY2FzZSBv ZiBzdWNjZXNzLCBhbiBFUlJfUFRSKCkKPiArCSAqIGdpdmluZyB0aGUgcmVhb24gb2YgdGhlIGZh aWx1cmUgb3RoZXJ3aXNlLgoKcy9yZWFvbi9yZWFzb24vCgo+ICsJICovCj4gKwlzdHJ1Y3QgZHJt X2JyaWRnZV9zdGF0ZSAqKCphdG9taWNfcmVzZXQpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Owo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTM4MCw2ICs0NDAsOCBAQCBzdHJ1Y3QgZHJtX2JyaWRn ZV90aW1pbmdzIHsKPiAgICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFsIERSTSBicmlkZ2Ug Y29udHJvbCBzdHJ1Y3R1cmUKPiAgICovCj4gIHN0cnVjdCBkcm1fYnJpZGdlIHsKPiArCS8qKiBA YmFzZTogaW5oZXJpdCBmcm9tICZkcm1fcHJpdmF0ZV9vYmplY3QgKi8KPiArCXN0cnVjdCBkcm1f cHJpdmF0ZV9vYmogYmFzZTsKPiAgCS8qKiBAZGV2OiBEUk0gZGV2aWNlIHRoaXMgYnJpZGdlIGJl bG9uZ3MgdG8gKi8KPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gIAkvKiogQGVuY29kZXI6 IGVuY29kZXIgdG8gd2hpY2ggdGhpcyBicmlkZ2UgaXMgY29ubmVjdGVkICovCj4gQEAgLTQwNCw2 ICs0NjYsMTIgQEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ICAJdm9pZCAqZHJpdmVyX3ByaXZhdGU7 Cj4gIH07Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fYnJpZGdlICoKPiArZHJtX3By aXZfdG9fYnJpZGdlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKnByaXYpCj4gK3sKPiArCXJldHVy biBjb250YWluZXJfb2YocHJpdiwgc3RydWN0IGRybV9icmlkZ2UsIGJhc2UpOwo+ICt9Cj4gKwo+ ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICB2b2lk IGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICBzdHJ1Y3Qg ZHJtX2JyaWRnZSAqb2ZfZHJtX2ZpbmRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwo+ IEBAIC00NzUsNiArNTQzLDU2IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfY2hhaW5fcHJlX2Vu YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICB2b2lkIGRybV9hdG9taWNfYnJpZGdl X2NoYWluX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICAJCQkJICAgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAo+ICt2b2lkIF9fZHJtX2F0b21pY19oZWxw ZXJfYnJpZGdlX3Jlc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkgICAgICBz dHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqc3RhdGUpOwo+ICtzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0 ZSAqCj4gK2RybV9hdG9taWNfaGVscGVyX2JyaWRnZV9yZXNldChzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKTsKPiArdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9icmlkZ2VfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJCSAgICBzdHJ1Y3QgZHJtX2JyaWRnZV9z dGF0ZSAqc3RhdGUpOwo+ICt2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0 ZV9zdGF0ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJCQlzdHJ1Y3QgZHJtX2Jy aWRnZV9zdGF0ZSAqbmV3KTsKPiArc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKgo+ICtkcm1fYXRv bWljX2hlbHBlcl9icmlkZ2VfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpOwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqCj4gK2Ry bV9hdG9taWNfZ2V0X2JyaWRnZV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X3ByaXZhdGVfc3RhdGUgKm9ial9zdGF0ZTsKPiArCj4gKwlvYmpfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9wcml2YXRlX29ial9zdGF0ZShzdGF0ZSwgJmJyaWRnZS0+YmFzZSk7Cj4gKwlpZiAoIW9i al9zdGF0ZSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gZHJtX3ByaXZfdG9fYnJp ZGdlX3N0YXRlKG9ial9zdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRy bV9icmlkZ2Vfc3RhdGUgKgo+ICtkcm1fYXRvbWljX2dldF9vbGRfYnJpZGdlX3N0YXRlKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCXN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpCj4gK3sKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqb2JqX3N0YXRlOwo+ICsKPiAr CW9ial9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X29sZF9wcml2YXRlX29ial9zdGF0ZShzdGF0ZSwg JmJyaWRnZS0+YmFzZSk7Cj4gKwlpZiAoIW9ial9zdGF0ZSkKPiArCQlyZXR1cm4gTlVMTDsKPiAr Cj4gKwlyZXR1cm4gZHJtX3ByaXZfdG9fYnJpZGdlX3N0YXRlKG9ial9zdGF0ZSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKgo+ICtkcm1fYXRvbWlj X2dldF9uZXdfYnJpZGdlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAr CQkJCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCBkcm1fcHJpdmF0 ZV9zdGF0ZSAqb2JqX3N0YXRlOwo+ICsKPiArCW9ial9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25l d19wcml2YXRlX29ial9zdGF0ZShzdGF0ZSwgJmJyaWRnZS0+YmFzZSk7Cj4gKwlpZiAoIW9ial9z dGF0ZSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gZHJtX3ByaXZfdG9fYnJpZGdl X3N0YXRlKG9ial9zdGF0ZSk7Cj4gK30KPiArCj4gICNpZmRlZiBDT05GSUdfRFJNX1BBTkVMX0JS SURHRQo+ICBzdHJ1Y3QgZHJtX2JyaWRnZSAqZHJtX3BhbmVsX2JyaWRnZV9hZGQoc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpOwo+ICBzdHJ1Y3QgZHJtX2JyaWRnZSAqZHJtX3BhbmVsX2JyaWRnZV9h ZGRfdHlwZWQoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwsCgotLSAKUmVnYXJkcywKCkxhdXJlbnQg UGluY2hhcnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs