From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 8/9] drm/client: Add client callbacks Date: Thu, 24 May 2018 11:52:35 +0200 Message-ID: <20180524095235.GI3438@phenom.ffwll.local> References: <20180523143411.64070-1-noralf@tronnes.org> <20180523143411.64070-9-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 810C36E01C for ; Thu, 24 May 2018 09:52:39 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id w194-v6so3335168wmf.2 for ; Thu, 24 May 2018 02:52:39 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180523143411.64070-9-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgMjMsIDIwMTggYXQgMDQ6MzQ6MTBQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IEFkZCBjbGllbnQgY2FsbGJhY2tzIGFuZCBob29rIHRoZW0gdXAuCj4gQWRkIGEg bGlzdCBvZiBjbGllbnRzIHBlciBkcm1fZGV2aWNlLgoKUGF0Y2ggbml0LCBidXQgSSB0aGluayB0 aGUgZGVidWdmcyBzdHVmZiB3b3VsZCBiZSBuaWNlIGlmIHNwbGl0IG91dC4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2RybV9jbGllbnQuYyAgICAgICAgfCAyNDYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZGVidWdmcy5jICAgICAg IHwgICA3ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAgICAgICAgfCAgIDggKysK PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgfCAgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9maWxlLmMgICAgICAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX3Byb2JlX2hlbHBlci5jICB8ICAgMyArCj4gIGluY2x1ZGUvZHJtL2RybV9jbGllbnQuaCAg ICAgICAgICAgIHwgIDY1ICsrKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2RldmljZS5oICAg ICAgICAgICAgfCAgMTQgKysKPiAgOCBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGll bnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiBpbmRleCAwOTE5YWVhN2RkZGQu LmM0OTVmY2VlMjA1OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwo+IEBAIC02NiwxMSArNjYsMTMg QEAgc3RhdGljIHZvaWQgZHJtX2NsaWVudF9mcmVlX2ZpbGUoc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQpCj4gIC8qKgo+ICAgKiBkcm1fY2xpZW50X25ldyAtIENyZWF0ZSBhIERSTSBjbGll bnQKPiAgICogQGRldjogRFJNIGRldmljZQo+ICsgKiBAZnVuY3M6IERSTSBjbGllbnQgZnVuY3Rp b25zCj4gICAqCj4gICAqIFJldHVybnM6Cj4gICAqIFBvaW50ZXIgdG8gYSBjbGllbnQgb3IgYW4g ZXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgo+ICAgKi8KPiAtc3RydWN0IGRybV9jbGllbnRfZGV2 ICpkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdHJ1Y3QgZHJtX2Ns aWVudF9kZXYgKgo+ICtkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25z dCBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAqZnVuY3MpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50Owo+ICAJaW50IHJldDsKPiBAQCAtODQsNiArODYsNyBAQCBzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKmRybV9jbGllbnRfbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICAJY2xpZW50LT5kZXYgPSBkZXY7Cj4g KwljbGllbnQtPmZ1bmNzID0gZnVuY3M7Cj4gIAo+ICAJcmV0ID0gZHJtX2NsaWVudF9hbGxvY19m aWxlKGNsaWVudCk7Cj4gIAlpZiAocmV0KSB7Cj4gQEAgLTkxLDIxICs5NCwyMzEgQEAgc3RydWN0 IGRybV9jbGllbnRfZGV2ICpkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gIAl9Cj4gIAo+ICsJLyoKPiArCSAqIFRPRE86Cj4g KwkgKiBUZW1wb3JhcnkgaGFjayB1bnRpbCBhbGwgQ01BIGRyaXZlcnMgaGF2ZSBiZWVuIG1vdmVk IG92ZXIgdG8gdXNpbmcKPiArCSAqIGRybV9mYmRldl9nZW5lcmljX3NldHVwKCkuCj4gKwkgKi8K CkkgdGhpbmsgY2xpZW50cyB3aXRob3V0IGNhbGxiYWNrcyBtYWtlIHBlcmZlY3Qgc2Vuc2UsIGlt byBubyBuZWVkIGZvciBhClRPRE8uIEp1c3QgZXhwbGFpbiBpbiB0aGUga2VybmVsLWRvYyB0aGF0 IHRoZSBjYWxsYmFja3MgYXJlIG9wdGlvbmFsLgoKPiArCWlmICghZnVuY3MpCj4gKwkJcmV0dXJu IGNsaWVudDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ICsJ bGlzdF9hZGQoJmNsaWVudC0+bGlzdCwgJmRldi0+Y2xpZW50bGlzdCk7Cj4gKwltdXRleF91bmxv Y2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7Cj4gKwo+ICAJcmV0dXJuIGNsaWVudDsKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbmV3KTsKPiAgCj4gKy8qKgo+ICsgKiBkcm1fY2xp ZW50X25ld19mcm9tX2lkIC0gQ3JlYXRlIGEgRFJNIGNsaWVudCBmcm9tIGEgbWlub3IgaWQKPiAr ICogQG1pbm9yX2lkOiBEUk0gbWlub3IgaWQKPiArICogQGZ1bmNzOiBEUk0gY2xpZW50IGZ1bmN0 aW9ucwo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBQb2ludGVyIHRvIGEgY2xpZW50IG9yIGFu IGVycm9yIHBvaW50ZXIgb24gZmFpbHVyZS4KPiArICovCj4gK3N0cnVjdCBkcm1fY2xpZW50X2Rl diAqCj4gK2RybV9jbGllbnRfbmV3X2Zyb21faWQodW5zaWduZWQgaW50IG1pbm9yX2lkLCBjb25z dCBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAqZnVuY3MpCj4gK3sKPiArCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50Owo+ICsJc3RydWN0IGRybV9taW5vciAqbWlub3I7Cj4gKwo+ICsJbWlu b3IgPSBkcm1fbWlub3JfYWNxdWlyZShtaW5vcl9pZCk7Cj4gKwlpZiAoSVNfRVJSKG1pbm9yKSkK PiArCQlyZXR1cm4gRVJSX0NBU1QobWlub3IpOwo+ICsKPiArCWNsaWVudCA9IGRybV9jbGllbnRf bmV3KG1pbm9yLT5kZXYsIGZ1bmNzKTsKPiArCj4gKwlkcm1fbWlub3JfcmVsZWFzZShtaW5vcik7 Cj4gKwo+ICsJcmV0dXJuIGNsaWVudDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRf bmV3X2Zyb21faWQpOwoKSSBkb24ndCBnZXQgd2h5IHdlIG5lZWQgdGhpcyBuZXcgZnVuY3Rpb24g Li4uCgo+ICsKPiAgLyoqCj4gICAqIGRybV9jbGllbnRfZnJlZSAtIEZyZWUgRFJNIGNsaWVudCBy ZXNvdXJjZXMKPiAgICogQGNsaWVudDogRFJNIGNsaWVudAo+ICsgKgo+ICsgKiBUaGlzIGlzIGNh bGxlZCBhdXRvbWF0aWNhbGx5IG9uIGNsaWVudCByZW1vdmFsIHVubGVzcyB0aGUgY2xpZW50IHJl dHVybnMKPiArICogbm9uLXplcm8gaW4gdGhlICZkcm1fY2xpZW50X2Z1bmNzLT5yZW1vdmUgY2Fs bGJhY2suIFRoZSBmYmRldiBjbGllbnQgZG9lcwo+ICsgKiB0aGlzIHdoZW4gaXQgY2FuJ3QgY2xv c2UgJmRybV9maWxlIGJlY2F1c2UgdXNlcnNwYWNlIGhhcyBhbiBvcGVuIGZkLgo+ICsgKgo+ICsg KiBOb3RlOgo+ICsgKiBJZiB0aGUgY2xpZW50IGNhbid0IHJlbGVhc2UgaXQncyByZXNvdXJjZXMg b24gcmVtb3ZlLCBpdCBuZWVkcyB0byBob2xkIGEKPiArICogcmVmZXJlbmNlIG9uIHRoZSBkcml2 ZXIgbW9kdWxlIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBnb2luZyBhd2F5LgoKV2UgbmVlZCBh IGZ1bGwgcmVmZXJlbmNlIG9uIHRoZSBkcm1fZGV2aWNlIEkgdGhpbmssIG5vdCBqdXN0IHRoZSBj b2RlLiBJCnRob3VnaHQgZHJtX2ZpbGUgcHJvdmlkZXMgdGhhdCBmb3IgYW55IGRybV9jbGllbnQ/ CgoKPiAgICovCj4gIHZvaWQgZHJtX2NsaWVudF9mcmVlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAq Y2xpZW50KQo+ICB7Cj4gKwlEUk1fREVWX0RFQlVHX0tNUyhjbGllbnQtPmRldi0+ZGV2LCAiXG4i KTsKCkJvdGggYWJvdmUgYml0cyBwcm9iYWJseSBzaG91bGQgYmUgaW4gdGhlIHBhdGNoIHRoYXQg aW50cm9kdWNlcyB0aGVzZT8KCj4gIAlkcm1fY2xpZW50X2ZyZWVfZmlsZShjbGllbnQpOwo+ICAJ a2ZyZWUoY2xpZW50KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfZnJlZSk7Cj4g IAo+ICtzdGF0aWMgdm9pZCBkcm1fY2xpZW50X3JlbW92ZV9sb2NrZWQoc3RydWN0IGRybV9jbGll bnRfZGV2ICpjbGllbnQpCj4gK3sKPiArCWxpc3RfZGVsKCZjbGllbnQtPmxpc3QpOwo+ICsKPiAr CWlmICghY2xpZW50LT5mdW5jcy0+cmVtb3ZlIHx8ICFjbGllbnQtPmZ1bmNzLT5yZW1vdmUoY2xp ZW50KSkKPiArCQlkcm1fY2xpZW50X2ZyZWUoY2xpZW50KTsKClVnaCwgSSBkb24ndCBsaWtlIHRo aXMgc2VtYW50aWNzIG9mIC0+cmVtb3ZlLiBJbW8geW91IHJlYWxseSBvbmx5IHdhbnQgYW4KLT51 bnJlZ2lzdGVyIGhlcmUsIGFuIF9ub3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IGZyZWUgdGhlIGNs aWVudC4KQXV0b21hdGljbGx5IGZyZWVpbmcgdGhlIGNsaWVudCBwcmV2ZW50cyBlbWJlZGRlZCwg YW5kIGFsbCBhcm91bmQgc21lbGxzIGEKYml0IGxpa2UgbWlkbGF5ZXIgbWlzdGFrZS4KCldpdGhv dXQgdGhlIGF1dG9tYXRpYyBmcmVlaW5nIHlvdSBhbHNvIGRvbid0IG5lZWQgdGhlIHJldHVybiB2 YWx1ZSwgYW5kCnlvdSBjYW4gaGF2ZSBhIG1vcmUgc3RhbmRhcmQgdm9pZCByZXR1cm4gdHlwZSBm b3IgeW91ciB1bnJlZ2lzdGVyCmZ1bmN0aW9uLgoKV2UgbWlnaHQgbmVlZCB0byBtYWtlIHN1cmUg dGhlIGRybV9kZXZfdW5yZWdpc3RlciBkb2Vzbid0IGZyZWUgdXAgdGhlCmRybV9kZXZpY2Ugd2hp bGUgd2UgZG8gdGhhdCwgc28gbWlnaHQgbmVlZCBhIHRlbXBvcmFyeSByZWZlcmVuY2UuIEJ1dCBJ CmRvbid0IHRoaW5rIHdlIG5lZWQgYW55dGhpbmcgZWxzZSB0byBhdm9pZCBsb2NraW5nIGhlYWRh Y2hlcy4KCgo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fY2xpZW50X3JlbW92ZV9zYWZlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNs aWVudCkKPiArewo+ICsJc3RydWN0IGRybV9jbGllbnRfZGV2ICppdGVyOwo+ICsKPiArCW11dGV4 X2xvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0 ZXIsICZkZXYtPmNsaWVudGxpc3QsIGxpc3QpIHsKPiArCQlpZiAoaXRlciA9PSBjbGllbnQpIHsK PiArCQkJZHJtX2NsaWVudF9yZW1vdmVfbG9ja2VkKGNsaWVudCk7Cj4gKwkJCWJyZWFrOwo+ICsJ CX0KPiArCX0KPiArCW11dGV4X3VubG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiArfQo+ ICsKPiArLyoqCj4gKyAqIGRybV9jbGllbnRfcmVtb3ZlIC0gUmVtb3ZlIGNsaWVudAo+ICsgKiBA Y2xpZW50OiBDbGllbnQKPiArICoKPiArICogUmVtb3ZlIHRoZSBEUk0gY2xpZW50Lgo+ICsgKi8K PiArdm9pZCBkcm1fY2xpZW50X3JlbW92ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkK PiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCj4gKwlpZiAoIWNsaWVudCkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJZGV2ID0gY2xpZW50LT5kZXY7Cj4gKwkvKiBIb2xkIGEgcmVmZXJl bmNlIHNpbmNlIHRoZSBjbGllbnQgbWlnaHQgZHJvcCB0aGUgbGFzdCBvbmUgKi8KPiArCWRybV9k ZXZfZ2V0KGRldik7Cj4gKwlkcm1fY2xpZW50X3JlbW92ZV9zYWZlKGRldiwgY2xpZW50KTsKPiAr CWRybV9kZXZfcHV0KGRldik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X3JlbW92 ZSk7CgpObyBpZGVhIHdoYXQncyB0aGlzIGZvciwgc2VlbXMgdW51c2VkLiBQbGVhc2UgcmVtb3Zl IC0gd2UgY2FuIHJlYWRkIGxhdGVyCm9uLgoKPiArCj4gK3N0cnVjdCBkcm1fY2xpZW50X3JlbW92 ZV9kZWZlciB7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2Owo+ICsJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7Cj4gK307Cj4gKwo+ICtz dGF0aWMgTElTVF9IRUFEKGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xpc3QpOwo+ICtzdGF0aWMg REVGSU5FX01VVEVYKGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xpc3RfbG9jayk7Cj4gKwo+ICtz dGF0aWMgdm9pZCBkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyICpkZWZl ciwgKnRtcDsKPiArCj4gKwltdXRleF9sb2NrKCZkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl9saXN0 X2xvY2spOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlZmVyLCB0bXAsICZkcm1fY2xp ZW50X3JlbW92ZV9kZWZlcl9saXN0LCBsaXN0KSB7Cj4gKwkJZHJtX2NsaWVudF9yZW1vdmVfc2Fm ZShkZWZlci0+ZGV2LCBkZWZlci0+Y2xpZW50KTsKPiArCQlkcm1fZGV2X3B1dChkZWZlci0+ZGV2 KTsKPiArCQlsaXN0X2RlbCgmZGVmZXItPmxpc3QpOwo+ICsJCWtmcmVlKGRlZmVyKTsKPiArCX0K PiArCW11dGV4X3VubG9jaygmZHJtX2NsaWVudF9yZW1vdmVfZGVmZXJfbGlzdF9sb2NrKTsKPiAr fQo+ICsKPiArc3RhdGljIERFQ0xBUkVfV09SSyhkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl93b3Jr LCBkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl93b3JrX2ZuKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1f Y2xpZW50X3JlbW92ZV9kZWZlciAtIERlZmVycmVkIGNsaWVudCByZW1vdmFsCj4gKyAqIEBjbGll bnQ6IENsaWVudAo+ICsgKgo+ICsgKiBEZWZlciBjbGllbnQgcmVtb3ZhbCB0byBhIHdvcmtlci4g VGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBjbGllbnQgcnVubmluZwo+ICsgKiBpbiBhIHdv cmtlciB0byByZW1vdmUgaXRzZWxmLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBaZXJvIG9u IHN1Y2Nlc3MsIG9yIC1FTk9NRU0gb24gYWxsb2NhdGlvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50 IGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9yZW1vdmVfZGVmZXIgKmRlZmVyOwo+ICsKPiArCWlm ICghY2xpZW50KQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWRlZmVyID0ga3phbGxvYyhzaXplb2Yo KmRlZmVyKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWRlZmVyKQo+ICsJCXJldHVybiAtRU5PTUVN Owo+ICsKPiArCWRlZmVyLT5kZXYgPSBjbGllbnQtPmRldjsKPiArCWRlZmVyLT5jbGllbnQgPSBj bGllbnQ7Cj4gKwlkcm1fZGV2X2dldChjbGllbnQtPmRldik7Cj4gKwo+ICsJbXV0ZXhfbG9jaygm ZHJtX2NsaWVudF9yZW1vdmVfZGVmZXJfbGlzdF9sb2NrKTsKPiArCWxpc3RfYWRkKCZkZWZlci0+ bGlzdCwgJmRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xpc3QpOwo+ICsJbXV0ZXhfdW5sb2NrKCZk cm1fY2xpZW50X3JlbW92ZV9kZWZlcl9saXN0X2xvY2spOwo+ICsKPiArCXNjaGVkdWxlX3dvcmso JmRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX3dvcmspOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g K0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9yZW1vdmVfZGVmZXIpOwo+ICsKPiArdm9pZCBkcm1f Y2xpZW50X2V4aXQodm9pZCkKPiArewo+ICsJZmx1c2hfd29yaygmZHJtX2NsaWVudF9yZW1vdmVf ZGVmZXJfd29yayk7Cj4gK30KCkFsbCB0aGUgYWJvdmUgZGVmZXJyZWQgY2xpZW50IHJlbW92YWwg c2VlbXMgdW51c2VkLiBBbmQgSSBjYW4ndCBjb21lIHVwCndpdGggYSByZWFzb24gZm9yIHdoeSB3 ZSBuZWVkIHRoaXMuIFBsZWFzZSByZW1vdmUsIHdlIGNhbiBhZGQgaXQgd2hlbiB3ZQpuZWVkIGl0 IGxhdGVyIG9uLgoKPiArCj4gK3ZvaWQgZHJtX2NsaWVudF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwg KnRtcDsKPiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9E RVNFVCkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW11dGV4X2xvY2soJmRldi0+Y2xpZW50bGlzdF9t dXRleCk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY2xpZW50LCB0bXAsICZkZXYtPmNs aWVudGxpc3QsIGxpc3QpCj4gKwkJZHJtX2NsaWVudF9yZW1vdmVfbG9ja2VkKGNsaWVudCk7Cj4g KwltdXRleF91bmxvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7Cj4gK30KPiArCj4gK3ZvaWQg ZHJtX2NsaWVudF9kZXZfaG90cGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFk cm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+ICsJCXJldHVybjsK PiArCj4gKwltdXRleF9sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShjbGllbnQsICZkZXYtPmNsaWVudGxpc3QsIGxpc3QpIHsKPiArCQlpZiAoIWNs aWVudC0+ZnVuY3MtPmhvdHBsdWcpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlyZXQgPSBjbGll bnQtPmZ1bmNzLT5ob3RwbHVnKGNsaWVudCk7Cj4gKwkJRFJNX0RFVl9ERUJVR19LTVMoZGV2LT5k ZXYsICIlczogcmV0PSVkXG4iLCBjbGllbnQtPmZ1bmNzLT5uYW1lLCByZXQpOwo+ICsJfQo+ICsJ bXV0ZXhfdW5sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ICt9Cj4gK0VYUE9SVF9TWU1C T0woZHJtX2NsaWVudF9kZXZfaG90cGx1Zyk7Cj4gKwo+ICt2b2lkIGRybV9jbGllbnRfZGV2X2xh c3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFkcm1fY29yZV9jaGVja19m ZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+ICsJCXJldHVybjsKPiArCj4gKwltdXRleF9s b2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjbGll bnQsICZkZXYtPmNsaWVudGxpc3QsIGxpc3QpIHsKPiArCQlpZiAoIWNsaWVudC0+ZnVuY3MtPmxh c3RjbG9zZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXJldCA9IGNsaWVudC0+ZnVuY3MtPmxh c3RjbG9zZShjbGllbnQpOwoKSG0sIGl0J3MgY2FsbGVkIGZyb20gbGFzdGNsb3NlIGNvbnRleHQs IGJ1dCBjb25jZXB0dWFsbHkgdGhpcyBpc24ndCB3aGF0J3MKaGFwcGVuaW5nIGF0IGFsbC4gSSdk IGNhbGwgYm90aCB0aGUgY2FsbGJhY2sgYW5kIHRoZSBmdW5jdGlvbiBoZXJlCi0+cmVzdG9yZSBy ZXNwZWN0aXZlbHkgZHJtX2NsaWVudF9kZXZfcmVzdG9yZS4gTWFrZXMgaXQgbXVjaCBjbGVhcmVy CndoYXQncyBnb2luZyBvbiwgYW5kIHdoeSB0aGlzIG9uZSBoZXJlIGlzIHNwZWNpYWwuCgo+ICsJ CURSTV9ERVZfREVCVUdfS01TKGRldi0+ZGV2LCAiJXM6IHJldD0lZFxuIiwgY2xpZW50LT5mdW5j cy0+bmFtZSwgcmV0KTsKPiArCQlpZiAoIXJldCkgLyogVGhlIGZpcnN0IG9uZSB0byByZXR1cm4g emVybyBnZXRzIHRoZSBwcml2aWxlZ2UgdG8gcmVzdG9yZSAqLwo+ICsJCQlicmVhazsKPiArCX0K PiArCW11dGV4X3VubG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiArfQo+ICsKPiAgc3Rh dGljIHZvaWQgZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZl ciAqYnVmZmVyKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+IEBAIC0yMTgsNiAr NDMxLDkgQEAgc3RhdGljIGludCBkcm1fY2xpZW50X2J1ZmZlcl9hZGRmYihzdHJ1Y3QgZHJtX2Ns aWVudF9idWZmZXIgKmJ1ZmZlciwKPiAgCS8qIGRyb3AgdGhlIHJlZmVyZW5jZSB3ZSBwaWNrZWQg dXAgaW4gZnJhbWVidWZmZXIgbG9va3VwICovCj4gIAlkcm1fZnJhbWVidWZmZXJfcHV0KGJ1ZmZl ci0+ZmIpOwo+ICAKPiArCWlmIChjbGllbnQtPmZ1bmNzKQo+ICsJCXN0cnNjcHkoYnVmZmVyLT5m Yi0+Y29tbSwgY2xpZW50LT5mdW5jcy0+bmFtZSwgVEFTS19DT01NX0xFTik7CgpIbSwgc21hbGwg bml0OiBJJ2Qga2VlcCB0aGUgY2xpZW50IG5hbWUgaW4gZHJtX2NsaWVudF9kZXYsIG5vdCBpbiB0 aGUKZnVuY3Mgc3RydWN0dXJlLiBUaGF0IHdheSB5b3UgY291bGQgZHluYW1pY2FsbHkgYXNzaWdu IGl0IGlmIG5lZWRlZC4gVGhlCmltcG9ydGFudCBwYXJ0IGlzIHRvIGtlZXAgdGhlIGZ1bmN0aW9u cyBzZXBhcmF0ZSBmcm9tIGFueXRoaW5nIHRoYXQgY2FuCmNoYW5nZSwgc28gdGhhdCB3ZSBjYW4g cHV0IGl0IGludG8gcHJvdGVjdGVkIHJvIG1lbW9yeS4KCkZlZWwgZnJlZSB0byBpZ25vcmUgdGhp cyA6LSkKCj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTI2NSwzICs0ODEsMzEgQEAg dm9pZCBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZm ZXIgKmJ1ZmZlcikKPiAgCWRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShidWZmZXIpOwo+ICB9Cj4g IEVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUpOwo+ICsKPiArI2lm ZGVmIENPTkZJR19ERUJVR19GUwo+ICtzdGF0aWMgaW50IGRybV9jbGllbnRfZGVidWdmc19pbnRl cm5hbF9jbGllbnRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3Ry dWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBtLT5wcml2YXRlOwo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRy bV9zZXFfZmlsZV9wcmludGVyKG0pOwo+ICsJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7 Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoY2xpZW50LCAmZGV2LT5jbGllbnRsaXN0LCBsaXN0KQo+ICsJCWRybV9wcmlu dGYoJnAsICIlc1xuIiwgY2xpZW50LT5mdW5jcy0+bmFtZSk7Cj4gKwltdXRleF91bmxvY2soJmRl di0+Y2xpZW50bGlzdF9tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBkcm1fY2xpZW50X2RlYnVnZnNfbGlzdFtdID0g ewo+ICsJeyAiaW50ZXJuYWxfY2xpZW50cyIsIGRybV9jbGllbnRfZGVidWdmc19pbnRlcm5hbF9j bGllbnRzLCAwIH0sCj4gK307Cj4gKwo+ICtpbnQgZHJtX2NsaWVudF9kZWJ1Z2ZzX2luaXQoc3Ry dWN0IGRybV9taW5vciAqbWlub3IpCj4gK3sKPiArCXJldHVybiBkcm1fZGVidWdmc19jcmVhdGVf ZmlsZXMoZHJtX2NsaWVudF9kZWJ1Z2ZzX2xpc3QsCj4gKwkJCQkJQVJSQVlfU0laRShkcm1fY2xp ZW50X2RlYnVnZnNfbGlzdCksCj4gKwkJCQkJbWlub3ItPmRlYnVnZnNfcm9vdCwgbWlub3IpOwo+ ICt9Cj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RlYnVnZnMu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZGVidWdmcy5jCj4gaW5kZXggYjI0ODI4MThmZWU4Li41 MGEyMGJmYzA3ZWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RlYnVnZnMuYwo+IEBAIC0yOCw2ICsyOCw3IEBA Cj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4K PiAgCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVudC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9k ZWJ1Z2ZzLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+Cj4gQEAgLTE2NCw2ICsxNjUsMTIgQEAgaW50IGRybV9kZWJ1Z2ZzX2luaXQo c3RydWN0IGRybV9taW5vciAqbWlub3IsIGludCBtaW5vcl9pZCwKPiAgCQkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gY3JlYXRlIGZyYW1lYnVmZmVyIGRlYnVnZnMgZmlsZVxuIik7Cj4gIAkJCXJldHVy biByZXQ7Cj4gIAkJfQo+ICsKPiArCQlyZXQgPSBkcm1fY2xpZW50X2RlYnVnZnNfaW5pdChtaW5v cik7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgY2xp ZW50IGRlYnVnZnMgZmlsZVxuIik7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICAJfQo+ICAK PiAgCWlmIChkZXYtPmRyaXZlci0+ZGVidWdmc19pbml0KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gaW5kZXgg NjdhYzc5M2E3MTA4Li5kN2MxY2VlYmQwZGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiBAQCAtMzQsNiAr MzQsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICAjaW5jbHVkZSA8bGludXgvc3Jj dS5oPgo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtX2Rydi5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgCj4gQEAgLTUwNiw2ICs1MDcs NyBAQCBpbnQgZHJtX2Rldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJSU5J VF9MSVNUX0hFQUQoJmRldi0+ZmlsZWxpc3QpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+Zmls ZWxpc3RfaW50ZXJuYWwpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y2xpZW50bGlzdCk7Cj4g IAlJTklUX0xJU1RfSEVBRCgmZGV2LT5jdHhsaXN0KTsKPiAgCUlOSVRfTElTVF9IRUFEKCZkZXYt PnZtYWxpc3QpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+bWFwbGlzdCk7Cj4gQEAgLTUxNSw2 ICs1MTcsNyBAQCBpbnQgZHJtX2Rldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlz cGluX2xvY2tfaW5pdCgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCW11dGV4X2luaXQoJmRldi0+c3Ry dWN0X211dGV4KTsKPiAgCW11dGV4X2luaXQoJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICsJbXV0 ZXhfaW5pdCgmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiAgCW11dGV4X2luaXQoJmRldi0+Y3R4 bGlzdF9tdXRleCk7Cj4gIAltdXRleF9pbml0KCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4gIAo+IEBA IC01NzAsNiArNTczLDcgQEAgaW50IGRybV9kZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICBlcnJfZnJlZToKPiAgCW11dGV4X2Rlc3Ryb3koJmRldi0+bWFzdGVyX211dGV4KTsKPiAg CW11dGV4X2Rlc3Ryb3koJmRldi0+Y3R4bGlzdF9tdXRleCk7Cj4gKwltdXRleF9kZXN0cm95KCZk ZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ICAJbXV0ZXhfZGVzdHJveSgmZGV2LT5maWxlbGlzdF9t dXRleCk7Cj4gIAltdXRleF9kZXN0cm95KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4g cmV0Owo+IEBAIC02MDQsNiArNjA4LDcgQEAgdm9pZCBkcm1fZGV2X2Zpbmkoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCj4gIAltdXRleF9kZXN0cm95KCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4g IAltdXRleF9kZXN0cm95KCZkZXYtPmN0eGxpc3RfbXV0ZXgpOwo+ICsJbXV0ZXhfZGVzdHJveSgm ZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiAgCW11dGV4X2Rlc3Ryb3koJmRldi0+ZmlsZWxpc3Rf bXV0ZXgpOwo+ICAJbXV0ZXhfZGVzdHJveSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJa2ZyZWUo ZGV2LT51bmlxdWUpOwo+IEBAIC04NTQsNiArODU5LDggQEAgdm9pZCBkcm1fZGV2X3VucmVnaXN0 ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9tYXBfbGlzdCAq cl9saXN0LCAqbGlzdF90ZW1wOwo+ICAKPiArCWRybV9jbGllbnRfZGV2X3VucmVnaXN0ZXIoZGV2 KTsKPiArCj4gIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9MRUdBQ1kp KQo+ICAJCWRybV9sYXN0Y2xvc2UoZGV2KTsKPiAgCj4gQEAgLTk1OSw2ICs5NjYsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkcm1fc3R1Yl9mb3BzID0gewo+ICAKPiAg c3RhdGljIHZvaWQgZHJtX2NvcmVfZXhpdCh2b2lkKQo+ICB7Cj4gKwlkcm1fY2xpZW50X2V4aXQo KTsKPiAgCXVucmVnaXN0ZXJfY2hyZGV2KERSTV9NQUpPUiwgImRybSIpOwo+ICAJZGVidWdmc19y ZW1vdmUoZHJtX2RlYnVnZnNfcm9vdCk7Cj4gIAlkcm1fc3lzZnNfZGVzdHJveSgpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4gaW5kZXggNzZlMmY3OTc3Nzc5Li5hZmYzYzIxNWQ5 ZTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwo+IEBAIC0xODAsNyArMTgw LDcgQEAgc3RydWN0IGRybV9mYmRldl9jbWEgKmRybV9mYmRldl9jbWFfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJaWYgKCFmYmRldl9jbWEpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7Cj4gIAo+IC0JY2xpZW50ID0gZHJtX2NsaWVudF9uZXcoZGV2KTsKPiArCWNsaWVudCA9 IGRybV9jbGllbnRfbmV3KGRldiwgTlVMTCk7Cj4gIAlpZiAoSVNfRVJSKGNsaWVudCkpIHsKPiAg CQlyZXQgPSBQVFJfRVJSKGNsaWVudCk7Cj4gIAkJZ290byBlcnJfZnJlZTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUu Ywo+IGluZGV4IDU1NTA1Mzc4ZGY0Ny4uYmNjNjg4ZTU4Nzc2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZmlsZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMK PiBAQCAtMzUsNiArMzUsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICAjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Cj4gIAo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KPiAg I2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgCj4g QEAgLTQ0Myw2ICs0NDQsOCBAQCB2b2lkIGRybV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2Ug KiBkZXYpCj4gIAo+ICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTEVH QUNZKSkKPiAgCQlkcm1fbGVnYWN5X2Rldl9yZWluaXQoZGV2KTsKPiArCj4gKwlkcm1fY2xpZW50 X2Rldl9sYXN0Y2xvc2UoZGV2KTsKPiAgfQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2Jl X2hlbHBlci5jCj4gaW5kZXggNTI3NzQzMzk0MTUwLi4yNmJlNTdlMjhhOWQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKPiBAQCAtMzMsNiArMzMsNyBAQAo+ICAjaW5jbHVkZSA8 bGludXgvbW9kdWxlcGFyYW0uaD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxw ZXIuaD4KPiBAQCAtNTYzLDYgKzU2NCw4IEBAIHZvaWQgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJZHJtX3N5c2ZzX2hvdHBsdWdfZXZlbnQo ZGV2KTsKPiAgCWlmIChkZXYtPm1vZGVfY29uZmlnLmZ1bmNzLT5vdXRwdXRfcG9sbF9jaGFuZ2Vk KQo+ICAJCWRldi0+bW9kZV9jb25maWcuZnVuY3MtPm91dHB1dF9wb2xsX2NoYW5nZWQoZGV2KTsK PiArCj4gKwlkcm1fY2xpZW50X2Rldl9ob3RwbHVnKGRldik7Cj4gIH0KPiAgRVhQT1JUX1NZTUJP TChkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9jbGllbnQuaCBiL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaAo+IGluZGV4IDEx Mzc5ZWFmMzExOC4uMDExYTg3YWQzNDA2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9j bGllbnQuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaAo+IEBAIC01LDExICs1LDU2 IEBACj4gIAo+ICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiAgCj4gK3N0cnVjdCBkcm1fY2xp ZW50X2RldjsKPiAgc3RydWN0IGRybV9kZXZpY2U7Cj4gIHN0cnVjdCBkcm1fZnJhbWVidWZmZXI7 Cj4gIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiAgc3RydWN0IGRybV9taW5vcjsKPiAgCj4gKy8q Kgo+ICsgKiBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAtIERSTSBjbGllbnQgY2FsbGJhY2tzCj4g KyAqLwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyB7Cj4gKwkvKioKPiArCSAqIEBuYW1lOgo+ ICsJICoKPiArCSAqIE5hbWUgb2YgdGhlIGNsaWVudC4gTWFuZGF0b3J5Lgo+ICsJICovCj4gKwlj b25zdCBjaGFyICpuYW1lOwo+ICsKPiArCS8qKgo+ICsJICogQHJlbW92ZToKPiArCSAqCj4gKwkg KiBDYWxsZWQgd2hlbiBhICZkcm1fZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCBvciB0aGUgY2xpZW50 IGlzCj4gKwkgKiB1bnJlZ2lzdGVyZWQuIElmIHplcm8gaXMgcmV0dXJuZWQgZHJtX2NsaWVudF9m cmVlKCkgaXMgY2FsbGVkCj4gKwkgKiBhdXRvbWF0aWNhbGx5LiBJZiB0aGUgY2xpZW50IGNhbid0 IGRyb3AgaXQncyByZXNvdXJjZXMgaXQgc2hvdWxkCj4gKwkgKiByZXR1cm4gbm9uLXplcm8gYW5k IGNhbGwgZHJtX2NsaWVudF9mcmVlKCkgbGF0ZXIuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFj ayBpcyBvcHRpb25hbC4KPiArCSAqLwo+ICsJaW50ICgqcmVtb3ZlKShzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudCk7CgpzL3JlbW92ZS91bnJlZ2lzdGVyLyBhbmQgdm9pZCByZXR1cm4gdHlw ZS4gU2VlIGFib3ZlLgoKQWxzbyB3ZSBzaG91bGQgZG9jdW1lbnQgaGVyZSB0aGF0IG9uY2UgLT51 bnJlZ2lzdGVyIGlzIGNhbGwsIHdlIHdpbGwgbm8KbG9uZ2VyIGNhbGwgLT5yZXN0b3JlIG5vciAt PmhvdHBsdWcuCgo+ICsKPiArCS8qKgo+ICsJICogQGxhc3RjbG9zZToKPiArCSAqCj4gKwkgKiBD YWxsZWQgb24gZHJtX2xhc3RjbG9zZSgpLiBUaGUgZmlyc3QgY2xpZW50IGluc3RhbmNlIGluIHRo ZSBsaXN0Cj4gKwkgKiB0aGF0IHJldHVybnMgemVybyBnZXRzIHRoZSBwcml2aWxlZ2UgdG8gcmVz dG9yZSBhbmQgbm8gbW9yZSBjbGllbnRzCj4gKwkgKiBhcmUgY2FsbGVkLgo+ICsJICoKPiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8KPiArCWludCAoKmxhc3RjbG9zZSko c3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpOwoKSSdkIGNhbGwgdGhpcyByZXN0b3JlLiBN YWtlcyBpdCBtb3JlIG9idmlvdXMgd2hhdCBpdCdzIGZvci4KCj4gKwo+ICsJLyoqCj4gKwkgKiBA aG90cGx1ZzoKPiArCSAqCj4gKwkgKiBDYWxsZWQgb24gZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudCgpLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8K PiArCWludCAoKmhvdHBsdWcpKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKPiArfTsK PiArCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgLSBEUk0gY2xpZW50IGluc3Rh bmNlCj4gICAqLwo+IEBAIC0yNyw2ICs3MiwxMSBAQCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgewo+ ICAJICovCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+ICAKPiArCS8qKgo+ICsJICogQGZ1 bmNzOiBEUk0gY2xpZW50IGZ1bmN0aW9ucwo+ICsJICovCj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Ns aWVudF9mdW5jcyAqZnVuY3M7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAZmlsZTogRFJNIGZpbGUKPiAg CSAqLwo+IEBAIC0zOSw3ICs4OSwyMCBAQCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgewo+ICB9Owo+ ICAKPiAgdm9pZCBkcm1fY2xpZW50X2ZyZWUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQp Owo+IC1zdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmRybV9jbGllbnRfbmV3KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKgo+ICtkcm1fY2xpZW50X25ldyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAqZnVu Y3MpOwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKgo+ICtkcm1fY2xpZW50X25ld19mcm9tX2lk KHVuc2lnbmVkIGludCBtaW5vcl9pZCwgY29uc3Qgc3RydWN0IGRybV9jbGllbnRfZnVuY3MgKmZ1 bmNzKTsKPiArdm9pZCBkcm1fY2xpZW50X3JlbW92ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNs aWVudCk7Cj4gK2ludCBkcm1fY2xpZW50X3JlbW92ZV9kZWZlcihzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudCk7Cj4gKwo+ICt2b2lkIGRybV9jbGllbnRfZXhpdCh2b2lkKTsKPiArCj4gK3Zv aWQgZHJtX2NsaWVudF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAr dm9pZCBkcm1fY2xpZW50X2Rldl9ob3RwbHVnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2 b2lkIGRybV9jbGllbnRfZGV2X2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAr Cj4gK2ludCBkcm1fY2xpZW50X2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7 Cj4gIAo+ICAvKioKPiAgICogc3RydWN0IGRybV9jbGllbnRfYnVmZmVyIC0gRFJNIGNsaWVudCBi dWZmZXIKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RldmljZS5oIGIvaW5jbHVkZS9k cm0vZHJtX2RldmljZS5oCj4gaW5kZXggOWUyOTk3NmQ0ZTk4Li5mOWM2ZTBlM2FlYzcgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RldmljZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2RldmljZS5oCj4gQEAgLTgxLDYgKzgxLDIwIEBAIHN0cnVjdCBkcm1fZGV2aWNlIHsKPiAgCSAq Lwo+ICAJc3RydWN0IGxpc3RfaGVhZCBmaWxlbGlzdF9pbnRlcm5hbDsKPiAgCj4gKwkvKioKPiAr CSAqIEBjbGllbnRsaXN0X211dGV4Ogo+ICsJICoKPiArCSAqIFByb3RlY3RzIEBjbGllbnRsaXN0 IGFjY2Vzcy4KPiArCSAqLwo+ICsJc3RydWN0IG11dGV4IGNsaWVudGxpc3RfbXV0ZXg7Cj4gKwo+ ICsJLyoqCj4gKwkgKiBAY2xpZW50bGlzdDoKPiArCSAqCj4gKwkgKiBMaXN0IG9mIGluLWtlcm5l bCBjbGllbnRzLiBQcm90ZWN0ZWQgYnkgQGNsaWVudGxpc3RfbXV0ZXguCj4gKwkgKi8KPiArCXN0 cnVjdCBsaXN0X2hlYWQgY2xpZW50bGlzdDsKPiArCj4gIAkvKiogXG5hbWUgTWVtb3J5IG1hbmFn ZW1lbnQgKi8KPiAgCS8qQHsgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgbWFwbGlzdDsJLyoqPCBM aW5rZWQgbGlzdCBvZiByZWdpb25zICovCgpsZ3RtIG92ZXJhbGwsIGp1c3QgYSBmZXcgbml0cyB3 cnQgbmFtaW5nIHN0dWZmLCBhbmQgc3BsaXR0aW5nIHRoaW5ncyBvdXQKdGhhdCB3ZSBkb250ICh5 ZXQpIG5lZWQuIFBsdXMgdGhlIHVucmVnaXN0ZXIgc2VtYW50aWNzIGRvbid0IGxvb2sgZnVsbHkK dGhvdWdodCBvdXQgdG8gbWUgeWV0LgotRGFuaWVsCgo+IC0tIAo+IDIuMTUuMQo+IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1h aWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=