From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 05/13] drm: locking&new iterators for connector_list Date: Wed, 14 Dec 2016 13:22:15 +0200 Message-ID: <874m26sql4.fsf@intel.com> References: <20161213230814.19598-1-daniel.vetter@ffwll.ch> <20161213230814.19598-6-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161213230814.19598-6-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxNCBEZWMgMjAxNiwgRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD4gd3JvdGU6Cj4gVGhlIHJlcXVpcmVtZW50cyBmb3IgY29ubmVjdG9yX2xpc3QgbG9ja2luZyBh cmUgYSBiaXQgdHJpY2t5Ogo+IC0gV2UgbmVlZCB0byBiZSBhYmxlIHRvIGp1bXAgb3ZlciB6b21i aWUgY29uZWN0b3JzIChpLmUuIHdpdGggcmVmY291bnQKPiAgID09IDAsIGJ1dCBub3QgeWV0IHJl bW92ZWQgZnJvbSB0aGUgbGlzdCkuIElmIGluc3RlYWQgd2UgcmVxdWlyZSB0aGF0Cj4gICB0aGVy ZSdzIG5vIHpvbWJpZXMgb24gdGhlIGxpc3QgdGhlbiB0aGUgZmluYWwga3JlZl9wdXQgbXVzdCBo YXBwZW4KPiAgIHVuZGVyIHRoZSBsaXN0IHByb3RlY3Rpb24gbG9jaywgd2hpY2ggbWVhbnMgdGhh dCBsb2NraW5nIGNvbnRleHQKPiAgIGxlYWtzIGFsbCBvdmVyIHRoZSBwbGFjZS4gTm90IHByZXR0 eSAtIGJldHRlciB0byBkZWFsIHdpdGggem9tYmllcwo+ICAgYW5kIHdyYXAgdGhlIGxvY2tpbmcg anVzdCBhcm91bmQgdGhlIGxpc3RfZGVsIGluIHRoZSBkZXN0cnVjdG9yLgo+Cj4gLSBXaGVuIHdl IHdhbGsgdGhlIGxpc3Qgd2UgbXVzdCBfbm90XyBob2xkIHRoZSBjb25uZWN0b3IgbGlzdCBsb2Nr LiBXZQo+ICAgd2FsayB0aGUgY29ubmVjdG9yIGxpc3QgYXQgYW4gYWJzb2x1dGVseSBtYXNzaXZl IGFtb3VudHMgb2YgcGxhY2VzLAo+ICAgaWYgYWxsIHRob3NlIHBsYWNlcyBjYW4ndCBldmVyIGNh bGwgZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZSB0aGUKPiAgIGNvZGUgd291bGQgZ2V0IHVuZWNl c3NhcmlseSBjb21wbGljYXRlZC4KPgo+IC0gY29ubmVjdG9yX2xpc3QgbmVlZHMgaXQgb3duIGxv Y2ssIGFnYWluIHRvbyBtYW55IHBsYWNlcyB0aGF0IHdhbGsgaXQKPiAgIHRoYXQgd2UgY291bGQg cmV1c2UgZS5nLiBtb2RlX2NvbmZpZy5tdXRleCB3aXRob3V0IHJlc3VsdGluZyBpbgo+ICAgaW52 ZXJzaW9ucy4KPgo+IC0gTG90cyBvZiBjb2RlIHVzZXMgdGhlc2UgbG9vcHMgdG8gbG9vay11cCBh IGNvbm5lY3RvciwgaS5lLiB0aGV5IHdhbnQKPiAgIHRvIGJlIGFibGUgdG8gY2FsbCBkcm1fY29u bmVjdG9yX3JlZmVyZW5jZS4gQnV0IG9uIHRoZSBvdGhlciBoYW5kIHdlCj4gICB3YW50IGNvbm5l Y3RvcnMgdG8gc3RheSBvbiB0aGF0IGxpc3QgdW50aWwgdGhleSdyZSBkZWFkIChpLmUuCj4gICBj b25uZWN0b3JfbGlzdCBjYW4ndCBob2xkIGEgZnVsbCByZWZlcmVuY2UpLCB3aGljaCBtZWFucyBk ZXNwaXRlIHRoZQo+ICAgImNhbid0IGhvbGQgbG9jayBmb3IgdGhlIGxvb3AgYm9keSIgcnVsZSB3 ZSBuZWVkIHRvIG1ha2Ugc3VyZSBhCj4gICBjb25uZWN0b3IgZG9lc24ndCBzdWRkZW5seSBiZWNv bWUgYSB6b21iaWUuCj4KPiBBdCBmaXJzdCBEYXZlJkkgZGlzY3Vzc2VkIHZhcmlvdXMgaG9ycm9y LXNob3cgYXBwcm9hY2hlcyB1c2luZyBzcmN1LAo+IGJ1dCB0dXJucyBvdXQgaXQncyBmYWlybHkg ZWFzeToKPgo+IC0gRm9yIHRoZSBsb29wIGJvZHkgd2UgYWx3YXlzIGhvbGQgYW4gYWRkaXRpb25h bCByZWZlcmVuY2UgdG8gdGhlCj4gICBjdXJyZW50IGNvbm5lY3Rvci4gVGhhdCBtZWFucyBpdCBj YW4ndCB6b21iaWZ5LCBhbmQgaXQgYWxzbyBtZWFucwo+ICAgaXQnbGwgc3RheSBvbiB0aGUgbGlz dCwgd2hpY2ggbWVhbnMgd2UgY2FuIHVzZSBpdCBhcyBvdXIgaXRlcmF0b3IgdG8KPiAgIGZpbmQg dGhlIG5leHQgY29ubmVjdG9yLgo+Cj4gLSBXaGVuIHdlIHRyeSB0byBmaW5kIHRoZSBuZXh0IGNv bm5lY3RvciB3ZSBvbmx5IGhhdmUgdG8ganVtcCBvdmVyCj4gICB6b21iaWVzLiBUbyBtYWtlIHN1 cmUgd2UgZG9uJ3QgY2hhc2UgYmFkIHBvaW50ZXJzIHRoYXQgZW50aXJlIGxvb3AKPiAgIGlzIHBy b3RlY3RlZCB3aXRoIHRoZSBuZXcgY29ubmVjdF9saXN0X2xvY2sgc3BpbmxvY2suIEFuZCBiZWNh dXNlIHdlCj4gICBrbm93IHRoYXQgd2UncmUgc3RhcnRpbmcgb3V0IHdpdGggYSBub24tem9tYmll IChuZWVkIHRvIGRyb3Agb3VyCj4gICByZWZlcmVuY2UgZm9yIHRoZSBvbGQgY29ubmVjdG9yIG9u bHkgYWZ0ZXIgd2UgaGF2ZSBvdXIgbmV3IG9uZSksCj4gICB3ZSdyZSBndXJhbnRlZWQgdG8gc3Rp bGwgYmUgb24gdGhlIGNvbm5lY3Rvcl9saXN0IGFuZCBlaXRoZXIgZmluZAo+ICAgdGhlIG5leHQg bm9uLXpvbWJpZSBvciBjb21wbGV0ZSB0aGUgaXRlcmF0aW9uLgo+Cj4gLSBPbmx5IGRvd25zaWRl IGlzIHRoYXQgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgdGVtcG9yYXJ5Cj4gICByZWZl cmVuY2UgZm9yIHRoZSBsb29wIGJvZHkgZG9lc24ndCBsZWFrLiBpdGVyX2dldC9wdXQoKSBmdW5j dGlvbnMgKwo+ICAgbG9ja2RlcCBtYWtlIHN1cmUgdGhhdCdzIHRoZSBjYXNlLgo+Cj4gLSBUbyBh dm9pZCBhIGZsYWcgZGF5IHRoZSBuZXcgaXRlcmF0b3IgbWFjcm8gaGFzIGFuIF9pdGVyIHBvc3Rm aXguIFdlCj4gICBjYW4gcmVuYW1lIGl0IGJhY2sgb25jZSBhbGwgdGhlIHVzZXJzIG9mIHRoZSB1 bnNhZmUgdmVyc2lvbiBhcmUgZ29uZQo+ICAgKHRoZXJlJ3MgYWJvdXQgMTAwIGxpc3Qgd2Fsa2Vy cyBmb3IgdGhlIGNvbm5lY3Rvcl9saXN0KS4KPgo+IEZvciBub3cgdGhpcyBwYXRjaCBvbmx5IGNv bnZlcnRzIGFsbCB0aGUgbGlzdCB3YWxraW5nIGluIHRoZSBjb3JlLAo+IGxlYXZpbmcgaGVscGVy cyBhbmQgZHJpdmVycyBmb3IgbGF0ZXIgcGF0Y2hlcy4gVGhlIG5pY2UgdGhpbmcgaXMgdGhhdAo+ IHdlIGNhbiBub3cgZmluYWxseSByZW1vdmUgMiBGSVhNRSBjb21tZW50cyBmcm9tIHRoZQo+IHJl Z2lzdGVyL3VucmVnaXN0ZXIgZnVuY3Rpb25zLgo+Cj4gdjI6Cj4gLSB1c2UgaXJxc2FmZSBzcGlu bG9ja3MsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGlzIGluIGRybV9zdGF0ZV9kdW1wCj4gICB0b28u Cj4gLSBudWtlIGRybV9tb2Rlc2V0X2xvY2tfYWxsIGZyb20gZHJtX2Nvbm5lY3Rvcl9pbml0LCBu b3cgZW50aXJlbHkKPiAgIGNhcmdvLWN1bHRlZCBub25zZW5zZS4KPgo+IHYzOgo+IC0gZG8ge30g d2hpbGUgKCFrcmVmX2dldF91bmxlc3NfemVybyksIG1ha2VzIGZvciBhIHRpZGllciBsb29wIChE YXZlKS4KPiAtIHByZXR0eSBrZXJuZWxkb2MKPiAtIGFkZCBFWFBPUlRfU1lNQk9MLCBoZWxwZXJz JmRyaXZlcnMgYXJlIHN1cHBvc2VkIHRvIHVzZSB0aGlzLgo+Cj4gdjQ6IENoYW5nZSBsb2NrZGVw IGFubm90YXRpb25zIHRvIG9ubHkgY2hlY2sgd2hldGhlciB3ZSByZWxlYXNlIHRoZQo+IGl0ZXIg ZmFrZSBsb2NrIGFnYWluIChpLmUuIG1ha2Ugc3VyZSB0aGF0IGl0ZXJfcHV0IGlzIGNhbGxlZCks IGJ1dAo+IG5vdCBjaGVjayBhbnkgbG9ja2luZyBkZXBlbmRlY2llcyBpdHNlbGYuIFRoYXQgc2Vh bXMgdG8gcmVxdWlyZSBhCj4gcmVjdXJzaXZlIHJlYWQgbG9jayBpbiB0cnlsb2NrIG1vZGUuCj4K PiBDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAZ21haWwuY29tPgo+IENjOiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyAgICAgIHwgIDE0ICsrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9y LmMgICB8IDExNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2VuY29kZXIuYyAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2RybV9tb2RlX2NvbmZpZy5jIHwgIDM0ICsrKysrLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaCAgICAgICB8ICAzOCArKysrKysrKysrKysrCj4gIGluY2x1ZGUvZHJtL2RybV9t b2RlX2NvbmZpZy5oICAgICB8ICAxMiArKystCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2Vy dGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggNjA2 OTc0ODJiOTRjLi5iMjNiNGFiZDY3YmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMTQx Nyw2ICsxNDE3LDcgQEAgZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25m aWcgPSAmc3RhdGUtPmRldi0+bW9kZV9jb25maWc7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+ICAJaW50IHJldDsK PiAgCj4gIAlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjb25maWctPmNvbm5lY3Rpb25fbXV0ZXgs IHN0YXRlLT5hY3F1aXJlX2N0eCk7Cj4gQEAgLTE0MzAsMTQgKzE0MzEsMTggQEAgZHJtX2F0b21p Y19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIAkgKiBDaGFuZ2VkIGNvbm5lY3RvcnMgYXJlIGFscmVhZHkgaW4gQHN0YXRlLCBzbyBvbmx5 IG5lZWQgdG8gbG9vayBhdCB0aGUKPiAgCSAqIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KPiAgCSAq Lwo+IC0JZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcihjb25uZWN0b3IsIHN0YXRlLT5kZXYpIHsKPiAr CWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2dldChzdGF0ZS0+ZGV2LCAmY29ubl9pdGVyKTsKPiAr CWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKPiAg CQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICAJCQljb250aW51ZTsKPiAg Cj4gIAkJY29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwg Y29ubmVjdG9yKTsKPiAtCQlpZiAoSVNfRVJSKGNvbm5fc3RhdGUpKQo+ICsJCWlmIChJU19FUlIo Y29ubl9zdGF0ZSkpIHsKPiArCQkJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KCZjb25uX2l0 ZXIpOwo+ICAJCQlyZXR1cm4gUFRSX0VSUihjb25uX3N0YXRlKTsKPiArCQl9Cj4gIAl9Cj4gKwlk cm1fY29ubmVjdG9yX2xpc3RfaXRlcl9wdXQoJmNvbm5faXRlcik7Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiBAQCAtMTY5Miw2ICsxNjk3LDcgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29u bl9pdGVyOwo+ICAKPiAgCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9B VE9NSUMpKQo+ICAJCXJldHVybjsKPiBAQCAtMTcwMiw4ICsxNzA4LDEwIEBAIHZvaWQgZHJtX3N0 YXRlX2R1bXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcmludGVyICpwKQo+ ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmY29uZmlnLT5jcnRjX2xpc3QsIGhlYWQpCj4g IAkJZHJtX2F0b21pY19jcnRjX3ByaW50X3N0YXRlKHAsIGNydGMtPnN0YXRlKTsKPiAgCj4gLQls aXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmNvbmZpZy0+Y29ubmVjdG9yX2xpc3QsIGhl YWQpCj4gKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9nZXQoZGV2LCAmY29ubl9pdGVyKTsKPiAr CWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpCj4gIAkJ ZHJtX2F0b21pY19jb25uZWN0b3JfcHJpbnRfc3RhdGUocCwgY29ubmVjdG9yLT5zdGF0ZSk7Cj4g Kwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9wdXQoJmNvbm5faXRlcik7Cj4gIH0KPiAgRVhQT1JU X1NZTUJPTChkcm1fc3RhdGVfZHVtcCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+IGlu ZGV4IDVhNDUyNjI4OTM5Mi4uYjMzMzM0ZTA5YjAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY29ubmVjdG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rv ci5jCj4gQEAgLTE4OSwxMyArMTg5LDExIEBAIGludCBkcm1fY29ubmVjdG9yX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBpZGEgKmNvbm5lY3Rvcl9pZGEgPQo+ICAJCSZk cm1fY29ubmVjdG9yX2VudW1fbGlzdFtjb25uZWN0b3JfdHlwZV0uaWRhOwo+ICAKPiAtCWRybV9t b2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4gLQo+ICAJcmV0ID0gZHJtX21vZGVfb2JqZWN0X2dldF9y ZWcoZGV2LCAmY29ubmVjdG9yLT5iYXNlLAo+ICAJCQkJICAgICAgRFJNX01PREVfT0JKRUNUX0NP Tk5FQ1RPUiwKPiAgCQkJCSAgICAgIGZhbHNlLCBkcm1fY29ubmVjdG9yX2ZyZWUpOwo+ICAJaWYg KHJldCkKPiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gIAljb25u ZWN0b3ItPmJhc2UucHJvcGVydGllcyA9ICZjb25uZWN0b3ItPnByb3BlcnRpZXM7Cj4gIAljb25u ZWN0b3ItPmRldiA9IGRldjsKPiBAQCAtMjMyLDggKzIzMCwxMCBAQCBpbnQgZHJtX2Nvbm5lY3Rv cl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJLyogV2Ugc2hvdWxkIGFkZCBj b25uZWN0b3JzIGF0IHRoZSBlbmQgdG8gYXZvaWQgdXBzZXR0aW5nIHRoZSBjb25uZWN0b3IKPiAg CSAqIGluZGV4IHRvbyBtdWNoLiAqLwo+ICsJc3Bpbl9sb2NrX2lycSgmY29uZmlnLT5jb25uZWN0 b3JfbGlzdF9sb2NrKTsKPiAgCWxpc3RfYWRkX3RhaWwoJmNvbm5lY3Rvci0+aGVhZCwgJmNvbmZp Zy0+Y29ubmVjdG9yX2xpc3QpOwo+ICAJY29uZmlnLT5udW1fY29ubmVjdG9yKys7Cj4gKwlzcGlu X3VubG9ja19pcnEoJmNvbmZpZy0+Y29ubmVjdG9yX2xpc3RfbG9jayk7Cj4gIAo+ICAJaWYgKGNv bm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMKQo+ICAJCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCj4gQEAgLTI1OCw5ICsyNTgsNiBA QCBpbnQgZHJtX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAo cmV0KQo+ICAJCWRybV9tb2RlX29iamVjdF91bnJlZ2lzdGVyKGRldiwgJmNvbm5lY3Rvci0+YmFz ZSk7Cj4gIAo+IC1vdXRfdW5sb2NrOgo+IC0JZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ IC0KPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2lu aXQpOwo+IEBAIC0zNTEsOCArMzQ4LDEwIEBAIHZvaWQgZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlkcm1fbW9kZV9vYmplY3RfdW5yZWdp c3RlcihkZXYsICZjb25uZWN0b3ItPmJhc2UpOwo+ICAJa2ZyZWUoY29ubmVjdG9yLT5uYW1lKTsK PiAgCWNvbm5lY3Rvci0+bmFtZSA9IE5VTEw7Cj4gKwlzcGluX2xvY2tfaXJxKCZkZXYtPm1vZGVf Y29uZmlnLmNvbm5lY3Rvcl9saXN0X2xvY2spOwo+ICAJbGlzdF9kZWwoJmNvbm5lY3Rvci0+aGVh ZCk7Cj4gIAlkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3ItLTsKPiArCXNwaW5fdW5sb2Nr X2lycSgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdF9sb2NrKTsKPiAgCj4gIAlXQVJO X09OKGNvbm5lY3Rvci0+c3RhdGUgJiYgIWNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19kZXN0cm95 X3N0YXRlKTsKPiAgCWlmIChjb25uZWN0b3ItPnN0YXRlICYmIGNvbm5lY3Rvci0+ZnVuY3MtPmF0 b21pY19kZXN0cm95X3N0YXRlKQo+IEBAIC00MzEsMzAgKzQzMCwzMCBAQCBFWFBPUlRfU1lNQk9M KGRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcik7Cj4gIHZvaWQgZHJtX2Nvbm5lY3Rvcl91bnJlZ2lz dGVyX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5f aXRlcjsKPiAgCj4gLQkvKiBGSVhNRTogdGFraW5nIHRoZSBtb2RlIGNvbmZpZyBtdXRleCBlbmRz IHVwIGluIGEgY2xhc2ggd2l0aCBzeXNmcyAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjb25u ZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKQo+ICsJZHJtX2Nv bm5lY3Rvcl9saXN0X2l0ZXJfZ2V0KGRldiwgJmNvbm5faXRlcik7Cj4gKwlkcm1fZm9yX2VhY2hf Y29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKQo+ICAJCWRybV9jb25uZWN0b3Jf dW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KCZj b25uX2l0ZXIpOwo+ICB9Cj4gIAo+ICBpbnQgZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcl9hbGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiAtCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29u bl9pdGVyOwo+ICsJaW50IHJldCA9IDA7Cj4gIAo+IC0JLyogRklYTUU6IHRha2luZyB0aGUgbW9k ZSBjb25maWcgbXV0ZXggZW5kcyB1cCBpbiBhIGNsYXNoIHdpdGgKPiAtCSAqIGZiY29uL2JhY2ts aWdodCByZWdpc3RyYXRpb24gKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAm ZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgewo+ICsJZHJtX2Nvbm5lY3Rv cl9saXN0X2l0ZXJfZ2V0KGRldiwgJmNvbm5faXRlcik7Cj4gKwlkcm1fZm9yX2VhY2hfY29ubmVj dG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Cj4gIAkJcmV0ID0gZHJtX2Nvbm5lY3Rv cl9yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICAJCWlmIChyZXQpCj4gLQkJCWdvdG8gZXJyOwo+ICsJ CQlicmVhazsKPiAgCX0KPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1dCgmY29ubl9pdGVy KTsKPiAgCj4gLQlyZXR1cm4gMDsKPiAtCj4gLWVycjoKPiAtCW11dGV4X3VubG9jaygmZGV2LT5t b2RlX2NvbmZpZy5tdXRleCk7Cj4gLQlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXJfYWxsKGRldik7 Cj4gKwlpZiAocmV0KQo+ICsJCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcl9hbGwoZGV2KTsKPiAg CXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTQ3Niw2ICs0NzUsODcgQEAgY29uc3QgY2hhciAq ZHJtX2dldF9jb25uZWN0b3Jfc3RhdHVzX25hbWUoZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBz dGF0dXMpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZ2V0X2Nvbm5lY3Rvcl9zdGF0dXNfbmFt ZSk7Cj4gIAo+ICsjaWZkZWYgQ09ORklHX0xPQ0tERVAKPiArc3RhdGljIHN0cnVjdCBsb2NrZGVw X21hcCBjb25uZWN0b3JfbGlzdF9pdGVyX2RlcF9tYXAgPSB7Cj4gKwkubmFtZSA9ICJkcm1fY29u bmVjdG9yX2xpc3RfaXRlciIKPiArfTsKPiArI2VuZGlmCj4gKwo+ICsvKioKPiArICogZHJtX2Nv bm5lY3Rvcl9saXN0X2l0ZXJfZ2V0IC0gaW5pdGlhbGl6ZSBhIGNvbm5lY3Rvcl9saXN0IGl0ZXJh dG9yCj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQGl0ZXI6IGNvbm5lY3Rvcl9saXN0IGl0 ZXJhdG9yCj4gKyAqCj4gKyAqIFNldHMgQGl0ZXIgdXAgdG8gd2FsayB0aGUgY29ubmVjdG9yIGxp c3QgaW4gJmRybV9tb2RlX2NvbmZpZyBvZiBAZGV2LiBAaXRlcgo+ICsgKiBtdXN0IGFsd2F5cyBi ZSBjbGVhbmVkIHVwIGFnYWluIGJ5IGNhbGxpbmcgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0 KCkuCj4gKyAqIEl0ZXJhdGlvbiBpdHNlbGYgaGFwcGVucyB1c2luZyBkcm1fY29ubmVjdG9yX2xp c3RfaXRlcl9uZXh0KCkgb3IKPiArICogZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKCkuCj4g KyAqLwo+ICt2b2lkIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2dldChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICsJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciAqaXRlcikKPiAr ewo+ICsJaXRlci0+ZGV2ID0gZGV2Owo+ICsJaXRlci0+Y29ubiA9IE5VTEw7Cj4gKwlsb2NrX2Fj cXVpcmVfc2hhcmVkX3JlY3Vyc2l2ZSgmY29ubmVjdG9yX2xpc3RfaXRlcl9kZXBfbWFwLCAwLCAx LCBOVUxMLCBfUkVUX0lQXyk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2xp c3RfaXRlcl9nZXQpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX25l eHQgLSByZXR1cm4gbmV4dCBjb25uZWN0b3IKPiArICogQGl0ZXI6IGNvbm5lY3RyX2xpc3QgaXRl cmF0b3IKPiArICoKPiArICogUmV0dXJucyB0aGUgbmV4dCBjb25uZWN0b3IgZm9yIEBpdGVyLCBv ciBOVUxMIHdoZW4gdGhlIGxpc3Qgd2FsayBoYXMKPiArICogY29tcGxldGVkLgo+ICsgKi8KPiAr c3RydWN0IGRybV9jb25uZWN0b3IgKgo+ICtkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9uZXh0KHN0 cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciAqaXRlcikKPiArewo+ICsJc3RydWN0IGRybV9j b25uZWN0b3IgKm9sZF9jb25uID0gaXRlci0+Y29ubjsKPiArCXN0cnVjdCBkcm1fbW9kZV9jb25m aWcgKmNvbmZpZyA9ICZpdGVyLT5kZXYtPm1vZGVfY29uZmlnOwo+ICsJc3RydWN0IGxpc3RfaGVh ZCAqbGhlYWQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArCXNwaW5fbG9ja19pcnFz YXZlKCZjb25maWctPmNvbm5lY3Rvcl9saXN0X2xvY2ssIGZsYWdzKTsKPiArCWxoZWFkID0gb2xk X2Nvbm4gPyAmb2xkX2Nvbm4tPmhlYWQgOiAmY29uZmlnLT5jb25uZWN0b3JfbGlzdDsKPiArCj4g KwlkbyB7Cj4gKwkJaWYgKGxoZWFkLT5uZXh0ID09ICZjb25maWctPmNvbm5lY3Rvcl9saXN0KSB7 Cj4gKwkJCWl0ZXItPmNvbm4gPSBOVUxMOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWxo ZWFkID0gbGhlYWQtPm5leHQ7Cj4gKwkJaXRlci0+Y29ubiA9IGxpc3RfZW50cnkobGhlYWQsIHN0 cnVjdCBkcm1fY29ubmVjdG9yLCBoZWFkKTsKPiArCj4gKwkJLyogbG9vcCB1bnRpbCBpdCdzIG5v dCBhIHpvbWJpZSBjb25uZWN0b3IgKi8KPiArCX0gd2hpbGUgKCFrcmVmX2dldF91bmxlc3NfemVy bygmaXRlci0+Y29ubi0+YmFzZS5yZWZjb3VudCkpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmY29uZmlnLT5jb25uZWN0b3JfbGlzdF9sb2NrLCBmbGFncyk7Cj4gKwo+ICsJaWYgKG9sZF9j b25uKQo+ICsJCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2Uob2xkX2Nvbm4pOwo+ICsKPiArCXJl dHVybiBpdGVyLT5jb25uOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXJfbmV4dCk7Cj4gKwo+ICsvKioKPiArICogZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0 IC0gdGVhciBkb3duIGEgY29ubmVjdG9yX2xpc3QgaXRlcmF0b3IKPiArICogQGl0ZXI6IGNvbm5l Y3Rvcl9saXN0IGl0ZXJhdG9yCj4gKyAqCj4gKyAqIFRlYXJzIGRvd24gQGl0ZXIgYW5kIHJlbGVh c2VzIGFueSByZXNvdXJjZXMgKGxpa2UgJmRybV9jb25uZWN0b3IgcmVmZXJlbmNlcykKPiArICog YWNxdWlyZWQgd2hpbGUgd2Fsa2luZyB0aGUgbGlzdC4gVGhpcyBtdXN0IGFsd2F5cyBiZSBjYWxs ZWQsIGJvdGggd2hlbiB0aGUKPiArICogaXRlcmF0aW9uIGNvbXBsZXRlcyBmdWxseSBvciB3aGVu IGl0IHdhcyBhYm9ydGVkIHdpdGhvdXQgd2Fsa2luZyB0aGUgZW50aXJlCj4gKyAqIGxpc3QuCj4g KyAqLwo+ICt2b2lkIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1dChzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXIgKml0ZXIpCj4gK3sKPiArCWl0ZXItPmRldiA9IE5VTEw7Cj4gKwlpZiAo aXRlci0+Y29ubikKPiArCQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKGl0ZXItPmNvbm4pOwo+ ICsJbG9ja19yZWxlYXNlKCZjb25uZWN0b3JfbGlzdF9pdGVyX2RlcF9tYXAsIDAsIF9SRVRfSVBf KTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1dCk7Cj4g Kwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBkcm1fc3VicGl4ZWxf ZW51bV9saXN0W10gPSB7Cj4gIAl7IFN1YlBpeGVsVW5rbm93biwgIlVua25vd24iIH0sCj4gIAl7 IFN1YlBpeGVsSG9yaXpvbnRhbFJHQiwgIkhvcml6b250YWwgUkdCIiB9LAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZW5j b2Rlci5jCj4gaW5kZXggOTkyODc5ZjE1ZjIzLi45ODkzMzRhOWYyMWMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9lbmNvZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2VuY29kZXIuYwo+IEBAIC0xNzMsMTAgKzE3MywxMiBAQCBzdGF0aWMgc3RydWN0IGRybV9jcnRj ICpkcm1fZW5jb2Rlcl9nZXRfY3J0YyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuY29kZXItPmRldjsKPiAgCWJvb2wgdXNlc19hdG9taWMgPSBmYWxzZTsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gIAo+ICAJLyogRm9yIGF0b21p YyBkcml2ZXJzIG9ubHkgc3RhdGUgb2JqZWN0cyBhcmUgc3luY2hyb25vdXNseSB1cGRhdGVkIGFu ZAo+ICAJICogcHJvdGVjdGVkIGJ5IG1vZGVzZXQgbG9ja3MsIHNvIGNoZWNrIHRob3NlIGZpcnN0 LiAqLwo+IC0JZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcihjb25uZWN0b3IsIGRldikgewo+ICsJZHJt X2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZ2V0KGRldiwgJmNvbm5faXRlcik7Cj4gKwlkcm1fZm9yX2Vh Y2hfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Cj4gIAkJaWYgKCFjb25u ZWN0b3ItPnN0YXRlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTE4NSw4ICsxODcsMTAgQEAg c3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqZHJtX2VuY29kZXJfZ2V0X2NydGMoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQo+ICAJCWlmIChjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIg IT0gZW5jb2RlcikKPiAgCQkJY29udGludWU7Cj4gIAo+ICsJCWRybV9jb25uZWN0b3JfbGlzdF9p dGVyX3B1dCgmY29ubl9pdGVyKTsKPiAgCQlyZXR1cm4gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsK PiAgCX0KPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1dCgmY29ubl9pdGVyKTsKPiAgCj4g IAkvKiBEb24ndCByZXR1cm4gc3RhbGUgZGF0YSAoZS5nLiBwZW5kaW5nIGFzeW5jIGRpc2FibGUp LiAqLwo+ICAJaWYgKHVzZXNfYXRvbWljKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21vZGVfY29uZmlnLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiBp bmRleCA4NWEyNWZkOWVmZjguLjc0N2EyNmRmMGU5MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVf Y29uZmlnLmMKPiBAQCAtOTMsNiArOTMsNyBAQCBpbnQgZHJtX21vZGVfZ2V0cmVzb3VyY2VzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAl1aW50MzJfdCBfX3VzZXIgKmNy dGNfaWQ7Cj4gIAl1aW50MzJfdCBfX3VzZXIgKmNvbm5lY3Rvcl9pZDsKPiAgCXVpbnQzMl90IF9f dXNlciAqZW5jb2Rlcl9pZDsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25u X2l0ZXI7Cj4gIAo+ICAJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01P REVTRVQpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xMTIsOSArMTEzLDYgQEAgaW50IGRy bV9tb2RlX2dldHJlc291cmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAJY2FyZF9yZXMtPmNvdW50X2ZicyA9IGNvdW50Owo+ICAJbXV0ZXhfdW5sb2NrKCZmaWxlX3By aXYtPmZic19sb2NrKTsKPiAgCj4gLQkvKiBtb2RlX2NvbmZpZy5tdXRleCBwcm90ZWN0cyB0aGUg Y29ubmVjdG9yIGxpc3QgYWdhaW5zdCBlLmcuIERQIE1TVAo+IC0JICogY29ubmVjdG9yIGhvdC1h ZGRpbmcuIENSVEMvUGxhbmUgbGlzdHMgYXJlIGludmFyaWFudC4gKi8KPiAtCW11dGV4X2xvY2so JmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICAJY2FyZF9yZXMtPm1heF9oZWlnaHQgPSBkZXYt Pm1vZGVfY29uZmlnLm1heF9oZWlnaHQ7Cj4gIAljYXJkX3Jlcy0+bWluX2hlaWdodCA9IGRldi0+ bW9kZV9jb25maWcubWluX2hlaWdodDsKPiAgCWNhcmRfcmVzLT5tYXhfd2lkdGggPSBkZXYtPm1v ZGVfY29uZmlnLm1heF93aWR0aDsKPiBAQCAtMTI0LDEwICsxMjIsOCBAQCBpbnQgZHJtX21vZGVf Z2V0cmVzb3VyY2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAljcnRj X2lkID0gdTY0X3RvX3VzZXJfcHRyKGNhcmRfcmVzLT5jcnRjX2lkX3B0cik7Cj4gIAlkcm1fZm9y X2VhY2hfY3J0YyhjcnRjLCBkZXYpIHsKPiAgCQlpZiAoY291bnQgPCBjYXJkX3Jlcy0+Y291bnRf Y3J0Y3MgJiYKPiAtCQkgICAgcHV0X3VzZXIoY3J0Yy0+YmFzZS5pZCwgY3J0Y19pZCArIGNvdW50 KSkgewo+IC0JCQlyZXQgPSAtRUZBVUxUOwo+IC0JCQlnb3RvIG91dDsKPiAtCQl9Cj4gKwkJICAg IHB1dF91c2VyKGNydGMtPmJhc2UuaWQsIGNydGNfaWQgKyBjb3VudCkpCj4gKwkJCXJldHVybiAt RUZBVUxUOwo+ICAJCWNvdW50Kys7Cj4gIAl9Cj4gIAljYXJkX3Jlcy0+Y291bnRfY3J0Y3MgPSBj b3VudDsKPiBAQCAtMTM2LDI4ICsxMzIsMjYgQEAgaW50IGRybV9tb2RlX2dldHJlc291cmNlcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJZW5jb2Rlcl9pZCA9IHU2NF90 b191c2VyX3B0cihjYXJkX3Jlcy0+ZW5jb2Rlcl9pZF9wdHIpOwo+ICAJZHJtX2Zvcl9lYWNoX2Vu Y29kZXIoZW5jb2RlciwgZGV2KSB7Cj4gIAkJaWYgKGNvdW50IDwgY2FyZF9yZXMtPmNvdW50X2Vu Y29kZXJzICYmCj4gLQkJICAgIHB1dF91c2VyKGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXJfaWQg KyBjb3VudCkpIHsKPiAtCQkJcmV0ID0gLUVGQVVMVDsKPiAtCQkJZ290byBvdXQ7Cj4gLQkJfQo+ ICsJCSAgICBwdXRfdXNlcihlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyX2lkICsgY291bnQpKQo+ ICsJCQlyZXR1cm4gLUVGQVVMVDsKPiAgCQljb3VudCsrOwo+ICAJfQo+ICAJY2FyZF9yZXMtPmNv dW50X2VuY29kZXJzID0gY291bnQ7Cj4gIAo+ICsJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZ2V0 KGRldiwgJmNvbm5faXRlcik7Cj4gIAljb3VudCA9IDA7Cj4gIAljb25uZWN0b3JfaWQgPSB1NjRf dG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNvbm5lY3Rvcl9pZF9wdHIpOwo+IC0JZHJtX2Zvcl9lYWNo X2Nvbm5lY3Rvcihjb25uZWN0b3IsIGRldikgewo+ICsJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9p dGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ICAJCWlmIChjb3VudCA8IGNhcmRfcmVzLT5j b3VudF9jb25uZWN0b3JzICYmCj4gIAkJICAgIHB1dF91c2VyKGNvbm5lY3Rvci0+YmFzZS5pZCwg Y29ubmVjdG9yX2lkICsgY291bnQpKSB7Cj4gLQkJCXJldCA9IC1FRkFVTFQ7Cj4gLQkJCWdvdG8g b3V0Owo+ICsJCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9wdXQoJmNvbm5faXRlcik7Cj4gKwkJ CXJldHVybiAtRUZBVUxUOwo+ICAJCX0KPiAgCQljb3VudCsrOwo+ICAJfQo+ICAJY2FyZF9yZXMt PmNvdW50X2Nvbm5lY3RvcnMgPSBjb3VudDsKPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1 dCgmY29ubl9pdGVyKTsKPiAgCj4gLW91dDoKPiAtCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2Nv bmZpZy5tdXRleCk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0xNzUsNiArMTY5LDcg QEAgdm9pZCBkcm1fbW9kZV9jb25maWdfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gIAo+ICAJZHJtX2Zvcl9lYWNoX3BsYW5lKHBs YW5lLCBkZXYpCj4gIAkJaWYgKHBsYW5lLT5mdW5jcy0+cmVzZXQpCj4gQEAgLTE4OCwxMSArMTgz LDExIEBAIHZvaWQgZHJtX21vZGVfY29uZmlnX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJaWYgKGVuY29kZXItPmZ1bmNzLT5yZXNldCkKPiAgCQkJZW5jb2Rlci0+ZnVuY3MtPnJl c2V0KGVuY29kZXIpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgp Owo+IC0JZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcihjb25uZWN0b3IsIGRldikKPiArCWRybV9jb25u ZWN0b3JfbGlzdF9pdGVyX2dldChkZXYsICZjb25uX2l0ZXIpOwo+ICsJZHJtX2Zvcl9lYWNoX2Nv bm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikKPiAgCQlpZiAoY29ubmVjdG9yLT5m dW5jcy0+cmVzZXQpCj4gIAkJCWNvbm5lY3Rvci0+ZnVuY3MtPnJlc2V0KGNvbm5lY3Rvcik7Cj4g LQltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJZHJtX2Nvbm5lY3Rv cl9saXN0X2l0ZXJfcHV0KCZjb25uX2l0ZXIpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX21v ZGVfY29uZmlnX3Jlc2V0KTsKPiAgCj4gQEAgLTM3Myw2ICszNjgsNyBAQCB2b2lkIGRybV9tb2Rl X2NvbmZpZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZHJfaW5pdCgmZGV2LT5t b2RlX2NvbmZpZy5jcnRjX2lkcik7Cj4gIAlpZHJfaW5pdCgmZGV2LT5tb2RlX2NvbmZpZy50aWxl X2lkcik7Cj4gIAlpZGFfaW5pdCgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfaWRhKTsKPiAr CXNwaW5fbG9ja19pbml0KCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0X2xvY2spOwo+ ICAKPiAgCWRybV9tb2RlX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKGRldik7Cj4gIAo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1f Y29ubmVjdG9yLmgKPiBpbmRleCBhOWI5NTI0NmUyNmUuLjBlNDFhMmUxODRhOSAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1f Y29ubmVjdG9yLmgKPiBAQCAtODM5LDYgKzgzOSwxMSBAQCB2b2lkIGRybV9tb2RlX3B1dF90aWxl X2dyb3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAqIEBkZXY6IHRoZSBEUk0gZGV2aWNl Cj4gICAqCj4gICAqIEl0ZXJhdGUgb3ZlciBhbGwgY29ubmVjdG9ycyBvZiBAZGV2Lgo+ICsgKgo+ ICsgKiBXQVJOSU5HOgo+ICsgKgo+ICsgKiBUaGlzIGl0ZXJhdG9yIGlzIG5vdCBzYWZlIGFnYWlu c3QgaG90YWRkL3JlbW92YWwgb2YgY29ubmVjdG9ycyBhbmQgaXMKPiArICogZGVwcmVjYXRlZC4g VXNlIGRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcigpIGluc3RlYWQuCj4gICAqLwo+ICAjZGVm aW5lIGRybV9mb3JfZWFjaF9jb25uZWN0b3IoY29ubmVjdG9yLCBkZXYpIFwKPiAgCWZvciAoYXNz ZXJ0X2RybV9jb25uZWN0b3JfbGlzdF9yZWFkX2xvY2tlZCgmKGRldiktPm1vZGVfY29uZmlnKSwJ XAo+IEBAIC04NDcsNCArODUyLDM3IEBAIHZvaWQgZHJtX21vZGVfcHV0X3RpbGVfZ3JvdXAoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAgICAgJmNvbm5lY3Rvci0+aGVhZCAhPSAoJihkZXYp LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCk7CQlcCj4gIAkgICAgIGNvbm5lY3RvciA9IGxp c3RfbmV4dF9lbnRyeShjb25uZWN0b3IsIGhlYWQpKQo+ICAKPiArLyoqCj4gKyAqIHN0cnVjdCBk cm1fY29ubmVjdG9yX2xpc3RfaXRlciAtIGNvbm5lY3Rvcl9saXN0IGl0ZXJhdG9yCj4gKyAqCj4g KyAqIFRoaXMgaXRlcmF0b3IgdHJhY2tzIHN0YXRlIG5lZWRlZCB0byBiZSBhYmxlIHRvIHdhbGsg dGhlIGNvbm5lY3Rvcl9saXN0Cj4gKyAqIHdpdGhpbiBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnLiBP bmx5IHVzZSB0b2dldGhlciB3aXRoCj4gKyAqIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2dldCgp LCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9wdXQoKSBhbmQKPiArICogZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXJfbmV4dCgpIHJlc3BlY3RpdmVseSB0aGUgY29udmVuaWVuY2UgbWFjcm8KPiArICog ZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKCkuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXIgewo+ICsvKiBwcml2YXRlOiAqLwo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICt9Owo+ICsKPiArdm9pZCBk cm1fY29ubmVjdG9yX2xpc3RfaXRlcl9nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgKml0ZXIpOwo+ICtzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqCj4gK2RybV9jb25uZWN0b3JfbGlzdF9pdGVyX25leHQoc3RydWN0IGRybV9jb25u ZWN0b3JfbGlzdF9pdGVyICppdGVyKTsKPiArdm9pZCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9w dXQoc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyICppdGVyKTsKPiArCj4gKy8qKgo+ICsg KiBkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIgLSBjb25uZWN0b3JfbGlzdCBpdGVyYXRvciBt YWNybwo+ICsgKiBAY29ubmVjdG9yOiBzdHJ1Y3QgJmRybV9jb25uZWN0b3IgcG9pbnRlciB1c2Vk IGFzIGN1cnNvcgo+ICsgKiBAaXRlcjogc3RydWN0ICZkcm1fY29ubmVjdG9yX2xpc3RfaXRlcgo+ ICsgKgo+ICsgKiBOb3RlIHRoYXQgQGNvbm5lY3RvciBpcyBvbmx5IHZhbGlkIHdpdGhpbiB0aGUg bGlzdCBib2R5LCBpZiB5b3Ugd2FudCB0byB1c2UKPiArICogQGNvbm5lY3RvciBhZnRlciBjYWxs aW5nIGRybV9jb25uZWN0b3JfbGlzdF9pdGVyX3B1dCgpIHRoZW4geW91IG5lZWQgdG8gZ3JhYgo+ ICsgKiB5b3VyIG93biByZWZlcmVuY2UgZmlyc3QgdXNpbmcgZHJtX2Nvbm5lY3Rvcl9yZWZlcmVu Y2UoKS4KPiArICovCj4gKyNkZWZpbmUgZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5l Y3RvciwgaXRlcikgXAo+ICsJd2hpbGUgKChjb25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9uZXh0KGl0ZXIpKSkKPiArCgpPYnNlcnZlIHRoYXQgaW4gbW9zdCwgaWYgbm90IGFsbCwg Y2FzZXMgeW91IGxvY2sgb3ZlciB0aGUgZm9yIGxvb3AsIGJ1dApub3QgbW9yZS4gVGhhdCBtZWFu cyB5b3UgYWx3YXlzIGdldC9wdXQgcmlnaHQgYXJvdW5kIHRoZSBsb29wLgoKWW91IGNvdWxkIGhh dmUgYSB2YXJpYW50IG9mIGdldCgpIHRoYXQgcmV0dXJucyB0aGUgZmlyc3QgaXRlbSwgYW5kIGEK dmFyaWFudCBvZiBuZXh0KCkgdGhhdCBkb2VzIHB1dCgpIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCdz IGFib3V0IHRvCnJldHVybiBOVUxMLCBhbmQgaW1wbGVtZW50IG1vc3Qgb2YgdGhlIGxvb3BzIGxp a2UgdGhpczoKCiNkZWZpbmUgZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9zaW1wbGUoZGV2LCBpdGVy LCBjb25uZWN0b3IpIFwKCWZvciAoY29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJf Z2V0X2ZpcnN0KGRldiwgaXRlcik7IFwKCSAgICAgY29ubmVjdG9yICE9IE5VTEw7IFwKCSAgICAg Y29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfbmV4dF9wdXQoaXRlcikpCgpJbiB0 aGUgbG9uZyBydW4sIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBqdXN0IGRybV9mb3JfZWFjaF9jb25u ZWN0b3IuCgpUaGUgb25seSBjYXNlIHdoZXJlIHlvdSdkIGhhdmUgdG8gY2FsbCBwdXQoKSBleHBs aWNpdGx5IGlzIHdoZW4geW91CmJyZWFrIG91dCBvZiB0aGUgbG9vcCBlYXJseS4gT3RoZXJ3aXNl IGFsbCBsb29waW5nIHdvdWxkIGJlIGRlYWQgc2ltcGxlLAp3aXRob3V0IGFsbCB0aGUgZ2V0cyBh bmQgcHV0cywganVzdCBsaWtlIHRoZXkgYXJlIG5vdy4gUGVyaGFwcyB0aGUKbmFtaW5nIG9mIHRo ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIHN1Y2ggdGhhdCB0aGlzIGlzIHRoZSBtb3N0IGNvbW1vbgpj YXNlLiBQZXJoYXBzIHlvdSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSB2ZXJzaW9ucyB3aXRoICJt YW51YWwiIGxvY2tpbmcKYXQgYWxsLgoKCkJSLApKYW5pLgoKCj4gICNlbmRpZgo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2Rl X2NvbmZpZy5oCj4gaW5kZXggYmY5OTkxYjIwNjExLi41YjczNTU0OWJkNTEgMTAwNjQ0Cj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1f bW9kZV9jb25maWcuaAo+IEBAIC0zNjUsNyArMzY1LDEzIEBAIHN0cnVjdCBkcm1fbW9kZV9jb25m aWcgewo+ICAJc3RydWN0IGxpc3RfaGVhZCBmYl9saXN0Owo+ICAKPiAgCS8qKgo+IC0JICogQG51 bV9jb25uZWN0b3I6IE51bWJlciBvZiBjb25uZWN0b3JzIG9uIHRoaXMgZGV2aWNlLgo+ICsJICog QGNvbm5lY3Rvcl9saXN0X2xvY2s6IFByb3RlY3RzIEBudW1fY29ubmVjdG9yIGFuZAo+ICsJICog QGNvbm5lY3Rvcl9saXN0Lgo+ICsJICovCj4gKwlzcGlubG9ja190IGNvbm5lY3Rvcl9saXN0X2xv Y2s7Cj4gKwkvKioKPiArCSAqIEBudW1fY29ubmVjdG9yOiBOdW1iZXIgb2YgY29ubmVjdG9ycyBv biB0aGlzIGRldmljZS4gUHJvdGVjdGVkIGJ5Cj4gKwkgKiBAY29ubmVjdG9yX2xpc3RfbG9jay4K PiAgCSAqLwo+ICAJaW50IG51bV9jb25uZWN0b3I7Cj4gIAkvKioKPiBAQCAtMzczLDcgKzM3OSw5 IEBAIHN0cnVjdCBkcm1fbW9kZV9jb25maWcgewo+ICAJICovCj4gIAlzdHJ1Y3QgaWRhIGNvbm5l Y3Rvcl9pZGE7Cj4gIAkvKioKPiAtCSAqIEBjb25uZWN0b3JfbGlzdDogTGlzdCBvZiBjb25uZWN0 b3Igb2JqZWN0cy4KPiArCSAqIEBjb25uZWN0b3JfbGlzdDogTGlzdCBvZiBjb25uZWN0b3Igb2Jq ZWN0cy4gUHJvdGVjdGVkIGJ5Cj4gKwkgKiBAY29ubmVjdG9yX2xpc3RfbG9jay4gT25seSB1c2Ug ZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKCkgYW5kCj4gKwkgKiBzdHJ1Y3QgJmRybV9jb25u ZWN0b3JfbGlzdF9pdGVyIHRvIHdhbGsgdGhpcyBsaXN0Lgo+ICAJICovCj4gIAlzdHJ1Y3QgbGlz dF9oZWFkIGNvbm5lY3Rvcl9saXN0Owo+ICAJaW50IG51bV9lbmNvZGVyOwoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK