From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v4 9/9] drm/bridge: cdns: Convert to phy framework Date: Thu, 17 Jan 2019 08:53:48 -0500 Message-ID: <20190117135348.GC114153@art_vandelay> References: <8693505fc758fbf3958e1c8b2fe481ec3223138d.1547026369.git-series.maxime.ripard@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb1-xb42.google.com (mail-yb1-xb42.google.com [IPv6:2607:f8b0:4864:20::b42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 800646F467 for ; Thu, 17 Jan 2019 13:53:50 +0000 (UTC) Received: by mail-yb1-xb42.google.com with SMTP id 2so3012360ybw.4 for ; Thu, 17 Jan 2019 05:53:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <8693505fc758fbf3958e1c8b2fe481ec3223138d.1547026369.git-series.maxime.ripard@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maxime Ripard Cc: Rafal Ciepiela , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Kishon Vijay Abraham I , Krzysztof Witos , Chen-Yu Tsai , Laurent Pinchart , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMDksIDIwMTkgYXQgMTA6MzM6MjZBTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBOb3cgdGhhdCB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCBpbiB0aGUgcGh5IGZy YW1ld29yayB0byBhbGxvdyB0byB0dW5lCj4gdGhlIHBoeSBwYXJhbWV0ZXJzLCBsZXQncyBjb252 ZXJ0IHRoZSBDYWRlbmNlIERTSSBicmlkZ2UgdG8gdGhhdCBBUEkKPiBpbnN0ZWFkIG9mIGNyZWF0 aW5nIGEgYWQtaG9jIGRyaXZlciBmb3IgaXRzIHBoeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYXhp bWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29tPgoKQXNpZGUgZnJvbSB0aGUgd2Fr ZXVwIGNoYW5nZSBtZW50aW9uZWQgaW4gcGF0Y2ggOCwKCkFja2VkLWJ5OiBTZWFuIFBhdWwgPHNl YW5AcG9vcmx5LnJ1bj4KCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcg ICAgfCAgIDEgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jZG5zLWRzaS5jIHwgNDg1ICsr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9waHkvY2FkZW5jZS9jZG5z LWRwaHkuYyAgIHwgICAyICstCj4gIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwg NDI3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBpbmRleCAyZmVlNDdi MGQ1MGIuLjg4NDBmMzk2YTdiNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBAQCAtMzAs NiArMzAsNyBAQCBjb25maWcgRFJNX0NETlNfRFNJCj4gIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIK PiAgCXNlbGVjdCBEUk1fTUlQSV9EU0kKPiAgCXNlbGVjdCBEUk1fUEFORUxfQlJJREdFCj4gKwlz ZWxlY3QgR0VORVJJQ19QSFlfTUlQSV9EUEhZCj4gIAlkZXBlbmRzIG9uIE9GCj4gIAloZWxwCj4g IAkgIFN1cHBvcnQgQ2FkZW5jZSBEUEkgdG8gRFNJIGJyaWRnZS4gVGhpcyBpcyBhbiBpbnRlcm5h bAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NkbnMtZHNpLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2NkbnMtZHNpLmMKPiBpbmRleCAzYWM2ZGQ1MjRiNmQuLjdiNDMy MjU3ZmZiZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NkbnMtZHNpLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2NkbnMtZHNpLmMKPiBAQCAtMjEsNiArMjEs OSBAQAo+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+ICAjaW5jbHVkZSA8bGludXgv cmVzZXQuaD4KPiAgCj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9waHkvcGh5LW1pcGktZHBoeS5oPgo+ICsKPiAgI2RlZmluZSBJUF9DT05GCQkJCTB4MAo+ ICAjZGVmaW5lIFNQX0hTX0ZJRk9fREVQVEgoeCkJCSgoKHgpICYgR0VOTUFTSygzMCwgMjYpKSA+ PiAyNikKPiAgI2RlZmluZSBTUF9MUF9GSUZPX0RFUFRIKHgpCQkoKCh4KSAmIEdFTk1BU0soMjUs IDIxKSkgPj4gMjEpCj4gQEAgLTQxOSw0NCArNDIyLDExIEBACj4gICNkZWZpbmUgRFNJX05VTExf RlJBTUVfT1ZFUkhFQUQJCTYKPiAgI2RlZmluZSBEU0lfRU9UX1BLVF9TSVpFCQk0Cj4gIAo+IC0j ZGVmaW5lIFJFR19XQUtFVVBfVElNRV9OUwkJODAwCj4gLSNkZWZpbmUgRFBIWV9QTExfUkFURV9I WgkJMTA4MDAwMDAwCj4gLQo+IC0vKiBEUEhZIHJlZ2lzdGVycyAqLwo+IC0jZGVmaW5lIERQSFlf UE1BX0NNTihyZWcpCQkocmVnKQo+IC0jZGVmaW5lIERQSFlfUE1BX0xDTEsocmVnKQkJKDB4MTAw ICsgKHJlZykpCj4gLSNkZWZpbmUgRFBIWV9QTUFfTERBVEEobGFuZSwgcmVnKQkoMHgyMDAgKyAo KGxhbmUpICogMHgxMDApICsgKHJlZykpCj4gLSNkZWZpbmUgRFBIWV9QTUFfUkNMSyhyZWcpCQko MHg2MDAgKyAocmVnKSkKPiAtI2RlZmluZSBEUEhZX1BNQV9SREFUQShsYW5lLCByZWcpCSgweDcw MCArICgobGFuZSkgKiAweDEwMCkgKyAocmVnKSkKPiAtI2RlZmluZSBEUEhZX1BDUyhyZWcpCQkJ KDB4YjAwICsgKHJlZykpCj4gLQo+IC0jZGVmaW5lIERQSFlfQ01OX1NTTQkJCURQSFlfUE1BX0NN TigweDIwKQo+IC0jZGVmaW5lIERQSFlfQ01OX1NTTV9FTgkJCUJJVCgwKQo+IC0jZGVmaW5lIERQ SFlfQ01OX1RYX01PREVfRU4JCUJJVCg5KQo+IC0KPiAtI2RlZmluZSBEUEhZX0NNTl9QV00JCQlE UEhZX1BNQV9DTU4oMHg0MCkKPiAtI2RlZmluZSBEUEhZX0NNTl9QV01fRElWKHgpCQkoKHgpIDw8 IDIwKQo+IC0jZGVmaW5lIERQSFlfQ01OX1BXTV9MT1coeCkJCSgoeCkgPDwgMTApCj4gLSNkZWZp bmUgRFBIWV9DTU5fUFdNX0hJR0goeCkJCSh4KQo+IC0KPiAtI2RlZmluZSBEUEhZX0NNTl9GQkRJ VgkJCURQSFlfUE1BX0NNTigweDRjKQo+IC0jZGVmaW5lIERQSFlfQ01OX0ZCRElWX1ZBTChsb3cs IGhpZ2gpCSgoKGhpZ2gpIDw8IDExKSB8ICgobG93KSA8PCAyMikpCj4gLSNkZWZpbmUgRFBIWV9D TU5fRkJESVZfRlJPTV9SRUcJCShCSVQoMTApIHwgQklUKDIxKSkKPiAtCj4gLSNkZWZpbmUgRFBI WV9DTU5fT1BJUERJVgkJRFBIWV9QTUFfQ01OKDB4NTApCj4gLSNkZWZpbmUgRFBIWV9DTU5fSVBE SVZfRlJPTV9SRUcJCUJJVCgwKQo+IC0jZGVmaW5lIERQSFlfQ01OX0lQRElWKHgpCQkoKHgpIDw8 IDEpCj4gLSNkZWZpbmUgRFBIWV9DTU5fT1BESVZfRlJPTV9SRUcJCUJJVCg2KQo+IC0jZGVmaW5l IERQSFlfQ01OX09QRElWKHgpCQkoKHgpIDw8IDcpCj4gLQo+IC0jZGVmaW5lIERQSFlfUFNNX0NG RwkJCURQSFlfUENTKDB4NCkKPiAtI2RlZmluZSBEUEhZX1BTTV9DRkdfRlJPTV9SRUcJCUJJVCgw KQo+IC0jZGVmaW5lIERQSFlfUFNNX0NMS19ESVYoeCkJCSgoeCkgPDwgMSkKPiAtCj4gIHN0cnVj dCBjZG5zX2RzaV9vdXRwdXQgewo+ICAJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZGV2Owo+ICAJ c3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gIAlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+ ICsJdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzIHBoeV9vcHRzOwo+ICB9Owo+ICAKPiAgZW51bSBj ZG5zX2RzaV9pbnB1dF9pZCB7Cj4gQEAgLTQ2NSwxNCArNDM1LDYgQEAgZW51bSBjZG5zX2RzaV9p bnB1dF9pZCB7Cj4gIAlDRE5TX0RTQ19JTlBVVCwKPiAgfTsKPiAgCj4gLXN0cnVjdCBjZG5zX2Rw aHlfY2ZnIHsKPiAtCXU4IHBsbF9pcGRpdjsKPiAtCXU4IHBsbF9vcGRpdjsKPiAtCXUxNiBwbGxf ZmJkaXY7Cj4gLQl1bnNpZ25lZCBsb25nIGxhbmVfYnBzOwo+IC0JdW5zaWduZWQgaW50IG5sYW5l czsKPiAtfTsKPiAtCj4gIHN0cnVjdCBjZG5zX2RzaV9jZmcgewo+ICAJdW5zaWduZWQgaW50IGhm cDsKPiAgCXVuc2lnbmVkIGludCBoc2E7Cj4gQEAgLTQ4MSwzNCArNDQzLDYgQEAgc3RydWN0IGNk bnNfZHNpX2NmZyB7Cj4gIAl1bnNpZ25lZCBpbnQgaHRvdGFsOwo+ICB9Owo+ICAKPiAtc3RydWN0 IGNkbnNfZHBoeTsKPiAtCj4gLWVudW0gY2Ruc19kcGh5X2Nsa19sYW5lX2NmZyB7Cj4gLQlEUEhZ X0NMS19DRkdfTEVGVF9EUklWRVNfQUxMID0gMCwKPiAtCURQSFlfQ0xLX0NGR19MRUZUX0RSSVZF U19SSUdIVCA9IDEsCj4gLQlEUEhZX0NMS19DRkdfTEVGVF9EUklWRVNfTEVGVCA9IDIsCj4gLQlE UEhZX0NMS19DRkdfUklHSFRfRFJJVkVTX0FMTCA9IDMsCj4gLX07Cj4gLQo+IC1zdHJ1Y3QgY2Ru c19kcGh5X29wcyB7Cj4gLQlpbnQgKCpwcm9iZSkoc3RydWN0IGNkbnNfZHBoeSAqZHBoeSk7Cj4g LQl2b2lkICgqcmVtb3ZlKShzdHJ1Y3QgY2Ruc19kcGh5ICpkcGh5KTsKPiAtCXZvaWQgKCpzZXRf cHNtX2Rpdikoc3RydWN0IGNkbnNfZHBoeSAqZHBoeSwgdTggZGl2KTsKPiAtCXZvaWQgKCpzZXRf Y2xrX2xhbmVfY2ZnKShzdHJ1Y3QgY2Ruc19kcGh5ICpkcGh5LAo+IC0JCQkJIGVudW0gY2Ruc19k cGh5X2Nsa19sYW5lX2NmZyBjZmcpOwo+IC0Jdm9pZCAoKnNldF9wbGxfY2ZnKShzdHJ1Y3QgY2Ru c19kcGh5ICpkcGh5LAo+IC0JCQkgICAgY29uc3Qgc3RydWN0IGNkbnNfZHBoeV9jZmcgKmNmZyk7 Cj4gLQl1bnNpZ25lZCBsb25nICgqZ2V0X3dha2V1cF90aW1lX25zKShzdHJ1Y3QgY2Ruc19kcGh5 ICpkcGh5KTsKPiAtfTsKPiAtCj4gLXN0cnVjdCBjZG5zX2RwaHkgewo+IC0Jc3RydWN0IGNkbnNf ZHBoeV9jZmcgY2ZnOwo+IC0Jdm9pZCBfX2lvbWVtICpyZWdzOwo+IC0Jc3RydWN0IGNsayAqcHNt X2NsazsKPiAtCXN0cnVjdCBjbGsgKnBsbF9yZWZfY2xrOwo+IC0JY29uc3Qgc3RydWN0IGNkbnNf ZHBoeV9vcHMgKm9wczsKPiAtfTsKPiAtCj4gIHN0cnVjdCBjZG5zX2RzaV9pbnB1dCB7Cj4gIAll bnVtIGNkbnNfZHNpX2lucHV0X2lkIGlkOwo+ICAJc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwo+ IEBAIC01MjYsNyArNDYwLDcgQEAgc3RydWN0IGNkbnNfZHNpIHsKPiAgCXN0cnVjdCByZXNldF9j b250cm9sICpkc2lfcF9yc3Q7Cj4gIAlzdHJ1Y3QgY2xrICpkc2lfc3lzX2NsazsKPiAgCWJvb2wg bGlua19pbml0aWFsaXplZDsKPiAtCXN0cnVjdCBjZG5zX2RwaHkgKmRwaHk7Cj4gKwlzdHJ1Y3Qg cGh5ICpkcGh5Owo+ICB9Owo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY2Ruc19kc2kgKmlu cHV0X3RvX2RzaShzdHJ1Y3QgY2Ruc19kc2lfaW5wdXQgKmlucHV0KQo+IEBAIC01NTAsMTc1ICs0 ODQsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1vZGVfdG9fZHBpX2hmcChjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiAgCXJldHVybiBtb2RlLT5jcnRjX2hzeW5jX3N0YXJ0 IC0gbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBjZG5zX2RzaV9n ZXRfZHBoeV9wbGxfY2ZnKHN0cnVjdCBjZG5zX2RwaHkgKmRwaHksCj4gLQkJCQkgICAgIHN0cnVj dCBjZG5zX2RwaHlfY2ZnICpjZmcsCj4gLQkJCQkgICAgIHVuc2lnbmVkIGludCBkcGlfaHRvdGFs LAo+IC0JCQkJICAgICB1bnNpZ25lZCBpbnQgZHBpX2JwcCwKPiAtCQkJCSAgICAgdW5zaWduZWQg aW50IGRwaV9oeiwKPiAtCQkJCSAgICAgdW5zaWduZWQgaW50IGRzaV9odG90YWwsCj4gLQkJCQkg ICAgIHVuc2lnbmVkIGludCBkc2lfbmxhbmVzLAo+IC0JCQkJICAgICB1bnNpZ25lZCBpbnQgKmRz aV9oZnBfZXh0KQo+IC17Cj4gLQl1NjQgZGxhbmVfYnBzLCBkbGFuZV9icHNfbWF4LCBmYmRpdiwg ZmJkaXZfbWF4LCBhZGpfZHNpX2h0b3RhbDsKPiAtCXVuc2lnbmVkIGxvbmcgcGxsX3JlZl9oeiA9 IGNsa19nZXRfcmF0ZShkcGh5LT5wbGxfcmVmX2Nsayk7Cj4gLQo+IC0JbWVtc2V0KGNmZywgMCwg c2l6ZW9mKCpjZmcpKTsKPiAtCj4gLQljZmctPm5sYW5lcyA9IGRzaV9ubGFuZXM7Cj4gLQo+IC0J aWYgKHBsbF9yZWZfaHogPCA5NjAwMDAwIHx8IHBsbF9yZWZfaHogPj0gMTUwMDAwMDAwKQo+IC0J CXJldHVybiAtRUlOVkFMOwo+IC0JZWxzZSBpZiAocGxsX3JlZl9oeiA8IDE5MjAwMDAwKQo+IC0J CWNmZy0+cGxsX2lwZGl2ID0gMTsKPiAtCWVsc2UgaWYgKHBsbF9yZWZfaHogPCAzODQwMDAwMCkK PiAtCQljZmctPnBsbF9pcGRpdiA9IDI7Cj4gLQllbHNlIGlmIChwbGxfcmVmX2h6IDwgNzY4MDAw MDApCj4gLQkJY2ZnLT5wbGxfaXBkaXYgPSA0Owo+IC0JZWxzZQo+IC0JCWNmZy0+cGxsX2lwZGl2 ID0gODsKPiAtCj4gLQkvKgo+IC0JICogTWFrZSBzdXJlIERTSSBodG90YWwgaXMgYWxpZ25lZCBv biBhIGxhbmUgYm91bmRhcnkgd2hlbiBjYWxjdWxhdGluZwo+IC0JICogdGhlIGV4cGVjdGVkIGRh dGEgcmF0ZS4gVGhpcyBpcyBkb25lIGJ5IGV4dGVuZGluZyBIRlAgaW4gY2FzZSBvZgo+IC0JICog bWlzYWxpZ25tZW50Lgo+IC0JICovCj4gLQlhZGpfZHNpX2h0b3RhbCA9IGRzaV9odG90YWw7Cj4g LQlpZiAoZHNpX2h0b3RhbCAlIGRzaV9ubGFuZXMpCj4gLQkJYWRqX2RzaV9odG90YWwgKz0gZHNp X25sYW5lcyAtIChkc2lfaHRvdGFsICUgZHNpX25sYW5lcyk7Cj4gLQo+IC0JZGxhbmVfYnBzID0g KHU2NClkcGlfaHogKiBhZGpfZHNpX2h0b3RhbDsKPiAtCj4gLQkvKiBkYXRhIHJhdGUgaW4gYnl0 ZXMvc2VjIGlzIG5vdCBhbiBpbnRlZ2VyLCByZWZ1c2UgdGhlIG1vZGUuICovCj4gLQlpZiAoZG9f ZGl2KGRsYW5lX2JwcywgZHNpX25sYW5lcyAqIGRwaV9odG90YWwpKQo+IC0JCXJldHVybiAtRUlO VkFMOwo+IC0KPiAtCS8qIGRhdGEgcmF0ZSB3YXMgaW4gYnl0ZXMvc2VjLCBjb252ZXJ0IHRvIGJp dHMvc2VjLiAqLwo+IC0JZGxhbmVfYnBzICo9IDg7Cj4gLQo+IC0JaWYgKGRsYW5lX2JwcyA+IDI1 MDAwMDAwMDBVTCB8fCBkbGFuZV9icHMgPCAxNjAwMDAwMDBVTCkKPiAtCQlyZXR1cm4gLUVJTlZB TDsKPiAtCWVsc2UgaWYgKGRsYW5lX2JwcyA+PSAxMjUwMDAwMDAwKQo+IC0JCWNmZy0+cGxsX29w ZGl2ID0gMTsKPiAtCWVsc2UgaWYgKGRsYW5lX2JwcyA+PSA2MzAwMDAwMDApCj4gLQkJY2ZnLT5w bGxfb3BkaXYgPSAyOwo+IC0JZWxzZSBpZiAoZGxhbmVfYnBzID49IDMyMDAwMDAwMCkKPiAtCQlj ZmctPnBsbF9vcGRpdiA9IDQ7Cj4gLQllbHNlIGlmIChkbGFuZV9icHMgPj0gMTYwMDAwMDAwKQo+ IC0JCWNmZy0+cGxsX29wZGl2ID0gODsKPiAtCj4gLQkvKgo+IC0JICogQWxsb3cgYSBkZXZpYXRp b24gb2YgMC4yJSBvbiB0aGUgcGVyLWxhbmUgZGF0YSByYXRlIHRvIHRyeSB0bwo+IC0JICogcmVj b3ZlciBhIHBvdGVudGlhbCBtaXNtYXRjaCBiZXR3ZWVuIERQSSBhbmQgUFBJIGNsa3MuCj4gLQkg Ki8KPiAtCWRsYW5lX2Jwc19tYXggPSBkbGFuZV9icHMgKyBESVZfUk9VTkRfRE9XTl9VTEwoZGxh bmVfYnBzLCA1MDApOwo+IC0JZmJkaXZfbWF4ID0gRElWX1JPVU5EX0RPV05fVUxMKGRsYW5lX2Jw c19tYXggKiAyICoKPiAtCQkJCSAgICAgICBjZmctPnBsbF9vcGRpdiAqIGNmZy0+cGxsX2lwZGl2 LAo+IC0JCQkJICAgICAgIHBsbF9yZWZfaHopOwo+IC0JZmJkaXYgPSBESVZfUk9VTkRfVVBfVUxM KGRsYW5lX2JwcyAqIDIgKiBjZmctPnBsbF9vcGRpdiAqCj4gLQkJCQkgY2ZnLT5wbGxfaXBkaXYs Cj4gLQkJCQkgcGxsX3JlZl9oeik7Cj4gLQo+IC0JLyoKPiAtCSAqIEl0ZXJhdGUgb3ZlciBhbGwg YWNjZXB0YWJsZSBmYmRpdiBhbmQgdHJ5IHRvIGZpbmQgYW4gYWRqdXN0ZWQgRFNJCj4gLQkgKiBo dG90YWwgbGVuZ3RoIHByb3ZpZGluZyBhbiBleGFjdCBtYXRjaC4KPiAtCSAqCj4gLQkgKiBOb3Rl IHRoYXQgd2UgY291bGQgZG8gc29tZXRoaW5nIGV2ZW4gdHJpY2tpZXIgYnkgcmVseWluZyBvbiB0 aGUgZmFjdAo+IC0JICogdGhhdCBhIG5ldyBsaW5lIGlzIG5vdCBuZWNlc3NhcmlseSBhbGlnbmVk IG9uIGEgbGFuZSBib3VuZGFyeSwgc28sCj4gLQkgKiBieSBtYWtpbmcgYWRqX2RzaV9odG90YWwg bm9uIGFsaWduZWQgb24gYSBkc2lfbGFuZXMgd2UgY2FuIGltcHJvdmUgYQo+IC0JICogYml0IHRo ZSBwcmVjaXNpb24uIFdpdGggdGhpcywgdGhlIHN0ZXAgd291bGQgYmUKPiAtCSAqCj4gLQkgKglw bGxfcmVmX2h6IC8gKDIgKiBvcGRpdiAqIGlwZGl2ICogbmxhbmVzKQo+IC0JICoKPiAtCSAqIGlu c3RlYWQgb2YKPiAtCSAqCj4gLQkgKglwbGxfcmVmX2h6IC8gKDIgKiBvcGRpdiAqIGlwZGl2KQo+ IC0JICoKPiAtCSAqIFRoZSBkcmF3YmFjayBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgd2Ugd291 bGQgbmVlZCB0byBtYWtlIHN1cmUgdGhlCj4gLQkgKiBudW1iZXIgb3IgbGluZXMgaXMgYSBtdWx0 aXBsZSBvZiB0aGUgcmVhbGlnbm1lbnQgcGVyaW9kaWNpdHkgd2hpY2ggaXMKPiAtCSAqIGEgZnVu Y3Rpb24gb2YgdGhlIG51bWJlciBvZiBsYW5lcyBhbmQgdGhlIG9yaWdpbmFsIG1pc2FsaWdubWVu dC4gRm9yCj4gLQkgKiBleGFtcGxlLCBmb3IgTkxBTkVTID0gNCBhbmQgSFRPVEFMICUgTkxBTkVT ID0gMywgaXQgdGFrZXMgNCBsaW5lcwo+IC0JICogdG8gcmVhbGlnbiBvbiBhIGxhbmU6Cj4gLQkg KiBMSU5FIDA6IGV4cGVjdGVkIG51bWJlciBvZiBieXRlcywgc3RhcnRzIGVtaXR0aW5nIGZpcnN0 IGJ5dGUgb2YKPiAtCSAqCSAgIExJTkUgMSBvbiBMQU5FIDMKPiAtCSAqIExJTkUgMTogZXhwZWN0 ZWQgbnVtYmVyIG9mIGJ5dGVzLCBzdGFydHMgZW1pdHRpbmcgZmlyc3QgMiBieXRlcyBvZgo+IC0J ICoJICAgTElORSAyIG9uIExBTkVTIDIgYW5kIDMKPiAtCSAqIExJTkUgMjogZXhwZWN0ZWQgbnVt YmVyIG9mIGJ5dGVzLCBzdGFydHMgZW1pdHRpbmcgZmlyc3QgMyBieXRlcyBvZgo+IC0JICoJICAg b2YgTElORSAzIG9uIExBTkVTIDEsIDIgYW5kIDMKPiAtCSAqIExJTkUgMzogb25lIGJ5dGUgbGVz cywgbm93IHRoaW5ncyBhcmUgcmVhbGlnbmVkIG9uIExBTkUgMCBmb3IgTElORSA0Cj4gLQkgKgo+ IC0JICogSSBmaWd1cmVkIHRoaXMgZXh0cmEgY29tcGxleGl0eSB3YXMgbm90IHdvcnRoIHRoZSBi ZW5lZml0LCBidXQgaWYKPiAtCSAqIHNvbWVvbmUgcmVhbGx5IGhhcyB1bmZpeGFibGUgbWlzbWF0 Y2gsIHRoYXQgd291bGQgYmUgc29tZXRoaW5nIHRvCj4gLQkgKiBpbnZlc3RpZ2F0ZS4KPiAtCSAq Lwo+IC0JZm9yICg7IGZiZGl2IDw9IGZiZGl2X21heDsgZmJkaXYrKykgewo+IC0JCXUzMiByZW07 Cj4gLQo+IC0JCWFkal9kc2lfaHRvdGFsID0gKHU2NClmYmRpdiAqIHBsbF9yZWZfaHogKiBkc2lf bmxhbmVzICoKPiAtCQkJCSBkcGlfaHRvdGFsOwo+IC0KPiAtCQkvKgo+IC0JCSAqIERvIHRoZSBk aXZpc2lvbiBpbiAyIHN0ZXBzIHRvIGF2b2lkIGFuIG92ZXJmbG93IG9uIHRoZQo+IC0JCSAqIGRp dmlkZXIuCj4gLQkJICovCj4gLQkJcmVtID0gZG9fZGl2KGFkal9kc2lfaHRvdGFsLCBkcGlfaHop Owo+IC0JCWlmIChyZW0pCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlyZW0gPSBkb19kaXYoYWRq X2RzaV9odG90YWwsCj4gLQkJCSAgICAgY2ZnLT5wbGxfb3BkaXYgKiBjZmctPnBsbF9pcGRpdiAq IDIgKiA4KTsKPiAtCQlpZiAocmVtKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJY2ZnLT5wbGxf ZmJkaXYgPSBmYmRpdjsKPiAtCQkqZHNpX2hmcF9leHQgPSBhZGpfZHNpX2h0b3RhbCAtIGRzaV9o dG90YWw7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4gLQo+IC0JLyogTm8gbWF0Y2gsIGxldCdzIGp1c3Qg cmVqZWN0IHRoZSBkaXNwbGF5IG1vZGUuICovCj4gLQlpZiAoIWNmZy0+cGxsX2ZiZGl2KQo+IC0J CXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWRsYW5lX2JwcyA9IERJVl9ST1VORF9ET1dOX1VMTCgo dTY0KWRwaV9oeiAqIGFkal9kc2lfaHRvdGFsICogOCwKPiAtCQkJCSAgICAgICBkc2lfbmxhbmVz ICogZHBpX2h0b3RhbCk7Cj4gLQljZmctPmxhbmVfYnBzID0gZGxhbmVfYnBzOwo+IC0KPiAtCXJl dHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGNkbnNfZHBoeV9zZXR1cF9wc20oc3RydWN0 IGNkbnNfZHBoeSAqZHBoeSkKPiAtewo+IC0JdW5zaWduZWQgbG9uZyBwc21fY2xrX2h6ID0gY2xr X2dldF9yYXRlKGRwaHktPnBzbV9jbGspOwo+IC0JdW5zaWduZWQgbG9uZyBwc21fZGl2Owo+IC0K PiAtCWlmICghcHNtX2Nsa19oeiB8fCBwc21fY2xrX2h6ID4gMTAwMDAwMDAwKQo+IC0JCXJldHVy biAtRUlOVkFMOwo+IC0KPiAtCXBzbV9kaXYgPSBESVZfUk9VTkRfQ0xPU0VTVChwc21fY2xrX2h6 LCAxMDAwMDAwKTsKPiAtCWlmIChkcGh5LT5vcHMtPnNldF9wc21fZGl2KQo+IC0JCWRwaHktPm9w cy0+c2V0X3BzbV9kaXYoZHBoeSwgcHNtX2Rpdik7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gLXN0YXRpYyB2b2lkIGNkbnNfZHBoeV9zZXRfY2xrX2xhbmVfY2ZnKHN0cnVjdCBjZG5zX2Rw aHkgKmRwaHksCj4gLQkJCQkgICAgICAgZW51bSBjZG5zX2RwaHlfY2xrX2xhbmVfY2ZnIGNmZykK PiAtewo+IC0JaWYgKGRwaHktPm9wcy0+c2V0X2Nsa19sYW5lX2NmZykKPiAtCQlkcGh5LT5vcHMt PnNldF9jbGtfbGFuZV9jZmcoZHBoeSwgY2ZnKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgY2Ru c19kcGh5X3NldF9wbGxfY2ZnKHN0cnVjdCBjZG5zX2RwaHkgKmRwaHksCj4gLQkJCQkgIGNvbnN0 IHN0cnVjdCBjZG5zX2RwaHlfY2ZnICpjZmcpCj4gLXsKPiAtCWlmIChkcGh5LT5vcHMtPnNldF9w bGxfY2ZnKQo+IC0JCWRwaHktPm9wcy0+c2V0X3BsbF9jZmcoZHBoeSwgY2ZnKTsKPiAtfQo+IC0K PiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgY2Ruc19kcGh5X2dldF93YWtldXBfdGltZV9ucyhzdHJ1 Y3QgY2Ruc19kcGh5ICpkcGh5KQo+IC17Cj4gLQlyZXR1cm4gZHBoeS0+b3BzLT5nZXRfd2FrZXVw X3RpbWVfbnMoZHBoeSk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgZHBpX3RvX2Rz aV90aW1pbmcodW5zaWduZWQgaW50IGRwaV90aW1pbmcsCj4gIAkJCQkgICAgICB1bnNpZ25lZCBp bnQgZHBpX2JwcCwKPiAgCQkJCSAgICAgIHVuc2lnbmVkIGludCBkc2lfcGt0X292ZXJoZWFkKQo+ IEBAIC03ODAsMTcgKzU0NSwyMCBAQCBzdGF0aWMgaW50IGNkbnNfZHNpX21vZGUyY2ZnKHN0cnVj dCBjZG5zX2RzaSAqZHNpLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgY2Ru c19kcGh5X3ZhbGlkYXRlKHN0cnVjdCBjZG5zX2RzaSAqZHNpLAo+ICtzdGF0aWMgaW50IGNkbnNf ZHNpX2FkanVzdF9waHlfY29uZmlnKHN0cnVjdCBjZG5zX2RzaSAqZHNpLAo+ICAJCQkgICAgICBz dHJ1Y3QgY2Ruc19kc2lfY2ZnICpkc2lfY2ZnLAo+IC0JCQkgICAgICBzdHJ1Y3QgY2Ruc19kcGh5 X2NmZyAqZHBoeV9jZmcsCj4gKwkJCSAgICAgIHN0cnVjdCBwaHlfY29uZmlndXJlX29wdHNfbWlw aV9kcGh5ICpwaHlfY2ZnLAo+ICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwKPiAgCQkJICAgICAgYm9vbCBtb2RlX3ZhbGlkX2NoZWNrKQo+ICB7Cj4gIAlzdHJ1 Y3QgY2Ruc19kc2lfb3V0cHV0ICpvdXRwdXQgPSAmZHNpLT5vdXRwdXQ7Cj4gKwl1bnNpZ25lZCBs b25nIGxvbmcgZGxhbmVfYnBzOwo+ICsJdW5zaWduZWQgbG9uZyBhZGpfZHNpX2h0b3RhbDsKPiAg CXVuc2lnbmVkIGxvbmcgZHNpX2h0b3RhbDsKPiAtCXVuc2lnbmVkIGludCBkc2lfaGZwX2V4dCA9 IDA7Cj4gLQo+IC0JaW50IHJldDsKPiArCXVuc2lnbmVkIGxvbmcgZHBpX2h0b3RhbDsKPiArCXVu c2lnbmVkIGxvbmcgZHBpX2h6Owo+ICsJdW5zaWduZWQgaW50IGRzaV9oZnBfZXh0Owo+ICsJdW5z aWduZWQgaW50IGxhbmVzID0gb3V0cHV0LT5kZXYtPmxhbmVzOwo+ICAKPiAgCWRzaV9odG90YWwg PSBkc2lfY2ZnLT5oYnAgKyBEU0lfSEJQX0ZSQU1FX09WRVJIRUFEOwo+ICAJaWYgKG91dHB1dC0+ ZGV2LT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNFKQo+IEBAIC03 OTksMjUgKzU2NywyNyBAQCBzdGF0aWMgaW50IGNkbnNfZHBoeV92YWxpZGF0ZShzdHJ1Y3QgY2Ru c19kc2kgKmRzaSwKPiAgCWRzaV9odG90YWwgKz0gZHNpX2NmZy0+aGFjdDsKPiAgCWRzaV9odG90 YWwgKz0gZHNpX2NmZy0+aGZwICsgRFNJX0hGUF9GUkFNRV9PVkVSSEVBRDsKPiAgCj4gLQlpZiAo bW9kZV92YWxpZF9jaGVjaykKPiAtCQlyZXQgPSBjZG5zX2RzaV9nZXRfZHBoeV9wbGxfY2ZnKGRz aS0+ZHBoeSwgZHBoeV9jZmcsCj4gLQkJCQkJCW1vZGUtPmh0b3RhbCwKPiAtCQkJCQkJbW9kZS0+ Y2xvY2sgKiAxMDAwLAo+IC0JCQkJCQltaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKG91dHB1 dC0+ZGV2LT5mb3JtYXQpLAo+IC0JCQkJCQlkc2lfaHRvdGFsLAo+IC0JCQkJCQlvdXRwdXQtPmRl di0+bGFuZXMsCj4gLQkJCQkJCSZkc2lfaGZwX2V4dCk7Cj4gLQllbHNlCj4gLQkJcmV0ID0gY2Ru c19kc2lfZ2V0X2RwaHlfcGxsX2NmZyhkc2ktPmRwaHksIGRwaHlfY2ZnLAo+IC0JCQkJCQltb2Rl LT5jcnRjX2h0b3RhbCwKPiAtCQkJCQkJbWlwaV9kc2lfcGl4ZWxfZm9ybWF0X3RvX2JwcChvdXRw dXQtPmRldi0+Zm9ybWF0KSwKPiAtCQkJCQkJbW9kZS0+Y3J0Y19jbG9jayAqIDEwMDAsCj4gLQkJ CQkJCWRzaV9odG90YWwsCj4gLQkJCQkJCW91dHB1dC0+ZGV2LT5sYW5lcywKPiAtCQkJCQkJJmRz aV9oZnBfZXh0KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCS8qCj4gKwkgKiBN YWtlIHN1cmUgRFNJIGh0b3RhbCBpcyBhbGlnbmVkIG9uIGEgbGFuZSBib3VuZGFyeSB3aGVuIGNh bGN1bGF0aW5nCj4gKwkgKiB0aGUgZXhwZWN0ZWQgZGF0YSByYXRlLiBUaGlzIGlzIGRvbmUgYnkg ZXh0ZW5kaW5nIEhGUCBpbiBjYXNlIG9mCj4gKwkgKiBtaXNhbGlnbm1lbnQuCj4gKwkgKi8KPiAr CWFkal9kc2lfaHRvdGFsID0gZHNpX2h0b3RhbDsKPiArCWlmIChkc2lfaHRvdGFsICUgbGFuZXMp Cj4gKwkJYWRqX2RzaV9odG90YWwgKz0gbGFuZXMgLSAoZHNpX2h0b3RhbCAlIGxhbmVzKTsKPiAr Cj4gKwlkcGlfaHogPSAobW9kZV92YWxpZF9jaGVjayA/IG1vZGUtPmNsb2NrIDogbW9kZS0+Y3J0 Y19jbG9jaykgKiAxMDAwOwo+ICsJZGxhbmVfYnBzID0gKHVuc2lnbmVkIGxvbmcgbG9uZylkcGlf aHogKiBhZGpfZHNpX2h0b3RhbDsKPiArCj4gKwkvKiBkYXRhIHJhdGUgaW4gYnl0ZXMvc2VjIGlz IG5vdCBhbiBpbnRlZ2VyLCByZWZ1c2UgdGhlIG1vZGUuICovCj4gKwlkcGlfaHRvdGFsID0gbW9k ZV92YWxpZF9jaGVjayA/IG1vZGUtPmh0b3RhbCA6IG1vZGUtPmNydGNfaHRvdGFsOwo+ICsJaWYg KGRvX2RpdihkbGFuZV9icHMsIGxhbmVzICogZHBpX2h0b3RhbCkpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gIAo+ICsJLyogZGF0YSByYXRlIHdhcyBpbiBieXRlcy9zZWMsIGNvbnZlcnQgdG8gYml0 cy9zZWMuICovCj4gKwlwaHlfY2ZnLT5oc19jbGtfcmF0ZSA9IGRsYW5lX2JwcyAqIDg7Cj4gKwo+ ICsJZHNpX2hmcF9leHQgPSBhZGpfZHNpX2h0b3RhbCAtIGRzaV9odG90YWw7Cj4gIAlkc2lfY2Zn LT5oZnAgKz0gZHNpX2hmcF9leHQ7Cj4gIAlkc2lfY2ZnLT5odG90YWwgPSBkc2lfaHRvdGFsICsg ZHNpX2hmcF9leHQ7Cj4gIAo+IEBAIC04MjcsMTAgKzU5NywxMCBAQCBzdGF0aWMgaW50IGNkbnNf ZHBoeV92YWxpZGF0ZShzdHJ1Y3QgY2Ruc19kc2kgKmRzaSwKPiAgc3RhdGljIGludCBjZG5zX2Rz aV9jaGVja19jb25mKHN0cnVjdCBjZG5zX2RzaSAqZHNpLAo+ICAJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gIAkJCSAgICAgICBzdHJ1Y3QgY2Ruc19kc2lf Y2ZnICpkc2lfY2ZnLAo+IC0JCQkgICAgICAgc3RydWN0IGNkbnNfZHBoeV9jZmcgKmRwaHlfY2Zn LAo+ICAJCQkgICAgICAgYm9vbCBtb2RlX3ZhbGlkX2NoZWNrKQo+ICB7Cj4gIAlzdHJ1Y3QgY2Ru c19kc2lfb3V0cHV0ICpvdXRwdXQgPSAmZHNpLT5vdXRwdXQ7Cj4gKwlzdHJ1Y3QgcGh5X2NvbmZp Z3VyZV9vcHRzX21pcGlfZHBoeSAqcGh5X2NmZyA9ICZvdXRwdXQtPnBoeV9vcHRzLm1pcGlfZHBo eTsKPiAgCXVuc2lnbmVkIGxvbmcgZHNpX2hzc19oc2FfaHNlX2hicDsKPiAgCXVuc2lnbmVkIGlu dCBubGFuZXMgPSBvdXRwdXQtPmRldi0+bGFuZXM7Cj4gIAlpbnQgcmV0Owo+IEBAIC04MzksNyAr NjA5LDE1IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lfY2hlY2tfY29uZihzdHJ1Y3QgY2Ruc19kc2kg KmRzaSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBjZG5zX2Rw aHlfdmFsaWRhdGUoZHNpLCBkc2lfY2ZnLCBkcGh5X2NmZywgbW9kZSwgbW9kZV92YWxpZF9jaGVj ayk7Cj4gKwlwaHlfbWlwaV9kcGh5X2dldF9kZWZhdWx0X2NvbmZpZyhtb2RlLT5jcnRjX2Nsb2Nr ICogMTAwMCwKPiArCQkJCQkgbWlwaV9kc2lfcGl4ZWxfZm9ybWF0X3RvX2JwcChvdXRwdXQtPmRl di0+Zm9ybWF0KSwKPiArCQkJCQkgbmxhbmVzLCBwaHlfY2ZnKTsKPiArCj4gKwlyZXQgPSBjZG5z X2RzaV9hZGp1c3RfcGh5X2NvbmZpZyhkc2ksIGRzaV9jZmcsIHBoeV9jZmcsIG1vZGUsIG1vZGVf dmFsaWRfY2hlY2spOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9 IHBoeV92YWxpZGF0ZShkc2ktPmRwaHksIFBIWV9NT0RFX01JUElfRFBIWSwgMCwgJm91dHB1dC0+ cGh5X29wdHMpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtODUyLDcg KzYzMCw3IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lfY2hlY2tfY29uZihzdHJ1Y3QgY2Ruc19kc2kg KmRzaSwKPiAgCSAqIGlzIGVtcHR5IGJlZm9yZSB3ZSBzdGFydCBhIHJlY2VpdmluZyBhIG5ldyBs aW5lIG9uIHRoZSBEUEkKPiAgCSAqIGludGVyZmFjZS4KPiAgCSAqLwo+IC0JaWYgKCh1NjQpZHBo eV9jZmctPmxhbmVfYnBzICogbW9kZV90b19kcGlfaGZwKG1vZGUpICogbmxhbmVzIDwKPiArCWlm ICgodTY0KXBoeV9jZmctPmhzX2Nsa19yYXRlICogbW9kZV90b19kcGlfaGZwKG1vZGUpICogbmxh bmVzIDwKPiAgCSAgICAodTY0KWRzaV9oc3NfaHNhX2hzZV9oYnAgKgo+ICAJICAgIChtb2RlX3Zh bGlkX2NoZWNrID8gbW9kZS0+Y2xvY2sgOiBtb2RlLT5jcnRjX2Nsb2NrKSAqIDEwMDApCj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTg4Miw3ICs2NjAsNiBAQCBjZG5zX2RzaV9icmlkZ2VfbW9k ZV92YWxpZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICAJc3RydWN0IGNkbnNfZHNpX2lu cHV0ICppbnB1dCA9IGJyaWRnZV90b19jZG5zX2RzaV9pbnB1dChicmlkZ2UpOwo+ICAJc3RydWN0 IGNkbnNfZHNpICpkc2kgPSBpbnB1dF90b19kc2koaW5wdXQpOwo+ICAJc3RydWN0IGNkbnNfZHNp X291dHB1dCAqb3V0cHV0ID0gJmRzaS0+b3V0cHV0Owo+IC0Jc3RydWN0IGNkbnNfZHBoeV9jZmcg ZHBoeV9jZmc7Cj4gIAlzdHJ1Y3QgY2Ruc19kc2lfY2ZnIGRzaV9jZmc7Cj4gIAlpbnQgYnBwLCBy ZXQ7Cj4gIAo+IEBAIC05MDIsNyArNjc5LDcgQEAgY2Ruc19kc2lfYnJpZGdlX21vZGVfdmFsaWQo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiAgCWlmICgobW9kZS0+aGRpc3BsYXkgKiBicHAp ICUgMzIpCj4gIAkJcmV0dXJuIE1PREVfSF9JTExFR0FMOwo+ICAKPiAtCXJldCA9IGNkbnNfZHNp X2NoZWNrX2NvbmYoZHNpLCBtb2RlLCAmZHNpX2NmZywgJmRwaHlfY2ZnLCB0cnVlKTsKPiArCXJl dCA9IGNkbnNfZHNpX2NoZWNrX2NvbmYoZHNpLCBtb2RlLCAmZHNpX2NmZywgdHJ1ZSk7Cj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiBNT0RFX0JBRDsKPiAgCj4gQEAgLTkyNSw5ICs3MDIsOSBAQCBz dGF0aWMgdm9pZCBjZG5zX2RzaV9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ICAJcG1fcnVudGltZV9wdXQoZHNpLT5iYXNlLmRldik7Cj4gIH0KPiAgCj4gLXN0YXRp YyB2b2lkIGNkbnNfZHNpX2hzX2luaXQoc3RydWN0IGNkbnNfZHNpICpkc2ksCj4gLQkJCSAgICAg Y29uc3Qgc3RydWN0IGNkbnNfZHBoeV9jZmcgKmRwaHlfY2ZnKQo+ICtzdGF0aWMgdm9pZCBjZG5z X2RzaV9oc19pbml0KHN0cnVjdCBjZG5zX2RzaSAqZHNpKQo+ICB7Cj4gKwlzdHJ1Y3QgY2Ruc19k c2lfb3V0cHV0ICpvdXRwdXQgPSAmZHNpLT5vdXRwdXQ7Cj4gIAl1MzIgc3RhdHVzOwo+ICAKPiAg CS8qCj4gQEAgLTkzOCwzMCArNzE1LDEwIEBAIHN0YXRpYyB2b2lkIGNkbnNfZHNpX2hzX2luaXQo c3RydWN0IGNkbnNfZHNpICpkc2ksCj4gIAkgICAgICAgRFBIWV9DTU5fUEROIHwgRFBIWV9QTExf UEROLAo+ICAJICAgICAgIGRzaS0+cmVncyArIE1DVExfRFBIWV9DRkcwKTsKPiAgCj4gLQkvKgo+ IC0JICogQ29uZmlndXJlIHRoZSBpbnRlcm5hbCBQU00gY2xrIGRpdmlkZXIgc28gdGhhdCB0aGUg RFBIWSBoYXMgYQo+IC0JICogMU1IeiBjbGsgKG9yIHNvbWV0aGluZyBjbG9zZSkuCj4gLQkgKi8K PiAtCVdBUk5fT05fT05DRShjZG5zX2RwaHlfc2V0dXBfcHNtKGRzaS0+ZHBoeSkpOwo+IC0KPiAt CS8qCj4gLQkgKiBDb25maWd1cmUgYXR0YWNoIGNsayBsYW5lcyB0byBkYXRhIGxhbmVzOiB0aGUg RFBIWSBoYXMgMiBjbGsgbGFuZXMKPiAtCSAqIGFuZCA4IGRhdGEgbGFuZXMsIGVhY2ggY2xrIGxh bmUgY2FuIGJlIGF0dGFjaGUgZGlmZmVyZW50IHNldCBvZgo+IC0JICogZGF0YSBsYW5lcy4gVGhl IDIgZ3JvdXBzIGFyZSBuYW1lZCAnbGVmdCcgYW5kICdyaWdodCcsIHNvIGhlcmUgd2UKPiAtCSAq IGp1c3Qgc2F5IHRoYXQgd2Ugd2FudCB0aGUgJ2xlZnQnIGNsayBsYW5lIHRvIGRyaXZlIHRoZSAn bGVmdCcgZGF0YQo+IC0JICogbGFuZXMuCj4gLQkgKi8KPiAtCWNkbnNfZHBoeV9zZXRfY2xrX2xh bmVfY2ZnKGRzaS0+ZHBoeSwgRFBIWV9DTEtfQ0ZHX0xFRlRfRFJJVkVTX0xFRlQpOwo+IC0KPiAt CS8qCj4gLQkgKiBDb25maWd1cmUgdGhlIERQSFkgUExMIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGdl bmVyYXRlIHRoZSBUWCBieXRlCj4gLQkgKiBjbGsuCj4gLQkgKi8KPiAtCWNkbnNfZHBoeV9zZXRf cGxsX2NmZyhkc2ktPmRwaHksIGRwaHlfY2ZnKTsKPiAtCj4gLQkvKiBTdGFydCBUWCBzdGF0ZSBt YWNoaW5lLiAqLwo+IC0Jd3JpdGVsKERQSFlfQ01OX1NTTV9FTiB8IERQSFlfQ01OX1RYX01PREVf RU4sCj4gLQkgICAgICAgZHNpLT5kcGh5LT5yZWdzICsgRFBIWV9DTU5fU1NNKTsKPiArCXBoeV9p bml0KGRzaS0+ZHBoeSk7Cj4gKwlwaHlfc2V0X21vZGUoZHNpLT5kcGh5LCBQSFlfTU9ERV9NSVBJ X0RQSFkpOwo+ICsJcGh5X2NvbmZpZ3VyZShkc2ktPmRwaHksICZvdXRwdXQtPnBoeV9vcHRzKTsK PiArCXBoeV9wb3dlcl9vbihkc2ktPmRwaHkpOwo+ICAKPiAgCS8qIEFjdGl2YXRlIHRoZSBQTEwg YW5kIHdhaXQgdW50aWwgaXQncyBsb2NrZWQuICovCj4gIAl3cml0ZWwoUExMX0xPQ0tFRCwgZHNp LT5yZWdzICsgTUNUTF9NQUlOX1NUU19DTFIpOwo+IEBAIC05NzEsNyArNzI4LDcgQEAgc3RhdGlj IHZvaWQgY2Ruc19kc2lfaHNfaW5pdChzdHJ1Y3QgY2Ruc19kc2kgKmRzaSwKPiAgCQkJCQlzdGF0 dXMgJiBQTExfTE9DS0VELCAxMDAsIDEwMCkpOwo+ICAJLyogRGUtYXNzZXJ0IGRhdGEgYW5kIGNs b2NrIHJlc2V0IGxpbmVzLiAqLwo+ICAJd3JpdGVsKERQSFlfQ01OX1BTTyB8IERQSFlfQUxMX0Rf UEROIHwgRFBIWV9DX1BETiB8IERQSFlfQ01OX1BETiB8Cj4gLQkgICAgICAgRFBIWV9EX1JTVEIo ZHBoeV9jZmctPm5sYW5lcykgfCBEUEhZX0NfUlNUQiwKPiArCSAgICAgICBEUEhZX0RfUlNUQihv dXRwdXQtPmRldi0+bGFuZXMpIHwgRFBIWV9DX1JTVEIsCj4gIAkgICAgICAgZHNpLT5yZWdzICsg TUNUTF9EUEhZX0NGRzApOwo+ICB9Cj4gIAo+IEBAIC0xMDE3LDcgKzc3NCw3IEBAIHN0YXRpYyB2 b2lkIGNkbnNfZHNpX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAg CXN0cnVjdCBjZG5zX2RzaSAqZHNpID0gaW5wdXRfdG9fZHNpKGlucHV0KTsKPiAgCXN0cnVjdCBj ZG5zX2RzaV9vdXRwdXQgKm91dHB1dCA9ICZkc2ktPm91dHB1dDsKPiAgCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOwo+IC0Jc3RydWN0IGNkbnNfZHBoeV9jZmcgZHBoeV9jZmc7Cj4gKwlz dHJ1Y3QgcGh5X2NvbmZpZ3VyZV9vcHRzX21pcGlfZHBoeSAqcGh5X2NmZyA9ICZvdXRwdXQtPnBo eV9vcHRzLm1pcGlfZHBoeTsKPiAgCXVuc2lnbmVkIGxvbmcgdHhfYnl0ZV9wZXJpb2Q7Cj4gIAlz dHJ1Y3QgY2Ruc19kc2lfY2ZnIGRzaV9jZmc7Cj4gIAl1MzIgdG1wLCByZWdfd2FrZXVwLCBkaXY7 Cj4gQEAgLTEwMzAsOSArNzg3LDkgQEAgc3RhdGljIHZvaWQgY2Ruc19kc2lfYnJpZGdlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAJYnBwID0gbWlwaV9kc2lfcGl4ZWxfZm9y bWF0X3RvX2JwcChvdXRwdXQtPmRldi0+Zm9ybWF0KTsKPiAgCW5sYW5lcyA9IG91dHB1dC0+ZGV2 LT5sYW5lczsKPiAgCj4gLQlXQVJOX09OX09OQ0UoY2Ruc19kc2lfY2hlY2tfY29uZihkc2ksIG1v ZGUsICZkc2lfY2ZnLCAmZHBoeV9jZmcsIGZhbHNlKSk7Cj4gKwlXQVJOX09OX09OQ0UoY2Ruc19k c2lfY2hlY2tfY29uZihkc2ksIG1vZGUsICZkc2lfY2ZnLCBmYWxzZSkpOwo+ICAKPiAtCWNkbnNf ZHNpX2hzX2luaXQoZHNpLCAmZHBoeV9jZmcpOwo+ICsJY2Ruc19kc2lfaHNfaW5pdChkc2kpOwo+ ICAJY2Ruc19kc2lfaW5pdF9saW5rKGRzaSk7Cj4gIAo+ICAJd3JpdGVsKEhCUF9MRU4oZHNpX2Nm Zy5oYnApIHwgSFNBX0xFTihkc2lfY2ZnLmhzYSksCj4gQEAgLTEwNjgsOSArODI1LDggQEAgc3Rh dGljIHZvaWQgY2Ruc19kc2lfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl KQo+ICAJCXRtcCAtPSBESVZfUk9VTkRfVVAoRFNJX0VPVF9QS1RfU0laRSwgbmxhbmVzKTsKPiAg Cj4gIAl0eF9ieXRlX3BlcmlvZCA9IERJVl9ST1VORF9ET1dOX1VMTCgodTY0KU5TRUNfUEVSX1NF QyAqIDgsCj4gLQkJCQkJICAgIGRwaHlfY2ZnLmxhbmVfYnBzKTsKPiAtCXJlZ193YWtldXAgPSBj ZG5zX2RwaHlfZ2V0X3dha2V1cF90aW1lX25zKGRzaS0+ZHBoeSkgLwo+IC0JCSAgICAgdHhfYnl0 ZV9wZXJpb2Q7Cj4gKwkJCQkJICAgIHBoeV9jZmctPmhzX2Nsa19yYXRlKTsKPiArCXJlZ193YWtl dXAgPSAocGh5X2NmZy0+aHNfcHJlcGFyZSArIHBoeV9jZmctPmhzX3plcm8pIC8gdHhfYnl0ZV9w ZXJpb2Q7Cj4gIAl3cml0ZWwoUkVHX1dBS0VVUF9USU1FKHJlZ193YWtldXApIHwgUkVHX0xJTkVf RFVSQVRJT04odG1wKSwKPiAgCSAgICAgICBkc2ktPnJlZ3MgKyBWSURfRFBIWV9USU1FKTsKPiAg Cj4gQEAgLTEzODQsOCArMTE0MCw2IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY2Ruc19k c2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQo ZHNpLT5kc2lfcF9yc3QpOwo+ICAJY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+ZHNpX3BfY2xrKTsK PiAgCWNsa19wcmVwYXJlX2VuYWJsZShkc2ktPmRzaV9zeXNfY2xrKTsKPiAtCWNsa19wcmVwYXJl X2VuYWJsZShkc2ktPmRwaHktPnBzbV9jbGspOwo+IC0JY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+ ZHBoeS0+cGxsX3JlZl9jbGspOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTEzOTQsOCAr MTE0OCw2IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY2Ruc19kc2lfc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBjZG5zX2RzaSAqZHNpID0gZGV2X2dldF9k cnZkYXRhKGRldik7Cj4gIAo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZHBoeS0+cGxs X3JlZl9jbGspOwo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZHBoeS0+cHNtX2Nsayk7 Cj4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5kc2lfc3lzX2Nsayk7Cj4gIAljbGtfZGlz YWJsZV91bnByZXBhcmUoZHNpLT5kc2lfcF9jbGspOwo+ICAJcmVzZXRfY29udHJvbF9hc3NlcnQo ZHNpLT5kc2lfcF9yc3QpOwo+IEBAIC0xNDA2LDEyMSArMTE1OCw2IEBAIHN0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgY2Ruc19kc2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHN0YXRp YyBVTklWRVJTQUxfREVWX1BNX09QUyhjZG5zX2RzaV9wbV9vcHMsIGNkbnNfZHNpX3N1c3BlbmQs IGNkbnNfZHNpX3Jlc3VtZSwKPiAgCQkJICAgIE5VTEwpOwo+ICAKPiAtc3RhdGljIHVuc2lnbmVk IGxvbmcgY2Ruc19kcGh5X3JlZl9nZXRfd2FrZXVwX3RpbWVfbnMoc3RydWN0IGNkbnNfZHBoeSAq ZHBoeSkKPiAtewo+IC0JLyogRGVmYXVsdCB3YWtldXAgdGltZSBpcyA4MDAgbnMgKGluIGEgc2lt dWxhdGVkIGVudmlyb25tZW50KS4gKi8KPiAtCXJldHVybiA4MDA7Cj4gLX0KPiAtCj4gLXN0YXRp YyB2b2lkIGNkbnNfZHBoeV9yZWZfc2V0X3BsbF9jZmcoc3RydWN0IGNkbnNfZHBoeSAqZHBoeSwK PiAtCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBjZG5zX2RwaHlfY2ZnICpjZmcpCj4gLXsKPiAtCXUz MiBmYmRpdl9sb3csIGZiZGl2X2hpZ2g7Cj4gLQo+IC0JZmJkaXZfbG93ID0gKGNmZy0+cGxsX2Zi ZGl2IC8gNCkgLSAyOwo+IC0JZmJkaXZfaGlnaCA9IGNmZy0+cGxsX2ZiZGl2IC0gZmJkaXZfbG93 IC0gMjsKPiAtCj4gLQl3cml0ZWwoRFBIWV9DTU5fSVBESVZfRlJPTV9SRUcgfCBEUEhZX0NNTl9P UERJVl9GUk9NX1JFRyB8Cj4gLQkgICAgICAgRFBIWV9DTU5fSVBESVYoY2ZnLT5wbGxfaXBkaXYp IHwKPiAtCSAgICAgICBEUEhZX0NNTl9PUERJVihjZmctPnBsbF9vcGRpdiksCj4gLQkgICAgICAg ZHBoeS0+cmVncyArIERQSFlfQ01OX09QSVBESVYpOwo+IC0Jd3JpdGVsKERQSFlfQ01OX0ZCRElW X0ZST01fUkVHIHwKPiAtCSAgICAgICBEUEhZX0NNTl9GQkRJVl9WQUwoZmJkaXZfbG93LCBmYmRp dl9oaWdoKSwKPiAtCSAgICAgICBkcGh5LT5yZWdzICsgRFBIWV9DTU5fRkJESVYpOwo+IC0Jd3Jp dGVsKERQSFlfQ01OX1BXTV9ISUdIKDYpIHwgRFBIWV9DTU5fUFdNX0xPVygweDEwMSkgfAo+IC0J ICAgICAgIERQSFlfQ01OX1BXTV9ESVYoMHg4KSwKPiAtCSAgICAgICBkcGh5LT5yZWdzICsgRFBI WV9DTU5fUFdNKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgY2Ruc19kcGh5X3JlZl9zZXRfcHNt X2RpdihzdHJ1Y3QgY2Ruc19kcGh5ICpkcGh5LCB1OCBkaXYpCj4gLXsKPiAtCXdyaXRlbChEUEhZ X1BTTV9DRkdfRlJPTV9SRUcgfCBEUEhZX1BTTV9DTEtfRElWKGRpdiksCj4gLQkgICAgICAgZHBo eS0+cmVncyArIERQSFlfUFNNX0NGRyk7Cj4gLX0KPiAtCj4gLS8qCj4gLSAqIFRoaXMgaXMgdGhl IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBEUEhZIGhvb2tzLiBTcGVjaWZpYyBpbnRlZ3Jh dGlvbiBvZgo+IC0gKiB0aGlzIElQIG1heSBoYXZlIHRvIHJlLWltcGxlbWVudCBzb21lIG9mIHRo ZW0gZGVwZW5kaW5nIG9uIGhvdyB0aGV5IGRlY2lkZWQKPiAtICogdG8gd2lyZSB0aGluZ3MgaW4g dGhlIFNvQy4KPiAtICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2Ruc19kcGh5X29wcyByZWZf ZHBoeV9vcHMgPSB7Cj4gLQkuZ2V0X3dha2V1cF90aW1lX25zID0gY2Ruc19kcGh5X3JlZl9nZXRf d2FrZXVwX3RpbWVfbnMsCj4gLQkuc2V0X3BsbF9jZmcgPSBjZG5zX2RwaHlfcmVmX3NldF9wbGxf Y2ZnLAo+IC0JLnNldF9wc21fZGl2ID0gY2Ruc19kcGh5X3JlZl9zZXRfcHNtX2RpdiwKPiAtfTsK PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfZHBoeV9vZl9tYXRj aFtdID0gewo+IC0JeyAuY29tcGF0aWJsZSA9ICJjZG5zLGRwaHkiLCAuZGF0YSA9ICZyZWZfZHBo eV9vcHMgfSwKPiAtCXsgLyogc2VudGluZWwgKi8gfSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1 Y3QgY2Ruc19kcGh5ICpjZG5zX2RwaHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiAtewo+IC0JY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2g7Cj4gLQlzdHJ1Y3Qg Y2Ruc19kcGh5ICpkcGh5Owo+IC0Jc3RydWN0IG9mX3BoYW5kbGVfYXJncyBhcmdzOwo+IC0Jc3Ry dWN0IHJlc291cmNlIHJlczsKPiAtCWludCByZXQ7Cj4gLQo+IC0JcmV0ID0gb2ZfcGFyc2VfcGhh bmRsZV93aXRoX2FyZ3MocGRldi0+ZGV2Lm9mX25vZGUsICJwaHlzIiwKPiAtCQkJCQkgIiNwaHkt Y2VsbHMiLCAwLCAmYXJncyk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9F TlQpOwo+IC0KPiAtCW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShjZG5zX2RwaHlfb2ZfbWF0Y2gsIGFy Z3MubnApOwo+IC0JaWYgKCFtYXRjaCB8fCAhbWF0Y2gtPmRhdGEpCj4gLQkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Cj4gLQo+IC0JZHBoeSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXpl b2YoKmRwaHkpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghZHBoeSkKPiAtCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPiAtCj4gLQlkcGh5LT5vcHMgPSBtYXRjaC0+ZGF0YTsKPiAtCj4gLQlyZXQg PSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKGFyZ3MubnAsIDAsICZyZXMpOwo+IC0JaWYgKHJldCkK PiAtCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IC0KPiAtCWRwaHktPnJlZ3MgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgJnJlcyk7Cj4gLQlpZiAoSVNfRVJSKGRwaHktPnJlZ3Mp KQo+IC0JCXJldHVybiBFUlJfQ0FTVChkcGh5LT5yZWdzKTsKPiAtCj4gLQlkcGh5LT5wc21fY2xr ID0gb2ZfY2xrX2dldF9ieV9uYW1lKGFyZ3MubnAsICJwc20iKTsKPiAtCWlmIChJU19FUlIoZHBo eS0+cHNtX2NsaykpCj4gLQkJcmV0dXJuIEVSUl9DQVNUKGRwaHktPnBzbV9jbGspOwo+IC0KPiAt CWRwaHktPnBsbF9yZWZfY2xrID0gb2ZfY2xrX2dldF9ieV9uYW1lKGFyZ3MubnAsICJwbGxfcmVm Iik7Cj4gLQlpZiAoSVNfRVJSKGRwaHktPnBsbF9yZWZfY2xrKSkgewo+IC0JCXJldCA9IFBUUl9F UlIoZHBoeS0+cGxsX3JlZl9jbGspOwo+IC0JCWdvdG8gZXJyX3B1dF9wc21fY2xrOwo+IC0JfQo+ IC0KPiAtCWlmIChkcGh5LT5vcHMtPnByb2JlKSB7Cj4gLQkJcmV0ID0gZHBoeS0+b3BzLT5wcm9i ZShkcGh5KTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3RvIGVycl9wdXRfcGxsX3JlZl9jbGs7Cj4g LQl9Cj4gLQo+IC0JcmV0dXJuIGRwaHk7Cj4gLQo+IC1lcnJfcHV0X3BsbF9yZWZfY2xrOgo+IC0J Y2xrX3B1dChkcGh5LT5wbGxfcmVmX2Nsayk7Cj4gLQo+IC1lcnJfcHV0X3BzbV9jbGs6Cj4gLQlj bGtfcHV0KGRwaHktPnBzbV9jbGspOwo+IC0KPiAtCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gLX0K PiAtCj4gLXN0YXRpYyB2b2lkIGNkbnNfZHBoeV9yZW1vdmUoc3RydWN0IGNkbnNfZHBoeSAqZHBo eSkKPiAtewo+IC0JaWYgKGRwaHktPm9wcy0+cmVtb3ZlKQo+IC0JCWRwaHktPm9wcy0+cmVtb3Zl KGRwaHkpOwo+IC0KPiAtCWNsa19wdXQoZHBoeS0+cGxsX3JlZl9jbGspOwo+IC0JY2xrX3B1dChk cGh5LT5wc21fY2xrKTsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBjZG5zX2RzaV9kcm1fcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJc3RydWN0IGNkbnNfZHNpICpk c2k7Cj4gQEAgLTE1NTksMTMgKzExOTYsMTMgQEAgc3RhdGljIGludCBjZG5zX2RzaV9kcm1fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmIChpcnEgPCAwKQo+ICAJCXJl dHVybiBpcnE7Cj4gIAo+IC0JZHNpLT5kcGh5ID0gY2Ruc19kcGh5X3Byb2JlKHBkZXYpOwo+ICsJ ZHNpLT5kcGh5ID0gZGV2bV9waHlfZ2V0KCZwZGV2LT5kZXYsICJkcGh5Iik7Cj4gIAlpZiAoSVNf RVJSKGRzaS0+ZHBoeSkpCj4gIAkJcmV0dXJuIFBUUl9FUlIoZHNpLT5kcGh5KTsKPiAgCj4gIAly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5kc2lfcF9jbGspOwo+ICAJaWYgKHJldCkKPiAt CQlnb3RvIGVycl9yZW1vdmVfZHBoeTsKPiArCQlyZXR1cm4gcmV0Owo+ICAKPiAgCXZhbCA9IHJl YWRsKGRzaS0+cmVncyArIElEX1JFRyk7Cj4gIAlpZiAoUkVWX1ZFTkRPUl9JRCh2YWwpICE9IDB4 Y2FkKSB7Cj4gQEAgLTE2MjMsOSArMTI2MCw2IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lfZHJtX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIGVycl9kaXNhYmxlX3BjbGs6Cj4g IAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5kc2lfcF9jbGspOwo+ICAKPiAtZXJyX3JlbW92 ZV9kcGh5Ogo+IC0JY2Ruc19kcGh5X3JlbW92ZShkc2ktPmRwaHkpOwo+IC0KPiAgCXJldHVybiBy ZXQ7Cj4gIH0KPiAgCj4gQEAgLTE2MzUsNyArMTI2OSw2IEBAIHN0YXRpYyBpbnQgY2Ruc19kc2lf ZHJtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAKPiAgCW1pcGlfZHNp X2hvc3RfdW5yZWdpc3RlcigmZHNpLT5iYXNlKTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRl di0+ZGV2KTsKPiAtCWNkbnNfZHBoeV9yZW1vdmUoZHNpLT5kcGh5KTsKPiAgCj4gIAlyZXR1cm4g MDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9jYWRlbmNlL2NkbnMtZHBoeS5jIGIv ZHJpdmVycy9waHkvY2FkZW5jZS9jZG5zLWRwaHkuYwo+IGluZGV4IDFkMGFiYmEwM2YzNy4uY2Rl MTJiM2FhNGQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvY2Rucy1kcGh5LmMK PiArKysgYi9kcml2ZXJzL3BoeS9jYWRlbmNlL2NkbnMtZHBoeS5jCj4gQEAgLTIyNyw3ICsyMjcs NyBAQCBzdGF0aWMgaW50IGNkbnNfZHBoeV9jb25maWdfZnJvbV9vcHRzKHN0cnVjdCBwaHkgKnBo eSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlvcHRzLT53YWtldXAgPSBj ZG5zX2RwaHlfZ2V0X3dha2V1cF90aW1lX25zKGRwaHkpICogMTAwMDsKPiArCW9wdHMtPndha2V1 cCA9IGNkbnNfZHBoeV9nZXRfd2FrZXVwX3RpbWVfbnMoZHBoeSkgLyAxMDAwOwo+ICAKPiAgCXJl dHVybiAwOwo+ICB9Cj4gLS0gCj4gZ2l0LXNlcmllcyAwLjkuMQo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gClNlYW4gUGF1bCwgU29mdHdh cmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=