From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: [PATCH] exynos: Put a stop to the userptr heresy. Date: Tue, 1 Jul 2014 11:03:26 -0400 Message-ID: <20140701150317.GA2292@gmail.com> References: <1404164773-14759-1-git-send-email-j.glisse@gmail.com> <53B2777D.4050204@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qa0-f48.google.com (mail-qa0-f48.google.com [209.85.216.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 369DA6E003 for ; Tue, 1 Jul 2014 08:03:34 -0700 (PDT) Received: by mail-qa0-f48.google.com with SMTP id x12so7869009qac.35 for ; Tue, 01 Jul 2014 08:03:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <53B2777D.4050204@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Inki Dae Cc: kyungmin.park@samsung.com, Jerome Glisse , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdWwgMDEsIDIwMTQgYXQgMDU6NTU6MjVQTSArMDkwMCwgSW5raSBEYWUgd3JvdGU6 Cj4gCj4gSGkgSmVyb21lLAo+IAo+IAo+IE9uIDIwMTTrhYQgMDfsm5QgMDHsnbwgMDY6NDYsIGou Z2xpc3NlQGdtYWlsLmNvbSB3cm90ZToKPiA+IEZyb206IEplcm9tZSBHbGlzc2UgPGpnbGlzc2VA cmVkaGF0LmNvbT4KPiA+Cj4gPiBnZXRfdXNlcl9wYWdlcyBnaXZlcyBubyBnYXJhbnR5IHRoYXQg cGFnZSBpdCByZXR1cm5zIGFyZSBzdGlsbAo+ID4gdGhlIG9uZSBiYWNraW5nIHRoZSB2bWEgYnkg dGhlIHRpbWUgaXQgcmV0dXJucy4gVGh1cyBhbnkgaW9jdGwKPiAKPiBPbmUgb2YgcGFnZXMgZnJv bSBnZXRfdXNlcl9wYWdlcygpIGNvdWxkIGJlIG1pZ3JhdGVkPyBJIHRoaW5rIGFsbCB0aGUKPiBw YWdlcyBhcmUgcGlubmVkIHNvIHRoYXQgdGhleSBjYW5ub3QgYmUgbWlncmF0ZWQuIElmIG5vdCBz dWNoIGNhc2UsIGlzCj4gdGhlcmUgb3RoZXIgY2FzZSBJIG1pc3NlZD8KCkkgdGhvdWdodCB0aGUg a3NtIG9yIGdkYiBwYXRoIHdlcmUgZm9yY2luZyB1bm1hcCBhbmQgcmVwbGFjZSBidXQgdGhleQpz dGlsbCBhYmlkZSBieSB0aGUgcGluIHNvIHdoaWxlIHBhZ2Ugd2lsbCBub3QgYmUgcmVwbGFjZSB5 b3UgYXJlIHN0aWxsCnZpb2xhdGluZyBmZXcgdGhpbmdzLiBGaXJzdCB5b3UgYXJlIHBpbmluZyBt ZW1vcnkgd2l0aG91dCBhbnkga2luZCBvZgphY2NvdXRpbmcgZnJvbSBtZW1jZyBwb2ludCBvZiB2 aWV3IGhlbmNlIHVzZXJzcGFjZSBjYW4gdXNlIHRoYXQgYXMgYQp2ZWN0b3Igb2YgYXR0YWNrIHRv IGRlcGxldGUgbWVtb3J5LgoKWW91IGFsc28gaWdub3JlIGFueSBtdW5tYXAgdGhhdCBtaWdodCBo YXBwZW4sIGFueSBtdW5tYXAgd2lsbCBub3QgY2FyZQphYm91dCB0aGUgcGFnZSBiZWluZyBwaW4g b3Igbm90LiBUaGUgdm1hIHdpbGwgZGlzYXBwZWFyLgoKTm9yIHlvdSByZXNwZWN0IHRoZSBwYWdl IGJlaW5nIHJlbWFwcGVkIHJlYWQgb25seSBmb3IgcGFnZSB3cml0ZSBiYWNrCmFsbG93aW5nIHRo ZSBncHUgdG8gd3JpdGUgdG8gdGhlIHBhZ2Ugd2hpbGUgSS9PIGlzIGluIHByb2dyZXNzLgoKPiAK PiBPbmUgbW9yZSB0aGluZywgZG8geW91IHRoaW5rIHRoaXMgaXNzdWUgY2Fubm90IGJlIHJlc29s dmVkIHNvIHlvdSBhcmUKPiB0cnlpbmcgdG8gcmVtb3ZlIHVzZXJwdHIgZmVhdHVyZSBmcm9tIGcy ZCBkcml2ZXI/Cj4gCgpJIGFtIGp1c3QgdGhpbmtpbmcgdGhhdCB0aGlzIGlzIGEgc29tZXdoYXQg ZXZpbCBhcGksIGkgdW5kZXJzdGFuZCBob3cKbmljZSBpdCBpcyBmb3IgdGhpbmdzIGxpa2UgemVy byBjb3B5IHVwbG9hZC9kb3dubG9hZC4gQnV0IGl0IGFsbG93cyB0bwpnbyBhcm91bmQgc29tZSBv ZiB0aGUgbWVtb3J5IHBvbGljeSBzZXQgYnkgb3RoZXIgcGFydCBvZiB0aGUga2VybmVsLgoKQnV0 IGkgZ3Vlc3MgdGhhdCBnaXZlbiB5b3UgbWFwL3VubWFwIGFjY3Jvc3MgY21kIGlvY3RsIHRoYXQg aXMgY2xvc2UKdG8gdGhlIGRpcmVjdC1pbyB1c2FnZSBwYXR0ZXJuIGFuZCB0aHVzIGNhbiBiZSBm b3JnaXZlbi4KCk5vdGUgdGhhdCBpZiB5b3Ugd2VyZSB0byBzdGFydCB1c2luZyBHVVAtZmFzdCB0 aGVuIHlvdSB3aWxsIGFsc28gaGF2ZQp0byBjb25zaWRlciB0aGUgbW11X25vdGlmaWVyIHJhbmdl IGludmFsaWRhdGlvbi4KCkNoZWVycywKSsOpcsO0bWUKCj4gVGhhbmtzLAo+IElua2kgRGFlCj4g Cj4gPiB0aGF0IHJlbHkgb24gdGhpcyBiZWhhdmlvciBpcyBicm9rZW4gYW5kIHJlbHkgb24gcHVy ZSBsdWNrLiBUbwo+ID4gYXZvaWQgYW55IGZhbHNlIGhvcGUgZnJvbSB1c2Vyc3BhY2Ugc3RvcCBz dWNoIHVzZWFnZSBieSBzaW1wbHkKPiA+IGZsYXQgb3V0IHJldHVybmluZyAtRUZBVUxULiBCZXR0 ZXIgdG8gaGF2ZSBhIHJlbGlhYmxlIGJlaGF2aW9yCj4gPiB0aGFuIHRvIGRlcGVuZCBvbiBwdXJl IGx1Y2sgYW5kIGN1cnJlbnRseSBvYnNlcnZlZCBiZWhhdmlvciBvZgo+ID4gbW0gY29kZS4KPiA+ Cj4gPiBOb3RlIHRoaXMgd2FzIG5vdCBldmVuIGNvbXBpbGUgdGVzdGVkIGJ1dCBpIHRoaW5rIGkg ZGlkIHVwZGF0ZQo+ID4gYWxsIHBsYWNlcy4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKw6lyw7Rt ZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kcnYuaCB8ICAgMSAtCj4gPiAgZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2cyZC5jIHwgMjc3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2dlbS5jIHwgIDYwIC0t LS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZ2VtLmggfCAgMjAg LS0tCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDM1NSBkZWxldGlvbnMo LSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4gPiBpbmRl eCAzNjUzNWYzLi43YjU1ZTg5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fZHJ2LmgKPiA+IEBAIC0yMzMsNyArMjMzLDYgQEAgc3RydWN0IGV4eW5vc19kcm1fZzJk X3ByaXZhdGUgewo+ID4gIAlzdHJ1Y3QgZGV2aWNlCQkqZGV2Owo+ID4gIAlzdHJ1Y3QgbGlzdF9o ZWFkCWludXNlX2NtZGxpc3Q7Cj4gPiAgCXN0cnVjdCBsaXN0X2hlYWQJZXZlbnRfbGlzdDsKPiA+ IC0Jc3RydWN0IGxpc3RfaGVhZAl1c2VycHRyX2xpc3Q7Cj4gPiAgfTsKPiA+Cj4gPiAgc3RydWN0 IGV4eW5vc19kcm1faXBwX3ByaXZhdGUgewo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9nMmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9nMmQuYwo+ID4gaW5kZXggODAwMTU4Ny4uZDBiZTZkYyAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nMmQuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2cyZC5jCj4gPiBAQCAtMTE4LDkgKzExOCw2IEBACj4g PiAgI2RlZmluZSBHMkRfQ01ETElTVF9QT09MX1NJWkUJCShHMkRfQ01ETElTVF9TSVpFICogRzJE X0NNRExJU1RfTlVNKQo+ID4gICNkZWZpbmUgRzJEX0NNRExJU1RfREFUQV9OVU0JCShHMkRfQ01E TElTVF9TSVpFIC8gc2l6ZW9mKHUzMikgLSAyKQo+ID4KPiA+IC0vKiBtYXhpbXVtIGJ1ZmZlciBw b29sIHNpemUgb2YgdXNlcnB0ciBpcyA2NE1CIGFzIGRlZmF1bHQgKi8KPiA+IC0jZGVmaW5lIE1B WF9QT09MCQkoNjQgKiAxMDI0ICogMTAyNCkKPiA+IC0KPiA+ICBlbnVtIHsKPiA+ICAJQlVGX1RZ UEVfR0VNID0gMSwKPiA+ICAJQlVGX1RZUEVfVVNFUlBUUiwKPiA+IEBAIC0xODUsMTkgKzE4Miw2 IEBAIHN0cnVjdCBkcm1fZXh5bm9zX3BlbmRpbmdfZzJkX2V2ZW50IHsKPiA+ICAJc3RydWN0IGRy bV9leHlub3NfZzJkX2V2ZW50CWV2ZW50Owo+ID4gIH07Cj4gPgo+ID4gLXN0cnVjdCBnMmRfY21k bGlzdF91c2VycHRyIHsKPiA+IC0Jc3RydWN0IGxpc3RfaGVhZAlsaXN0Owo+ID4gLQlkbWFfYWRk cl90CQlkbWFfYWRkcjsKPiA+IC0JdW5zaWduZWQgbG9uZwkJdXNlcnB0cjsKPiA+IC0JdW5zaWdu ZWQgbG9uZwkJc2l6ZTsKPiA+IC0Jc3RydWN0IHBhZ2UJCSoqcGFnZXM7Cj4gPiAtCXVuc2lnbmVk IGludAkJbnBhZ2VzOwo+ID4gLQlzdHJ1Y3Qgc2dfdGFibGUJCSpzZ3Q7Cj4gPiAtCXN0cnVjdCB2 bV9hcmVhX3N0cnVjdAkqdm1hOwo+ID4gLQlhdG9taWNfdAkJcmVmY291bnQ7Cj4gPiAtCWJvb2wJ CQlpbl9wb29sOwo+ID4gLQlib29sCQkJb3V0X29mX2xpc3Q7Cj4gPiAtfTsKPiA+ICBzdHJ1Y3Qg ZzJkX2NtZGxpc3Rfbm9kZSB7Cj4gPiAgCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKPiA+ICAJc3Ry dWN0IGcyZF9jbWRsaXN0CSpjbWRsaXN0Owo+ID4gQEAgLTI0Miw3ICsyMjYsNiBAQCBzdHJ1Y3Qg ZzJkX2RhdGEgewo+ID4gIAlzdHJ1Y3Qga21lbV9jYWNoZQkJKnJ1bnF1ZXVlX3NsYWI7Cj4gPgo+ ID4gIAl1bnNpZ25lZCBsb25nCQkJY3VycmVudF9wb29sOwo+ID4gLQl1bnNpZ25lZCBsb25nCQkJ bWF4X3Bvb2w7Cj4gPiAgfTsKPiA+Cj4gPiAgc3RhdGljIGludCBnMmRfaW5pdF9jbWRsaXN0KHN0 cnVjdCBnMmRfZGF0YSAqZzJkKQo+ID4gQEAgLTM1NCwyMzIgKzMzNyw2IEBAIGFkZF90b19saXN0 Ogo+ID4gIAkJbGlzdF9hZGRfdGFpbCgmbm9kZS0+ZXZlbnQtPmJhc2UubGluaywgJmcyZF9wcml2 LT5ldmVudF9saXN0KTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyB2b2lkIGcyZF91c2VycHRyX3B1 dF9kbWFfYWRkcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiA+IC0JCQkJCXVuc2lnbmVk IGxvbmcgb2JqLAo+ID4gLQkJCQkJYm9vbCBmb3JjZSkKPiA+IC17Cj4gPiAtCXN0cnVjdCBnMmRf Y21kbGlzdF91c2VycHRyICpnMmRfdXNlcnB0ciA9Cj4gPiAtCQkJCQkoc3RydWN0IGcyZF9jbWRs aXN0X3VzZXJwdHIgKilvYmo7Cj4gPiAtCj4gPiAtCWlmICghb2JqKQo+ID4gLQkJcmV0dXJuOwo+ ID4gLQo+ID4gLQlpZiAoZm9yY2UpCj4gPiAtCQlnb3RvIG91dDsKPiA+IC0KPiA+IC0JYXRvbWlj X2RlYygmZzJkX3VzZXJwdHItPnJlZmNvdW50KTsKPiA+IC0KPiA+IC0JaWYgKGF0b21pY19yZWFk KCZnMmRfdXNlcnB0ci0+cmVmY291bnQpID4gMCkKPiA+IC0JCXJldHVybjsKPiA+IC0KPiA+IC0J aWYgKGcyZF91c2VycHRyLT5pbl9wb29sKQo+ID4gLQkJcmV0dXJuOwo+ID4gLQo+ID4gLW91dDoK PiA+IC0JZXh5bm9zX2dlbV91bm1hcF9zZ3RfZnJvbV9kbWEoZHJtX2RldiwgZzJkX3VzZXJwdHIt PnNndCwKPiA+IC0JCQkJCURNQV9CSURJUkVDVElPTkFMKTsKPiA+IC0KPiA+IC0JZXh5bm9zX2dl bV9wdXRfcGFnZXNfdG9fdXNlcnB0cihnMmRfdXNlcnB0ci0+cGFnZXMsCj4gPiAtCQkJCQlnMmRf dXNlcnB0ci0+bnBhZ2VzLAo+ID4gLQkJCQkJZzJkX3VzZXJwdHItPnZtYSk7Cj4gPiAtCj4gPiAt CWV4eW5vc19nZW1fcHV0X3ZtYShnMmRfdXNlcnB0ci0+dm1hKTsKPiA+IC0KPiA+IC0JaWYgKCFn MmRfdXNlcnB0ci0+b3V0X29mX2xpc3QpCj4gPiAtCQlsaXN0X2RlbF9pbml0KCZnMmRfdXNlcnB0 ci0+bGlzdCk7Cj4gPiAtCj4gPiAtCXNnX2ZyZWVfdGFibGUoZzJkX3VzZXJwdHItPnNndCk7Cj4g PiAtCWtmcmVlKGcyZF91c2VycHRyLT5zZ3QpOwo+ID4gLQo+ID4gLQlkcm1fZnJlZV9sYXJnZShn MmRfdXNlcnB0ci0+cGFnZXMpOwo+ID4gLQlrZnJlZShnMmRfdXNlcnB0cik7Cj4gPiAtfQo+ID4g LQo+ID4gLXN0YXRpYyBkbWFfYWRkcl90ICpnMmRfdXNlcnB0cl9nZXRfZG1hX2FkZHIoc3RydWN0 IGRybV9kZXZpY2UgKmRybV9kZXYsCj4gPiAtCQkJCQl1bnNpZ25lZCBsb25nIHVzZXJwdHIsCj4g PiAtCQkJCQl1bnNpZ25lZCBsb25nIHNpemUsCj4gPiAtCQkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bHAsCj4gPiAtCQkJCQl1bnNpZ25lZCBsb25nICpvYmopCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHJt X2V4eW5vc19maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2Owo+ID4g LQlzdHJ1Y3QgZXh5bm9zX2RybV9nMmRfcHJpdmF0ZSAqZzJkX3ByaXYgPSBmaWxlX3ByaXYtPmcy ZF9wcml2Owo+ID4gLQlzdHJ1Y3QgZzJkX2NtZGxpc3RfdXNlcnB0ciAqZzJkX3VzZXJwdHI7Cj4g PiAtCXN0cnVjdCBnMmRfZGF0YSAqZzJkOwo+ID4gLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+ID4g LQlzdHJ1Y3Qgc2dfdGFibGUJKnNndDsKPiA+IC0Jc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7 Cj4gPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKPiA+IC0JdW5zaWduZWQgaW50IG5wYWdl cywgb2Zmc2V0Owo+ID4gLQlpbnQgcmV0Owo+ID4gLQo+ID4gLQlpZiAoIXNpemUpIHsKPiA+IC0J CURSTV9FUlJPUigiaW52YWxpZCB1c2VycHRyIHNpemUuXG4iKTsKPiA+IC0JCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCWcyZCA9IGRldl9nZXRfZHJ2ZGF0YShn MmRfcHJpdi0+ZGV2KTsKPiA+IC0KPiA+IC0JLyogY2hlY2sgaWYgdXNlcnB0ciBhbHJlYWR5IGV4 aXN0cyBpbiB1c2VycHRyX2xpc3QuICovCj4gPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoZzJkX3Vz ZXJwdHIsICZnMmRfcHJpdi0+dXNlcnB0cl9saXN0LCBsaXN0KSB7Cj4gPiAtCQlpZiAoZzJkX3Vz ZXJwdHItPnVzZXJwdHIgPT0gdXNlcnB0cikgewo+ID4gLQkJCS8qCj4gPiAtCQkJICogYWxzbyBj aGVjayBzaXplIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgc2FtZSBhZGRyZXNzCj4gPiAtCQkJICog YW5kIGRpZmZlcmVudCBzaXplLgo+ID4gLQkJCSAqLwo+ID4gLQkJCWlmIChnMmRfdXNlcnB0ci0+ c2l6ZSA9PSBzaXplKSB7Cj4gPiAtCQkJCWF0b21pY19pbmMoJmcyZF91c2VycHRyLT5yZWZjb3Vu dCk7Cj4gPiAtCQkJCSpvYmogPSAodW5zaWduZWQgbG9uZylnMmRfdXNlcnB0cjsKPiA+IC0KPiA+ IC0JCQkJcmV0dXJuICZnMmRfdXNlcnB0ci0+ZG1hX2FkZHI7Cj4gPiAtCQkJfQo+ID4gLQo+ID4g LQkJCS8qCj4gPiAtCQkJICogYXQgdGhpcyBtb21lbnQsIG1heWJlIGcyZCBkbWEgaXMgYWNjZXNz aW5nIHRoaXMKPiA+IC0JCQkgKiBnMmRfdXNlcnB0ciBtZW1vcnkgcmVnaW9uIHNvIGp1c3QgcmVt b3ZlIHRoaXMKPiA+IC0JCQkgKiBnMmRfdXNlcnB0ciBvYmplY3QgZnJvbSB1c2VycHRyX2xpc3Qg bm90IHRvIGJlCj4gPiAtCQkJICogcmVmZXJyZWQgYWdhaW4gYW5kIGFsc28gZXhjZXB0IGl0IHRo ZSB1c2VycHRyCj4gPiAtCQkJICogcG9vbCB0byBiZSByZWxlYXNlZCBhZnRlciB0aGUgZG1hIGFj Y2VzcyBjb21wbGV0aW9uLgo+ID4gLQkJCSAqLwo+ID4gLQkJCWcyZF91c2VycHRyLT5vdXRfb2Zf bGlzdCA9IHRydWU7Cj4gPiAtCQkJZzJkX3VzZXJwdHItPmluX3Bvb2wgPSBmYWxzZTsKPiA+IC0J CQlsaXN0X2RlbF9pbml0KCZnMmRfdXNlcnB0ci0+bGlzdCk7Cj4gPiAtCj4gPiAtCQkJYnJlYWs7 Cj4gPiAtCQl9Cj4gPiAtCX0KPiA+IC0KPiA+IC0JZzJkX3VzZXJwdHIgPSBremFsbG9jKHNpemVv ZigqZzJkX3VzZXJwdHIpLCBHRlBfS0VSTkVMKTsKPiA+IC0JaWYgKCFnMmRfdXNlcnB0cikKPiA+ IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gLQo+ID4gLQlhdG9taWNfc2V0KCZnMmRf dXNlcnB0ci0+cmVmY291bnQsIDEpOwo+ID4gLQo+ID4gLQlzdGFydCA9IHVzZXJwdHIgJiBQQUdF X01BU0s7Cj4gPiAtCW9mZnNldCA9IHVzZXJwdHIgJiB+UEFHRV9NQVNLOwo+ID4gLQllbmQgPSBQ QUdFX0FMSUdOKHVzZXJwdHIgKyBzaXplKTsKPiA+IC0JbnBhZ2VzID0gKGVuZCAtIHN0YXJ0KSA+ PiBQQUdFX1NISUZUOwo+ID4gLQlnMmRfdXNlcnB0ci0+bnBhZ2VzID0gbnBhZ2VzOwo+ID4gLQo+ ID4gLQlwYWdlcyA9IGRybV9jYWxsb2NfbGFyZ2UobnBhZ2VzLCBzaXplb2Yoc3RydWN0IHBhZ2Ug KikpOwo+ID4gLQlpZiAoIXBhZ2VzKSB7Cj4gPiAtCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxv Y2F0ZSBwYWdlcy5cbiIpOwo+ID4gLQkJcmV0ID0gLUVOT01FTTsKPiA+IC0JCWdvdG8gZXJyX2Zy ZWU7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JZG93bl9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0p Owo+ID4gLQl2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgdXNlcnB0cik7Cj4gPiAtCWlmICgh dm1hKSB7Cj4gPiAtCQl1cF9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwo+ID4gLQkJRFJN X0VSUk9SKCJmYWlsZWQgdG8gZ2V0IHZtIHJlZ2lvbi5cbiIpOwo+ID4gLQkJcmV0ID0gLUVGQVVM VDsKPiA+IC0JCWdvdG8gZXJyX2ZyZWVfcGFnZXM7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaWYgKHZt YS0+dm1fZW5kIDwgdXNlcnB0ciArIHNpemUpIHsKPiA+IC0JCXVwX3JlYWQoJmN1cnJlbnQtPm1t LT5tbWFwX3NlbSk7Cj4gPiAtCQlEUk1fRVJST1IoInZtYSBpcyB0b28gc21hbGwuXG4iKTsKPiA+ IC0JCXJldCA9IC1FRkFVTFQ7Cj4gPiAtCQlnb3RvIGVycl9mcmVlX3BhZ2VzOwo+ID4gLQl9Cj4g PiAtCj4gPiAtCWcyZF91c2VycHRyLT52bWEgPSBleHlub3NfZ2VtX2dldF92bWEodm1hKTsKPiA+ IC0JaWYgKCFnMmRfdXNlcnB0ci0+dm1hKSB7Cj4gPiAtCQl1cF9yZWFkKCZjdXJyZW50LT5tbS0+ bW1hcF9zZW0pOwo+ID4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY29weSB2bWEuXG4iKTsKPiA+ IC0JCXJldCA9IC1FTk9NRU07Cj4gPiAtCQlnb3RvIGVycl9mcmVlX3BhZ2VzOwo+ID4gLQl9Cj4g PiAtCj4gPiAtCWcyZF91c2VycHRyLT5zaXplID0gc2l6ZTsKPiA+IC0KPiA+IC0JcmV0ID0gZXh5 bm9zX2dlbV9nZXRfcGFnZXNfZnJvbV91c2VycHRyKHN0YXJ0ICYgUEFHRV9NQVNLLAo+ID4gLQkJ CQkJCW5wYWdlcywgcGFnZXMsIHZtYSk7Cj4gPiAtCWlmIChyZXQgPCAwKSB7Cj4gPiAtCQl1cF9y ZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwo+ID4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g Z2V0IHVzZXIgcGFnZXMgZnJvbSB1c2VycHRyLlxuIik7Cj4gPiAtCQlnb3RvIGVycl9wdXRfdm1h Owo+ID4gLQl9Cj4gPiAtCj4gPiAtCXVwX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7Cj4g PiAtCWcyZF91c2VycHRyLT5wYWdlcyA9IHBhZ2VzOwo+ID4gLQo+ID4gLQlzZ3QgPSBremFsbG9j KHNpemVvZigqc2d0KSwgR0ZQX0tFUk5FTCk7Cj4gPiAtCWlmICghc2d0KSB7Cj4gPiAtCQlyZXQg PSAtRU5PTUVNOwo+ID4gLQkJZ290byBlcnJfZnJlZV91c2VycHRyOwo+ID4gLQl9Cj4gPiAtCj4g PiAtCXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMoc2d0LCBwYWdlcywgbnBhZ2VzLCBv ZmZzZXQsCj4gPiAtCQkJCQlzaXplLCBHRlBfS0VSTkVMKTsKPiA+IC0JaWYgKHJldCA8IDApIHsK PiA+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBzZ3QgZnJvbSBwYWdlcy5cbiIpOwo+ID4g LQkJZ290byBlcnJfZnJlZV9zZ3Q7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JZzJkX3VzZXJwdHItPnNn dCA9IHNndDsKPiA+IC0KPiA+IC0JcmV0ID0gZXh5bm9zX2dlbV9tYXBfc2d0X3dpdGhfZG1hKGRy bV9kZXYsIGcyZF91c2VycHRyLT5zZ3QsCj4gPiAtCQkJCQkJRE1BX0JJRElSRUNUSU9OQUwpOwo+ ID4gLQlpZiAocmV0IDwgMCkgewo+ID4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gbWFwIHNndCB3 aXRoIGRtYSByZWdpb24uXG4iKTsKPiA+IC0JCWdvdG8gZXJyX3NnX2ZyZWVfdGFibGU7Cj4gPiAt CX0KPiA+IC0KPiA+IC0JZzJkX3VzZXJwdHItPmRtYV9hZGRyID0gc2d0LT5zZ2xbMF0uZG1hX2Fk ZHJlc3M7Cj4gPiAtCWcyZF91c2VycHRyLT51c2VycHRyID0gdXNlcnB0cjsKPiA+IC0KPiA+IC0J bGlzdF9hZGRfdGFpbCgmZzJkX3VzZXJwdHItPmxpc3QsICZnMmRfcHJpdi0+dXNlcnB0cl9saXN0 KTsKPiA+IC0KPiA+IC0JaWYgKGcyZC0+Y3VycmVudF9wb29sICsgKG5wYWdlcyA8PCBQQUdFX1NI SUZUKSA8IGcyZC0+bWF4X3Bvb2wpIHsKPiA+IC0JCWcyZC0+Y3VycmVudF9wb29sICs9IG5wYWdl cyA8PCBQQUdFX1NISUZUOwo+ID4gLQkJZzJkX3VzZXJwdHItPmluX3Bvb2wgPSB0cnVlOwo+ID4g LQl9Cj4gPiAtCj4gPiAtCSpvYmogPSAodW5zaWduZWQgbG9uZylnMmRfdXNlcnB0cjsKPiA+IC0K PiA+IC0JcmV0dXJuICZnMmRfdXNlcnB0ci0+ZG1hX2FkZHI7Cj4gPiAtCj4gPiAtZXJyX3NnX2Zy ZWVfdGFibGU6Cj4gPiAtCXNnX2ZyZWVfdGFibGUoc2d0KTsKPiA+IC0KPiA+IC1lcnJfZnJlZV9z Z3Q6Cj4gPiAtCWtmcmVlKHNndCk7Cj4gPiAtCj4gPiAtZXJyX2ZyZWVfdXNlcnB0cjoKPiA+IC0J ZXh5bm9zX2dlbV9wdXRfcGFnZXNfdG9fdXNlcnB0cihnMmRfdXNlcnB0ci0+cGFnZXMsCj4gPiAt CQkJCQlnMmRfdXNlcnB0ci0+bnBhZ2VzLAo+ID4gLQkJCQkJZzJkX3VzZXJwdHItPnZtYSk7Cj4g PiAtCj4gPiAtZXJyX3B1dF92bWE6Cj4gPiAtCWV4eW5vc19nZW1fcHV0X3ZtYShnMmRfdXNlcnB0 ci0+dm1hKTsKPiA+IC0KPiA+IC1lcnJfZnJlZV9wYWdlczoKPiA+IC0JZHJtX2ZyZWVfbGFyZ2Uo cGFnZXMpOwo+ID4gLQo+ID4gLWVycl9mcmVlOgo+ID4gLQlrZnJlZShnMmRfdXNlcnB0cik7Cj4g PiAtCj4gPiAtCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyB2 b2lkIGcyZF91c2VycHRyX2ZyZWVfYWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+ID4g LQkJCQkJc3RydWN0IGcyZF9kYXRhICpnMmQsCj4gPiAtCQkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bHApCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHJtX2V4eW5vc19maWxlX3ByaXZhdGUgKmZpbGVfcHJp diA9IGZpbHAtPmRyaXZlcl9wcml2Owo+ID4gLQlzdHJ1Y3QgZXh5bm9zX2RybV9nMmRfcHJpdmF0 ZSAqZzJkX3ByaXYgPSBmaWxlX3ByaXYtPmcyZF9wcml2Owo+ID4gLQlzdHJ1Y3QgZzJkX2NtZGxp c3RfdXNlcnB0ciAqZzJkX3VzZXJwdHIsICpuOwo+ID4gLQo+ID4gLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUoZzJkX3VzZXJwdHIsIG4sICZnMmRfcHJpdi0+dXNlcnB0cl9saXN0LCBsaXN0KQo+ ID4gLQkJaWYgKGcyZF91c2VycHRyLT5pbl9wb29sKQo+ID4gLQkJCWcyZF91c2VycHRyX3B1dF9k bWFfYWRkcihkcm1fZGV2LAo+ID4gLQkJCQkJCSh1bnNpZ25lZCBsb25nKWcyZF91c2VycHRyLAo+ ID4gLQkJCQkJCXRydWUpOwo+ID4gLQo+ID4gLQlnMmQtPmN1cnJlbnRfcG9vbCA9IDA7Cj4gPiAt fQo+ID4gLQo+ID4gIHN0YXRpYyBlbnVtIGcyZF9yZWdfdHlwZSBnMmRfZ2V0X3JlZ190eXBlKGlu dCByZWdfb2Zmc2V0KQo+ID4gIHsKPiA+ICAJZW51bSBnMmRfcmVnX3R5cGUgcmVnX3R5cGU7Cj4g PiBAQCAtNzM0LDI5ICs0OTEsOCBAQCBzdGF0aWMgaW50IGcyZF9tYXBfY21kbGlzdF9nZW0oc3Ry dWN0IGcyZF9kYXRhICpnMmQsCj4gPiAgCQkJCWdvdG8gZXJyOwo+ID4gIAkJCX0KPiA+ICAJCX0g ZWxzZSB7Cj4gPiAtCQkJc3RydWN0IGRybV9leHlub3NfZzJkX3VzZXJwdHIgZzJkX3VzZXJwdHI7 Cj4gPiAtCj4gPiAtCQkJaWYgKGNvcHlfZnJvbV91c2VyKCZnMmRfdXNlcnB0ciwgKHZvaWQgX191 c2VyICopaGFuZGxlLAo+ID4gLQkJCQlzaXplb2Yoc3RydWN0IGRybV9leHlub3NfZzJkX3VzZXJw dHIpKSkgewo+ID4gLQkJCQlyZXQgPSAtRUZBVUxUOwo+ID4gLQkJCQlnb3RvIGVycjsKPiA+IC0J CQl9Cj4gPiAtCj4gPiAtCQkJaWYgKCFnMmRfY2hlY2tfYnVmX2Rlc2NfaXNfdmFsaWQoYnVmX2Rl c2MsIHJlZ190eXBlLAo+ID4gLQkJCQkJCQlnMmRfdXNlcnB0ci5zaXplKSkgewo+ID4gLQkJCQly ZXQgPSAtRUZBVUxUOwo+ID4gLQkJCQlnb3RvIGVycjsKPiA+IC0JCQl9Cj4gPiAtCj4gPiAtCQkJ YWRkciA9IGcyZF91c2VycHRyX2dldF9kbWFfYWRkcihkcm1fZGV2LAo+ID4gLQkJCQkJCQlnMmRf dXNlcnB0ci51c2VycHRyLAo+ID4gLQkJCQkJCQlnMmRfdXNlcnB0ci5zaXplLAo+ID4gLQkJCQkJ CQlmaWxlLAo+ID4gLQkJCQkJCQkmaGFuZGxlKTsKPiA+IC0JCQlpZiAoSVNfRVJSKGFkZHIpKSB7 Cj4gPiAtCQkJCXJldCA9IC1FRkFVTFQ7Cj4gPiAtCQkJCWdvdG8gZXJyOwo+ID4gLQkJCX0KPiA+ ICsJCQlyZXQgPSAtRUZBVUxUOwo+ID4gKwkJCWdvdG8gZXJyOwo+ID4gIAkJfQo+ID4KPiA+ICAJ CWNtZGxpc3QtPmRhdGFbcmVnX3BvcyArIDFdID0gKmFkZHI7Cj4gPiBAQCAtNzkzLDggKzUyOSw3 IEBAIHN0YXRpYyB2b2lkIGcyZF91bm1hcF9jbWRsaXN0X2dlbShzdHJ1Y3QgZzJkX2RhdGEgKmcy ZCwKPiA+ICAJCQlleHlub3NfZHJtX2dlbV9wdXRfZG1hX2FkZHIoc3ViZHJ2LT5kcm1fZGV2LCBo YW5kbGUsCj4gPiAgCQkJCQkJCWZpbHApOwo+ID4gIAkJZWxzZQo+ID4gLQkJCWcyZF91c2VycHRy X3B1dF9kbWFfYWRkcihzdWJkcnYtPmRybV9kZXYsIGhhbmRsZSwKPiA+IC0JCQkJCQkJZmFsc2Up Owo+ID4gKwkJCUJVRygpOwo+ID4KPiA+ICAJCWJ1Zl9pbmZvLT5yZWdfdHlwZXNbaV0gPSBSRUdf VFlQRV9OT05FOwo+ID4gIAkJYnVmX2luZm8tPmhhbmRsZXNbcmVnX3R5cGVdID0gMDsKPiA+IEBA IC0xMzI5LDcgKzEwNjQsNiBAQCBzdGF0aWMgaW50IGcyZF9vcGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkcm1fZGV2LCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPgo+ID4gIAlJTklUX0xJU1RfSEVBRCgm ZzJkX3ByaXYtPmludXNlX2NtZGxpc3QpOwo+ID4gIAlJTklUX0xJU1RfSEVBRCgmZzJkX3ByaXYt PmV2ZW50X2xpc3QpOwo+ID4gLQlJTklUX0xJU1RfSEVBRCgmZzJkX3ByaXYtPnVzZXJwdHJfbGlz dCk7Cj4gPgo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiBAQCAtMTM2Myw5ICsxMDk3LDYgQEAg c3RhdGljIHZvaWQgZzJkX2Nsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gPiAgCX0KPiA+ICAJbXV0ZXhfdW5sb2NrKCZnMmQtPmNtZGxpc3RfbXV0 ZXgpOwo+ID4KPiA+IC0JLyogcmVsZWFzZSBhbGwgZzJkX3VzZXJwdHIgaW4gcG9vbC4gKi8KPiA+ IC0JZzJkX3VzZXJwdHJfZnJlZV9hbGwoZHJtX2RldiwgZzJkLCBmaWxlKTsKPiA+IC0KPiA+ICAJ a2ZyZWUoZmlsZV9wcml2LT5nMmRfcHJpdik7Cj4gPiAgfQo+ID4KPiA+IEBAIC0xNDMzLDggKzEx NjQsNiBAQCBzdGF0aWMgaW50IGcyZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ID4gIAkJZ290byBlcnJfcHV0X2NsazsKPiA+ICAJfQo+ID4KPiA+IC0JZzJkLT5tYXhfcG9v bCA9IE1BWF9QT09MOwo+ID4gLQo+ID4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBnMmQp Owo+ID4KPiA+ICAJc3ViZHJ2ID0gJmcyZC0+c3ViZHJ2Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9nZW0uYwo+ID4gaW5kZXggMTYzYTA1NC4uY2I2MjRkOSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nZW0uYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2dlbS5jCj4gPiBAQCAtNDk2LDY2ICs0 OTYsNiBAQCB2b2lkIGV4eW5vc19nZW1fcHV0X3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKPiA+ICAJa2ZyZWUodm1hKTsKPiA+ICB9Cj4gPgo+ID4gLWludCBleHlub3NfZ2VtX2dldF9w YWdlc19mcm9tX3VzZXJwdHIodW5zaWduZWQgbG9uZyBzdGFydCwKPiA+IC0JCQkJCQl1bnNpZ25l ZCBpbnQgbnBhZ2VzLAo+ID4gLQkJCQkJCXN0cnVjdCBwYWdlICoqcGFnZXMsCj4gPiAtCQkJCQkJ c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPiAtewo+ID4gLQlpbnQgZ2V0X25wYWdlczsK PiA+IC0KPiA+IC0JLyogdGhlIG1lbW9yeSByZWdpb24gbW1hcGVkIHdpdGggVk1fUEZOTUFQLiAq Lwo+ID4gLQlpZiAodm1hX2lzX2lvKHZtYSkpIHsKPiA+IC0JCXVuc2lnbmVkIGludCBpOwo+ID4g LQo+ID4gLQkJZm9yIChpID0gMDsgaSA8IG5wYWdlczsgKytpLCBzdGFydCArPSBQQUdFX1NJWkUp IHsKPiA+IC0JCQl1bnNpZ25lZCBsb25nIHBmbjsKPiA+IC0JCQlpbnQgcmV0ID0gZm9sbG93X3Bm bih2bWEsIHN0YXJ0LCAmcGZuKTsKPiA+IC0JCQlpZiAocmV0KQo+ID4gLQkJCQlyZXR1cm4gcmV0 Owo+ID4gLQo+ID4gLQkJCXBhZ2VzW2ldID0gcGZuX3RvX3BhZ2UocGZuKTsKPiA+IC0JCX0KPiA+ IC0KPiA+IC0JCWlmIChpICE9IG5wYWdlcykgewo+ID4gLQkJCURSTV9FUlJPUigiZmFpbGVkIHRv IGdldCB1c2VyX3BhZ2VzLlxuIik7Cj4gPiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAtCQl9Cj4g PiAtCj4gPiAtCQlyZXR1cm4gMDsKPiA+IC0JfQo+ID4gLQo+ID4gLQlnZXRfbnBhZ2VzID0gZ2V0 X3VzZXJfcGFnZXMoY3VycmVudCwgY3VycmVudC0+bW0sIHN0YXJ0LAo+ID4gLQkJCQkJbnBhZ2Vz LCAxLCAxLCBwYWdlcywgTlVMTCk7Cj4gPiAtCWdldF9ucGFnZXMgPSBtYXgoZ2V0X25wYWdlcywg MCk7Cj4gPiAtCWlmIChnZXRfbnBhZ2VzICE9IG5wYWdlcykgewo+ID4gLQkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gZ2V0IHVzZXJfcGFnZXMuXG4iKTsKPiA+IC0JCXdoaWxlIChnZXRfbnBhZ2VzKQo+ ID4gLQkJCXB1dF9wYWdlKHBhZ2VzWy0tZ2V0X25wYWdlc10pOwo+ID4gLQkJcmV0dXJuIC1FRkFV TFQ7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JcmV0dXJuIDA7Cj4gPiAtfQo+ID4gLQo+ID4gLXZvaWQg ZXh5bm9zX2dlbV9wdXRfcGFnZXNfdG9fdXNlcnB0cihzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+ID4g LQkJCQkJdW5zaWduZWQgaW50IG5wYWdlcywKPiA+IC0JCQkJCXN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hKQo+ID4gLXsKPiA+IC0JaWYgKCF2bWFfaXNfaW8odm1hKSkgewo+ID4gLQkJdW5zaWdu ZWQgaW50IGk7Cj4gPiAtCj4gPiAtCQlmb3IgKGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsKPiA+ IC0JCQlzZXRfcGFnZV9kaXJ0eV9sb2NrKHBhZ2VzW2ldKTsKPiA+IC0KPiA+IC0JCQkvKgo+ID4g LQkJCSAqIHVuZG8gdGhlIHJlZmVyZW5jZSB3ZSB0b29rIHdoZW4gcG9wdWxhdGluZwo+ID4gLQkJ CSAqIHRoZSB0YWJsZS4KPiA+IC0JCQkgKi8KPiA+IC0JCQlwdXRfcGFnZShwYWdlc1tpXSk7Cj4g PiAtCQl9Cj4gPiAtCX0KPiA+IC19Cj4gPiAtCj4gPiAgaW50IGV4eW5vc19nZW1fbWFwX3NndF93 aXRoX2RtYShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiA+ICAJCQkJc3RydWN0IHNnX3Rh YmxlICpzZ3QsCj4gPiAgCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZ2VtLmggYi9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZ2VtLmgKPiA+IGluZGV4IDE1OTJjMGIuLjA3YzAw YTMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZ2Vt LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nZW0uaAo+ID4g QEAgLTIxLDcgKzIxLDYgQEAKPiA+ICAgKiBleHlub3MgZHJtIGdlbSBidWZmZXIgc3RydWN0dXJl Lgo+ID4gICAqCj4gPiAgICogQGt2YWRkcjoga2VybmVsIHZpcnR1YWwgYWRkcmVzcyB0byBhbGxv Y2F0ZWQgbWVtb3J5IHJlZ2lvbi4KPiA+IC0gKiAqdXNlcnB0cjogdXNlciBzcGFjZSBhZGRyZXNz Lgo+ID4gICAqIEBkbWFfYWRkcjogYnVzIGFkZHJlc3MoYWNjZXNzZWQgYnkgZG1hKSB0byBhbGxv Y2F0ZWQgbWVtb3J5IHJlZ2lvbi4KPiA+ICAgKgktIHRoaXMgYWRkcmVzcyBjb3VsZCBiZSBwaHlz aWNhbCBhZGRyZXNzIHdpdGhvdXQgSU9NTVUgYW5kCj4gPiAgICoJZGV2aWNlIGFkZHJlc3Mgd2l0 aCBJT01NVS4KPiA+IEBAIC0yOSwxOSArMjgsMTUgQEAKPiA+ICAgKiBAcGFnZXM6IEFycmF5IG9m IGJhY2tpbmcgcGFnZXMuCj4gPiAgICogQHNndDogc2cgdGFibGUgdG8gdHJhbnNmZXIgcGFnZSBk YXRhLgo+ID4gICAqIEBzaXplOiBzaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkgcmVnaW9uLgo+ID4g LSAqIEBwZm5tYXA6IGluZGljYXRlIHdoZXRoZXIgbWVtb3J5IHJlZ2lvbiBmcm9tIHVzZXJwdHIg aXMgbW1hcGVkIHdpdGgKPiA+IC0gKglWTV9QRk5NQVAgb3Igbm90Lgo+ID4gICAqLwo+ID4gIHN0 cnVjdCBleHlub3NfZHJtX2dlbV9idWYgewo+ID4gIAl2b2lkIF9faW9tZW0JCSprdmFkZHI7Cj4g PiAtCXVuc2lnbmVkIGxvbmcJCXVzZXJwdHI7Cj4gPiAgCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwo+ ID4gIAlzdHJ1Y3QgZG1hX2F0dHJzCWRtYV9hdHRyczsKPiA+ICAJdW5zaWduZWQgaW50CQl3cml0 ZTsKPiA+ICAJc3RydWN0IHBhZ2UJCSoqcGFnZXM7Cj4gPiAgCXN0cnVjdCBzZ190YWJsZQkJKnNn dDsKPiA+ICAJdW5zaWduZWQgbG9uZwkJc2l6ZTsKPiA+IC0JYm9vbAkJCXBmbm1hcDsKPiA+ICB9 Owo+ID4KPiA+ICAvKgo+ID4gQEAgLTEyNSwxMCArMTIwLDYgQEAgaW50IGV4eW5vc19kcm1fZ2Vt X21tYXBfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICBpbnQg ZXh5bm9zX2RybV9nZW1fbW1hcF9idWZmZXIoc3RydWN0IGZpbGUgKmZpbHAsCj4gPiAgCQkJCSAg ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiA+Cj4gPiAtLyogbWFwIHVzZXIgc3Bh Y2UgYWxsb2NhdGVkIGJ5IG1hbGxvYyB0byBwYWdlcy4gKi8KPiA+IC1pbnQgZXh5bm9zX2RybV9n ZW1fdXNlcnB0cl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4g LQkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gPiAtCj4gPiAgLyogZ2V0 IGJ1ZmZlciBpbmZvcm1hdGlvbiB0byBtZW1vcnkgcmVnaW9uIGFsbG9jYXRlZCBieSBnZW0uICov Cj4gPiAgaW50IGV4eW5vc19kcm1fZ2VtX2dldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ID4gIAkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7 Cj4gPiBAQCAtMTY4LDE3ICsxNTksNiBAQCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmV4eW5vc19n ZW1fZ2V0X3ZtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Cj4gPiAgLyogcmVsZWFzZSBh IHVzZXJzcGFjZSB2aXJ0dWFsIG1lbW9yeSBhcmVhLiAqLwo+ID4gIHZvaWQgZXh5bm9zX2dlbV9w dXRfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiA+Cj4gPiAtLyogZ2V0IHBhZ2Vz IGZyb20gdXNlciBzcGFjZS4gKi8KPiA+IC1pbnQgZXh5bm9zX2dlbV9nZXRfcGFnZXNfZnJvbV91 c2VycHRyKHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gPiAtCQkJCQkJdW5zaWduZWQgaW50IG5wYWdl cywKPiA+IC0JCQkJCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+ID4gLQkJCQkJCXN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKTsKPiA+IC0KPiA+IC0vKiBkcm9wIHRoZSByZWZlcmVuY2UgdG8gcGFn ZXMuICovCj4gPiAtdm9pZCBleHlub3NfZ2VtX3B1dF9wYWdlc190b191c2VycHRyKHN0cnVjdCBw YWdlICoqcGFnZXMsCj4gPiAtCQkJCQl1bnNpZ25lZCBpbnQgbnBhZ2VzLAo+ID4gLQkJCQkJc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ID4gLQo+ID4gIC8qIG1hcCBzZ3Qgd2l0aCBkbWEg cmVnaW9uLiAqLwo+ID4gIGludCBleHlub3NfZ2VtX21hcF9zZ3Rfd2l0aF9kbWEoc3RydWN0IGRy bV9kZXZpY2UgKmRybV9kZXYsCj4gPiAgCQkJCXN0cnVjdCBzZ190YWJsZSAqc2d0LAo+ID4KPiAK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK