From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [PATCH 09/13] drm/msm: Use the DRM common Scheduler Date: Mon, 1 Oct 2018 13:02:08 -0600 Message-ID: <20181001190208.GD31641@jcrouse-lnx.qualcomm.com> References: <1538397105-19581-1-git-send-email-smasetty@codeaurora.org> <1538397105-19581-10-git-send-email-smasetty@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1538397105-19581-10-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sharat Masetty Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMDEsIDIwMTggYXQgMDY6MDE6NDFQTSArMDUzMCwgU2hhcmF0IE1hc2V0dHkg d3JvdGU6Cj4gVGhpcyBwYXRjaCBob29rcyB1cCB0aGUgRFJNIGdwdSBzY2hlZHVsZXIgdG8gdGhl IG1zbSBEUk0gZHJpdmVyLiBUaGUKPiBtb3N0IG5vdGljZWFibGUgY2hhbmdlcyB0byB0aGUgZHJp dmVyIGFyZSBhcyBmb2xsb3dzLiBUaGUgc3VibWl0IHBhdGggaXMKPiBzcGxpdCBpbnRvIHR3byBw YXJ0cywgaW4gdGhlIHVzZXIgY29udGV4dCB0aGUgc3VibWl0KGpvYikgaXMgY3JlYXRlZCBhbmQK PiBhZGRlZCB0byBvbmUgb2YgdGhlIGVudGl0eSdzIHNjaGVkdWxlciBydW4gcXVldWUuIFRoZSBz Y2hlZHVsZXIgdGhlbgo+IHRyaWVzIHRvIGRyYWluIHRoZSBxdWV1ZSBieSBzdWJtaXR0aW5nIHRo ZSBqb2JzIHRoZSBoYXJkd2FyZSB0byBhY3QgdXBvbi4KPiBUaGUgc3VibWl0IGpvYiBzaXRzIG9u IHRoZSBzY2hlZHVsZXIgcXVldWUgdW50aWwgYWxsIHRoZSBkZXBlbmRlbnQKPiBmZW5jZXMgYXJl IHdhaXRlZCB1cG9uIHN1Y2Nlc3NmdWxseS4KPiAKPiBXZSBoYXZlIG9uZSBzY2hlZHVsZXIgaW5z dGFuY2UgcGVyIHJpbmcuIFRoZSBzdWJtaXRxdWV1ZXMgd2lsbCBob3N0IGEKPiBzY2hlZHVsZXIg ZW50aXR5IG9iamVjdC4gVGhpcyBlbnRpdHkgd2lsbCBiZSBtYXBwZWQgdG8gdGhlIHNjaGVkdWxl cidzCj4gZGVmYXVsdCBydW5xdWV1ZS4gVGhpcyBzaG91bGQgYmUgZ29vZCBmb3Igbm93LCBidXQg aW4gZnV0dXJlIGl0IGlzIHBvc3NpYmxlCj4gdG8gZXh0ZW5kIHRoZSBBUEkgdG8gYWxsb3cgZm9y IHNjaGVkdWxpbmcgYW1vbmdzdCB0aGUgc3VibWl0cXVldWVzIG9uIHRoZQo+IHNhbWUgcmluZy4K PiAKPiBXaXRoIHRoaXMgcGF0Y2ggdGhlIHJvbGUgb2YgdGhlIHN0cnVjdF9tdXRleCBsb2NrIGhh cyBiZWVuIGdyZWF0bHkgcmVkdWNlZCBpbgo+IHNjb3BlIGluIHRoZSBzdWJtaXQgcGF0aCwgZXZp ZGVudGx5IHdoZW4gYWN0dWFsbHkgcHV0dGluZyB0aGUgam9iIG9uIHRoZQo+IHJpbmdidWZmZXIu IFRoaXMgc2hvdWxkIGVuYWJsZSB1cyB3aXRoIGluY3JlYXNlZCBwYXJhbGxlbGlzbSBpbiB0aGUK PiBkcml2ZXIgd2hpY2ggc2hvdWxkIHRyYW5zbGF0ZSB0byBiZXR0ZXIgcGVyZm9ybWFuY2Ugb3Zl cmFsbCBob3BlZnVsbHkuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2hhcmF0IE1hc2V0dHkgPHNtYXNl dHR5QGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcg ICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAg ICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgIHwgICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jICAgICAgICAgfCAgIDggKy0KPiAg ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmggICAgICAgICB8ICAgNiArCj4gIGRyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dlbV9zdWJtaXQuYyAgfCAxMzggKysrKysrKysrLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgfCAgNzIgKysrKysrLS0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYyAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9yaW5nYnVmZmVyLmggIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc2No ZWQuYyAgICAgICB8IDMxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9tc20vbXNtX3NjaGVkLmggICAgICAgfCAgMTggKysKPiAgZHJpdmVycy9n cHUvZHJtL21zbS9tc21fc3VibWl0cXVldWUuYyB8ICAxOCArLQo+ICAxMyBmaWxlcyBjaGFuZ2Vk LCA1MDcgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vS2NvbmZpZwo+IGluZGV4 IDM4Y2JkZTkuLjBkMDE4MTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29u ZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnCj4gQEAgLTE1LDYgKzE1LDcg QEAgY29uZmlnIERSTV9NU00KPiAgCXNlbGVjdCBTTkRfU09DX0hETUlfQ09ERUMgaWYgU05EX1NP Qwo+ICAJc2VsZWN0IFNZTkNfRklMRQo+ICAJc2VsZWN0IFBNX09QUAo+ICsJc2VsZWN0IERSTV9T Q0hFRAo+ICAJZGVmYXVsdCB5Cj4gIAloZWxwCj4gIAkgIERSTS9LTVMgZHJpdmVyIGZvciBNU00v c25hcGRyYWdvbi4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKPiBpbmRleCBjZDQwYzA1Li43MWVkOTIxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL01ha2VmaWxlCj4gQEAgLTYwLDcgKzYwLDggQEAgbXNtLXkgOj0gXAo+ICAJ bXNtX3BlcmYubyBcCj4gIAltc21fcmQubyBcCj4gIAltc21fcmluZ2J1ZmZlci5vIFwKPiAtCW1z bV9zdWJtaXRxdWV1ZS5vCj4gKwltc21fc3VibWl0cXVldWUubyBcCj4gKwltc21fc2NoZWQubwo+ ICAKPiAgbXNtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhZHJlbm8vYTV4eF9kZWJ1Z2ZzLm8KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmgKPiBpbmRleCBiMmRhMWZiLi5lNDYxYTljIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmgKPiBAQCAtMjEzLDggKzIxMyw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqbXNtX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgaW50IG1zbV9nZW1fbWFkdmlzZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdW5zaWdu ZWQgbWFkdik7Cj4gIGludCBtc21fZ2VtX3N5bmNfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLAo+ICAJCXN0cnVjdCBtc21fZmVuY2VfY29udGV4dCAqZmN0eCwgYm9vbCBleGNsdXNp dmUpOwo+IC12b2lkIG1zbV9nZW1fbW92ZV90b19hY3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmosCj4gLQkJc3RydWN0IG1zbV9ncHUgKmdwdSwgYm9vbCBleGNsdXNpdmUsIHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlKTsKPiArdm9pZCBtc21fZ2VtX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKPiAgdm9pZCBtc21fZ2Vt X21vdmVfdG9faW5hY3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICBpbnQgbXNt X2dlbV9jcHVfcHJlcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdWludDMyX3Qgb3AsIGt0 aW1lX3QgKnRpbWVvdXQpOwo+ICBpbnQgbXNtX2dlbV9jcHVfZmluaShzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKPiBpbmRleCBmNTgzYmI0Li43YTEyZjMw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKPiBAQCAtNjYzLDE2ICs2NjMsMTIgQEAgaW50IG1z bV9nZW1fc3luY19vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiAtdm9pZCBtc21fZ2VtX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLAo+IC0JCXN0cnVjdCBtc21fZ3B1ICpncHUsIGJvb2wgZXhjbHVzaXZlLCBz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArdm9pZCBtc21fZ2VtX21vdmVfdG9fYWN0aXZlKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQo+ICB7Cj4gIAlz dHJ1Y3QgbXNtX2dlbV9vYmplY3QgKm1zbV9vYmogPSB0b19tc21fYm8ob2JqKTsKPiAgCVdBUk5f T04obXNtX29iai0+bWFkdiAhPSBNU01fTUFEVl9XSUxMTkVFRCk7Cj4gIAltc21fb2JqLT5ncHUg PSBncHU7Cj4gLQlpZiAoZXhjbHVzaXZlKQo+IC0JCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhj bF9mZW5jZShtc21fb2JqLT5yZXN2LCBmZW5jZSk7Cj4gLQllbHNlCj4gLQkJcmVzZXJ2YXRpb25f b2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UobXNtX29iai0+cmVzdiwgZmVuY2UpOwo+ICsKPiAgCWxp c3RfZGVsX2luaXQoJm1zbV9vYmotPm1tX2xpc3QpOwo+ICAJbGlzdF9hZGRfdGFpbCgmbXNtX29i ai0+bW1fbGlzdCwgJmdwdS0+YWN0aXZlX2xpc3QpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmgK PiBpbmRleCBjYWUzYWE1Li44YzYyNjlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dlbS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmgKPiBAQCAt MjAsNiArMjAsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZ3B1X3NjaGVkdWxlci5oPgo+ ICAjaW5jbHVkZSAibXNtX2Rydi5oIgo+ICAKPiAgLyogQWRkaXRpb25hbCBpbnRlcm5hbC11c2Ug b25seSBCTyBmbGFnczogKi8KPiBAQCAtMTM2LDYgKzEzNyw3IEBAIGVudW0gbXNtX2dlbV9sb2Nr IHsKPiAgICogbGFzdHMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgc3VibWl0LWlvY3RsLgo+ICAg Ki8KPiAgc3RydWN0IG1zbV9nZW1fc3VibWl0IHsKPiArCXN0cnVjdCBkcm1fc2NoZWRfam9iIHNj aGVkX2pvYjsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gIAlzdHJ1Y3QgbXNtX2ZpbGVf cHJpdmF0ZSAqY3R4Owo+ICAJc3RydWN0IG1zbV9ncHUgKmdwdTsKPiBAQCAtMTQ0LDYgKzE0Niw3 IEBAIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCB7Cj4gIAlzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggdGlj a2V0Owo+ICAJdWludDMyX3Qgc2Vxbm87CQkvKiBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHN1Ym1p dCBvbiB0aGUgcmluZyAqLwo+ICAJc3RydWN0IGRtYV9mZW5jZSAqaHdfZmVuY2U7Cj4gKwlzdHJ1 Y3QgZG1hX2ZlbmNlICppbl9mZW5jZSwgKm91dF9mZW5jZTsKPiAgCWludCBvdXRfZmVuY2VfaWQ7 Cj4gIAlzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAqcXVldWU7Cj4gIAlzdHJ1Y3QgcGlkICpw aWQ7ICAgIC8qIHN1Ym1pdHRpbmcgcHJvY2VzcyAqLwo+IEBAIC0xNjIsNiArMTY1LDkgQEAgc3Ry dWN0IG1zbV9nZW1fc3VibWl0IHsKPiAgCQl1aW50MzJfdCBmbGFnczsKPiAgCQlzdHJ1Y3QgbXNt X2dlbV9vYmplY3QgKm9iajsKPiAgCQl1aW50NjRfdCBpb3ZhOwo+ICsJCXN0cnVjdCBkbWFfZmVu Y2UgKmV4Y2w7Cj4gKwkJdWludDMyX3QgbnJfc2hhcmVkOwo+ICsJCXN0cnVjdCBkbWFfZmVuY2Ug KipzaGFyZWQ7Cj4gIAl9IGJvc1swXTsKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dlbV9zdWJtaXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dl bV9zdWJtaXQuYwo+IGluZGV4IDc5MzFjMmEuLmRmZjk0NWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZ2VtX3N1Ym1pdC5jCj4gQEAgLTY1LDIzICs2NSwzNyBAQCB2b2lkIG1zbV9nZW1fc3Vi bWl0X2ZyZWUoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCj4gIHsKPiAgCWludCBpOwo+ ICAKPiArCW11dGV4X2xvY2soJnN1Ym1pdC0+cmluZy0+ZmVuY2VfaWRyX2xvY2spOwo+ICAJaWRy X3JlbW92ZSgmc3VibWl0LT5yaW5nLT5mZW5jZV9pZHIsIHN1Ym1pdC0+b3V0X2ZlbmNlX2lkKTsK PiAtCj4gLQlkbWFfZmVuY2VfcHV0KHN1Ym1pdC0+aHdfZmVuY2UpOwo+ICsJbXV0ZXhfdW5sb2Nr KCZzdWJtaXQtPnJpbmctPmZlbmNlX2lkcl9sb2NrKTsKCldoeSBhcmUgd2UgdXNpbmcgYSBtdXRl eCBmb3IgdGhpcyBndXkgLSB0aGlzIHNlZW1zIGxpa2UgYSBqb2IgZm9yIGEgc3BpbiBpZiBJCmV2 ZXIgc2F3IG9uZS4gTWF5YmUgZXZlbiBhIHJ3IHNwaW4gZGVwZW5kaW5nIG9uIGhvdyBvZnRlbiB0 aGF0IGlkciBnZXRzCnF1ZXJpZWQuCgo+ICAJZm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+bnJfYm9z OyBpKyspIHsKPiArCQlpbnQgajsKPiArCj4gIAkJc3RydWN0IG1zbV9nZW1fb2JqZWN0ICptc21f b2JqID0gc3VibWl0LT5ib3NbaV0ub2JqOwo+ICAKPiAgCQlpZiAoc3VibWl0LT5ib3NbaV0uZmxh Z3MgJiBCT19QSU5ORUQpCj4gIAkJCW1zbV9nZW1fcHV0X2lvdmEoJm1zbV9vYmotPmJhc2UsIHN1 Ym1pdC0+Z3B1LT5hc3BhY2UpOwo+ICAKPiAtCQlkcm1fZ2VtX29iamVjdF9wdXQoJm1zbV9vYmot PmJhc2UpOwo+ICsJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmbXNtX29iai0+YmFzZSk7 Cj4gKwo+ICsJCS8qCj4gKwkJICogV2hpbGUgd2UgYXJlIGF0IGl0LCBjbGVhciB0aGUgc2F2ZWQg ZXhjbHVzaXZlIGFuZCBzaGFyZWQKPiArCQkgKiBmZW5jZXMgaWYgYW55Cj4gKwkJICovCj4gKwkJ ZG1hX2ZlbmNlX3B1dChzdWJtaXQtPmJvc1tpXS5leGNsKTsKPiArCj4gKwkJZm9yIChqID0gMDsg aiA8IHN1Ym1pdC0+Ym9zW2ldLm5yX3NoYXJlZDsgaisrKQo+ICsJCQlkbWFfZmVuY2VfcHV0KHN1 Ym1pdC0+Ym9zW2ldLnNoYXJlZFtqXSk7Cj4gKwo+ICsJCWtmcmVlKHN1Ym1pdC0+Ym9zW2ldLnNo YXJlZCk7Cj4gIAl9Cj4gIAo+IC0JbGlzdF9kZWwoJnN1Ym1pdC0+bm9kZSk7Cj4gIAlwdXRfcGlk KHN1Ym1pdC0+cGlkKTsKPiAgCW1zbV9zdWJtaXRxdWV1ZV9wdXQoc3VibWl0LT5xdWV1ZSk7Cj4g IAo+ICsJZG1hX2ZlbmNlX3B1dChzdWJtaXQtPmluX2ZlbmNlKTsKPiArCWRtYV9mZW5jZV9wdXQo c3VibWl0LT5vdXRfZmVuY2UpOwo+ICAJa2ZyZWUoc3VibWl0KTsKPiAgfQo+ICAKPiBAQCAtMjM4 LDYgKzI1MiwyNyBAQCBzdGF0aWMgaW50IHN1Ym1pdF9sb2NrX29iamVjdHMoc3RydWN0IG1zbV9n ZW1fc3VibWl0ICpzdWJtaXQpCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9p ZCBzdWJtaXRfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrKHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAq c3VibWl0KQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5u cl9ib3M7IGkrKykgewo+ICsJCXN0cnVjdCBtc21fZ2VtX29iamVjdCAqbXNtX29iaiA9IHN1Ym1p dC0+Ym9zW2ldLm9iajsKPiArCj4gKwkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYgTVNNX1NV Qk1JVF9CT19XUklURSkKPiArCQkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKG1z bV9vYmotPnJlc3YsCj4gKwkJCQkJc3VibWl0LT5vdXRfZmVuY2UpOwo+ICsJCWVsc2UKPiArCQkJ cmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UobXNtX29iai0+cmVzdiwKPiArCQkJ CQlzdWJtaXQtPm91dF9mZW5jZSk7Cj4gKwo+ICsJCWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAm IEJPX0xPQ0tFRCkgewo+ICsJCQl3d19tdXRleF91bmxvY2soJm1zbV9vYmotPnJlc3YtPmxvY2sp Owo+ICsJCQlzdWJtaXQtPmJvc1tpXS5mbGFncyAmPSB+Qk9fTE9DS0VEOwo+ICsJCX0KPiArCX0K PiArfQo+ICsKPiAgc3RhdGljIGludCBzdWJtaXRfZmVuY2Vfc3luYyhzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQgKnN1Ym1pdCwgYm9vbCBub19pbXBsaWNpdCkKPiAgewo+ICAJaW50IGksIHJldCA9IDA7 Cj4gQEAgLTI2MCwxMCArMjk1LDI0IEBAIHN0YXRpYyBpbnQgc3VibWl0X2ZlbmNlX3N5bmMoc3Ry dWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsIGJvb2wgbm9faW1wbGljaXQpCj4gIAkJaWYgKG5v X2ltcGxpY2l0KQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJcmV0ID0gbXNtX2dlbV9zeW5jX29i amVjdCgmbXNtX29iai0+YmFzZSwgc3VibWl0LT5yaW5nLT5mY3R4LAo+IC0JCQl3cml0ZSk7Cj4g LQkJaWYgKHJldCkKPiAtCQkJYnJlYWs7Cj4gKwkJaWYgKHdyaXRlKSB7Cj4gKwkJCS8qCj4gKwkJ CSAqIFNhdmUgdGhlIHBlciBidWZmZXIgc2hhcmVkIGFuZCBleGNsdXNpdmUgZmVuY2VzIGZvcgo+ ICsJCQkgKiB0aGUgc2NoZWR1bGVyIHRocmVhZCB0byB3YWl0IG9uLgo+ICsJCQkgKgo+ICsJCQkg KiBOb3RlOiBUaGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHN0b3JpbmcgdGhlCj4gKwkJCSAq IHNoYXJlZCBmZW5jZXMgd2lsbCBiZSByZWxlYXNlZCB3aGVuIHRoZSBzY2hlZHVsZXIKPiArCQkJ ICogaXMgZG9uZSB3YWl0aW5nIG9uIGFsbCB0aGUgc2F2ZWQgZmVuY2VzLgo+ICsJCQkgKi8KPiAr CQkJcmV0ID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9mZW5jZXNfcmN1KG1zbV9vYmotPnJlc3Ys Cj4gKwkJCQkJJnN1Ym1pdC0+Ym9zW2ldLmV4Y2wsCj4gKwkJCQkJJnN1Ym1pdC0+Ym9zW2ldLm5y X3NoYXJlZCwKPiArCQkJCQkmc3VibWl0LT5ib3NbaV0uc2hhcmVkKTsKPiArCQkJaWYgKHJldCkK PiArCQkJCXJldHVybiByZXQ7CgpJIHRoaW5rIHRoaXMgY2FuIGp1c3QgYmUgYSByZXR1cm4gcmV0 OwoKPiArCQl9IGVsc2UKCk5vIG5lZWQgZm9yIHRoZSBlbHNlCj4gKwkJCXN1Ym1pdC0+Ym9zW2ld LmV4Y2wgPQo+ICsJCQkJcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdShtc21fb2JqLT5y ZXN2KTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gcmV0OwoKVGhpcyBjYW4gYmUgYSByZXR1cm4gMDsK Cj4gQEAgLTQyNSw3ICs0NzQsNiBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpj dHggPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAgCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0 Owo+ICAJc3RydWN0IG1zbV9ncHUgKmdwdSA9IHByaXYtPmdwdTsKPiAtCXN0cnVjdCBkbWFfZmVu Y2UgKmluX2ZlbmNlID0gTlVMTDsKPiAgCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSA9IE5V TEw7Cj4gIAlzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAqcXVldWU7Cj4gIAlzdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKnJpbmc7Cj4gQEAgLTQ1NywzMiArNTA1LDExIEBAIGludCBtc21faW9jdGxf Z2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAKPiAgCXJp bmcgPSBncHUtPnJiW3F1ZXVlLT5wcmlvXTsKPiAgCj4gLQlpZiAoYXJncy0+ZmxhZ3MgJiBNU01f U1VCTUlUX0ZFTkNFX0ZEX0lOKSB7Cj4gLQkJaW5fZmVuY2UgPSBzeW5jX2ZpbGVfZ2V0X2ZlbmNl KGFyZ3MtPmZlbmNlX2ZkKTsKPiAtCj4gLQkJaWYgKCFpbl9mZW5jZSkKPiAtCQkJcmV0dXJuIC1F SU5WQUw7Cj4gLQo+IC0JCS8qCj4gLQkJICogV2FpdCBpZiB0aGUgZmVuY2UgaXMgZnJvbSBhIGZv cmVpZ24gY29udGV4dCwgb3IgaWYgdGhlIGZlbmNlCj4gLQkJICogYXJyYXkgY29udGFpbnMgYW55 IGZlbmNlIGZyb20gYSBmb3JlaWduIGNvbnRleHQuCj4gLQkJICovCj4gLQkJaWYgKCFkbWFfZmVu Y2VfbWF0Y2hfY29udGV4dChpbl9mZW5jZSwgcmluZy0+ZmN0eC0+Y29udGV4dCkpIHsKPiAtCQkJ cmV0ID0gZG1hX2ZlbmNlX3dhaXQoaW5fZmVuY2UsIHRydWUpOwo+IC0JCQlpZiAocmV0KQo+IC0J CQkJcmV0dXJuIHJldDsKPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiBy ZXQ7Cj4gLQo+ICAJaWYgKGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1JVF9GRU5DRV9GRF9PVVQpIHsK PiAgCQlvdXRfZmVuY2VfZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7Cj4gIAkJ aWYgKG91dF9mZW5jZV9mZCA8IDApIHsKPiAgCQkJcmV0ID0gb3V0X2ZlbmNlX2ZkOwo+IC0JCQln b3RvIG91dF91bmxvY2s7Cj4gKwkJCWdvdG8gb3V0X2VycjsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC00OTAsNyArNTE3LDE2IEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlhcmdzLT5ucl9jbWRzLCBjdHgpOwo+ICAJaWYg KCFzdWJtaXQpIHsKPiAgCQlyZXQgPSAtRU5PTUVNOwo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiAr CQlnb3RvIG91dF9lcnI7Cj4gKwl9Cj4gKwo+ICsJaWYgKGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1J VF9GRU5DRV9GRF9JTikgewo+ICsJCXN1Ym1pdC0+aW5fZmVuY2UgPSBzeW5jX2ZpbGVfZ2V0X2Zl bmNlKGFyZ3MtPmZlbmNlX2ZkKTsKPiArCj4gKwkJaWYgKCFzdWJtaXQtPmluX2ZlbmNlKSB7Cj4g KwkJCXJldCA9IC1FSU5WQUw7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiAgCX0KPiAgCj4gIAlp ZiAoYXJncy0+ZmxhZ3MgJiBNU01fU1VCTUlUX1NVRE8pCj4gQEAgLTU3MywyOCArNjA5LDE2IEBA IGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAKPiAgCXN1Ym1pdC0+bnJfY21kcyA9IGk7Cj4gIAo+IC0JbXNtX2dwdV9zdWJtaXQo c3VibWl0KTsKPiAtCWlmIChJU19FUlIoc3VibWl0LT5od19mZW5jZSkpIHsKPiAtCQlyZXQgPSBQ VFJfRVJSKHN1Ym1pdC0+aHdfZmVuY2UpOwo+IC0JCXN1Ym1pdC0+aHdfZmVuY2UgPSBOVUxMOwo+ ICsJcmV0ID0gbXNtX3NjaGVkX2pvYl9pbml0KCZzdWJtaXQtPnNjaGVkX2pvYik7Cj4gKwlpZiAo cmV0KQo+ICAJCWdvdG8gb3V0Owo+IC0JfQo+ICAKPiAtCS8qCj4gLQkgKiBObyBwcm90ZWN0aW9u IHNob3VsZCBiZSBva2F5IGhlcmUgc2luY2UgdGhpcyBpcyBwcm90ZWN0ZWQgYnkgdGhlIGJpZwo+ IC0JICogR1BVIGxvY2suCj4gLQkgKi8KPiAtCXN1Ym1pdC0+b3V0X2ZlbmNlX2lkID0gaWRyX2Fs bG9jX2N5Y2xpYygmcmluZy0+ZmVuY2VfaWRyLAo+IC0JCQlzdWJtaXQtPmh3X2ZlbmNlLCAwLCBJ TlRfTUFYLCBHRlBfS0VSTkVMKTsKPiAtCWlmIChzdWJtaXQtPm91dF9mZW5jZV9pZCA8IDApIHsK PiAtCQlyZXQgPSAtRU5PTUVNOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+ICsJc3VibWl0X2F0dGFj aF9mZW5jZXNfYW5kX3VubG9jayhzdWJtaXQpOwo+ICAKPiAgCWFyZ3MtPmZlbmNlID0gc3VibWl0 LT5vdXRfZmVuY2VfaWQ7Cj4gIAo+ICAJaWYgKGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1JVF9GRU5D RV9GRF9PVVQpIHsKPiAtCQlzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfY3JlYXRlKHN1Ym1pdC0+aHdf ZmVuY2UpOwo+ICsJCXN5bmNfZmlsZSA9IHN5bmNfZmlsZV9jcmVhdGUoc3VibWl0LT5vdXRfZmVu Y2UpOwo+ICAJCWlmICghc3luY19maWxlKSB7Cj4gIAkJCXJldCA9IC1FTk9NRU07Cj4gIAkJCWdv dG8gb3V0Owo+IEBAIC02MDQsMTQgKzYyOCwyMiBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCX0KPiAgCj4gIG91dDoKPiAt CWlmIChpbl9mZW5jZSkKPiAtCQlkbWFfZmVuY2VfcHV0KGluX2ZlbmNlKTsKPiArCS8qCj4gKwkg KiBDbGVhbiB1cCB0aGUgc3VibWl0IGJpdHMgYW5kIHBpZWNlcyB3aGljaCBhcmUgbm90IG5lZWRl ZCBiZXlvbmQgdGhpcwo+ICsJICogZnVuY3Rpb24gY29udGV4dAo+ICsJICovCj4gIAlzdWJtaXRf Y2xlYW51cChzdWJtaXQpOwo+IC0JaWYgKHJldCkKPiArCj4gKwlpZiAoIXJldCkKPiArCQkvKgo+ ICsJCSAqIElmIHdlIHJlYWNoZWQgaGVyZSwgdGhlbiBhbGwgaXMgd2VsbC4gUHVzaCB0aGUgam9i IHRvIHRoZQo+ICsJCSAqIHNjaGVkdWxlcgo+ICsJCSAqLwo+ICsJCW1zbV9zY2hlZF9wdXNoX2pv YihzdWJtaXQpOwo+ICsJZWxzZQo+ICAJCW1zbV9nZW1fc3VibWl0X2ZyZWUoc3VibWl0KTsKPiAt b3V0X3VubG9jazoKPiArb3V0X2VycjoKPiAgCWlmIChyZXQgJiYgKG91dF9mZW5jZV9mZCA+PSAw KSkKPiAgCQlwdXRfdW51c2VkX2ZkKG91dF9mZW5jZV9mZCk7Cj4gLQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUu Ywo+IGluZGV4IGNkNWZlNDkuLjQ4MWE1NWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ3B1LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwo+IEBA IC0yOTUsMTIgKzI5NSwxNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZmVuY2VzKHN0cnVjdCBtc21f Z3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZywKPiAgZmluZF9zdWJtaXQoc3Ry dWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nLCB1aW50MzJfdCBmZW5jZSkKPiAgewo+ICAJc3RydWN0 IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAKPiAt CVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcmluZy0+Z3B1LT5kZXYtPnN0cnVjdF9tdXRleCkp Owo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKPiAgCj4gIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHN1Ym1pdCwgJnJpbmctPnN1Ym1pdHMsIG5vZGUpCj4gLQkJaWYgKHN1 Ym1pdC0+c2Vxbm8gPT0gZmVuY2UpCj4gKwkJaWYgKHN1Ym1pdC0+c2Vxbm8gPT0gZmVuY2UpIHsK PiArCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmluZy0+bG9jaywgZmxhZ3MpOwo+ICAJCQly ZXR1cm4gc3VibWl0Owo+ICsJCX0KPiArCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5n LT5sb2NrLCBmbGFncyk7Cj4gIAo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiBAQCAtMzE2LDYgKzMy MSwxMiBAQCBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gIAlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKmN1cl9yaW5nID0gZ3B1LT5mdW5jcy0+YWN0 aXZlX3JpbmcoZ3B1KTsKPiAgCWludCBpOwo+ICAKPiArCXN1Ym1pdCA9IGZpbmRfc3VibWl0KGN1 cl9yaW5nLCBjdXJfcmluZy0+bWVtcHRycy0+ZmVuY2UgKyAxKTsKPiArCXJldHVybiBtc21fc2No ZWRfZ3B1X3JlY292ZXJ5KGdwdSwgc3VibWl0KTsKPiArCj4gKwkvKgo+ICsJICogVGhlIHVudXNl ZCBjb2RlIGJlbG93IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIHN1YnNlcXVlbnQgcGF0Y2gKPiArCSAq LwoKV2h5IG5vdCBub3c/Cgo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAK PiAgCWRldl9lcnIoZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIHJlY292ZXIhXG4iLCBncHUtPm5h bWUpOwo+IEBAIC01OTEsMTEgKzYwMiwzNiBAQCBzdGF0aWMgdm9pZCByZXRpcmVfd29ya2VyKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+ICB9Cj4gIAo+IC0vKiBjYWxsIGZyb20gaXJxIGhhbmRsZXIgdG8gc2NoZWR1bGUgd29y ayB0byByZXRpcmUgYm8ncyAqLwo+ICtzdGF0aWMgdm9pZCBzaWduYWxfaHdfZmVuY2VzKHN0cnVj dCBtc21fcmluZ2J1ZmZlciAqcmluZykKPiArewo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAr CXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LCAqdG1wOwo+ICsKPiArCXNwaW5fbG9ja19p cnFzYXZlKCZyaW5nLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHN1Ym1pdCwgdG1wLCAmcmluZy0+c3VibWl0cywgbm9kZSkgewo+ICsJCWlmIChzdWJtaXQt PnNlcW5vID4gcmluZy0+bWVtcHRycy0+ZmVuY2UpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlsaXN0 X2RlbCgmc3VibWl0LT5ub2RlKTsKPiArCj4gKwkJZG1hX2ZlbmNlX3NpZ25hbChzdWJtaXQtPmh3 X2ZlbmNlKTsKPiArCX0KPiArCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5sb2Nr LCBmbGFncyk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIENhbGxlZCBmcm9tIHRoZSBJUlEgY29udGV4 dCB0byBzaWduYWwgaGFyZHdhcmUgZmVuY2VzIGZvciB0aGUgY29tcGxldGVkCj4gKyAqIHN1Ym1p dHMKPiArICovCj4gIHZvaWQgbXNtX2dwdV9yZXRpcmUoc3RydWN0IG1zbV9ncHUgKmdwdSkKPiAg ewo+IC0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGdwdS0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCXF1ZXVlX3dvcmsocHJpdi0+d3EsICZncHUtPnJldGlyZV93b3JrKTsKPiArCWludCBp Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBpKyspCj4gKwkJc2lnbmFs X2h3X2ZlbmNlcyhncHUtPnJiW2ldKTsKPiArCj4gIAl1cGRhdGVfc3dfY250cnMoZ3B1KTsKPiAg fQo+ICAKPiBAQCAtNjA2LDI1ICs2NDIsMjggQEAgc3RydWN0IGRtYV9mZW5jZSAqbXNtX2dwdV9z dWJtaXQoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZ3B1LT5kZXY7Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IHN1Ym1pdC0+ cmluZzsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAlpbnQgaTsKPiAgCj4gLQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gLQo+ICAJc3VibWl0LT5o d19mZW5jZSA9IG1zbV9mZW5jZV9hbGxvYyhyaW5nLT5mY3R4KTsKPiAgCWlmIChJU19FUlIoc3Vi bWl0LT5od19mZW5jZSkpCj4gIAkJcmV0dXJuIHN1Ym1pdC0+aHdfZmVuY2U7Cj4gIAo+IC0JcG1f cnVudGltZV9nZXRfc3luYygmZ3B1LT5wZGV2LT5kZXYpOwo+IC0KPiAtCW1zbV9ncHVfaHdfaW5p dChncHUpOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKPiArCWxp c3RfYWRkX3RhaWwoJnN1Ym1pdC0+bm9kZSwgJnJpbmctPnN1Ym1pdHMpOwo+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcmluZy0+bG9jaywgZmxhZ3MpOwo+ICAJc3VibWl0LT5zZXFubyA9ICsr cmluZy0+c2Vxbm87Cj4gIAo+IC0JbGlzdF9hZGRfdGFpbCgmc3VibWl0LT5ub2RlLCAmcmluZy0+ c3VibWl0cyk7Cj4gKwl1cGRhdGVfc3dfY250cnMoZ3B1KTsKCkknbSBub3Qgc3VyZSBpZiB0aGlz IG5lZWRzIHRoZSBoYXJkd2FyZSB0byBiZSB1cCAoaXQgZG9lcyBjaGVjayBtc21fZ3B1X2FjdGl2 ZSksCmJ1dCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCByZW9yZ2FuaXplIHRoZSBvcmRlciBvZiB0 aGVzZSBmdW5jdGlvbnMgdW5sZXNzIHdlCm5lZWQgdG8uCgo+IC0JbXNtX3JkX2R1bXBfc3VibWl0 KHByaXYtPnJkLCBzdWJtaXQsIE5VTEwpOwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+ICAKPiAtCXVwZGF0ZV9zd19jbnRycyhncHUpOwo+ICsJcG1fcnVudGltZV9nZXRfc3lu YygmZ3B1LT5wZGV2LT5kZXYpOwo+ICsKPiArCW1zbV9ncHVfaHdfaW5pdChncHUpOwo+ICsKPiAr CW1zbV9yZF9kdW1wX3N1Ym1pdChwcml2LT5yZCwgc3VibWl0LCBOVUxMKTsKPiAgCj4gIAlmb3Ig KGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgewo+ICAJCXN0cnVjdCBtc21fZ2VtX29i amVjdCAqbXNtX29iaiA9IHN1Ym1pdC0+Ym9zW2ldLm9iajsKPiBAQCAtNjM0LDE2ICs2NzMsMTMg QEAgc3RydWN0IGRtYV9mZW5jZSAqbXNtX2dwdV9zdWJtaXQoc3RydWN0IG1zbV9nZW1fc3VibWl0 ICpzdWJtaXQpCj4gIAkJICovCj4gIAkJV0FSTl9PTihpc19hY3RpdmUobXNtX29iaikgJiYgKG1z bV9vYmotPmdwdSAhPSBncHUpKTsKPiAgCj4gLQkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYg TVNNX1NVQk1JVF9CT19XUklURSkKPiAtCQkJbXNtX2dlbV9tb3ZlX3RvX2FjdGl2ZSgmbXNtX29i ai0+YmFzZSwgZ3B1LCB0cnVlLCBzdWJtaXQtPmh3X2ZlbmNlKTsKPiAtCQllbHNlIGlmIChzdWJt aXQtPmJvc1tpXS5mbGFncyAmIE1TTV9TVUJNSVRfQk9fUkVBRCkKPiAtCQkJbXNtX2dlbV9tb3Zl X3RvX2FjdGl2ZSgmbXNtX29iai0+YmFzZSwgZ3B1LCBmYWxzZSwgc3VibWl0LT5od19mZW5jZSk7 Cj4gKwkJbXNtX2dlbV9tb3ZlX3RvX2FjdGl2ZSgmbXNtX29iai0+YmFzZSwgZ3B1KTsKPiAgCX0K PiAgCj4gIAlncHUtPmZ1bmNzLT5zdWJtaXQoZ3B1LCBzdWJtaXQsIHN1Ym1pdC0+Y3R4KTsKPiAg CXByaXYtPmxhc3RjdHggPSBzdWJtaXQtPmN0eDsKPiAgCj4gLQloYW5nY2hlY2tfdGltZXJfcmVz ZXQoZ3B1KTsKPiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCXJl dHVybiBzdWJtaXQtPmh3X2ZlbmNlOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKPiBpbmRleCBk ZDU1OTc5Li4zYmQxOTIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dw dS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKPiBAQCAtMTczLDYgKzE3 Myw4IEBAIHN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlIHsKPiAgCWludCBmYXVsdHM7Cj4gIAlz dHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4gIAlzdHJ1Y3Qga3JlZiByZWY7Cj4gKwlzdHJ1Y3QgbXNt X2dwdSAqZ3B1Owo+ICsJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgc2NoZWRfZW50aXR5Owo+ICB9 Owo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkIGdwdV93cml0ZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1 LCB1MzIgcmVnLCB1MzIgZGF0YSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5jCj4g aW5kZXggMDg4OTc2Ni4uZWYyYmYxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVm ZmVyLmMKPiBAQCAtNTYsOSArNTYsMTQgQEAgc3RydWN0IG1zbV9yaW5nYnVmZmVyICptc21fcmlu Z2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwgaW50IGlkLAo+ICAKPiAgCXNucHJpbnRm KHJpbmctPm5hbWUsIHNpemVvZihyaW5nLT5uYW1lKSwgIm1zbS1ncHUtcmluZy0lZCIsIHJpbmct PmlkKTsKPiAgCj4gKwlpZiAobXNtX3NjaGVkX2luaXQoJnJpbmctPnNjaGVkLCByaW5nLT5uYW1l KSAhPSAwKSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIGZhaWw7Cj4gKwl9Cj4gIAly aW5nLT5mY3R4ID0gbXNtX2ZlbmNlX2NvbnRleHRfYWxsb2MoZ3B1LT5kZXYsIHJpbmctPm5hbWUp Owo+ICAKPiAgCWlkcl9pbml0KCZyaW5nLT5mZW5jZV9pZHIpOwo+ICsJbXV0ZXhfaW5pdCgmcmlu Zy0+ZmVuY2VfaWRyX2xvY2spOwo+ICAKPiAgCXJldHVybiByaW5nOwo+ICAKPiBAQCAtNzQsNiAr NzksNyBAQCB2b2lkIG1zbV9yaW5nYnVmZmVyX2Rlc3Ryb3koc3RydWN0IG1zbV9yaW5nYnVmZmVy ICpyaW5nKQo+ICAKPiAgCW1zbV9mZW5jZV9jb250ZXh0X2ZyZWUocmluZy0+ZmN0eCk7Cj4gIAo+ ICsJbXNtX3NjaGVkX2NsZWFudXAoJnJpbmctPnNjaGVkKTsKPiAgCWlmIChyaW5nLT5ibykgewo+ ICAJCW1zbV9nZW1fcHV0X2lvdmEocmluZy0+Ym8sIHJpbmctPmdwdS0+YXNwYWNlKTsKPiAgCQlt c21fZ2VtX3B1dF92YWRkcihyaW5nLT5ibyk7Cj4gQEAgLTgxLDYgKzg3LDcgQEAgdm9pZCBtc21f cmluZ2J1ZmZlcl9kZXN0cm95KHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykKPiAgCX0KPiAg Cj4gIAlpZHJfZGVzdHJveSgmcmluZy0+ZmVuY2VfaWRyKTsKPiArCW11dGV4X2Rlc3Ryb3koJnJp bmctPmZlbmNlX2lkcl9sb2NrKTsKPiAgCj4gIAlrZnJlZShyaW5nKTsKPiAgfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9yaW5nYnVmZmVyLmgKPiBpbmRleCA1MjMzNzNiLi4xMGFlNGE4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaAo+IEBAIC0xOSw2ICsxOSw3IEBACj4gICNk ZWZpbmUgX19NU01fUklOR0JVRkZFUl9IX18KPiAgCj4gICNpbmNsdWRlICJtc21fZHJ2LmgiCj4g KyNpbmNsdWRlICJtc21fc2NoZWQuaCIKPiAgCj4gICNkZWZpbmUgcmJtZW1wdHIocmluZywgbWVt YmVyKSAgXAo+ICAJKChyaW5nKS0+bWVtcHRyc19pb3ZhICsgb2Zmc2V0b2Yoc3RydWN0IG1zbV9y Ym1lbXB0cnMsIG1lbWJlcikpCj4gQEAgLTQyLDcgKzQzLDkgQEAgc3RydWN0IG1zbV9yaW5nYnVm ZmVyIHsKPiAgCXVpbnQ2NF90IG1lbXB0cnNfaW92YTsKPiAgCXN0cnVjdCBtc21fZmVuY2VfY29u dGV4dCAqZmN0eDsKPiAgCXN0cnVjdCBpZHIgZmVuY2VfaWRyOwo+ICsJc3RydWN0IG11dGV4IGZl bmNlX2lkcl9sb2NrOwo+ICAJc3BpbmxvY2tfdCBsb2NrOwo+ICsJc3RydWN0IGRybV9ncHVfc2No ZWR1bGVyIHNjaGVkOwo+ICB9Owo+ICAKPiAgc3RydWN0IG1zbV9yaW5nYnVmZmVyICptc21fcmlu Z2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwgaW50IGlkLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f c2NoZWQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOGI4MDVjZQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5jCj4g QEAgLTAsMCArMSwzMTMgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg Ki8KCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCgo+ICsvKiBDb3B5cmlnaHQg KGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqLwo+ ICsKPiArI2luY2x1ZGUgIm1zbV9ncHUuaCIKPiArI2luY2x1ZGUgIm1zbV9nZW0uaCIKPiArI2lu Y2x1ZGUgIm1zbV9zY2hlZC5oIgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3N0cmluZ19oZWxwZXJz Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4gKwo+ICtzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQgKnRvX21zbV9nZW1fc3VibWl0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2Ip Cj4gK3sKPiArCXJldHVybiBjb250YWluZXJfb2Yoc2NoZWRfam9iLCBzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQsIHNjaGVkX2pvYik7Cj4gK30KPiArCj4gKy8qCj4gKyAqIEdvIHRocm91Z2ggdGhlIGJv J3Mgb25lIGJ5IG9uZSBhbmQgcmV0dXJuIHRoZSBwcmV2aW91c2x5IHNhdmVkIHNoYXJlZCBhbmQK CmJvJ3MgLT4gYm9zCgo+ICsgKiBleGNsdXNpdmUgZmVuY2VzLiBJZiB0aGUgc2NoZWR1bGVyIGdl dHMgdGhlIGZlbmNlLCB0aGVuIGl0IHRha2VzIGNhcmUgb2YKPiArICogcmVsZWFzaW5nIHRoZSBy ZWZlcmVuY2Ugb24gdGhlIGZlbmNlLgo+ICsgKi8KPiArc3RhdGljIHN0cnVjdCBkbWFfZmVuY2Ug Km1zbV9zY2hlZF9kZXBlbmRlbmN5KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IsCj4g KwkJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKPiArewo+ICsJc3RydWN0IG1zbV9n ZW1fc3VibWl0ICpzdWJtaXQgPSB0b19tc21fZ2VtX3N1Ym1pdChzY2hlZF9qb2IpOwo+ICsJc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoc3VibWl0LT5pbl9m ZW5jZSkgewo+ICsJCWZlbmNlID0gc3VibWl0LT5pbl9mZW5jZTsKPiArCQlzdWJtaXQtPmluX2Zl bmNlID0gTlVMTDsKCj4gKwkJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQo+ICsJ CQlyZXR1cm4gZmVuY2U7Cj4gKwo+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJfQoKVGhl cmUgbWlnaHQgYmUgYSBjaGFuY2UgdG8gY29uc29saWRhdGUgc29tZSBjb2RlIGhlcmUKCnN0YXRp YyBzdHJ1Y3QgZG1hX2ZlbmNlICpfZ2V0X2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKiopCnsKCXN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gKmluOwoJKmluID0gTlVMTDsKCglpZiAoZmVuY2UgJiYg IWRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSkpCgkJcmV0dXJuIGZlbmNlOwoKCWRtYV9mZW5j ZV9wdXQoZmVuY2UpOwoJcmV0dXJuIE5VTEw7Cn0KCmZlbmNlID0gX2ZlbmNlKCZzdWJtaXQtPmlu X2ZlbmNlKTsKaWYgKGZlbmNlKQoJcmV0dXJuIGZlbmNlOwoKCj4gKwkvKiBSZXR1cm4gdGhlIHBy ZXZpb3VzbHkgc2F2ZWQgc2hhcmVkIGFuZCBleGNsdXNpdmUgZmVuY2VzIGlmIGFueSAqLwo+ICsJ Zm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+bnJfYm9zOyBpKyspIHsKPiArCQlpbnQgajsKPiArCj4g KwkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmV4Y2wpIHsKPiArCQkJZmVuY2UgPSBzdWJtaXQtPmJvc1tp XS5leGNsOwo+ICsJCQlzdWJtaXQtPmJvc1tpXS5leGNsID0gTlVMTDsKPiArCj4gKwkJCWlmICgh ZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKPiArCQkJCXJldHVybiBmZW5jZTsKPiArCj4g KwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJCX0KCmZlbmNlID0gX2dldF9mZW5jZSgmc3Vi bWl0LT5ib3NbaV0uZXhjbCk7CmlmIChmZW5jZSkKCXJldHVybiBmZW5jZTsKCj4gKwkJZm9yIChq ID0gMDsgaiA8IHN1Ym1pdC0+Ym9zW2ldLm5yX3NoYXJlZDsgaisrKSB7Cj4gKwkJCWlmICghc3Vi bWl0LT5ib3NbaV0uc2hhcmVkW2pdKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlmZW5jZSA9 IHN1Ym1pdC0+Ym9zW2ldLnNoYXJlZFtqXTsKPiArCQkJc3VibWl0LT5ib3NbaV0uc2hhcmVkW2pd ID0gTlVMTDsKPiArCj4gKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKPiAr CQkJCXJldHVybiBmZW5jZTsKPiArCj4gKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJCX0K CmZlbmNlID0gX2dldF9mZW5jZSgmc3VibWl0LT5ib3NbaV0uc2hhcmVkKTsKaWYgKGZlbmNlKQoJ cmV0dXJuIGZlbmNlOwoKPiArCj4gKwkJa2ZyZWUoc3VibWl0LT5ib3NbaV0uc2hhcmVkKTsKPiAr CQlzdWJtaXQtPmJvc1tpXS5ucl9zaGFyZWQgPSAwOwo+ICsJCXN1Ym1pdC0+Ym9zW2ldLnNoYXJl ZCA9IE5VTEw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KClRoaXMgaXMgYW4gaW50 ZXJlc3RpbmcgZnVuY3Rpb24gLSBpbiBvcmRlciB0byBhdm9pZCB3YXN0aW5nIGN5Y2xlcyBpdCBu ZWVkcyB0bwpiZSBvcmRlcmVkIHNvIHRoYXQgdGhlIG1vc3QgbGlrZWx5IGZlbmNlcyBoYXBwZW4g Zmlyc3QuICBJZiB0aGF0IGlzIHRoZSBjYXNlLCBJCnRoaW5rIHRoYXQgaW5fZmVuY2UgbWlnaHQg YmUgdGhlIGxlYXN0IGxpa2VseSBzbyB5b3Ugc2hvdWxkIGNoZWNrIGl0IGxhc3QuCgo+ICtzdGF0 aWMgc3RydWN0IGRtYV9mZW5jZSAqbXNtX3NjaGVkX3J1bl9qb2Ioc3RydWN0IGRybV9zY2hlZF9q b2IgKnNjaGVkX2pvYikKPiArewo+ICsJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQgPSB0 b19tc21fZ2VtX3N1Ym1pdChzY2hlZF9qb2IpOwo+ICsKPiArCXJldHVybiAhc2NoZWRfam9iLT5z X2ZlbmNlLT5maW5pc2hlZC5lcnJvciA/Cj4gKwkJbXNtX2dwdV9zdWJtaXQoc3VibWl0KSA6IE5V TEw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGR1bXBfYmFkX3N1Ym1pdChzdHJ1Y3QgbXNtX2dl bV9zdWJtaXQgKnN1Ym1pdCkKPiArewo+ICsJc3RydWN0IG1zbV9ncHUgKmdwdSA9IHN1Ym1pdC0+ Z3B1Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGdwdS0+ZGV2Owo+ICsJc3RydWN0IG1z bV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2s7Cj4gKwljaGFyIHRhc2tfbmFtZVszMl0gPSB7MH07Cj4gKwo+ICsJcmN1X3Jl YWRfbG9jaygpOwo+ICsJdGFzayA9IHBpZF90YXNrKHN1Ym1pdC0+cGlkLCBQSURUWVBFX1BJRCk7 Cj4gKwlpZiAodGFzaykgewo+ICsJCWNoYXIgKmNtZDsKPiArCj4gKwkJY21kID0ga3N0cmR1cF9x dW90YWJsZV9jbWRsaW5lKHRhc2ssIEdGUF9LRVJORUwpOwoKVGhpcyBzaG91bGQgYmUgR0ZQX0FU T01JQyBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgcmN1X3JlYWRfbG9jaygpLiBUaGVyZSBtaWdodCBi ZQpzb21ldGhpbmcgZWxzZSB3cm9uZyB3aXRoIGl0IHRvbyAtIEkga25vdyB3ZSBoYXZlIHRoaXMg cHJvYmxlbSBpbiB0aGUgY3VycmVudAprZXJuZWwgYW5kIEknbSBub3Qgc3VyZSBpZiBpdCBpcyBh dm9pZGFibGUgd2l0aG91dCBsb3NpbmcgdGhlIHRhc2sgbmFtZS4KCj4gKwkJZGV2X2VycigmZ3B1 LT5wZGV2LT5kZXYsICIlczogb2ZmZW5kaW5nIHRhc2s6ICVzICglcylcbiIsCj4gKwkJCQlncHUt Pm5hbWUsIHRhc2stPmNvbW0sIGNtZCk7Cj4gKwo+ICsJCXNucHJpbnRmKHRhc2tfbmFtZSwgc2l6 ZW9mKHRhc2tfbmFtZSksCj4gKwkJCQkib2ZmZW5kaW5nIHRhc2s6ICVzICglcykiLCB0YXNrLT5j b21tLCBjbWQpOwo+ICsKPiArCQlrZnJlZShjbWQpOwo+ICsJfQo+ICsJcmN1X3JlYWRfdW5sb2Nr KCk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZ3B1LT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltc21f cmRfZHVtcF9zdWJtaXQocHJpdi0+aGFuZ3JkLCBzdWJtaXQsIHRhc2tfbmFtZSk7Cj4gKwltdXRl eF91bmxvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICt9Cj4gKwo+ICt2b2lkIG1zbV9z Y2hlZF9ncHVfcmVjb3Zlcnkoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3Vi bWl0ICpzdWJtaXQpCj4gK3sKPiArCWludCBpOwo+ICsJc3RhdGljIGF0b21pY190IGdwdV9yZWNv dmVyeTsKPiArCj4gKwkvKiBDaGVjayBpZiBhIEdQVSByZWNvdmVyeSBpcyBhbHJlYWR5IGluIHBy b2dyZXNzICovCj4gKwlpZiAoIShhdG9taWNfY21weGNoZygmZ3B1X3JlY292ZXJ5LCAwLCAxKSA9 PSAwKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJLyoKPiArCSAqIFBhdXNlIHRoZSBzY2hlZHVsZXJz IHNvIHdlIGRvbid0IGdldCBuZXcgcmVxdWVzdHMgd2hpbGUgdGhlIHJlY292ZXJ5Cj4gKwkgKiBp cyBpbiBwcm9ncmVzcwo+ICsJICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9yaW5nczsg aSsrKQo+ICsJCWt0aHJlYWRfcGFyayhncHUtPnJiW2ldLT5zY2hlZC50aHJlYWQpOwo+ICsKPiAr CS8qCj4gKwkgKiBEaXNhYmxlIGludGVycnVwdHMgc28gd2UgZG9uJ3QgZ2V0IGludGVycnVwdGVk IHdoaWxlIHRoZSByZWNvdmVyeSBpcwo+ICsJICogaW4gcHJvZ3Jlc3MKPiArCSAqLwo+ICsJZGlz YWJsZV9pcnEoZ3B1LT5pcnEpOwo+ICsKPiArCWRldl9lcnIoJmdwdS0+cGRldi0+ZGV2LCAiJXM6 IGhhbmdjaGVjayByZWNvdmVyIVxuIiwgZ3B1LT5uYW1lKTsKCkkgZG9uJ3Qga25vdyBpZiB3ZSBz dGlsbCBuZWVkIHRoaXMgbGluZT8gUmVjb3Zlcnkgc2VlbXMgdG8gYmUgc3RhbmRhcmQgb3BlcmF0 aW5nCnByb2NlZHVyZSB0aGVzZSBkYXlzLgoKPiArCj4gKwlpZiAoc3VibWl0KQo+ICsJCWR1bXBf YmFkX3N1Ym1pdChzdWJtaXQpOwo+ICsKPiArCS8qCj4gKwkgKiBGb3IgZWFjaCByaW5nLCB3ZSBk byB0aGUgZm9sbG93aW5nCj4gKwkgKiBhKSBJbmZvcm0gdGhlIHNjaGVkdWxlciB0byBkcm9wIHRo ZSBoYXJkd2FyZSBmZW5jZSBmb3IgdGhlCj4gKwkgKiBzdWJtaXNzaW9ucyBvbiBpdHMgbWlycm9y IGxpc3QKPiArCSAqIGIpIFRoZSBzdWJtaXQoam9iKSBsaXN0IG9uIHRoZSByaW5nIGlzIG5vdCB1 c2VmdWwgYW55bW9yZQo+ICsJICogYXMgd2UgYXJlIGdvaW5nIGZvciBhIGdwdSByZXNldCwgc28g d2UgZW1wdHkgdGhlIHN1Ym1pdCBsaXN0Cj4gKwkgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBncHUt Pm5yX3JpbmdzOyBpKyspIHsKPiArCQlzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKmpvYiwgKnRtcDsK PiArCQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmlu ZyA9IGdwdS0+cmJbaV07Cj4gKwo+ICsJCS8qIGEpIFJlbGVhc2UgdGhlIGhhcmR3YXJlIGZlbmNl cyAqLwo+ICsJCWRybV9zY2hlZF9od19qb2JfcmVzZXQoJnJpbmctPnNjaGVkLAo+ICsJCQkJKHN1 Ym1pdCAmJiBzdWJtaXQtPnJpbmcgPT0gcmluZykgPwo+ICsJCQkJJnN1Ym1pdC0+c2NoZWRfam9i IDogTlVMTCk7Cj4gKwo+ICsJCS8qIGIpIEZyZWUgdXAgdGhlIHJpbmcgc3VibWl0IGxpc3QgKi8K PiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoam9iLCB0bXAsICZyaW5nLT5zdWJtaXRzLCBub2RlKQo+ICsJ CQlsaXN0X2RlbCgmam9iLT5ub2RlKTsKPiArCj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm cmluZy0+bG9jaywgZmxhZ3MpOwo+ICsJfQo+ICsKPiArCS8qIFBvd2VyIGN5Y2xlIGFuZCByZXNl dCB0aGUgR1BVIGJhY2sgdG8gaW5pdCBzdGF0ZSAqLwo+ICsJbXV0ZXhfbG9jaygmZ3B1LT5kZXYt PnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJcG1fcnVudGltZV9nZXRfc3luYygmZ3B1LT5wZGV2LT5k ZXYpOwo+ICsJZ3B1LT5mdW5jcy0+cmVjb3ZlcihncHUpOwo+ICsJcG1fcnVudGltZV9wdXRfc3lu YygmZ3B1LT5wZGV2LT5kZXYpOwo+ICsKPiArCW11dGV4X3VubG9jaygmZ3B1LT5kZXYtPnN0cnVj dF9tdXRleCk7Cj4gKwo+ICsJLyogUmUtZW5hYmxlIHRoZSBpbnRlcnJ1cHRzIG9uY2UgdGhlIGdw dSByZXNldCBpcyBjb21wbGV0ZSAqLwo+ICsJZW5hYmxlX2lycShncHUtPmlycSk7Cj4gKwo+ICsJ LyoKPiArCSAqIFRoZSBHUFUgaXMgaG9wZWZ1bGx5IGJhY2sgaW4gZ29vZCBzaGFwZSwgbm93IHJl cXVlc3QgdGhlIHNjaGVkdWxlcnMKPiArCSAqIHRvIHJlcGxheSBpdHMgbWlycm9yIGxpc3QsIHN0 YXJ0aW5nIHdpdGggdGhlIHNjaGVkdWxlciBvbiB0aGUgaGlnaGVzdAo+ICsJICogcHJpb3JpdHkg cmluZwo+ICsJICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9yaW5nczsgaSsrKSB7Cj4g KwkJZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgmZ3B1LT5yYltpXS0+c2NoZWQpOwo+ICsJCWt0aHJl YWRfdW5wYXJrKGdwdS0+cmJbaV0tPnNjaGVkLnRocmVhZCk7Cj4gKwl9Cj4gKwo+ICsJYXRvbWlj X3NldCgmZ3B1X3JlY292ZXJ5LCAwKTsKCkkgdGhpbmsgd2UgbmVlZCBhIHNtcF93bWIoKSBoZXJl IHRvIG1ha2Ugc3VyZSBldmVyeWJvZHkgZWxzZSBzZWVzIHRoZSB1cGRhdGUuCgo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBtc21fc2NoZWRfdGltZWRvdXRfam9iKHN0cnVjdCBkcm1fc2NoZWRfam9i ICpiYWRfam9iKQo+ICt7Cj4gKwlzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCA9IHRvX21z bV9nZW1fc3VibWl0KGJhZF9qb2IpOwo+ICsJc3RydWN0IG1zbV9ncHUgKmdwdSA9IHN1Ym1pdC0+ Z3B1Owo+ICsJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gc3VibWl0LT5yaW5nOwo+ICsK PiArCS8qCj4gKwkgKiBJZiB0aGlzIHN1Ym1pc3Npb24gY29tcGxldGVkIGluIHRoZSBtZWFuIHRp bWUsIHRoZW4gdGhlIHRpbWVvdXQgaXMKPiArCSAqIHNwdXJpb3VzCj4gKwkgKi8KPiArCWlmIChz dWJtaXQtPnNlcW5vIDw9IHN1Ym1pdC0+cmluZy0+bWVtcHRycy0+ZmVuY2UpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWRldl9lcnIoJmdwdS0+cGRldi0+ZGV2LCAiJXM6IGhhbmdjaGVjayBkZXRlY3Rl ZCBncHUgbG9ja3VwIHJiICVkIVxuIiwKPiArCQkJZ3B1LT5uYW1lLCByaW5nLT5pZCk7Cj4gKwlk ZXZfZXJyKCZncHUtPnBkZXYtPmRldiwgIiVzOiAgICAgY29tcGxldGVkIGZlbmNlOiAldVxuIiwK PiArCQkJZ3B1LT5uYW1lLCByaW5nLT5tZW1wdHJzLT5mZW5jZSk7Cj4gKwlkZXZfZXJyKCZncHUt PnBkZXYtPmRldiwgIiVzOiAgICAgc3VibWl0dGVkIGZlbmNlOiAldVxuIiwKPiArCQkJZ3B1LT5u YW1lLCByaW5nLT5zZXFubyk7Cj4gKwo+ICsJbXNtX3NjaGVkX2dwdV9yZWNvdmVyeShncHUsIHN1 Ym1pdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1zbV9zY2hlZF9mcmVlX2pvYihzdHJ1Y3Qg ZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQo+ICt7Cj4gKwlzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQg KnN1Ym1pdCA9IHRvX21zbV9nZW1fc3VibWl0KHNjaGVkX2pvYik7Cj4gKwlzdHJ1Y3QgbXNtX2dw dSAqZ3B1ID0gc3VibWl0LT5ncHU7Cj4gKwlpbnQgaTsKPiArCj4gKwltdXRleF9sb2NrKCZncHUt PmRldi0+c3RydWN0X211dGV4KTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9i b3M7IGkrKykgewo+ICsJCXN0cnVjdCBtc21fZ2VtX29iamVjdCAqbXNtX29iaiA9IHN1Ym1pdC0+ Ym9zW2ldLm9iajsKPiArCj4gKwkJbXNtX2dlbV9tb3ZlX3RvX2luYWN0aXZlKCZtc21fb2JqLT5i YXNlKTsKPiArCX0KPiArCj4gKwltdXRleF91bmxvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+ICsKPiArCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koJmdwdS0+cGRldi0+ZGV2KTsKPiAr CXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKCZncHUtPnBkZXYtPmRldik7Cj4gKwo+ICsJbXNt X2dlbV9zdWJtaXRfZnJlZShzdWJtaXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9zY2hlZF9iYWNrZW5kX29wcyBtc21fc2NoZWRfb3BzID0gewo+ICsJLmRlcGVuZGVuY3kg PSBtc21fc2NoZWRfZGVwZW5kZW5jeSwKPiArCS5ydW5fam9iID0gbXNtX3NjaGVkX3J1bl9qb2Is Cj4gKwkudGltZWRvdXRfam9iID0gbXNtX3NjaGVkX3RpbWVkb3V0X2pvYiwKPiArCS5mcmVlX2pv YiA9IG1zbV9zY2hlZF9mcmVlX2pvYiwKPiArfTsKPiArCj4gK2ludCBtc21fc2NoZWRfam9iX2lu aXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKPiArewo+ICsJaW50IHJldDsKPiAr CXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0ID0gdG9fbXNtX2dlbV9zdWJtaXQoc2NoZWRf am9iKTsKPiArCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IHN1Ym1pdC0+cmluZzsKPiAr Cj4gKwlyZXQgPSBkcm1fc2NoZWRfam9iX2luaXQoc2NoZWRfam9iLCAmcmluZy0+c2NoZWQsCj4g KwkJCSZzdWJtaXQtPnF1ZXVlLT5zY2hlZF9lbnRpdHksIHN1Ym1pdC0+Y3R4KTsKPiArCWlmIChy ZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlzdWJtaXQtPm91dF9mZW5jZSA9IGRtYV9mZW5j ZV9nZXQoJnN1Ym1pdC0+c2NoZWRfam9iLnNfZmVuY2UtPmZpbmlzaGVkKTsKPiArCj4gKwltdXRl eF9sb2NrKCZyaW5nLT5mZW5jZV9pZHJfbG9jayk7Cj4gKwlzdWJtaXQtPm91dF9mZW5jZV9pZCA9 IGlkcl9hbGxvY19jeWNsaWMoJnJpbmctPmZlbmNlX2lkciwKPiArCQkJCQkJc3VibWl0LT5vdXRf ZmVuY2UsIDAsIElOVF9NQVgsCj4gKwkJCQkJCUdGUF9LRVJORUwpOwo+ICsJbXV0ZXhfdW5sb2Nr KCZyaW5nLT5mZW5jZV9pZHJfbG9jayk7Cj4gKwo+ICsJaWYgKHN1Ym1pdC0+b3V0X2ZlbmNlX2lk IDwgMCkgewo+ICsJCS8qCj4gKwkJICogVE9ETzogVGhlIHNjaGVkdWxlcidzIGZpbmlzaGVkIGZl bmNlIGxlYWtzIGhlcmUgc2luY2UgdGhlCj4gKwkJICogam9iIHdpbGwgbm90IGJlIHB1c2hlZCB0 byB0aGUgcXVldWUuIE5lZWQgdG8gdXBkYXRlIHNjaGVkdWxlcgo+ICsJCSAqIHRvIGZpeCB0aGlz IGNsZWFubHkoPykKPiArCQkgKi8KCkhvdyB3b3VsZCB5b3UgcHJvcG9zZSB0byBmaXggdGhpcz8K Cj4gKwkJZG1hX2ZlbmNlX3B1dChzdWJtaXQtPm91dF9mZW5jZSk7Cj4gKwkJc3VibWl0LT5vdXRf ZmVuY2UgPSBOVUxMOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICt2b2lkIG1zbV9zY2hlZF9wdXNoX2pvYihzdHJ1Y3QgbXNtX2dlbV9zdWJt aXQgKnN1Ym1pdCkKPiArewo+ICsJcmV0dXJuIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoJnN1 Ym1pdC0+c2NoZWRfam9iLAo+ICsJCQkmc3VibWl0LT5xdWV1ZS0+c2NoZWRfZW50aXR5KTsKPiAr fQo+ICsKPiAraW50IG1zbV9zY2hlZF9pbml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2No ZWQsIGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKCgo+ICsJcmV0dXJuIGRybV9zY2hlZF9pbml0KHNj aGVkLCAmbXNtX3NjaGVkX29wcywgNCwgMCwKPiArCQkJbXNlY3NfdG9famlmZmllcyg1MDApLCBu YW1lKTsKCk9rYXksIEkgc2VlIHdoZXJlIHRoZSByaW5nLT5uYW1lIGNvbWVzIGluLiAgSSBkb24n dCBsaWtlIGl0IGJ1dCBhdCBsZWFzdCBpdAppcyBhIHJlbGF0aXZlbHkgbG93IGNvc3Qgb3B0aW9u IGlmIHlvdSBzaGFyZSB3aGVuIHRoZSBmZW5jZSBuYW1lcy4gIFN0aWxsLi4uCnNpZ2guCgo+ICt9 Cj4gKwo+ICt2b2lkIG1zbV9zY2hlZF9jbGVhbnVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQpCj4gK3sKPiArCWRybV9zY2hlZF9maW5pKHNjaGVkKTsKPiArfQoKSSBkb24ndCB0aGlu ayB0aGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCAtIEkgdGhpbmsgd2UncmUgc21hcnQgZW5vdWdoIHRv IGNhbGwKZHJtX3NjaGVkX2ZpbmkgZGlyZWN0bHkuCgo+ICsvKgo+ICsgKiBDcmVhdGUgYSBuZXcg ZW50aXR5IG9uIHRoZSBzY2hlZHVsZXJzIG5vcm1hbCBwcmlvcml0eSBydW5xdWV1ZS4gRm9yIG5v dyB3ZQo+ICsgKiBjaG9vc2UgdG8gYWx3YXlzIHVzZSB0aGUgbm9ybWFsIHJ1biBxdWV1ZSBwcmlv cml0eSwgYnV0IGluIGZ1dHVyZSBpdHMKPiArICogcG9zc2libGUgd2l0aCBzb21lIGV4dGVuc2lv biB0byB0aGUgbXNtIGRybSBpbnRlcmZhY2UsIHRvIGNyZWF0ZSB0aGUKPiArICogc3VibWl0cXVl dWUoZW50aXRpZXMpIG9mIGRpZmZlcmVudCBwcmlvcml0aWVzIG9uIHRoZSBzYW1lIHJpbmcsIHRo ZXJlYnkKPiArICogYWxsb3dpbmcgdG8gcHJpb3J0aXplIGFuZCBzY2hlZHVsZSBzdWJtaXRxdWV1 ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIHJpbmcKPiArICovCj4gK2ludCBtc21fc2NoZWRfZW50 aXR5X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwKPiArCQlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0 eSAqc2NoZWRfZW50aXR5LCBpbnQgcHJpbykKPiArewo+ICsJc3RydWN0IGRybV9ncHVfc2NoZWR1 bGVyICpzY2hlZCA9ICZncHUtPnJiW3ByaW9dLT5zY2hlZDsKPiArCj4gKwlyZXR1cm4gZHJtX3Nj aGVkX2VudGl0eV9pbml0KHNjaGVkLCBzY2hlZF9lbnRpdHksCj4gKwkJCSZzY2hlZC0+c2NoZWRf cnFbRFJNX1NDSEVEX1BSSU9SSVRZX05PUk1BTF0sIE5VTEwpOwo+ICt9Cj4gKwo+ICt2b2lkIG1z bV9zY2hlZF9lbnRpdHlfY2xlYW51cChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LAo+ICsJCXN0cnVjdCBk cm1fc2NoZWRfZW50aXR5ICpzY2hlZF9lbnRpdHksIGludCBwcmlvKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkID0gJmdwdS0+cmJbcHJpb10tPnNjaGVkOwo+ICsKPiAr CWRybV9zY2hlZF9lbnRpdHlfZmluaShzY2hlZCwgc2NoZWRfZW50aXR5KTsKPiArfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5oIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fc2NoZWQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u NmFiMjcyOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9z Y2hlZC5oCj4gQEAgLTAsMCArMSwxOCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCAqLwoKLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKCj4gKy8qIENv cHlyaWdodCAoYykgMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuICovCj4gKwo+ICsjaWZuZGVmIF9fTVNNX1NDSEVEX0hfXwo+ICsjZGVmaW5lIF9fTVNNX1ND SEVEX0hfXwo+ICsKPiArI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVyLmg+Cj4gKwo+ICtpbnQg bXNtX3NjaGVkX2luaXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgY29uc3QgY2hh ciAqbmFtZSk7Cj4gK3ZvaWQgbXNtX3NjaGVkX2NsZWFudXAoc3RydWN0IGRybV9ncHVfc2NoZWR1 bGVyICpzY2hlZCk7Cj4gK2ludCBtc21fc2NoZWRfZW50aXR5X2luaXQoc3RydWN0IG1zbV9ncHUg KmdwdSwgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKnF1ZXVlLAo+ICsJCWludCBwcmlvKTsKPiAr dm9pZCBtc21fc2NoZWRfZW50aXR5X2NsZWFudXAoc3RydWN0IG1zbV9ncHUgKmdwdSwKPiArCQlz dHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqcXVldWUsIGludCBwcmlvKTsKPiAraW50IG1zbV9zY2hl ZF9qb2JfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKTsKPiArdm9pZCBtc21f c2NoZWRfcHVzaF9qb2Ioc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpOwo+ICt2b2lkIG1z bV9zY2hlZF9ncHVfcmVjb3Zlcnkoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1f c3VibWl0ICpzdWJtaXQpOwo+ICsjZW5kaWYgLyogX19NU01fU0NIRURfSF9fICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVlLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCj4gaW5kZXggMzI1ZGE0NC4uYjZlYjEzZSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3VibWl0cXVldWUuYwo+IEBAIC0xOSw2ICsxOSw3IEBA IHZvaWQgbXNtX3N1Ym1pdHF1ZXVlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCj4gIAlzdHJ1 Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAqcXVldWUgPSBjb250YWluZXJfb2Yoa3JlZiwKPiAgCQlz dHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSwgcmVmKTsKPiAgCj4gKwltc21fc2NoZWRfZW50aXR5 X2NsZWFudXAocXVldWUtPmdwdSwgJnF1ZXVlLT5zY2hlZF9lbnRpdHksIHF1ZXVlLT5wcmlvKTsK PiAgCWtmcmVlKHF1ZXVlKTsKPiAgfQo+ICAKPiBAQCAtNjUsNiArNjYsNyBAQCBpbnQgbXNtX3N1 Ym1pdHF1ZXVlX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2ZpbGVf cHJpdmF0ZSAqY3R4LAo+ICB7Cj4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZHJt LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZTsKPiAr CXN0cnVjdCBtc21fZ3B1ICpncHUgPSBwcml2LT5ncHU7Cj4gIAo+ICAJaWYgKCFjdHgpCj4gIAkJ cmV0dXJuIC1FTk9ERVY7Cj4gQEAgLTc3LDEzICs3OSwxNiBAQCBpbnQgbXNtX3N1Ym1pdHF1ZXVl X2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAq Y3R4LAo+ICAJa3JlZl9pbml0KCZxdWV1ZS0+cmVmKTsKPiAgCXF1ZXVlLT5mbGFncyA9IGZsYWdz Owo+ICAKPiAtCWlmIChwcml2LT5ncHUpIHsKPiAtCQlpZiAocHJpbyA+PSBwcml2LT5ncHUtPm5y X3JpbmdzKSB7Cj4gLQkJCWtmcmVlKHF1ZXVlKTsKPiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQkJ fQo+ICsJaWYgKGdwdSkgewo+ICsJCWlmIChwcmlvID49IGdwdS0+bnJfcmluZ3MpCj4gKwkJCWdv dG8gZmFpbDsKPiArCj4gKwkJaWYgKG1zbV9zY2hlZF9lbnRpdHlfaW5pdChwcml2LT5ncHUsICZx dWV1ZS0+c2NoZWRfZW50aXR5LAo+ICsJCQkJCXByaW8pKQo+ICsJCQlnb3RvIGZhaWw7Cj4gIAo+ ICAJCXF1ZXVlLT5wcmlvID0gcHJpbzsKPiArCQlxdWV1ZS0+Z3B1ID0gZ3B1Owo+ICAJfQo+ICAK PiAgCXdyaXRlX2xvY2soJmN0eC0+cXVldWVsb2NrKTsKPiBAQCAtOTgsNiArMTAzLDkgQEAgaW50 IG1zbV9zdWJtaXRxdWV1ZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IG1z bV9maWxlX3ByaXZhdGUgKmN0eCwKPiAgCXdyaXRlX3VubG9jaygmY3R4LT5xdWV1ZWxvY2spOwo+ ICAKPiAgCXJldHVybiAwOwo+ICtmYWlsOgo+ICsJa2ZyZWUocXVldWUpOwo+ICsJcmV0dXJuIC1F SU5WQUw7Cj4gIH0KPiAgCj4gIGludCBtc21fc3VibWl0cXVldWVfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4KQo+IC0tIAo+IDEuOS4xCj4g CgotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9m IENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9q ZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVk cmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=