From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 34/42] drm/i915: get rid of crtc->config in intel_display.c, part 1 Date: Tue, 12 May 2015 19:01:58 +0200 Message-ID: <20150512170158.GN15256@phenom.ffwll.local> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-35-git-send-email-maarten.lankhorst@linux.intel.com> <20150512101136.GP15256@phenom.ffwll.local> <55520AA2.1090308@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f45.google.com (mail-wg0-f45.google.com [74.125.82.45]) by gabe.freedesktop.org (Postfix) with ESMTP id CEFC76E1A6 for ; Tue, 12 May 2015 09:59:38 -0700 (PDT) Received: by wgin8 with SMTP id n8so17095233wgi.0 for ; Tue, 12 May 2015 09:59:38 -0700 (PDT) Content-Disposition: inline In-Reply-To: <55520AA2.1090308@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXkgMTIsIDIwMTUgYXQgMDQ6MTM6NTRQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTItMDUtMTUgb20gMTI6MTEgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+ ID4gT24gTW9uLCBNYXkgMTEsIDIwMTUgYXQgMDQ6MjU6MTBQTSArMDIwMCwgTWFhcnRlbiBMYW5r aG9yc3Qgd3JvdGU6Cj4gPj4gUmVtb3ZlZCBzb21lIG9jY3VyZW5jZXMsIHJvdWdobHkgYmFzZWQg b24gd2hlcmUgdGhlIGVycm9ycyBvZgo+ID4+IHJlbW92aW5nIGNydGMtPmNvbmZpZyBvY2N1cmVk LiBCZWNhdXNlIGl0J3MgdXNlZCBhIGxvdCBpbiB0aGlzCj4gPj4gZmlsZSB0aGUgY2hhbmdlcyBh cmUgZG9uZSBpbiBwYXNzZXMuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyMDUgKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgICA0ICstCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAg ICB8ICAgMiArLQo+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAxMDYg ZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g Pj4gaW5kZXggMDA0MDY3YmQwYjZjLi5mYjJlY2I2NWFhYWEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gQEAgLTExNDEsMjkgKzExNDEsMjAgQEAgc3Rh dGljIHZvaWQgYXNzZXJ0X2RzaV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBib29sIHN0YXRlKQo+ID4+ICAjZGVmaW5lIGFzc2VydF9kc2lfcGxsX2VuYWJsZWQoZCkgYXNz ZXJ0X2RzaV9wbGwoZCwgdHJ1ZSkKPiA+PiAgI2RlZmluZSBhc3NlcnRfZHNpX3BsbF9kaXNhYmxl ZChkKSBhc3NlcnRfZHNpX3BsbChkLCBmYWxzZSkKPiA+PiAgCj4gPj4gLXN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqCj4gPj4gLWludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gPj4gLXsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAtCj4gPj4gLQlpZiAoY3J0 Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA8IDApCj4gPj4gLQkJcmV0dXJuIE5VTEw7Cj4gPj4gLQo+ ID4+IC0JcmV0dXJuICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2NydGMtPmNvbmZpZy0+c2hhcmVk X2RwbGxdOwo+ID4+IC19Cj4gPj4gLQo+ID4+ICAvKiBGb3IgSUxLKyAqLwo+ID4+ICB2b2lkIGFz c2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4g LQkJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsLAo+ID4+ICsJCQllbnVtIGludGVsX2Rw bGxfaWQgc2hhcmVkX2RwbGwsCj4gPj4gIAkJCWJvb2wgc3RhdGUpCj4gPj4gIHsKPiA+PiAtCWJv b2wgY3VyX3N0YXRlOwo+ID4+ICAJc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgaHdfc3RhdGU7 Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiA+PiArCWJvb2wgY3VyX3N0 YXRlOwo+ID4+ICAKPiA+PiAtCWlmIChXQVJOICghcGxsLAo+ID4+ICsJaWYgKFdBUk4oc2hhcmVk X2RwbGwgPCAwLAo+ID4+ICAJCSAgImFzc2VydGluZyBEUExMICVzIHdpdGggbm8gRFBMTFxuIiwg c3RhdGVfc3RyaW5nKHN0YXRlKSkpCj4gPj4gIAkJcmV0dXJuOwo+ID4+ICAKPiA+PiArCXBsbCA9 ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsKPiA+PiAgCWN1cl9zdGF0ZSA9 IHBsbC0+Z2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsICZod19zdGF0ZSk7Cj4gPj4gIAlJOTE1 X1NUQVRFX1dBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAo+ID4+ICAJICAgICAiJXMgYXNzZXJ0aW9u IGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKPiA+PiBAQCAtMTY5MSw3ICsx NjgyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGkKPiA+PiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gIAlpbnQgcmVnID0gRFBMTChjcnRjLT5w aXBlKTsKPiA+PiAtCXUzMiBkcGxsID0gY3J0Yy0+Y29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGw7 Cj4gPj4gKwl1MzIgZHBsbCA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGw7Cj4gPiBM b3RzIG9mIHlvdXIgcGF0Y2hlcyBhcmUgc3ByaW5rbGVkIHdpdGggdW5yZWxhdGVkIGNydGMtPmNv bmZpZyAtPgo+ID4gcGlwZV9jb25maWcgY29udmVyc2lvbnMuIE9yIGp1c3QgcGxhaW4gcm9sbGlu ZyBvdXQgb2YgYSBsb2NhbCB2YXJpYWJsZQo+ID4gaW5zdGVhZCBvZiBhY2Nlc3Npbmcgc29tZSBv dGhlciBwb2ludGVyLiBUaGF0IG1ha2VzIGl0IGZhaXJseSBoYXJkIHRvCj4gPiByZXZpZXcgdGhl bSBmb3IgYSBnaXZlbiB0b3BpYyAobGlrZSBzaGFyZWQgZHBsbCBoZXJlKSBzaW5jZSBpdCdzIG5l dmVyCj4gPiBjbGVhciB3aGV0aGVyIGl0IHJlYWxseSBpbmNsdWRlcyBldmVyeXRoaW5nLCBhbmQg d2hhdCdzIHRoZSByZWFzb24gZm9yIGFsbAo+ID4gdGhlIG90aGVyIGh1bmtzLgo+ID4KPiA+PiAg Cj4gPj4gIAlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90 cmFuc2NvZGVyLCBjcnRjLT5waXBlKTsKPiA+PiAgCj4gPj4gQEAgLTE3MjEsNyArMTcxMiw3IEBA IHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpCj4gPj4gIAo+ID4+ICAJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDQpIHsKPiA+PiAgCQlJOTE1X1dSSVRFKERQTExfTUQoY3J0Yy0+cGlwZSksCj4g Pj4gLQkJCSAgIGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21kKTsKPiA+PiArCQkJ ICAgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4gPj4gIAl9IGVsc2Ugewo+ ID4+ICAJCS8qIFRoZSBwaXhlbCBtdWx0aXBsaWVyIGNhbiBvbmx5IGJlIHVwZGF0ZWQgb25jZSB0 aGUKPiA+PiAgCQkgKiBEUExMIGlzIGVuYWJsZWQgYW5kIHRoZSBjbG9ja3MgYXJlIHN0YWJsZS4K PiA+PiBAQCAtMTg1OSwyMCArMTg1MCwxOSBAQCB2b2lkIHZsdl93YWl0X3BvcnRfcmVhZHkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ICAJCSAgICAgcG9ydF9uYW1lKGRw b3J0LT5wb3J0KSwgSTkxNV9SRUFEKGRwbGxfcmVnKSAmIHBvcnRfbWFzaywgZXhwZWN0ZWRfbWFz ayk7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gLXN0YXRpYyB2b2lkIGludGVsX3ByZXBhcmVfc2hhcmVk X2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPj4gK3N0YXRpYyB2b2lkIGludGVsX3By ZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ ICsJCQkJICAgICAgZW51bSBpbnRlbF9kcGxsX2lkIHNoYXJlZF9kcGxsKQo+ID4+ICB7Cj4gPj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gPj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+IC0Jc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNy dGMpOwo+ID4+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSAmZGV2X3ByaXYtPnNo YXJlZF9kcGxsc1tzaGFyZWRfZHBsbF07Cj4gPiBXaHkgY2hhbmdlIGFueXRoaW5nIGhlcmU/IFRo aXMgaXMgY2FsbGVkIGZyb20gZW5hYmxlIGhvb2tzLCBzbyBjYW4ga2VlcCBvbgo+ID4gYWNjZXNz aW5nIGludGVsX2NydGMtPnN0YXRlIC4uLiBvciBub3Q/Cj4gSSBnb3QgcmlkIG9mIGludGVsX2Ny dGNfdG9fc2hhcmVkX2RwbGwsIGJlY2F1c2UgaXQgb25seSByZXF1aXJlZAo+IHBpcGVfY29uZmln LT5zaGFyZWRfZHBsbCBJIGZlbHQgaXQgY291bGQgYmUgcGFzc2VkIGFzIGFyZ3VtZW50IGluc3Rl YWQuCgpZZWFoIHRoYXQgbWFrZXMgc2Vuc2Ugd2hlcmUgd2UgbmVlZCB0byBwYXNzIGluIHRoZSBy aWdodCBwaXBlX2NvbmZpZy4gQnV0CmluIHRoZSBfZW5hYmxlIGZ1bmN0aW9ucyBqdXN0IHVzaW5n IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpIGlzCm9rLCBhbmQganVzdCBkb2luZyB0 aGF0IHdvdWxkIGN1dCBkb3duIG9uIHRoZSBvdmVyYWxsIGRpZmYuIFNhbWUgaWRlYSBhcwpub3Qg cGFzc2luZyBwaXBlX2NvbmZpZyBhcm91bmQgZXhwbGljaXRseSBmb3Igb3RoZXIgZnVuY3Rpb25z IG9ubHkgY2FsbGVkCmZyb20gX2VuYWJsZSBob29rcyAoYW5kIG90aGVyIHBsYWNlcyB3aGVyZSBj cnRjLT5zdGF0ZSBpcyB0aGUgcmlnaHQKc3RhdGUpLgoKSSdtIG9rIHdpdGggb3Blbi1jb2Rpbmcg dGhlIGRwbGwgbG9va3VwIGluIGNvbXB1dGUvZGlzYWJsZS9nZXRfY29uZmlnIGZ1bmN0aW9ucy4K Cj4gCj4gPj4gIAo+ID4+IC0JaWYgKFdBUk5fT04ocGxsID09IE5VTEwpKQo+ID4+ICsJaWYgKFdB Uk5fT04oc2hhcmVkX2RwbGwgPCAwKSkKPiA+PiAgCQlyZXR1cm47Cj4gPj4gIAo+ID4+ICAJV0FS Tl9PTighcGxsLT5jb25maWcuY3J0Y19tYXNrKTsKPiA+PiAgCWlmIChwbGwtPmFjdGl2ZSA9PSAw KSB7Cj4gPj4gIAkJRFJNX0RFQlVHX0RSSVZFUigic2V0dGluZyB1cCAlc1xuIiwgcGxsLT5uYW1l KTsKPiA+PiAgCQlXQVJOX09OKHBsbC0+b24pOwo+ID4+IC0JCWFzc2VydF9zaGFyZWRfZHBsbF9k aXNhYmxlZChkZXZfcHJpdiwgcGxsKTsKPiA+PiArCQlhc3NlcnRfc2hhcmVkX2RwbGxfZGlzYWJs ZWQoZGV2X3ByaXYsIHNoYXJlZF9kcGxsKTsKPiA+PiAgCj4gPj4gIAkJcGxsLT5tb2RlX3NldChk ZXZfcHJpdiwgcGxsKTsKPiA+PiAgCX0KPiA+PiBAQCAtMTg4NiwyNSArMTg3NiwyMyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQo+ID4+ICAgKiBUaGUgUENIIFBMTCBuZWVkcyB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgUENI IHRyYW5zY29kZXIsIHNpbmNlIGl0Cj4gPj4gICAqIGRyaXZlcyB0aGUgdHJhbnNjb2RlciBjbG9j ay4KPiA+PiAgICovCj4gPj4gLXN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+PiArc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3No YXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiArCQkJCSAg ICAgZW51bSBpbnRlbF9kcGxsX2lkIHNoYXJlZF9kcGxsKQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+IC0Jc3RydWN0IGludGVs X3NoYXJlZF9kcGxsICpwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpOwo+ID4+ ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tzaGFyZWRfZHBsbF07Cj4gPj4gIAo+ID4+IC0JaWYgKFdBUk5fT04ocGxsID09IE5VTEwpKQo+ ID4+ICsJaWYgKFdBUk5fT04oc2hhcmVkX2RwbGwgPCAwKSkKPiA+PiAgCQlyZXR1cm47Cj4gPj4g IAo+ID4+ICAJaWYgKFdBUk5fT04ocGxsLT5jb25maWcuY3J0Y19tYXNrID09IDApKQo+ID4+ICAJ CXJldHVybjsKPiA+PiAgCj4gPj4gLQlEUk1fREVCVUdfS01TKCJlbmFibGUgJXMgKGFjdGl2ZSAl ZCwgb24/ICVkKSBmb3IgY3J0YyAlZFxuIiwKPiA+PiAtCQkgICAgICBwbGwtPm5hbWUsIHBsbC0+ YWN0aXZlLCBwbGwtPm9uLAo+ID4+IC0JCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCk7Cj4gPj4g KwlEUk1fREVCVUdfS01TKCJlbmFibGUgJXMgKGFjdGl2ZSAlZCwgb24/ICVkKVxuIiwKPiA+PiAr CQkgICAgICBwbGwtPm5hbWUsIHBsbC0+YWN0aXZlLCBwbGwtPm9uKTsKPiA+PiAgCj4gPj4gIAlp ZiAocGxsLT5hY3RpdmUrKykgewo+ID4+ICAJCVdBUk5fT04oIXBsbC0+b24pOwo+ID4+IC0JCWFz c2VydF9zaGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBwbGwpOwo+ID4+ICsJCWFzc2VydF9z aGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBzaGFyZWRfZHBsbCk7Cj4gPj4gIAkJcmV0dXJu Owo+ID4+ICAJfQo+ID4+ICAJV0FSTl9PTihwbGwtPm9uKTsKPiA+PiBAQCAtMTkxNiwzMCArMTkw NCwyOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gPj4gIAlwbGwtPm9uID0gdHJ1ZTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAt c3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiA+PiArc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gKwkJCQkgICAgICBlbnVtIGludGVsX2Rw bGxfaWQgc2hhcmVkX2RwbGwpCj4gPj4gIHsKPiA+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bCA9IGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0Yyk7Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsK PiA+PiArCj4gPj4gKwlpZiAoc2hhcmVkX2RwbGwgPCAwKQo+ID4+ICsJCXJldHVybjsKPiA+PiAg Cj4gPj4gIAkvKiBQQ0ggb25seSBhdmFpbGFibGUgb24gSUxLKyAqLwo+ID4+IC0JQlVHX09OKElO VEVMX0lORk8oZGV2KS0+Z2VuIDwgNSk7Cj4gPj4gLQlpZiAoV0FSTl9PTihwbGwgPT0gTlVMTCkp Cj4gPj4gLQkgICAgICAgcmV0dXJuOwo+ID4+ICsJQlVHX09OKGRldl9wcml2LT5pbmZvLmdlbiA8 IDUpOwo+ID4+ICAKPiA+PiAgCWlmIChXQVJOX09OKHBsbC0+Y29uZmlnLmNydGNfbWFzayA9PSAw KSkKPiA+PiAgCQlyZXR1cm47Cj4gPj4gIAo+ID4+IC0JRFJNX0RFQlVHX0tNUygiZGlzYWJsZSAl cyAoYWN0aXZlICVkLCBvbj8gJWQpIGZvciBjcnRjICVkXG4iLAo+ID4+IC0JCSAgICAgIHBsbC0+ bmFtZSwgcGxsLT5hY3RpdmUsIHBsbC0+b24sCj4gPj4gLQkJICAgICAgY3J0Yy0+YmFzZS5iYXNl LmlkKTsKPiA+PiArCURSTV9ERUJVR19LTVMoImRpc2FibGUgJXMgKGFjdGl2ZSAlZCwgb24/ICVk KVxuIiwKPiA+PiArCQkgICAgICBwbGwtPm5hbWUsIHBsbC0+YWN0aXZlLCBwbGwtPm9uKTsKPiA+ PiAgCj4gPj4gIAlpZiAoV0FSTl9PTihwbGwtPmFjdGl2ZSA9PSAwKSkgewo+ID4+IC0JCWFzc2Vy dF9zaGFyZWRfZHBsbF9kaXNhYmxlZChkZXZfcHJpdiwgcGxsKTsKPiA+PiArCQlhc3NlcnRfc2hh cmVkX2RwbGxfZGlzYWJsZWQoZGV2X3ByaXYsIHNoYXJlZF9kcGxsKTsKPiA+PiAgCQlyZXR1cm47 Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+IC0JYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3By aXYsIHBsbCk7Cj4gPj4gKwlhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkZXZfcHJpdiwgc2hh cmVkX2RwbGwpOwo+ID4+ICAJV0FSTl9PTighcGxsLT5vbik7Cj4gPj4gIAlpZiAoLS1wbGwtPmFj dGl2ZSkKPiA+PiAgCQlyZXR1cm47Cj4gPj4gQEAgLTE5NjQsOCArMTk1MSw3IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPj4gIAlCVUdfT04oIUhBU19QQ0hfU1BMSVQoZGV2KSk7Cj4gPj4gIAo+ ID4+ICAJLyogTWFrZSBzdXJlIFBDSCBEUExMIGlzIGVuYWJsZWQgKi8KPiA+PiAtCWFzc2VydF9z aGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LAo+ID4+IC0JCQkJICAgaW50ZWxfY3J0Y190b19z aGFyZWRfZHBsbChpbnRlbF9jcnRjKSk7Cj4gPj4gKwlhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxl ZChkZXZfcHJpdiwgcGlwZV9jb25maWctPnNoYXJlZF9kcGxsKTsKPiA+PiAgCj4gPj4gIAkvKiBG REkgbXVzdCBiZSBmZWVkaW5nIHVzIGJpdHMgZm9yIFBDSCBwb3J0cyAqLwo+ID4+ICAJYXNzZXJ0 X2ZkaV90eF9lbmFibGVkKGRldl9wcml2LCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIsIHBp cGUpOwo+ID4+IEBAIC0yMTI2LDcgKzIxMTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVf cGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+PiAgCQllbHNlCj4gPj4gIAkJCWFzc2Vy dF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gPj4gIAllbHNlIHsKPiA+PiAtCQlpZiAo Y3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiA+PiArCQlpZiAocGlwZV9jb25maWct Pmhhc19wY2hfZW5jb2Rlcikgewo+ID4+ICAJCQkvKiBpZiBkcml2aW5nIHRoZSBQQ0gsIHdlIG5l ZWQgRkRJIGVuYWJsZWQgKi8KPiA+PiAgCQkJYXNzZXJ0X2ZkaV9yeF9wbGxfZW5hYmxlZChkZXZf cHJpdiwgcGNoX3RyYW5zY29kZXIpOwo+ID4+ICAJCQlhc3NlcnRfZmRpX3R4X3BsbF9lbmFibGVk KGRldl9wcml2LAo+ID4+IEBAIC0yNjIyLDYgKzI2MDgsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+PiAgCWJvb2wgdmlz aWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnktPnN0YXRlKS0+dmlzaWJsZTsKPiA+ PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPj4gIAlpbnQgcGxhbmUgPSBp bnRlbF9jcnRjLT5wbGFuZTsKPiA+PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZyA9Cj4gPj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPj4gIAl1 bnNpZ25lZCBsb25nIGxpbmVhcl9vZmZzZXQ7Cj4gPj4gIAl1MzIgZHNwY250cjsKPiA+PiAgCXUz MiByZWcgPSBEU1BDTlRSKHBsYW5lKTsKPiA+PiBAQCAtMjY1NSwxMyArMjY0MywxMyBAQCBzdGF0 aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiA+PiAgCQkgKiB3aGljaCBzaG91bGQgYWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNp emUuCj4gPj4gIAkJICovCj4gPj4gIAkJSTkxNV9XUklURShEU1BTSVpFKHBsYW5lKSwKPiA+PiAt CQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8PCAxNikgfAo+ID4+ IC0JCQkgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkpOwo+ID4+ICsJCQkg ICAoKHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiA+PiArCQkJICAgKHBp cGVfY29uZmlnLT5waXBlX3NyY193IC0gMSkpOwo+ID4+ICAJCUk5MTVfV1JJVEUoRFNQUE9TKHBs YW5lKSwgMCk7Cj4gPj4gIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2KSAmJiBwbGFuZSA9 PSBQTEFORV9CKSB7Cj4gPj4gIAkJSTkxNV9XUklURShQUklNU0laRShwbGFuZSksCj4gPj4gLQkJ CSAgICgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiA+PiAt CQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPiA+PiArCQkJICAg KChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gPj4gKwkJCSAgIChwaXBl X2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPiA+PiAgCQlJOTE1X1dSSVRFKFBSSU1QT1MocGxh bmUpLCAwKTsKPiA+PiAgCQlJOTE1X1dSSVRFKFBSSU1DTlNUQUxQSEEocGxhbmUpLCAwKTsKPiA+ PiAgCX0KPiA+PiBAQCAtMjcxOSwxNCArMjcwNywxNCBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+PiAgCWlmIChjcnRjLT5w cmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4+ICAJ CWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4gPj4gIAo+ID4+IC0JCXggKz0gKGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+ID4+IC0JCXkgKz0gKGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwo+ID4+ICsJCXggKz0gKHBpcGVfY29uZmlnLT5w aXBlX3NyY193IC0gMSk7Cj4gPj4gKwkJeSArPSAocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAx KTsKPiA+PiAgCj4gPj4gIAkJLyogRmluZGluZyB0aGUgbGFzdCBwaXhlbCBvZiB0aGUgbGFzdCBs aW5lIG9mIHRoZSBkaXNwbGF5Cj4gPj4gIAkJZGF0YSBhbmQgYWRkaW5nIHRvIGxpbmVhcl9vZmZz ZXQqLwo+ID4+ICAJCWxpbmVhcl9vZmZzZXQgKz0KPiA+PiAtCQkJKGludGVsX2NydGMtPmNvbmZp Zy0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwo+ID4+IC0JCQkoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ID4+ICsJCQkocGlwZV9j b25maWctPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPiA+PiArCQkJKHBpcGVf Y29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ID4gVW5yZWxhdGVkIGNoYW5n ZXMgYWJvdmUsIG9yIGRvIEkgbWlzcyBzb21ldGhpbmc/Cj4gV2hhdCdzIHVucmVsYXRlZD8gQnV0 IHllYWggSSBtb3N0bHkgc3BsaXQgaXQgdXAgYnkgZml4aW5nIHRoaW5ncyB1cAo+IHVudGlsIGl0 IHN0YXJ0ZWQgY29tcGlsaW5nIGFnYWluLiBJIHNob3VsZCBzcGxpdCB0aGUgZGlzcGxheSBzdHVm ZiB1cAo+IGZ1cnRoZXIuCgppOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lIGRvZXNuJ3QgaGF2ZSBh bnkgc2hhcmVkIGRwbGwgY29kZSwgd2hpY2ggbWVhbnMKdGhpcyBzL2NydGMtPmNvbmZpZy9waXBl X2NvbmZpZyByZXBsYWNlbWVudCBzaG91bGQgcHJvYmFibHkgYmUgaW4gYQpkaWZmZXJlbnQgcGF0 Y2guCgo+ID4+ICAJfQo+ID4+ICAKPiA+PiAgCUk5MTVfV1JJVEUocmVnLCBkc3BjbnRyKTsKPiA+ PiBAQCAtMjgxOCwxNyArMjgwNiwyMCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4gIAkJCQkJICAgICAgIGZiLT5w aXRjaGVzWzBdKTsKPiA+PiAgCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9v ZmZzZXQ7Cj4gPj4gIAlpZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChE Uk1fUk9UQVRFXzE4MCkpIHsKPiA+PiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcgPQo+ID4+ICsJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+PiAr Cj4gPj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4MDsKPiA+PiAgCj4gPj4gIAkJ aWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKSB7Cj4gPj4gLQkJCXgg Kz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+ID4+IC0JCQl5ICs9IChp bnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKTsKPiA+PiArCQkJeCArPSAocGlwZV9j b25maWctPnBpcGVfc3JjX3cgLSAxKTsKPiA+PiArCQkJeSArPSAocGlwZV9jb25maWctPnBpcGVf c3JjX2ggLSAxKTsKPiA+PiAgCj4gPj4gIAkJCS8qIEZpbmRpbmcgdGhlIGxhc3QgcGl4ZWwgb2Yg dGhlIGxhc3QgbGluZSBvZiB0aGUgZGlzcGxheQo+ID4+ICAJCQlkYXRhIGFuZCBhZGRpbmcgdG8g bGluZWFyX29mZnNldCovCj4gPj4gIAkJCWxpbmVhcl9vZmZzZXQgKz0KPiA+PiAtCQkJCShpbnRl bF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPiA+PiAt CQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7Cj4g Pj4gKwkJCQkocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsK PiA+PiArCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKPiA+ PiAgCQl9Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+IEBAIC0yOTAxLDEyICsyODkyLDEzIEBAIHZvaWQg c2tsX2RldGFjaF9zY2FsZXJzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ID4+ICAJ c3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3RhdGU7Cj4gPj4gIAlpbnQg aTsKPiA+PiAgCj4gPj4gLQlpZiAoIWludGVsX2NydGMgfHwgIWludGVsX2NydGMtPmNvbmZpZykK PiA+PiArCWlmICghaW50ZWxfY3J0YykKPiA+PiAgCQlyZXR1cm47Cj4gPj4gIAo+ID4+ICAJZGV2 ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7Cj4gPj4gIAlkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gPj4gLQlzY2FsZXJfc3RhdGUgPSAmaW50ZWxfY3J0Yy0+Y29uZmlnLT5zY2FsZXJfc3Rh dGU7Cj4gPj4gKwlzY2FsZXJfc3RhdGUgPQo+ID4+ICsJCSZ0b19pbnRlbF9jcnRjX3N0YXRlKGlu dGVsX2NydGMtPmJhc2Uuc3RhdGUpLT5zY2FsZXJfc3RhdGU7Cj4gPj4gIAo+ID4+ICAJLyogbG9v cCB0aHJvdWdoIGFuZCBkaXNhYmxlIHNjYWxlcnMgdGhhdCBhcmVuJ3QgaW4gdXNlICovCj4gPj4g IAlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+bnVtX3NjYWxlcnM7IGkrKykgewo+ID4+IEBA IC0zMjk4LDYgKzMyOTAsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9zaXplKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2Owo+ID4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlOwo+ID4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln ID0KPiA+PiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ID4+ICAK PiA+PiAgCWlmICghaTkxNS5mYXN0Ym9vdCkKPiA+PiAgCQlyZXR1cm47Cj4gPj4gQEAgLTMzMTYs MjAgKzMzMTAsMjAgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVfc2l6ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKPiA+PiAgCSAqIHRoZW4gdXBkYXRlIHRoZSBwaXBlc3JjIGFuZCBw Zml0IHN0YXRlLCBldmVuIG9uIHRoZSBmbGlwIHBhdGguCj4gPj4gIAkgKi8KPiA+PiAgCj4gPj4g LQlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4+ ICsJYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4+ ICAKPiA+PiAgCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5waXBlKSwKPiA+PiAgCQkgICAoKGFk anVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgLSAxKSA8PCAxNikgfAo+ID4+ICAJCSAgIChhZGp1 c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IC0gMSkpOwo+ID4+IC0JaWYgKCFjcnRjLT5jb25maWct PnBjaF9wZml0LmVuYWJsZWQgJiYKPiA+PiArCWlmICghcGlwZV9jb25maWctPnBjaF9wZml0LmVu YWJsZWQgJiYKPiA+PiAgCSAgICAoaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRFTF9PVVRQ VVRfTFZEUykgfHwKPiA+PiAgCSAgICAgaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRFTF9P VVRQVVRfRURQKSkpIHsKPiA+PiAgCQlJOTE1X1dSSVRFKFBGX0NUTChjcnRjLT5waXBlKSwgMCk7 Cj4gPj4gIAkJSTkxNV9XUklURShQRl9XSU5fUE9TKGNydGMtPnBpcGUpLCAwKTsKPiA+PiAgCQlJ OTE1X1dSSVRFKFBGX1dJTl9TWihjcnRjLT5waXBlKSwgMCk7Cj4gPj4gIAl9Cj4gPj4gLQljcnRj LT5jb25maWctPnBpcGVfc3JjX3cgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ID4+ IC0JY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxh eTsKPiA+PiArCXBpcGVfY29uZmlnLT5waXBlX3NyY193ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o ZGlzcGxheTsKPiA+PiArCXBpcGVfY29uZmlnLT5waXBlX3NyY19oID0gYWRqdXN0ZWRfbW9kZS0+ Y3J0Y192ZGlzcGxheTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAgc3RhdGljIHZvaWQgaW50ZWxfZmRp X25vcm1hbF90cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4gQEAgLTMzNzksNiArMzM3 Myw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiA+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ID4+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp Owo+ID4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPiA+PiArCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+PiAgCWludCBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiA+PiAgCXUzMiByZWcsIHRlbXAsIHRyaWVzOwo+ID4+ICAKPiA+PiBAQCAt MzM5Niw3ICszMzkyLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX2xpbmtfdHJhaW4oc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ID4+ICAJcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiA+PiAg CXRlbXAgPSBJOTE1X1JFQUQocmVnKTsKPiA+PiAgCXRlbXAgJj0gfkZESV9EUF9QT1JUX1dJRFRI X01BU0s7Cj4gPj4gLQl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZp Zy0+ZmRpX2xhbmVzKTsKPiA+PiArCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgocGlwZV9jb25m aWctPmZkaV9sYW5lcyk7Cj4gPj4gIAl0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+ID4+ ICAJdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzE7Cj4gPj4gIAlJOTE1X1dSSVRFKHJl ZywgdGVtcCB8IEZESV9UWF9FTkFCTEUpOwo+ID4+IEBAIC0zNDc2LDYgKzM0NzIsOCBAQCBzdGF0 aWMgdm9pZCBnZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+PiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+ICAJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4+ICsJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPiA+PiArCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKTsKPiA+PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ PiAgCXUzMiByZWcsIHRlbXAsIGksIHJldHJ5Owo+ID4+ICAKPiA+PiBAQCAtMzQ5NCw3ICszNDky LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gPj4gIAlyZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ID4+ICAJdGVtcCA9IEk5MTVfUkVB RChyZWcpOwo+ID4+ICAJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiA+PiAtCXRl bXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbGFuZXMpOwo+ ID4+ICsJdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsK PiA+PiAgCXRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gPj4gIAl0ZW1wIHw9IEZESV9M SU5LX1RSQUlOX1BBVFRFUk5fMTsKPiA+PiAgCXRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9F TVBfTUFTSzsKPiA+PiBAQCAtMzYwOCw2ICszNjA2LDggQEAgc3RhdGljIHZvaWQgaXZiX21hbnVh bF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiArCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4gPj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7Cj4gPj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPj4gIAl1MzIgcmVn LCB0ZW1wLCBpLCBqOwo+ID4+ICAKPiA+PiBAQCAtMzY0NSw3ICszNjQ1LDcgQEAgc3RhdGljIHZv aWQgaXZiX21hbnVhbF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4g IAkJcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiA+PiAgCQl0ZW1wID0gSTkxNV9SRUFEKHJlZyk7 Cj4gPj4gIAkJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiA+PiAtCQl0ZW1wIHw9 IEZESV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzKTsKPiA+PiAr CQl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMpOwo+ID4+ ICAJCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xX0lWQjsKPiA+PiAgCQl0ZW1wICY9 IH5GRElfTElOS19UUkFJTl9WT0xfRU1QX01BU0s7Cj4gPj4gIAkJdGVtcCB8PSBzbmJfYl9mZGlf dHJhaW5fcGFyYW1bai8yXTsKPiA+PiBAQCAtMzkxNCwxMSArMzkxNCwxMCBAQCB2b2lkIGludGVs X2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4g IH0KPiA+PiAgCj4gPj4gIC8qIFByb2dyYW0gaUNMS0lQIGNsb2NrIHRvIHRoZSBkZXNpcmVkIGZy ZXF1ZW5jeSAqLwo+ID4+IC1zdGF0aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ID4+ICtzdGF0aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ICsJCQkgICAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAtCWludCBjbG9jayA9IHRvX2ludGVsX2NydGMo Y3J0YyktPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gPj4gKwlpbnQg Y2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gPj4g IAl1MzIgZGl2c2VsLCBwaGFzZWluYywgYXV4ZGl2LCBwaGFzZWRpciA9IDA7Cj4gPj4gIAl1MzIg dGVtcDsKPiA+PiAgCj4gPj4gQEAgLTQwMDIsMTMgKzQwMDEsMTAgQEAgc3RhdGljIHZvaWQgbHB0 X3Byb2dyYW1faWNsa2lwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+PiAgCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmRwaW9fbG9jayk7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gLXN0YXRpYyB2b2lk IGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ID4+ICtzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5n cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gKwkJCQkJCWVudW0gdHJh bnNjb2RlciBjcHVfdHJhbnNjb2RlciwKPiA+PiAgCQkJCQkJZW51bSBwaXBlIHBjaF90cmFuc2Nv ZGVyKQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ID4+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Yy0+Y29u ZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiA+PiAtCj4gPj4gIAlJOTE1X1dSSVRFKFBDSF9UUkFOU19I VE9UQUwocGNoX3RyYW5zY29kZXIpLAo+ID4+ICAJCSAgIEk5MTVfUkVBRChIVE9UQUwoY3B1X3Ry YW5zY29kZXIpKSk7Cj4gPj4gIAlJOTE1X1dSSVRFKFBDSF9UUkFOU19IQkxBTksocGNoX3RyYW5z Y29kZXIpLAo+ID4+IEBAIC00MDI2LDcgKzQwMjIsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9w Y2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+PiAg CQkgICBJOTE1X1JFQUQoVlNZTkNTSElGVChjcHVfdHJhbnNjb2RlcikpKTsKPiA+PiAgfQo+ID4+ ICAKPiA+PiAtc3RhdGljIHZvaWQgY3B0X3NldF9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpCj4gPj4gK3N0YXRpYyB2b2lkIGNwdF9zZXRfZmRp X2JjX2JpZnVyY2F0aW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gKwkJCQkgICAgICAg Ym9vbCBlbmFibGUpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gIAl1aW50MzJfdCB0ZW1wOwo+ID4+IEBAIC00 MDQ3LDE1ICs0MDQ0LDE1IEBAIHN0YXRpYyB2b2lkIGNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0aW9u KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKQo+ID4+ICAJUE9TVElOR19SRUFE KFNPVVRIX0NISUNLRU4xKTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAtc3RhdGljIHZvaWQgaXZ5YnJp ZGdlX3VwZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMpCj4gPj4gK3N0YXRpYyB2b2lkIGl2eWJyaWRnZV91cGRhdGVfZmRpX2JjX2JpZnVyY2F0aW9u KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gKwkJCQkJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCj4gPj4gKwkJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln KQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+YmFz ZS5kZXY7Cj4gPj4gLQo+ID4+ICAJc3dpdGNoIChpbnRlbF9jcnRjLT5waXBlKSB7Cj4gPj4gIAlj YXNlIFBJUEVfQToKPiA+PiAgCQlicmVhazsKPiA+PiAgCWNhc2UgUElQRV9COgo+ID4+IC0JCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyA+IDIpCj4gPj4gKwkJaWYgKHBpcGVfY29u ZmlnLT5mZGlfbGFuZXMgPiAyKQo+ID4+ICAJCQljcHRfc2V0X2ZkaV9iY19iaWZ1cmNhdGlvbihk ZXYsIGZhbHNlKTsKPiA+PiAgCQllbHNlCj4gPj4gIAkJCWNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0 aW9uKGRldiwgdHJ1ZSk7Cj4gPj4gQEAgLTQwNzgsNyArNDA3NSw4IEBAIHN0YXRpYyB2b2lkIGl2 eWJyaWRnZV91cGRhdGVfZmRpX2JjX2JpZnVyY2F0aW9uKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjKQo+ID4+ICAgKiAgIC0gRFAgdHJhbnNjb2RpbmcgYml0cwo+ID4+ICAgKiAgIC0gdHJh bnNjb2Rlcgo+ID4+ICAgKi8KPiA+PiAtc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZykKPiA+PiArc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gPj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4g Pj4gIHsKPiA+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+ IEBAIC00MDg5LDcgKzQwODcsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKgo+ID4+ICAJYXNz ZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsKPiA+PiAgCj4gPj4g IAlpZiAoSVNfSVZZQlJJREdFKGRldikpCj4gPj4gLQkJaXZ5YnJpZGdlX3VwZGF0ZV9mZGlfYmNf YmlmdXJjYXRpb24oaW50ZWxfY3J0Yyk7Cj4gPj4gKwkJaXZ5YnJpZGdlX3VwZGF0ZV9mZGlfYmNf YmlmdXJjYXRpb24oZGV2LCBpbnRlbF9jcnRjLAo+ID4+ICsJCQkJCQkgICAgcGlwZV9jb25maWcp Owo+ID4+ICAKPiA+PiAgCS8qIFdyaXRlIHRoZSBUVSBzaXplIGJpdHMgYmVmb3JlIGZkaSBsaW5r IHRyYWluaW5nLCBzbyB0aGF0IGVycm9yCj4gPj4gIAkgKiBkZXRlY3Rpb24gd29ya3MuICovCj4g Pj4gQEAgLTQxMjEsMTEgKzQxMjAsMTIgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJs ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKPiA+PiAg CSAqIE5vdGUgdGhhdCBlbmFibGVfc2hhcmVkX2RwbGwgdHJpZXMgdG8gZG8gdGhlIHJpZ2h0IHRo aW5nLCBidXQKPiA+PiAgCSAqIGdldF9zaGFyZWRfZHBsbCB1bmNvbmRpdGlvbmFsbHkgcmVzZXRz IHRoZSBwbGwgLSB3ZSBuZWVkIHRoYXQgdG8gaGF2ZQo+ID4+ICAJICogdGhlIHJpZ2h0IExWRFMg ZW5hYmxlIHNlcXVlbmNlLiAqLwo+ID4+IC0JaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGludGVs X2NydGMpOwo+ID4+ICsJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2LCBwaXBlX2Nv bmZpZy0+c2hhcmVkX2RwbGwpOwo+ID4+ICAKPiA+PiAgCS8qIHNldCB0cmFuc2NvZGVyIHRpbWlu ZywgcGFuZWwgbXVzdCBhbGxvdyBpdCAqLwo+ID4+ICAJYXNzZXJ0X3BhbmVsX3VubG9ja2VkKGRl dl9wcml2LCBwaXBlKTsKPiA+PiAtCWlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdz KGludGVsX2NydGMsIHBpcGUpOwo+ID4+ICsJaXJvbmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3Rp bWluZ3MoZGV2X3ByaXYsCj4gPj4gKwkJCQkJICAgIHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2Rl ciwgcGlwZSk7Cj4gPj4gIAo+ID4+ICAJaW50ZWxfZmRpX25vcm1hbF90cmFpbihjcnRjKTsKPiA+ PiAgCj4gPj4gQEAgLTQxNjYsMTkgKzQxNjYsMTcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNo X2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoK PiA+PiAgCWlyb25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSwgcGlw ZV9jb25maWcpOwo+ID4+ICB9Cj4gPj4gIAo+ID4+IC1zdGF0aWMgdm9pZCBscHRfcGNoX2VuYWJs ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4gK3N0YXRpYyB2b2lkIGxwdF9wY2hfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+PiArCQkJICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiAtCWVudW0gdHJhbnNjb2RlciBjcHVf dHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gPj4gKwll bnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29k ZXI7Cj4gPj4gIAo+ID4+ICAJYXNzZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVkKGRldl9wcml2 LCBUUkFOU0NPREVSX0EpOwo+ID4+ICAKPiA+PiAtCWxwdF9wcm9ncmFtX2ljbGtpcChjcnRjKTsK PiA+PiArCWxwdF9wcm9ncmFtX2ljbGtpcChkZXZfcHJpdiwgcGlwZV9jb25maWcpOwo+ID4+ICAK PiA+PiAgCS8qIFNldCB0cmFuc2NvZGVyIHRpbWluZy4gKi8KPiA+PiAtCWlyb25sYWtlX3BjaF90 cmFuc2NvZGVyX3NldF90aW1pbmdzKGludGVsX2NydGMsIFBJUEVfQSk7Cj4gPj4gKwlpcm9ubGFr ZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5ncyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIFBJ UEVfQSk7Cj4gPj4gIAo+ID4+ICAJbHB0X2VuYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwg Y3B1X3RyYW5zY29kZXIpOwo+ID4+ICB9Cj4gPj4gQEAgLTQ3ODEsNyArNDc3OSw4IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+PiAg CXBpcGVfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPj4gIAo+ ID4+ICAJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gPj4gLQkJaW50ZWxfcHJl cGFyZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiA+PiArCQlpbnRlbF9wcmVwYXJlX3NoYXJl ZF9kcGxsKGRldl9wcml2LAo+ID4+ICsJCQkJCSAgcGlwZV9jb25maWctPnNoYXJlZF9kcGxsKTsK PiA+PiAgCj4gPj4gIAlpZiAocGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKQo+ID4+ICAJCWlu dGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwo+ID4+IEBAIC00ODU0LDggKzQ4NTMs OCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiA+PiAgCVdBUk5fT04oIWNydGMtPnN0YXRlLT5lbmFibGUpOwo+ID4+ICAKPiA+PiAgCXBp cGVfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPj4gLQlpZiAo aW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKPiA+PiAtCQlpbnRlbF9lbmFi bGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7Cj4gPj4gKwlpZiAocGlwZV9jb25maWctPnNoYXJl ZF9kcGxsID49IDApCj4gPj4gKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2LCBw aXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpOwo+ID4+ICAKPiA+PiAgCWlmIChwaXBlX2NvbmZpZy0+ aGFzX2RwX2VuY29kZXIpCj4gPj4gIAkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9O MSk7Cj4gPj4gQEAgLTQ5MTAsNyArNDkwOSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4+ICAJaW50ZWxfZW5hYmxlX3BpcGUoaW50 ZWxfY3J0Yyk7Cj4gPj4gIAo+ID4+ICAJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9l bmNvZGVyKQo+ID4+IC0JCWxwdF9wY2hfZW5hYmxlKGNydGMpOwo+ID4+ICsJCWxwdF9wY2hfZW5h YmxlKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cj4gPj4gIAo+ID4+ICAJaWYgKGludGVsX2NydGMt PmNvbmZpZy0+ZHBfZW5jb2Rlcl9pc19tc3QpCj4gPj4gIAkJaW50ZWxfZGRpX3NldF92Y19wYXls b2FkX2FsbG9jKGNydGMsCj4gPj4gQEAgLTExOTI5LDcgKzExOTI4LDggQEAgY2hlY2tfc2hhcmVk X2RwbGxfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiAgCQkgICAgIHBsbC0+b24s IGFjdGl2ZSk7Cj4gPj4gIAo+ID4+ICAJCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7 Cj4gPj4gLQkJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgJiYgaW50ZWxfY3J0Y190b19z aGFyZWRfZHBsbChjcnRjKSA9PSBwbGwpCj4gPj4gKwkJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5h Y3RpdmUgJiYKPiA+PiArCQkJICAgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0 ZSktPnNoYXJlZF9kcGxsID09IGkpCj4gPj4gIAkJCQlhY3RpdmVfY3J0Y3MrKzsKPiA+PiAgCQl9 Cj4gPj4gIAkJSTkxNV9TVEFURV9XQVJOKHBsbC0+YWN0aXZlICE9IGFjdGl2ZV9jcnRjcywKPiA+ PiBAQCAtMTIzMTEsNyArMTIzMTEsNiBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4+ICAJX19pbnRlbF9zZXRfbW9kZV91cGRh dGVfcGxhbmVzKGRldiwgc3RhdGUpOwo+ID4+ICAKPiA+PiAgCWZvcl9lYWNoX2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gPj4gLQkJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4+ICAJCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZzsKPiA+PiAgCj4gPj4gIAkJaWYgKCFuZWVkc19t b2Rlc2V0KGNydGMtPnN0YXRlKSkKPiA+PiBAQCAtMTIzMjQsOCArMTIzMjMsNyBAQCBzdGF0aWMg aW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4+ ICAJCWludGVsX2NydGNfZHBtc19vdmVybGF5X2Rpc2FibGUodG9faW50ZWxfY3J0YyhjcnRjKSk7 Cj4gPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKGNydGMsIHBpcGVfY29uZmln KTsKPiA+PiAgCj4gPj4gLQkJaWYgKGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoaW50ZWxfY3J0 YykpCj4gPj4gLQkJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7Cj4gPj4g KwkJaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChkZXZfcHJpdiwgcGlwZV9jb25maWctPnNoYXJl ZF9kcGxsKTsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gIAkvKiBPbmx5IGFmdGVyIGRpc2FibGluZyBh bGwgb3V0cHV0IHBpcGVsaW5lcyB0aGF0IHdpbGwgYmUgY2hhbmdlZCBjYW4gd2UKPiA+PiBAQCAt MTI3MTksNyArMTI3MTcsOSBAQCBzdGF0aWMgdm9pZCBpYnhfcGNoX2RwbGxfZGlzYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPj4gIAo+ID4+ICAJLyogTWFrZSBzdXJl IG5vIHRyYW5zY29kZXIgaXNuJ3Qgc3RpbGwgZGVwZW5kaW5nIG9uIHVzLiAqLwo+ID4+ICAJZm9y X2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiA+PiAtCQlpZiAoaW50ZWxfY3J0Y190b19z aGFyZWRfZHBsbChjcnRjKSA9PSBwbGwpCj4gPj4gKwkJaW50IGkgPSBwbGwgLSBkZXZfcHJpdi0+ c2hhcmVkX2RwbGxzOwo+ID4+ICsKPiA+PiArCQlpZiAodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5iYXNlLnN0YXRlKS0+c2hhcmVkX2RwbGwgPT0gaSkKPiA+PiAgCQkJYXNzZXJ0X3BjaF90cmFu c2NvZGVyX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5waXBlKTsKPiA+PiAgCX0KPiA+IFRoaXMg aXMgY2FsbGVkIHdpdGggdGhlIHdpdGggdGhlIG5ldyBjb25maWcgYWxyZWFkeSBwdXQgaW4gcGxh Y2UsIGJ1dCBpdAo+ID4gc2hvdWxkIGNoZWNrIHdoZXRoZXIgYW55IG9mIHRoZSBfb2xkXyBwaXBl IGNvbmZpZ3MgdGhhdCB1c2VkIHRoZSBkcGxsIGFyZQo+ID4gcmVhbGx5IGFsbCBzaHV0IGRvd24u IFRoaXMgd29uJ3QgbWlzZmlyZSBzaW5jZSBpZiB3ZSBzaHV0IGl0IGRvd24gdG8gdXNlCj4gPiBp dCBpbiBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gdGhlbiB0aG9zZSBwaXBlcyBzaG91bGQgYmUg b2ZjIG9mZiB0b28uCj4gPiBPdG9oIHdlIGRvIGNoZWNrIGJlZm9yZSBlbmFibGluZyB0aGUgcGlw ZSB0aGF0IHRoZSBkcGxsIGlzIHJ1bm5pbmcsIGhlbmNlCj4gPiBJIHRoaW5rIHRoaXMgaXMgcmVk dW5kYW50IGFuZCBtYXliZSB3ZSBjb3VsZCByZW1vdmUKPiA+IGl0IHJpZ2h0IGF3YXk/Cj4gUmVt b3Zpbmcgc291bmRzIGZpbmUuCgpJZiB5b3UgZG8sIHNlcGFyYXRlIHBhdGNoIHBsZWFzZS4gWWVz IEknbSBhc2tpbmcgdGhhdCBhIGxvdCwgYnV0IEknbSBhbHNvCnN1cGVyLXNjYXJlZCBvZiBhbGwg dGhlc2UgY2hhbmdlcyBoZXJlIDstKQotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=