From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 1/2] drm: bridge: Allow daisy chaining of bridges Date: Tue, 19 May 2015 11:34:22 +0200 Message-ID: <20150519093422.GL15256@phenom.ffwll.local> References: <1432024505-4139-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by gabe.freedesktop.org (Postfix) with ESMTP id 32AAD6E126 for ; Tue, 19 May 2015 02:31:57 -0700 (PDT) Received: by wicmx19 with SMTP id mx19so109661518wic.0 for ; Tue, 19 May 2015 02:31:56 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1432024505-4139-1-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Archit Taneja Cc: daniel.vetter@ffwll.ch, dri-devel@lists.freedesktop.org, airlied@redhat.com, andy.yan@rock-chips.com, ajaykumar.rs@samsung.com List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMTksIDIwMTUgYXQgMDI6MDU6MDRQTSArMDUzMCwgQXJjaGl0IFRhbmVqYSB3 cm90ZToKPiBBbGxvdyBkcm1fYnJpZGdlIG9iamVjdHMgdG8gbGluayB0byBlYWNoIG90aGVyIGlu IG9yZGVyIHRvIGZvcm0gYW4gZW5jb2Rlcgo+IGNoYWluLiBUaGUgcmVxdWlyZW1lbnQgZm9yIGNy ZWF0aW5nIGEgY2hhaW4gb2YgYnJpZGdlcyBjb21lcyBiZWNhdXNlIHRoZQo+IE1TTSBkcm0gZHJp dmVyIHVzZXMgdXAgaXRzIGVuY29kZXIgYW5kIGJyaWRnZSBvYmplY3RzIGZvciBibG9ja3Mgd2l0 aGluCj4gdGhlIFNvQyBpdHNlbGYuIFRoZXJlIGlzbid0IGFueXRoaW5nIGxlZnQgdG8gdXNlIGlm IHRoZSBTb0MgZGlzcGxheSBvdXRwdXQKPiBpcyBjb25uZWN0ZWQgdG8gYW4gZXh0ZXJuYWwgZW5j b2RlciBJQy4gSGF2aW5nIGFuIGFkZGl0aW9uYWwgYnJpZGdlCj4gY29ubmVjdGVkIHRvIHRoZSBl eGlzdGluZyBicmlkZ2UgaGVscHMgaGVyZS4gSW4gZ2VuZXJhbCwgaXQgaXMgcG9zc2libGUgZm9y Cj4gcGxhdGZvcm1zIHRvIGhhdmUgIG11bHRpcGxlIGRldmljZXMgYmV0d2VlbiB0aGUgZW5jb2Rl ciBhbmQgdGhlCj4gY29ubmVjdG9yL3BhbmVsIHRoYXQgcmVxdWlyZSBzb21lIHNvcnQgb2YgY29u ZmlndXJhdGlvbi4KPiAKPiBXZSBjcmVhdGUgZHJtIGJyaWRnZSBoZWxwZXIgZnVuY3Rpb25zIGNv cnJlc3BvbmRpbmcgdG8gZWFjaCBvcCBpbgo+ICdkcm1fYnJpZGdlX2Z1bmNzJy4gVGhlc2UgaGVs cGVycyBjYWxsIHRoZSBjb3JyZXNwb25kaW5nCj4gJ2RybV9icmlkZ2VfZnVuY3MnIG9wIGZvciB0 aGUgZW50aXJlIGNoYWluIG9mIGJyaWRnZXMuIFRoZXNlIGhlbHBlcnMgYXJlCj4gdXNlZCBpbnRl cm5hbGx5IGJ5IGRybV9hdG9taWNfaGVscGVyLmMgYW5kIGRybV9jcnRjX2hlbHBlci5jLgo+IAo+ IFRoZSBkcm1fYnJpZGdlX2VuYWJsZS9wcmVfZW5hYmxlIGhlbHBlcnMgZXhlY3V0ZSBlbmFibGUv cHJlX2VuYWJsZSBvcHMgb2YKPiB0aGUgYnJpZGdlIGNsb3NldCB0byB0aGUgZW5jb2RlciwgYW5k IHByb2NlZWQgdW50aWwgdGhlIGxhc3QgYnJpZGdlIGluIHRoZQo+IGNoYWluIGlzIGVuYWJsZWQu IFRoZSBzYW1lIGhvbGRzIGZvciBkcm1fYnJpZGdlX21vZGVfc2V0L21vZGVfZml4dXAKPiBoZWxw ZXJzLiBUaGUgZHJtX2JyaWRnZV9kaXNhYmxlL3Bvc3RfZGlzYWJsZSBoZWxwZXJzIGRpc2FibGUg dGhlIGxhc3QKPiBicmlkZ2UgaW4gdGhlIGNoYWluIGZpcnN0LCBhbmQgcHJvY2VlZCB1bnRpbCB0 aGUgZmlyc3QgYnJpZGdlIGluIHRoZSBjaGFpbgo+IGlzIGRpc2FibGVkLgo+IAo+IGRybV9icmlk Z2VfYXR0YWNoKCkgcmVtYWlucyB0aGUgc2FtZS4gQXMgYmVmb3JlLCB0aGUgZHJpdmVyIGNhbGxp bmcgdGhpcwo+IGZ1bmN0aW9uIHNob3VsZCBtYWtlIHN1cmUgaXQgaGFzIHNldCB0aGUgbGlua3Mg Y29ycmVjdGx5LiBUaGUgb3JkZXIgaW4KPiB3aGljaCB0aGUgYnJpZGdlcyBhcmUgY29ubmVjdGVk IHRvIGVhY2ggb3RoZXIgZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2gKPiB0aGUgY2FsbHMg YXJlIG1hZGUuIE9uZSByZXF1aXJlbWVudCBpcyB0aGF0IGV2ZXJ5IGJyaWRnZSBpbiB0aGUgY2hh aW4KPiBzaG91bGQgcG9pbnQgdGhlIHBhcmVudCBlbmNvZGVyIG9iamVjdC4gVGhpcyBpcyByZXF1 aXJlZCBzaW5jZSBicmlkZ2UKPiBkcml2ZXJzIGV4cGVjdCBhIHZhbGlkIGVuY29kZXIgcG9pbnRl ciBpbiBkcm1fYnJpZGdlLiBGb3IgZXhhbXBsZSwgY29uc2lkZXIKPiBhIGNoYWluIHdoZXJlIGFu IGVuY29kZXIncyBvdXRwdXQgaXMgY29ubmVjdGVkIHRvIGJyaWRnZTEsIGFuZCBicmlkZ2UxJ3MK PiBvdXRwdXQgaXMgY29ubmVjdGVkIHRvIGJyaWRnZTI6Cj4gCj4gCS8qIExpa2UgYmVmb3JlLCBh dHRhY2ggYnJpZGdlIHRvIGFuIGVuY29kZXIgKi8KPiAJYnJpZGdlMS0+ZW5jb2RlciA9IGVuY29k ZXI7Cj4gCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKGRldiwgYnJpZGdlMSk7Cj4gCS4uCj4gCj4g CS8qCj4gCSAqIHNldCB0aGUgZmlyc3QgYnJpZGdlJ3MgJ25leHQnIGJyaWRnZSB0byBicmlkZ2Uy LCBzZXQgaXRzIGVuY29kZXIKPiAJICogYXMgYnJpZGdlMSdzIGVuY29kZXIKPiAJICovCj4gCWJy aWRnZTEtPm5leHQgPSBicmlkZ2UyCj4gCWJyaWRnZTItPmVuY29kZXIgPSBicmlkZ2UxLT5lbmNv ZGVyOwo+IAlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChkZXYsIGJyaWRnZTIpOwo+IAo+IAkuLi4K PiAJLi4uCj4gCj4gVGhpcyBtZXRob2Qgb2YgYnJpZGdlIGNoYWluaW5nIGlzbid0IGludHJ1c2l2 ZSBhbmQgZXhpc3RpbmcgZHJpdmVycyB0aGF0Cj4gdXNlIGRybV9icmlkZ2Ugd2lsbCBiZWhhdmUg dGhlIHNhbWUgd2F5IGFzIGJlZm9yZS4gVGhlIGJyaWRnZSBoZWxwZXJzIGFsc28KPiBjbGVhbnMg dXAgdGhlIGF0b21pYyBhbmQgY3J0YyBoZWxwZXIgZmlsZXMgYSBiaXQuCj4gCj4gUmV2aWV3ZWQt Ynk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gUmV2aWV3ZWQt Ynk6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBcmNo aXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgoKVHdvIGNvbW1lbnRzIGJlbG93IGFi b3V0IHRoZSBuZXN0aW5nIG9mIGNhbGxlcnMuIGxndG0gb3RoZXJ3aXNlLgotRGFuaWVsCgo+IC0t LQo+IHYzOgo+IC0gQWRkIGhlYWRlcmRvY3MgZm9yIHRoZSBuZXcgZnVuY3Rpb25zCj4gCj4gdjI6 Cj4gLSBBZGQgRVhQT1JUX1NZTUJPTCBmb3IgdGhlIG5ldyBmdW5jdGlvbnMKPiAtIEZpeCBsb2dp YyBpc3N1ZSBpbiBtb2RlX2ZpeHVwKCkKPiAKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMgfCAgMjkgKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyAg ICAgICAgfCAxNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYyAgIHwgIDU0ICsrKysrLS0tLS0tLS0tCj4gIGlu Y2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgIHwgIDE0ICsrKysKPiAgNCBmaWxlcyBj aGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCAxZDJjYTUyLi5kNmM4NWMwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMjgxLDE0ICsyODEsMTEgQEAgbW9kZV9m aXh1cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJZW5jb2RlciA9IGNvbm5f c3RhdGUtPmJlc3RfZW5jb2RlcjsKPiAgCQlmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRl Owo+ICAKPiAtCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRnZS0+ZnVuY3Mt Pm1vZGVfZml4dXApIHsKPiAtCQkJcmV0ID0gZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+bW9kZV9m aXh1cCgKPiAtCQkJCQllbmNvZGVyLT5icmlkZ2UsICZjcnRjX3N0YXRlLT5tb2RlLAo+IC0JCQkJ CSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPiAtCQkJaWYgKCFyZXQpIHsKPiAtCQkJCURS TV9ERUJVR19BVE9NSUMoIkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOwo+IC0JCQkJcmV0dXJuIC1F SU5WQUw7Cj4gLQkJCX0KPiArCQlyZXQgPSBkcm1fYnJpZGdlX21vZGVfZml4dXAoZW5jb2Rlci0+ YnJpZGdlLCAmY3J0Y19zdGF0ZS0+bW9kZSwKPiArCQkJCSZjcnRjX3N0YXRlLT5hZGp1c3RlZF9t b2RlKTsKPiArCQlpZiAoIXJldCkgewo+ICsJCQlEUk1fREVCVUdfQVRPTUlDKCJCcmlkZ2UgZml4 dXAgZmFpbGVkXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiAgCQlpZiAo ZnVuY3MtPmF0b21pY19jaGVjaykgewo+IEBAIC01NzgsOCArNTc1LDcgQEAgZGlzYWJsZV9vdXRw dXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCj4gIAkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0b3IgKHNp bmNlIHdlIGFsd2F5cyBzdGVhbAo+ICAJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIGRp c2FibGUgaG9va3MgdHdpY2UuCj4gIAkJICovCj4gLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKPiAt CQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJ CWRybV9icmlkZ2VfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICAKPiAgCQkvKiBSaWdodCBm dW5jdGlvbiBkZXBlbmRzIHVwb24gdGFyZ2V0IHN0YXRlLiAqLwo+ICAJCWlmIChjb25uZWN0b3It PnN0YXRlLT5jcnRjICYmIGZ1bmNzLT5wcmVwYXJlKQo+IEBAIC01ODksOCArNTg1LDcgQEAgZGlz YWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCj4gIAkJZWxzZQo+ICAJCQlmdW5jcy0+ZHBtcyhlbmNvZGVyLCBEUk1f TU9ERV9EUE1TX09GRik7Cj4gIAo+IC0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCj4gLQkJCWVuY29k ZXItPmJyaWRnZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJCWRy bV9icmlkZ2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gIAl9Cj4gIAo+ICAJZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7 Cj4gQEAgLTcxMyw5ICs3MDgsNyBAQCBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIAkJaWYgKGZ1bmNzLT5t b2RlX3NldCkKPiAgCQkJZnVuY3MtPm1vZGVfc2V0KGVuY29kZXIsIG1vZGUsIGFkanVzdGVkX21v ZGUpOwo+ICAKPiAtCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRnZS0+ZnVu Y3MtPm1vZGVfc2V0KQo+IC0JCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX3NldChlbmNv ZGVyLT5icmlkZ2UsCj4gLQkJCQkJCQkgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cj4gKwkJZHJtX2Jy aWRnZV9tb2RlX3NldChlbmNvZGVyLT5icmlkZ2UsIG1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICAJ fQo+ICB9Cj4gIAo+IEBAIC04MDksMTYgKzgwMiwxNCBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkgKiBF YWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0 ZWFsCj4gIAkJICogaXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgZW5hYmxlIGhvb2tzIHR3aWNl Lgo+ICAJCSAqLwo+IC0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCj4gLQkJCWVuY29kZXItPmJyaWRn ZS0+ZnVuY3MtPnByZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArCQlkcm1fYnJpZGdlX3By ZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiAgCj4gIAkJaWYgKGZ1bmNzLT5lbmFibGUpCj4g IAkJCWZ1bmNzLT5lbmFibGUoZW5jb2Rlcik7Cj4gIAkJZWxzZQo+ICAJCQlmdW5jcy0+Y29tbWl0 KGVuY29kZXIpOwo+ICAKPiAtCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQo+IC0JCQllbmNvZGVyLT5i cmlkZ2UtPmZ1bmNzLT5lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArCQlkcm1fYnJpZGdlX2Vu YWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICAJfQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4g aW5kZXggZWFhNTc5MC4uZjcwZTYxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2JyaWRnZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+IEBAIC02Niw2 ICs2NiwxNTAgQEAgaW50IGRybV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fYnJp ZGdlX2F0dGFjaCk7Cj4gIAo+ICsvKioKPiArICogZHJtX2JyaWRnZV9tb2RlX2ZpeHVwIC0gZml4 dXAgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJyaWRnZXMgaW4gdGhlCj4gKyAqCQkJICAgZW5jb2Rl ciBjaGFpbgo+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICogQG1v ZGU6IGRlc2lyZWQgbW9kZSB0byBiZSBzZXQgZm9yIHRoZSBicmlkZ2UKPiArICogQGFkanVzdGVk X21vZGU6IHVwZGF0ZWQgbW9kZSB0aGF0IHdvcmtzIGZvciB0aGlzIGJyaWRnZQo+ICsgKgo+ICsg KiBDYWxscyAnbW9kZV9maXh1cCcgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IgYWxsIHRoZSBicmlk Z2VzIGluIHRoZQo+ICsgKiBlbmNvZGVyIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBi cmlkZ2UgdG8gdGhlIGxhc3QuCj4gKyAqCj4gKyAqIE5vdGU6IHRoZSBicmlkZ2UgcGFzc2VkIHNo b3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIKPiArICovCj4gK2Jvb2wgZHJt X2JyaWRnZV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSkKPiArewo+ICsJYm9vbCByZXQgPSB0cnVlOwo+ICsKPiArCWlm ICghYnJpZGdlKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWlmIChicmlkZ2UtPmZ1bmNzLT5t b2RlX2ZpeHVwKQo+ICsJCXJldCA9IGJyaWRnZS0+ZnVuY3MtPm1vZGVfZml4dXAoYnJpZGdlLCBt b2RlLCBhZGp1c3RlZF9tb2RlKTsKPiArCj4gKwlyZXQgPSByZXQgJiYgZHJtX2JyaWRnZV9tb2Rl X2ZpeHVwKGJyaWRnZS0+bmV4dCwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cj4gKwo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfbW9kZV9maXh1cCk7Cj4gKwo+ ICsvKioKPiArICogZHJtX2JyaWRnZV9kaXNhYmxlIC0gY2FsbHMgJ2Rpc2FibGUnIGRybV9icmlk Z2VfZnVuY3Mgb3AgZm9yIGFsbAo+ICsgKgkJCWJyaWRnZXMgaW4gdGhlIGVuY29kZXIgY2hhaW4u Cj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0cnVjdHVyZQo+ICsgKgo+ICsgKiBDYWxs cyAnZGlzYWJsZScgZHJtX2JyaWRnZV9mdW5jcyBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRo ZSBlbmNvZGVyCj4gKyAqIGNoYWluLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGJyaWRnZSB0byB0 aGUgZmlyc3QuIFRoZXNlIGFyZSBjYWxsZWQgYmVmb3JlCj4gKyAqIGNhbGxpbmcgdGhlIGVuY29k ZXIncyBwcmVwYXJlIG9wLgo+ICsgKgo+ICsgKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91 bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCj4gKyAqLwo+ICt2b2lkIGRybV9i cmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlpZiAoIWJy aWRnZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJZHJtX2JyaWRnZV9kaXNhYmxlKGJyaWRnZS0+bmV4 dCk7Cj4gKwo+ICsJYnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShicmlkZ2UpOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0woZHJtX2JyaWRnZV9kaXNhYmxlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYnJpZGdl X3Bvc3RfZGlzYWJsZSAtIGNhbGxzICdwb3N0X2Rpc2FibGUnIGRybV9icmlkZ2VfZnVuY3Mgb3Ag Zm9yCj4gKyAqCQkJICAgICBhbGwgYnJpZGdlcyBpbiB0aGUgZW5jb2RlciBjaGFpbi4KPiArICog QGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gKyAqCj4gKyAqIENhbGxzICdwb3N0 X2Rpc2FibGUnIGRybV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUK PiArICogZW5jb2RlciBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgbGFzdCBicmlkZ2UgdG8gdGhl IGZpcnN0LiBUaGVzZSBhcmUgY2FsbGVkCj4gKyAqIGFmdGVyIGNvbXBsZXRpbmcgdGhlIGVuY29k ZXIncyBwcmVwYXJlIG9wLgo+ICsgKgo+ICsgKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91 bGQgYmUgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBlbmNvZGVyCj4gKyAqLwo+ICt2b2lkIGRybV9i cmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCWlm ICghYnJpZGdlKQo+ICsJCXJldHVybjsKPiArCj4gKwlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShi cmlkZ2UtPm5leHQpOwo+ICsKPiArCWJyaWRnZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShicmlkZ2Up OwoKRm9yIHN5bW1ldHJ5IEknZCBjYWxsIHRoZSBwb3N0X2Rpc2FibGUgaG9vayBmb3IgdGhlIG5l eHQgYnJpZ2RlIF9hZnRlcl8KdGhpcyBvbmUuIE90aGVyd2lzZSB3ZSBicmVhayBhYnN0cmFjdGlv bi4gRS5nLiB3aXRoIDEgYnJpZGdlIHdlJ2QgaGF2ZQoKYnJpZGdlQV9kaXNhYmxlKCk7CmVuY29k ZXJfZGlzYWJsZSgpOwpicmlkZ2VBX3Bvc3RfZGlzYWJsZSgpOwoKQnV0IGlmIG9uIHNvbWUgb3Ro ZXIgcGFydCBicmlkZ2UgQSBpcyBjb25uZWN0ZWQgdG8gYnJpZGdlIEIgKGkuZS4gd2UKcmVwbGFj ZSB0aGUgZW5jb2RlciB3aXRoIGEgY29tYm8gb2Ygb3RoZXJfZW5jb2RlciticmlkZ2VBKSB3aXRo IHlvdXIgY29kZQp0aGUgcG9zdF9kaXNhYmxlIGlzIHN1ZGRlbmx5IGludGVybGVhdmVkIHdpdGgg dGhlIHByZWNlZWRpbmcgc3RhZ2VzIGluIHRoZQpwaXBlbGluZToKCgpicmlkZ2VBX2Rpc2FibGUo KTsKYnJpZGdlQl9kaXNhYmxlKCk7Cm90aGVyX2VuY29kZXJfZGlzYWJsZSgpOwpicmlkZ2VBX3Bv c3RfZGlzYWJsZSgpOwpicmlkZ2VCX3Bvc3RfZGlzYWJsZSgpOwoKV2hpY2ggbWVhbnMgZnJvbSB0 aGUgcG92IG9mIGJyaWRnZUEgdGhlcmUncyBhIGRpZmZlcmVuY2UgYmV0d2VlbiB3aGV0aGVyCml0 J3MgY29ubmVjdGVkIHRvICJlbmNvZGVyIiBvciAib3RoZXJfZW5jb2RlciticmlkZ2VCIi4gQnV0 IGlmIHdlIHJlb3JkZXIKdGhlIHBvc3RfZGlzYWJsZSBzZXF1ZW5jZSBsaWtlIEkgc3VnZ2VzdCB3 ZSdsbCBnZXQ6CgpicmlkZ2VBX2Rpc2FibGUoKTsKYnJpZGdlQl9kaXNhYmxlKCk7Cm90aGVyX2Vu Y29kZXJfZGlzYWJsZSgpOwpicmlkZ2VCX3Bvc3RfZGlzYWJsZSgpOwpicmlkZ2VBX3Bvc3RfZGlz YWJsZSgpOwoKV2hpY2ggbWVhbnMgdGhhdCAiZW5jb2RlciIgYW5kICJvdGhlcl9lbmNvZGVyK2Jy aWRnZUIiIGxvb2sgdGhlIHNhbWUgZm9yCmJyaWRnZUEuIFRvIGF2b2lkIGNvbmZ1c2lvbiB0aGUg dHdvIHBpcGVsaW5lcyBpbiBodyBhcmU6CgplbmNvZGVyIC0tLT4gYnJpZGdlQQoKb3RoZXJfZW5j b2RlciAtLS0+IGJyaWRnZUIgLS0tPiBicmlkZ2VBCgo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJt X2JyaWRnZV9wb3N0X2Rpc2FibGUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9icmlkZ2VfbW9kZV9z ZXQgLSBzZXQgcHJvcG9zZWQgbW9kZSBmb3IgYWxsIGJyaWRnZXMgaW4gdGhlCj4gKyAqCQkJIGVu Y29kZXIgY2hhaW4KPiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gKyAq IEBtb2RlOiBkZXNpcmVkIG1vZGUgdG8gYmUgc2V0IGZvciB0aGUgYnJpZGdlCj4gKyAqIEBhZGp1 c3RlZF9tb2RlOiB1cGRhdGVkIG1vZGUgdGhhdCB3b3JrcyBmb3IgdGhpcyBicmlkZ2UKPiArICoK PiArICogQ2FsbHMgJ21vZGVfc2V0JyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwgdGhlIGJy aWRnZXMgaW4gdGhlCj4gKyAqIGVuY29kZXIgY2hhaW4sIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0 IGJyaWRnZSB0byB0aGUgbGFzdC4KPiArICoKPiArICogTm90ZTogdGhlIGJyaWRnZSBwYXNzZWQg c2hvdWxkIGJlIHRoZSBvbmUgY2xvc2VzdCB0byB0aGUgZW5jb2Rlcgo+ICsgKi8KPiArdm9pZCBk cm1fYnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSkKPiArewo+ICsJaWYgKCFicmlkZ2UpCj4gKwkJcmV0dXJuOwo+ICsKPiAr CWlmIChicmlkZ2UtPmZ1bmNzLT5tb2RlX3NldCkKPiArCQlicmlkZ2UtPmZ1bmNzLT5tb2RlX3Nl dChicmlkZ2UsIG1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICsKPiArCWRybV9icmlkZ2VfbW9kZV9z ZXQoYnJpZGdlLT5uZXh0LCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiArfQo+ICtFWFBPUlRfU1lN Qk9MKGRybV9icmlkZ2VfbW9kZV9zZXQpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9icmlkZ2VfcHJl X2VuYWJsZSAtIGNhbGxzICdwcmVfZW5hYmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwK PiArICoJCQkgICBicmlkZ2VzIGluIHRoZSBlbmNvZGVyIGNoYWluLgo+ICsgKiBAYnJpZGdlOiBi cmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICoKPiArICogQ2FsbHMgJ3ByZV9lbmFibGUnIGRy bV9icmlkZ2VfZnVuY3Mgb3AgZm9yIGFsbCB0aGUgYnJpZGdlcyBpbiB0aGUgZW5jb2Rlcgo+ICsg KiBjaGFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgYnJpZGdlIHRvIHRoZSBsYXN0LiBUaGVz ZSBhcmUgY2FsbGVkCj4gKyAqIGJlZm9yZSBjYWxsaW5nIHRoZSBlbmNvZGVyJ3MgY29tbWl0IG9w Lgo+ICsgKgo+ICsgKiBOb3RlOiB0aGUgYnJpZGdlIHBhc3NlZCBzaG91bGQgYmUgdGhlIG9uZSBj bG9zZXN0IHRvIHRoZSBlbmNvZGVyCj4gKyAqLwo+ICt2b2lkIGRybV9icmlkZ2VfcHJlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlpZiAoIWJyaWRnZSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJYnJpZGdlLT5mdW5jcy0+cHJlX2VuYWJsZShicmlkZ2UpOwo+ICsKPiAr CWRybV9icmlkZ2VfcHJlX2VuYWJsZShicmlkZ2UtPm5leHQpOwoKU2FtZSBhcyB3aXRoIHBvc3Rf ZGlzYWJsZSwgcHJlX2VuYWJsZSBmb3IgYnJpZGdlLT5uZXh0IHNob3VsZCBiZSBjYWxsZWQKX2Jl Zm9yZV8gdGhlIHByZV9lbmFibGUgZm9yIHRoaXMgYnJpZGdlLgoKPiArfQo+ICtFWFBPUlRfU1lN Qk9MKGRybV9icmlkZ2VfcHJlX2VuYWJsZSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2JyaWRnZV9l bmFibGUgLSBjYWxscyAnZW5hYmxlJyBkcm1fYnJpZGdlX2Z1bmNzIG9wIGZvciBhbGwgYnJpZGdl cwo+ICsgKgkJICAgICAgIGluIHRoZSBlbmNvZGVyIGNoYWluLgo+ICsgKiBAYnJpZGdlOiBicmlk Z2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICoKPiArICogQ2FsbHMgJ2VuYWJsZScgZHJtX2JyaWRn ZV9mdW5jcyBvcCBmb3IgYWxsIHRoZSBicmlkZ2VzIGluIHRoZSBlbmNvZGVyCj4gKyAqIGNoYWlu LCBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBicmlkZ2UgdG8gdGhlIGxhc3QuIFRoZXNlIGFyZSBj YWxsZWQKPiArICogYWZ0ZXIgY29tcGxldGluZyB0aGUgZW5jb2RlcidzIGNvbW1pdCBvcC4KPiAr ICoKPiArICogTm90ZSB0aGF0IHRoZSBicmlkZ2UgcGFzc2VkIHNob3VsZCBiZSB0aGUgb25lIGNs b3Nlc3QgdG8gdGhlIGVuY29kZXIKPiArICovCj4gK3ZvaWQgZHJtX2JyaWRnZV9lbmFibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJaWYgKCFicmlkZ2UpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWJyaWRnZS0+ZnVuY3MtPmVuYWJsZShicmlkZ2UpOwo+ICsKPiArCWRybV9icmlk Z2VfZW5hYmxlKGJyaWRnZS0+bmV4dCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdl X2VuYWJsZSk7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX09GCj4gIHN0cnVjdCBkcm1fYnJpZGdlICpv Zl9kcm1fZmluZF9icmlkZ2Uoc3RydWN0IGRldmljZV9ub2RlICpucCkKPiAgewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGNfaGVscGVyLmMKPiBpbmRleCBhYjAwMjg2Li5mZjliMzM4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY3J0Y19oZWxwZXIuYwo+IEBAIC0xNjMsMTYgKzE2MywxNCBAQCBkcm1fZW5jb2Rlcl9k aXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICAJY29uc3Qgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZW5jb2Rlcl9mdW5jcyA9IGVuY29kZXItPmhlbHBl cl9wcml2YXRlOwo+ICAKPiAtCWlmIChlbmNvZGVyLT5icmlkZ2UpCj4gLQkJZW5jb2Rlci0+YnJp ZGdlLT5mdW5jcy0+ZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJZHJtX2JyaWRnZV9kaXNh YmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gIAo+ICAJaWYgKGVuY29kZXJfZnVuY3MtPmRpc2FibGUp Cj4gIAkJKCplbmNvZGVyX2Z1bmNzLT5kaXNhYmxlKShlbmNvZGVyKTsKPiAgCWVsc2UKPiAgCQko KmVuY29kZXJfZnVuY3MtPmRwbXMpKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiAgCj4g LQlpZiAoZW5jb2Rlci0+YnJpZGdlKQo+IC0JCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPnBvc3Rf ZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoZW5j b2Rlci0+YnJpZGdlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgX19kcm1faGVscGVyX2Rpc2Fi bGVfdW51c2VkX2Z1bmN0aW9ucyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IEBAIC0zMTIsMTMg KzMxMCwxMSBAQCBib29sIGRybV9jcnRjX2hlbHBlcl9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAkJaWYgKGVuY29kZXItPmNydGMgIT0gY3J0YykKPiAgCQkJY29udGludWU7Cj4g IAo+IC0JCWlmIChlbmNvZGVyLT5icmlkZ2UgJiYgZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+bW9k ZV9maXh1cCkgewo+IC0JCQlyZXQgPSBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVw KAo+IC0JCQkJCWVuY29kZXItPmJyaWRnZSwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cj4gLQkJCWlm ICghcmV0KSB7Cj4gLQkJCQlEUk1fREVCVUdfS01TKCJCcmlkZ2UgZml4dXAgZmFpbGVkXG4iKTsK PiAtCQkJCWdvdG8gZG9uZTsKPiAtCQkJfQo+ICsJCXJldCA9IGRybV9icmlkZ2VfbW9kZV9maXh1 cChlbmNvZGVyLT5icmlkZ2UsCj4gKwkJCW1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICsJCWlmICgh cmV0KSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoIkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOwo+ICsJ CQlnb3RvIGRvbmU7Cj4gIAkJfQo+ICAKPiAgCQllbmNvZGVyX2Z1bmNzID0gZW5jb2Rlci0+aGVs cGVyX3ByaXZhdGU7Cj4gQEAgLTM0MywxNSArMzM5LDEzIEBAIGJvb2wgZHJtX2NydGNfaGVscGVy X3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlpZiAoZW5jb2Rlci0+Y3J0YyAh PSBjcnRjKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKGVuY29kZXItPmJyaWRnZSkKPiAt CQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+ZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJ CWRybV9icmlkZ2VfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICAKPiAgCQllbmNvZGVyX2Z1 bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7Cj4gIAkJLyogRGlzYWJsZSB0aGUgZW5jb2Rl cnMgYXMgdGhlIGZpcnN0IHRoaW5nIHdlIGRvLiAqLwo+ICAJCWVuY29kZXJfZnVuY3MtPnByZXBh cmUoZW5jb2Rlcik7Cj4gIAo+IC0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCj4gLQkJCWVuY29kZXIt PmJyaWRnZS0+ZnVuY3MtPnBvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJCWRybV9i cmlkZ2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gIAl9Cj4gIAo+ICAJZHJtX2Ny dGNfcHJlcGFyZV9lbmNvZGVycyhkZXYpOwo+IEBAIC0zNzYsOSArMzcwLDcgQEAgYm9vbCBkcm1f Y3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCWVuY29kZXJf ZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKPiAgCQllbmNvZGVyX2Z1bmNzLT5tb2Rl X3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiAgCj4gLQkJaWYgKGVuY29kZXIt PmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX3NldCkKPiAtCQkJZW5jb2Rl ci0+YnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQoZW5jb2Rlci0+YnJpZGdlLCBtb2RlLAo+IC0JCQkJ CWFkanVzdGVkX21vZGUpOwo+ICsJCWRybV9icmlkZ2VfbW9kZV9zZXQoZW5jb2Rlci0+YnJpZGdl LCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiAgCX0KPiAgCj4gIAkvKiBOb3cgZW5hYmxlIHRoZSBj bG9ja3MsIHBsYW5lLCBwaXBlLCBhbmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KPiBA QCAtMzg5LDE0ICszODEsMTIgQEAgYm9vbCBkcm1fY3J0Y19oZWxwZXJfc2V0X21vZGUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICAJCWlmIChlbmNvZGVyLT5jcnRjICE9IGNydGMpCj4gIAkJCWNv bnRpbnVlOwo+ICAKPiAtCQlpZiAoZW5jb2Rlci0+YnJpZGdlKQo+IC0JCQllbmNvZGVyLT5icmlk Z2UtPmZ1bmNzLT5wcmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gKwkJZHJtX2JyaWRnZV9w cmVfZW5hYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gIAo+ICAJCWVuY29kZXJfZnVuY3MgPSBlbmNv ZGVyLT5oZWxwZXJfcHJpdmF0ZTsKPiAgCQllbmNvZGVyX2Z1bmNzLT5jb21taXQoZW5jb2Rlcik7 Cj4gIAo+IC0JCWlmIChlbmNvZGVyLT5icmlkZ2UpCj4gLQkJCWVuY29kZXItPmJyaWRnZS0+ZnVu Y3MtPmVuYWJsZShlbmNvZGVyLT5icmlkZ2UpOwo+ICsJCWRybV9icmlkZ2VfZW5hYmxlKGVuY29k ZXItPmJyaWRnZSk7Cj4gIAl9Cj4gIAo+ICAJLyogQ2FsY3VsYXRlIGFuZCBzdG9yZSB2YXJpb3Vz IGNvbnN0YW50cyB3aGljaAo+IEBAIC03MzUsMjMgKzcyNSwxOSBAQCBzdGF0aWMgdm9pZCBkcm1f aGVscGVyX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2Rl KQo+ICAJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSA9IGVuY29kZXItPmJyaWRnZTsKPiAgCWNv bnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmVuY29kZXJfZnVuY3M7Cj4gIAo+ IC0JaWYgKGJyaWRnZSkgewo+IC0JCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCj4gLQkJ CWJyaWRnZS0+ZnVuY3MtPnByZV9lbmFibGUoYnJpZGdlKTsKPiAtCQllbHNlCj4gLQkJCWJyaWRn ZS0+ZnVuY3MtPmRpc2FibGUoYnJpZGdlKTsKPiAtCX0KPiArCWlmIChtb2RlID09IERSTV9NT0RF X0RQTVNfT04pCj4gKwkJZHJtX2JyaWRnZV9wcmVfZW5hYmxlKGJyaWRnZSk7Cj4gKwllbHNlCj4g KwkJZHJtX2JyaWRnZV9kaXNhYmxlKGJyaWRnZSk7Cj4gIAo+ICAJZW5jb2Rlcl9mdW5jcyA9IGVu Y29kZXItPmhlbHBlcl9wcml2YXRlOwo+ICAJaWYgKGVuY29kZXJfZnVuY3MtPmRwbXMpCj4gIAkJ ZW5jb2Rlcl9mdW5jcy0+ZHBtcyhlbmNvZGVyLCBtb2RlKTsKPiAgCj4gLQlpZiAoYnJpZGdlKSB7 Cj4gLQkJaWYgKG1vZGUgPT0gRFJNX01PREVfRFBNU19PTikKPiAtCQkJYnJpZGdlLT5mdW5jcy0+ ZW5hYmxlKGJyaWRnZSk7Cj4gLQkJZWxzZQo+IC0JCQlicmlkZ2UtPmZ1bmNzLT5wb3N0X2Rpc2Fi bGUoYnJpZGdlKTsKPiAtCX0KPiArCWlmIChtb2RlID09IERSTV9NT0RFX0RQTVNfT04pCj4gKwkJ ZHJtX2JyaWRnZV9lbmFibGUoYnJpZGdlKTsKPiArCWVsc2UKPiArCQlkcm1fYnJpZGdlX3Bvc3Rf ZGlzYWJsZShicmlkZ2UpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGRybV9oZWxwZXJfY2hvb3Nl X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gaW5kZXggY2E3MWMwMy4u ZGI4MzBmNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2NydGMuaAo+IEBAIC04OTUsNiArODk1LDggQEAgc3RydWN0IGRybV9icmlk Z2VfZnVuY3Mgewo+ICAvKioKPiAgICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFsIERSTSBi cmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiAgICogQGRldjogRFJNIGRldmljZSB0aGlzIGJyaWRn ZSBiZWxvbmdzIHRvCj4gKyAqIEBlbmNvZGVyOiBlbmNvZGVyIHRvIHdoaWNoIHRoaXMgYnJpZGdl IGlzIGNvbm5lY3RlZAo+ICsgKiBAbmV4dDogdGhlIG5leHQgYnJpZGdlIGluIHRoZSBlbmNvZGVy IGNoYWluCj4gICAqIEBvZl9ub2RlOiBkZXZpY2Ugbm9kZSBwb2ludGVyIHRvIHRoZSBicmlkZ2UK PiAgICogQGxpc3Q6IHRvIGtlZXAgdHJhY2sgb2YgYWxsIGFkZGVkIGJyaWRnZXMKPiAgICogQGJh c2U6IGJhc2UgbW9kZSBvYmplY3QKPiBAQCAtOTA0LDYgKzkwNiw3IEBAIHN0cnVjdCBkcm1fYnJp ZGdlX2Z1bmNzIHsKPiAgc3RydWN0IGRybV9icmlkZ2Ugewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fYnJp ZGdlICpuZXh0Owo+ICAjaWZkZWYgQ09ORklHX09GCj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9m X25vZGU7Cj4gICNlbmRpZgo+IEBAIC0xMjMwLDYgKzEyMzMsMTcgQEAgZXh0ZXJuIHZvaWQgZHJt X2JyaWRnZV9yZW1vdmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gIGV4dGVybiBzdHJ1 Y3QgZHJtX2JyaWRnZSAqb2ZfZHJtX2ZpbmRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAp Owo+ICBleHRlcm4gaW50IGRybV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICAKPiArYm9vbCBkcm1fYnJpZGdlX21vZGVf Zml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsCj4gKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlKTsKPiArdm9pZCBkcm1fYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSk7Cj4gK3ZvaWQgZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSk7Cj4gK3ZvaWQgZHJtX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlLAo+ICsJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiArCQkJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOwo+ICt2b2lkIGRybV9icmlkZ2VfcHJl X2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiArdm9pZCBkcm1fYnJpZGdlX2Vu YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiArCj4gIGV4dGVybiBpbnQgZHJtX2Vu Y29kZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgICAgc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNz ICpmdW5jcywKPiAtLSAKPiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMg YSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAo+IGhvc3RlZCBieSBUaGUgTGludXgg Rm91bmRhdGlvbgo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==