From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 03/19] drm/i915: Allocate a drm_atomic_state for the legacy modeset code Date: Fri, 20 Mar 2015 09:00:21 +0200 Message-ID: <1426834821.2316.30.camel@gmail.com> References: <1426240142-24538-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1426240142-24538-4-git-send-email-ander.conselvan.de.oliveira@intel.com> <76A9B330A4D78C4D99CB292C4CC06C0E36F7DA86@fmsmsx101.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f178.google.com (mail-pd0-f178.google.com [209.85.192.178]) by gabe.freedesktop.org (Postfix) with ESMTP id F298E6E342 for ; Fri, 20 Mar 2015 00:00:33 -0700 (PDT) Received: by pdnc3 with SMTP id c3so100373945pdn.0 for ; Fri, 20 Mar 2015 00:00:33 -0700 (PDT) In-Reply-To: <76A9B330A4D78C4D99CB292C4CC06C0E36F7DA86@fmsmsx101.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Konduru, Chandra" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE1LTAzLTE5IGF0IDIxOjA4ICswMDAwLCBLb25kdXJ1LCBDaGFuZHJhIHdyb3Rl Ogo+IAo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IENvbnNlbHZhbiBE ZSBPbGl2ZWlyYSwgQW5kZXIKPiA+IFNlbnQ6IEZyaWRheSwgTWFyY2ggMTMsIDIwMTUgMjo0OSBB TQo+ID4gVG86IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IENjOiBLb25kdXJ1 LCBDaGFuZHJhOyBDb25zZWx2YW4gRGUgT2xpdmVpcmEsIEFuZGVyCj4gPiBTdWJqZWN0OiBbUEFU Q0ggMDMvMTldIGRybS9pOTE1OiBBbGxvY2F0ZSBhIGRybV9hdG9taWNfc3RhdGUgZm9yIHRoZSBs ZWdhY3kKPiA+IG1vZGVzZXQgY29kZQo+ID4gCj4gPiBGb3IgdGhlIGF0b21pYyBjb252ZXJzaW9u LCB0aGUgbW9kZSBzZXQgcGF0aHMgbmVlZCB0byBiZSBjaGFuZ2VkIHRvIHJlbHkgb24gYW4KPiA+ IGF0b21pYyBzdGF0ZSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGFnZWQgY29uZmlnLiBCeSB1c2lu ZyBhbiBhdG9taWMgc3RhdGUgZm9yIHRoZQo+ID4gbGVnYWN5IGNvZGUsIHdlIHdpbGwgYmUgYWJs ZSB0byBjb252ZXJ0IHRoZSBjb2RlIGJhc2UgaW4gc21hbGwgY2h1bmtzLgo+ID4gCj4gPiB2Mjog U3F1YXNoIHBhdGNoIHRoYXQgYWRkcyBzdGF0ZSBhcmd1bWVudCB0byBpbnRlbF9zZXRfbW9kZSgp LiAoQW5kZXIpCj4gPiAgICAgTWFrZSBldmVyeSBjYWxsZXIgb2YgaW50ZWxfc2V0X21vZGUoKSBh bGxvY2F0ZSBzdGF0ZS4gKERhbmllbCkKPiA+ICAgICBDYWxsIGRybV9hdG9taWNfc3RhdGVfY2xl YXIoKSBpbiBzZXQgY29uZmlnJ3MgZXJyb3IgcGF0aC4gKERhbmllbCkKPiA+IAo+ID4gU2lnbmVk LW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhCj4gPiA8YW5kZXIuY29uc2VsdmFu LmRlLm9saXZlaXJhQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8IDE2OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4g PiAtLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlv bnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGlu ZGV4IDc4ZWExMjIuLmI2MWUzZjYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ID4gQEAgLTM3LDYgKzM3LDcgQEAKPiA+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJt Lmg+Cj4gPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gPiAgI2luY2x1ZGUgImk5MTVfdHJhY2Uu aCIKPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4g PiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+IEBAIC04Miw3ICs4Myw4IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4g PiAKPiA+ICBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg c3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ICptb2RlLAo+ID4gLQkJCSAgaW50IHgsIGludCB5 LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpOwo+ID4gKwkJCSAgaW50IHgsIGludCB5 LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIsCj4gPiArCQkJICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAkJCQkgIHN0cnVjdCBpbnRlbF9mcmFtZWJ1 ZmZlciAqaWZiLAo+ID4gIAkJCQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwg QEAKPiA+IC04ODAyLDYgKzg4MDQsNyBAQCBib29sIGludGVsX2dldF9sb2FkX2RldGVjdF9waXBl KHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gPiAqY29ubmVjdG9yLAo+ID4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YjsKPiA+ICAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25m aWc7Cj4gPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IE5VTEw7Cj4gPiAgCWlu dCByZXQsIGkgPSAtMTsKPiA+IAo+ID4gIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVz XSwgW0VOQ09ERVI6JWQ6JXNdXG4iLCBAQAo+ID4gLTg4ODMsNiArODg4NiwxMiBAQCByZXRyeToK PiA+ICAJb2xkLT5sb2FkX2RldGVjdF90ZW1wID0gdHJ1ZTsKPiA+ICAJb2xkLT5yZWxlYXNlX2Zi ID0gTlVMTDsKPiA+IAo+ID4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsK PiA+ICsJaWYgKCFzdGF0ZSkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJc3RhdGUt PmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4gKwo+ID4gIAlpZiAoIW1vZGUpCj4gPiAgCQltb2RlID0g JmxvYWRfZGV0ZWN0X21vZGU7Cj4gPiAKPiA+IEBAIC04OTA1LDcgKzg5MTQsNyBAQCByZXRyeToK PiA+ICAJCWdvdG8gZmFpbDsKPiA+ICAJfQo+ID4gCj4gPiAtCWlmIChpbnRlbF9zZXRfbW9kZShj cnRjLCBtb2RlLCAwLCAwLCBmYikpIHsKPiA+ICsJaWYgKGludGVsX3NldF9tb2RlKGNydGMsIG1v ZGUsIDAsIDAsIGZiLCBzdGF0ZSkpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBz ZXQgbW9kZSBvbiBsb2FkLWRldGVjdCBwaXBlXG4iKTsKPiA+ICAJCWlmIChvbGQtPnJlbGVhc2Vf ZmIpCj4gPiAgCQkJb2xkLT5yZWxlYXNlX2ZiLT5mdW5jcy0+ZGVzdHJveShvbGQtPnJlbGVhc2Vf ZmIpOwo+ID4gQEAgLTg5MjQsNiArODkzMywxMSBAQCByZXRyeToKPiA+ICAJZWxzZQo+ID4gIAkJ aW50ZWxfY3J0Yy0+bmV3X2NvbmZpZyA9IE5VTEw7Cj4gCj4gVGhlcmUgYXJlIHN0aWxsIG9jY3Vy cmVuY2VzIG9mIG5ld19jb25maWcsIHdoaWNoIHlvdSBpbmRpY2F0ZWQga2lsbGluZyB0aGVtLgo+ IFdpbGwgeW91IGJlIHNlbmRpbmcgb3V0IGFub3RoZXIgdmVyc2lvbj8KCkkgaW5kaWNhdGVkIEkg aGF2ZSB0aGUgaW50ZW50aW9uIG9mIGtpbGxpbmcgY3J0Yy0+bmV3X2NvbmZpZywgYW5kIEkgZG8K aGF2ZSBwYXRjaGVzIGluIG15IHByaXZhdGUgYnJhbmNoIHRvIHRoYXQgZXh0ZW50LiBIb3dldmVy LCBJIGRvbid0IHRoaW5rCnRob3NlIHBhdGNoZXMgYXJlIG5lZWRlZCBieSB0aGlzIHNlcmllcywg c28gSSByYXRoZXIgZ2V0IHRoaXMgaW4gZmlyc3QuCgo+IFNhbWUgYXBwbGllcyB0byBhbnkgbmV3 X3h4eCB2YXJpYWJsZXMgd2hlcmUgdGhleSBzdXBwb3NlZCB0byBiZSBpbgo+IHJlc3BlY3RpdmUg c3RhdGVzIG9yIHRha2UgdGhlbSBvdXQuCj4gCj4gY3J0Yy0+bmV3X2NydGMKPiBjcnRjLT5uZXdf Y29uZmlnCj4gY3J0Yy0+bmV3X2VuYWJsZWQKPiBlbmNvZGVyLT5uZXdfZW5jb2Rlcgo+IGRwbGwt Pm5ld19jb25maWcKCkknbSB3b3JraW5nIG9uIHJlbW92aW5nIHRoZSB1c2FnZSBvZiBhbGwgdGhv c2UgdmFyaWFibGVzLCBhbmQgSSdsbApmb2xsb3cgdXAgd2l0aCBtb3JlIHBhdGNoZXMuIEJ1dCB3 ZSBjYW4ndCBjb21wbGV0ZWx5IHJlbW92ZSB0aGUgc3RhZ2VkCmNvbmZpZyB1dGlsIHRoZSBoYXJk d2FyZSBzdGF0ZSByZWFkb3V0IGNvZGUgaXMgY29udmVydGVkIHRvIGF0b21pYywKc2luY2UgdGhl IGZvcmNlX3Jlc3RvcmUgcGF0aCByZWxpZXMgb24gdGhlIHN0YWdlZCBjb25maWcgY29udGFpbmlu ZyB0aGUKInVzZXIgcmVxdWVzdGVkIiBzdGF0ZS4KClRoaXMgcGF0Y2ggc2VyaWVzIGlzIG5vdCBh bGwgdGhhdCBpcyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBzdGFnZWQgY29uZmlnLApidXQgYSBiaWcg c3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBUaGUgaW1wb3J0YW50IGJpdCBoZXJlIGlzIG5v dAp3aGV0aGVyIG9yIG5vdCB0aGUgc3RhZ2VkIGNvbmZpZyBzdGlsbCBleGlzdHMsIGJ1dCB0aGUg ZmFjdCB0aGF0IG5ldwpjb2RlIGNhbiBiZSB3cml0dGVuIHRvIG5vdCByZWx5IG9uIGl0LgoKPiBJ biBfX2ludGVsX3NldF9tb2RlX3NldHVwX3BsbHMoKSBiZWZvcmUgY2FsbGluZyBjcnRjX2NvbXB1 dGVfY2xvY2soKQo+IGl0IGlzIHBpY2tpbmcgY3J0Y19zdGF0ZSBmcm9tIGNydGMtPm5ld19jb25m aWcuIEkgdGhpbmsgY3J0Y19zdGF0ZSBzaG91bGQKPiBiZSBhIHBhcmFtZXRlciB0byBfX2ludGVs X3NldF9tb2RlX3NldHVwX3BsbHMoKSBhbmQgdGhlbiBwYXNzCj4gZnVydGhlciBpdCB0byBjb21w dXRlX2Nsb2NrcygpLgoKSSBoYXZlIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaW4gYSBwcml2YXRlIGJy YW5jaDoKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNDNkMGU0My4uMWYx ODc4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTE0MDMsMTAgKzEx NDAzLDExIEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9jcnRjICpj cnRjLAogICAgICAgIHJldHVybiBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIHRv X2ludGVsX2NydGMoY3J0YykpOwogfQogCi1zdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGVfc2V0 dXBfcGxscyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIGludCBfX2ludGVsX3NldF9t b2RlX3NldHVwX3BsbHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtb2Rlc2V0X3BpcGVzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkaXNhYmxlX3BpcGVz KQogeworICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OwogICAgICAg IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKICAgICAg ICB1bnNpZ25lZCBjbGVhcl9waXBlcyA9IG1vZGVzZXRfcGlwZXMgfCBkaXNhYmxlX3BpcGVzOwog ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwpAQCAtMTE0MjAsOSArMTE0MjEs MTEgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlX3NldHVwX3BsbHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgICAgIGZvcl9lYWNo X2ludGVsX2NydGNfbWFza2VkKGRldiwgbW9kZXNldF9waXBlcywgaW50ZWxfY3J0YykgewotICAg ICAgICAgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlID0gaW50ZWxfY3J0Yy0+ bmV3X2NvbmZpZzsKKyAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlID0KKyAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0 YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKKwogICAgICAgICAgICAgICAgcmV0ID0gZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2NrKGludGVsX2NydGMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNydGNf c3RhdGUpOwogICAgICAgICAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgICAgICAgICAgICAg ICBpbnRlbF9zaGFyZWRfZHBsbF9hYm9ydF9jb25maWcoZGV2X3ByaXYpOwogICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC0xMTQ4MCw3ICsxMTQ4Myw3IEBAIHN0YXRpYyBpbnQg X19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAgICAgICAgICAgICAgICBw cmVwYXJlX3BpcGVzICY9IH5kaXNhYmxlX3BpcGVzOwogICAgICAgIH0KIAotICAgICAgIHJldCA9 IF9faW50ZWxfc2V0X21vZGVfc2V0dXBfcGxscyhkZXYsIG1vZGVzZXRfcGlwZXMsIGRpc2FibGVf cGlwZXMpOworICAgICAgIHJldCA9IF9faW50ZWxfc2V0X21vZGVfc2V0dXBfcGxscyhzdGF0ZSwg bW9kZXNldF9waXBlcywgZGlzYWJsZV9waXBlcyk7CiAgICAgICAgaWYgKHJldCkKICAgICAgICAg ICAgICAgIGdvdG8gZG9uZTsKCkFuZGVyCgo+IAo+IAo+ID4gIGZhaWxfdW5sb2NrOgo+ID4gKwlp ZiAoc3RhdGUpIHsKPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiArCQlz dGF0ZSA9IE5VTEw7Cj4gPiArCX0KPiA+ICsKPiA+ICAJaWYgKHJldCA9PSAtRURFQURMSykgewo+ ID4gIAkJZHJtX21vZGVzZXRfYmFja29mZihjdHgpOwo+ID4gIAkJZ290byByZXRyeTsKPiA+IEBA IC04OTM2LDIyICs4OTUwLDM0IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBl KHN0cnVjdAo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIAkJCQkgICAgc3RydWN0 IGludGVsX2xvYWRfZGV0ZWN0X3BpcGUgKm9sZCwKPiA+ICAJCQkJICAgIHN0cnVjdCBkcm1fbW9k ZXNldF9hY3F1aXJlX2N0eCAqY3R4KSAgewo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y29ubmVjdG9yLT5kZXY7Cj4gPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVy ID0KPiA+ICAJCWludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKTsKPiA+ICAJc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7Cj4gPiAgCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXItPmNydGM7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+ICsJc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlOwo+ID4gCj4gPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6 JXNdLCBbRU5DT0RFUjolZDolc11cbiIsCj4gPiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQs IGNvbm5lY3Rvci0+bmFtZSwKPiA+ICAJCSAgICAgIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXIt Pm5hbWUpOwo+ID4gCj4gPiAgCWlmIChvbGQtPmxvYWRfZGV0ZWN0X3RlbXApIHsKPiA+ICsJCXN0 YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+ID4gKwkJaWYgKCFzdGF0ZSkgewo+ ID4gKwkJCURSTV9ERUJVR19LTVMoImNhbid0IHJlbGVhc2UgbG9hZCBkZXRlY3QgcGlwZVxuIik7 Cj4gPiArCQkJcmV0dXJuOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJc3RhdGUtPmFjcXVpcmVfY3R4 ID0gY3R4Owo+ID4gKwo+ID4gIAkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3RvciktPm5ld19l bmNvZGVyID0gTlVMTDsKPiA+ICAJCWludGVsX2VuY29kZXItPm5ld19jcnRjID0gTlVMTDsKPiA+ ICAJCWludGVsX2NydGMtPm5ld19lbmFibGVkID0gZmFsc2U7Cj4gPiAgCQlpbnRlbF9jcnRjLT5u ZXdfY29uZmlnID0gTlVMTDsKPiA+IC0JCWludGVsX3NldF9tb2RlKGNydGMsIE5VTEwsIDAsIDAs IE5VTEwpOwo+ID4gKwkJaW50ZWxfc2V0X21vZGUoY3J0YywgTlVMTCwgMCwgMCwgTlVMTCwgc3Rh dGUpOwo+ID4gKwo+ID4gKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiA+IAo+ID4g IAkJaWYgKG9sZC0+cmVsZWFzZV9mYikgewo+ID4gIAkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZ2lz dGVyX3ByaXZhdGUob2xkLT5yZWxlYXNlX2ZiKTsKPiA+IEBAIC0xMDM0NSwxMCArMTAzNzEsMjIg QEAgc3RhdGljIGJvb2wgY2hlY2tfZGlnaXRhbF9wb3J0X2NvbmZsaWN0cyhzdHJ1Y3QKPiA+IGRy bV9kZXZpY2UgKmRldikKPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gCj4gPiAtc3RhdGlj IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKPiA+ICtzdGF0aWMgdm9pZAo+ID4gK2NsZWFyX2lu dGVsX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpIHsKPiA+ ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlIHRtcF9zdGF0ZTsKPiA+ICsKPiA+ICsJLyogQ2xlYXIg b25seSB0aGUgaW50ZWwgc3BlY2lmaWMgcGFydCBvZiB0aGUgY3J0YyBzdGF0ZSAqLwo+ID4gKwl0 bXBfc3RhdGUgPSBjcnRjX3N0YXRlLT5iYXNlOwo+ID4gKwltZW1zZXQoY3J0Y19zdGF0ZSwgMCwg c2l6ZW9mICpjcnRjX3N0YXRlKTsKPiA+ICsJY3J0Y19zdGF0ZS0+YmFzZSA9IHRtcF9zdGF0ZTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludAo+ID4gIGludGVsX21vZGVzZXRfcGlwZV9jb25m aWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAkJCSAgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIsCj4gPiAtCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiA+ICsJCQkg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gKwkJCSAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmRldjsKPiA+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gPiBAQCAtMTAz NTgsMTcgKzEwMzk2LDE5IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoc3RydWN0IGRybV9j cnRjCj4gPiAqY3J0YywKPiA+IAo+ID4gIAlpZiAoIWNoZWNrX2VuY29kZXJfY2xvbmluZyh0b19p bnRlbF9jcnRjKGNydGMpKSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygicmVqZWN0aW5nIGludmFs aWQgY2xvbmluZyBjb25maWd1cmF0aW9uXG4iKTsKPiA+IC0JCXJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCX0KPiA+IAo+ID4gIAlpZiAoIWNoZWNr X2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoZGV2KSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygicmVq ZWN0aW5nIGNvbmZsaWN0aW5nIGRpZ2l0YWwgcG9ydAo+ID4gY29uZmlndXJhdGlvblxuIik7Cj4g PiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4g IAl9Cj4gPiAKPiA+IC0JcGlwZV9jb25maWcgPSBremFsbG9jKHNpemVvZigqcGlwZV9jb25maWcp LCBHRlBfS0VSTkVMKTsKPiA+IC0JaWYgKCFwaXBlX2NvbmZpZykKPiA+IC0JCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwo+ID4gKwlwaXBlX2NvbmZpZyA9IGludGVsX2F0b21pY19nZXRfY3J0Y19z dGF0ZShzdGF0ZSwgdG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gPiArCWlmIChJU19FUlIocGlwZV9j b25maWcpKQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIocGlwZV9jb25maWcpOwo+ID4gKwo+ID4gKwlj bGVhcl9pbnRlbF9jcnRjX3N0YXRlKHBpcGVfY29uZmlnKTsKPiA+IAo+ID4gIAlwaXBlX2NvbmZp Zy0+YmFzZS5jcnRjID0gY3J0YzsKPiA+ICAJZHJtX21vZGVfY29weSgmcGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZSwgbW9kZSk7IEBAIC0KPiA+IDEwNDYzLDEwICsxMDUwMyw5IEBAIGVu Y29kZXJfcmV0cnk6Cj4gPiAgCURSTV9ERUJVR19LTVMoInBsYW5lIGJwcDogJWksIHBpcGUgYnBw OiAlaSwgZGl0aGVyaW5nOiAlaVxuIiwKPiA+ICAJCSAgICAgIHBsYW5lX2JwcCwgcGlwZV9jb25m aWctPnBpcGVfYnBwLCBwaXBlX2NvbmZpZy0+ZGl0aGVyKTsKPiA+IAo+ID4gLQlyZXR1cm4gcGlw ZV9jb25maWc7Cj4gPiArCXJldHVybiAwOwo+ID4gIGZhaWw6Cj4gPiAtCWtmcmVlKHBpcGVfY29u ZmlnKTsKPiA+IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICB9 Cj4gPiAKPiA+ICAvKiBDb21wdXRlcyB3aGljaCBjcnRjcyBhcmUgYWZmZWN0ZWQgYW5kIHNldHMg dGhlIHJlbGV2YW50IGJpdHMgaW4gdGhlIG1hc2suIEZvcgo+ID4gQEAgLTExMTQ0LDE3ICsxMTE4 MywxOSBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKgo+ID4gaW50ZWxfbW9kZXNl dF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ICAJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAo+ID4gKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ ID4gIAkJCSAgICAgdW5zaWduZWQgKm1vZGVzZXRfcGlwZXMsCj4gPiAgCQkJICAgICB1bnNpZ25l ZCAqcHJlcGFyZV9waXBlcywKPiA+ICAJCQkgICAgIHVuc2lnbmVkICpkaXNhYmxlX3BpcGVzKQo+ ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0gTlVMTDsK PiA+ICsJaW50IHJldCA9IDA7Cj4gPiAKPiA+ICAJaW50ZWxfbW9kZXNldF9hZmZlY3RlZF9waXBl cyhjcnRjLCBtb2Rlc2V0X3BpcGVzLAo+ID4gIAkJCQkgICAgIHByZXBhcmVfcGlwZXMsIGRpc2Fi bGVfcGlwZXMpOwo+ID4gCj4gPiAgCWlmICgoKm1vZGVzZXRfcGlwZXMpID09IDApCj4gPiAtCQln b3RvIG91dDsKPiA+ICsJCXJldHVybiBOVUxMOwo+ID4gCj4gPiAgCS8qCj4gPiAgCSAqIE5vdGUg dGhpcyBuZWVkcyBjaGFuZ2VzIHdoZW4gd2Ugc3RhcnQgdHJhY2tpbmcgbXVsdGlwbGUgbW9kZXMg QEAgLQo+ID4gMTExNjIsMTQgKzExMjAzLDE3IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25m aWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAkgKiAoaS5lLiBvbmUgcGlwZV9jb25maWcg Zm9yIGVhY2ggY3J0YykgcmF0aGVyIHRoYW4ganVzdCB0aGUgb25lCj4gPiAgCSAqIGZvciB0aGlz IGNydGMuCj4gPiAgCSAqLwo+ID4gLQlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfcGlwZV9j b25maWcoY3J0YywgZmIsIG1vZGUpOwo+ID4gLQlpZiAoSVNfRVJSKHBpcGVfY29uZmlnKSkgewo+ ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+ICsJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2Nv bmZpZyhjcnRjLCBmYiwgbW9kZSwgc3RhdGUpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJu IEVSUl9QVFIocmV0KTsKPiA+ICsKPiA+ICsJcGlwZV9jb25maWcgPSBpbnRlbF9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoc3RhdGUsIHRvX2ludGVsX2NydGMoY3J0YykpOwo+ID4gKwlpZiAoSVNfRVJS KHBpcGVfY29uZmlnKSkKPiA+ICsJCXJldHVybiBwaXBlX2NvbmZpZzsKPiA+ICsKPiA+ICAJaW50 ZWxfZHVtcF9waXBlX2NvbmZpZyh0b19pbnRlbF9jcnRjKGNydGMpLCBwaXBlX2NvbmZpZywKPiA+ ICAJCQkgICAgICAgIlttb2Rlc2V0XSIpOwo+ID4gCj4gPiAtb3V0Ogo+ID4gIAlyZXR1cm4gcGlw ZV9jb25maWc7Cj4gPiAgfQo+ID4gCj4gPiBAQCAtMTEyMTQsNiArMTEyNTgsNyBAQCBzdGF0aWMg aW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqc2F2ZWRfbW9kZTsKPiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGVfY29weSA9IE5VTEw7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ID4g IAlpbnQgcmV0ID0gMDsKPiA+IAo+ID4gQEAgLTExMjIxLDYgKzExMjY2LDEyIEBAIHN0YXRpYyBp bnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCWlmICghc2F2 ZWRfbW9kZSkKPiA+ICAJCXJldHVybiAtRU5PTUVNOwo+ID4gCj4gPiArCWNydGNfc3RhdGVfY29w eSA9IGttYWxsb2Moc2l6ZW9mKCpjcnRjX3N0YXRlX2NvcHkpLCBHRlBfS0VSTkVMKTsKPiA+ICsJ aWYgKCFjcnRjX3N0YXRlX2NvcHkpIHsKPiA+ICsJCXJldCA9IC1FTk9NRU07Cj4gPiArCQlnb3Rv IGRvbmU7Cj4gPiArCX0KPiA+ICsKPiA+ICAJKnNhdmVkX21vZGUgPSBjcnRjLT5tb2RlOwo+ID4g Cj4gPiAgCWlmIChtb2Rlc2V0X3BpcGVzKQo+ID4gQEAgLTExMzA3LDYgKzExMzU4LDE5IEBAIGRv bmU6Cj4gPiAgCWlmIChyZXQgJiYgY3J0Yy0+c3RhdGUtPmVuYWJsZSkKPiA+ICAJCWNydGMtPm1v ZGUgPSAqc2F2ZWRfbW9kZTsKPiA+IAo+ID4gKwlpZiAocmV0ID09IDAgJiYgcGlwZV9jb25maWcp IHsKPiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiA+ICsKPiA+ICsJCS8qIFRoZSBwaXBlX2NvbmZpZyB3aWxsIGJlIGZyZWVkIHdpdGgg dGhlIGF0b21pYyBzdGF0ZSwgc28KPiA+ICsJCSAqIG1ha2UgYSBjb3B5LiAqLwo+ID4gKwkJbWVt Y3B5KGNydGNfc3RhdGVfY29weSwgaW50ZWxfY3J0Yy0+Y29uZmlnLAo+ID4gKwkJICAgICAgIHNp emVvZiAqY3J0Y19zdGF0ZV9jb3B5KTsKPiA+ICsJCWludGVsX2NydGMtPmNvbmZpZyA9IGludGVs X2NydGMtPm5ld19jb25maWcgPSBjcnRjX3N0YXRlX2NvcHk7Cj4gPiArCQlpbnRlbF9jcnRjLT5i YXNlLnN0YXRlID0gJmNydGNfc3RhdGVfY29weS0+YmFzZTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJ CWtmcmVlKGNydGNfc3RhdGVfY29weSk7Cj4gPiArCX0KPiA+ICsKPiA+ICAJa2ZyZWUoc2F2ZWRf bW9kZSk7Cj4gPiAgCXJldHVybiByZXQ7Cj4gPiAgfQo+ID4gQEAgLTExMzMyLDI3ICsxMTM5Niw1 MSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlX3BpcGVzKHN0cnVjdCBkcm1fY3J0Ywo+ID4g KmNydGMsCj4gPiAKPiA+ICBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gLQkJ CSAgaW50IHgsIGludCB5LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPiA+ICsJCQkgIGlu dCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiArCQkJICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWc7Cj4gPiAgCXVuc2lnbmVkIG1vZGVzZXRfcGlwZXMsIHByZXBhcmVf cGlwZXMsIGRpc2FibGVfcGlwZXM7Cj4gPiArCWludCByZXQgPSAwOwo+ID4gCj4gPiAtCXBpcGVf Y29uZmlnID0gaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhjcnRjLCBtb2RlLCBmYiwKPiA+ ICsJcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKGNydGMsIG1vZGUs IGZiLCBzdGF0ZSwKPiA+ICAJCQkJCQkgICAmbW9kZXNldF9waXBlcywKPiA+ICAJCQkJCQkgICAm cHJlcGFyZV9waXBlcywKPiA+ICAJCQkJCQkgICAmZGlzYWJsZV9waXBlcyk7Cj4gPiAKPiA+IC0J aWYgKElTX0VSUihwaXBlX2NvbmZpZykpCj4gPiAtCQlyZXR1cm4gUFRSX0VSUihwaXBlX2NvbmZp Zyk7Cj4gPiArCWlmIChJU19FUlIocGlwZV9jb25maWcpKSB7Cj4gPiArCQlyZXQgPSBQVFJfRVJS KHBpcGVfY29uZmlnKTsKPiA+ICsJCWdvdG8gb3V0Owo+ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9 IGludGVsX3NldF9tb2RlX3BpcGVzKGNydGMsIG1vZGUsIHgsIHksIGZiLCBwaXBlX2NvbmZpZywK PiA+ICsJCQkJICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywKPiA+ICsJCQkJICAgZGlz YWJsZV9waXBlcyk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3RvIG91dDsKPiA+IAo+ID4gLQly ZXR1cm4gaW50ZWxfc2V0X21vZGVfcGlwZXMoY3J0YywgbW9kZSwgeCwgeSwgZmIsIHBpcGVfY29u ZmlnLAo+ID4gLQkJCQkgICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywKPiA+IC0JCQkJ ICAgIGRpc2FibGVfcGlwZXMpOwo+ID4gK291dDoKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICB9Cj4g PiAKPiA+ICB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykgIHsKPiA+IC0JaW50ZWxfc2V0X21vZGUoY3J0YywgJmNydGMtPm1vZGUsIGNydGMtPngsIGNy dGMtPnksIGNydGMtPnByaW1hcnktPmZiKTsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gKwo+ ID4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+ICsJaWYgKCFzdGF0 ZSkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIG1vZGUgcmVzdG9yZSBmYWlsZWQs IG91dCBvZgo+ID4gbWVtb3J5IiwKPiA+ICsJCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKPiA+ICsJ CXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1v ZGVfY29uZmlnLmFjcXVpcmVfY3R4Owo+ID4gKwo+ID4gKwlpbnRlbF9zZXRfbW9kZShjcnRjLCAm Y3J0Yy0+bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwgY3J0Yy0+cHJpbWFyeS0+ZmIsCj4gPiArCQkg ICAgICAgc3RhdGUpOwo+ID4gKwo+ID4gKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ ID4gIH0KPiA+IAo+ID4gICN1bmRlZiBmb3JfZWFjaF9pbnRlbF9jcnRjX21hc2tlZAo+ID4gQEAg LTExNjc3LDYgKzExNzY1LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3Ry dWN0Cj4gPiBkcm1fbW9kZV9zZXQgKnNldCkgIHsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl djsKPiA+ICAJc3RydWN0IGRybV9tb2RlX3NldCBzYXZlX3NldDsKPiA+ICsJc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gTlVMTDsKPiA+ICAJc3RydWN0IGludGVsX3NldF9jb25maWcg KmNvbmZpZzsKPiA+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnOwo+ID4g IAl1bnNpZ25lZCBtb2Rlc2V0X3BpcGVzLCBwcmVwYXJlX3BpcGVzLCBkaXNhYmxlX3BpcGVzOyBA QCAtMTE3MjEsMTIKPiA+ICsxMTgxMCwyMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2Nv bmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCj4gPiAgCSAqIHN1Y2ggY2FzZXMuICovCj4g PiAgCWludGVsX3NldF9jb25maWdfY29tcHV0ZV9tb2RlX2NoYW5nZXMoc2V0LCBjb25maWcpOwo+ ID4gCj4gPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+ID4gKwlpZiAo IXN0YXRlKSB7Cj4gPiArCQlyZXQgPSAtRU5PTUVNOwo+ID4gKwkJZ290byBvdXRfY29uZmlnOwo+ ID4gKwl9Cj4gPiArCj4gPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRldi0+bW9kZV9jb25maWcu YWNxdWlyZV9jdHg7Cj4gPiArCj4gPiAgCXJldCA9IGludGVsX21vZGVzZXRfc3RhZ2Vfb3V0cHV0 X3N0YXRlKGRldiwgc2V0LCBjb25maWcpOwo+ID4gIAlpZiAocmV0KQo+ID4gIAkJZ290byBmYWls Owo+ID4gCj4gPiAgCXBpcGVfY29uZmlnID0gaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhz ZXQtPmNydGMsIHNldC0+bW9kZSwKPiA+IC0JCQkJCQkgICBzZXQtPmZiLAo+ID4gKwkJCQkJCSAg IHNldC0+ZmIsIHN0YXRlLAo+ID4gIAkJCQkJCSAgICZtb2Rlc2V0X3BpcGVzLAo+ID4gIAkJCQkJ CSAgICZwcmVwYXJlX3BpcGVzLAo+ID4gIAkJCQkJCSAgICZkaXNhYmxlX3BpcGVzKTsKPiA+IEBA IC0xMTc0NiwxMCArMTE4NDMsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhz dHJ1Y3QKPiA+IGRybV9tb2RlX3NldCAqc2V0KQo+ID4gIAkJICovCj4gPiAgCX0KPiA+IAo+ID4g LQkvKiBzZXRfbW9kZSB3aWxsIGZyZWUgaXQgaW4gdGhlIG1vZGVfY2hhbmdlZCBjYXNlICovCj4g PiAtCWlmICghY29uZmlnLT5tb2RlX2NoYW5nZWQpCj4gPiAtCQlrZnJlZShwaXBlX2NvbmZpZyk7 Cj4gPiAtCj4gPiAgCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0YyhzZXQtPmNy dGMpKTsKPiA+IAo+ID4gIAlpZiAoY29uZmlnLT5tb2RlX2NoYW5nZWQpIHsKPiA+IEBAIC0xMTc5 NSw2ICsxMTg4OCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0cnVjdAo+ ID4gZHJtX21vZGVfc2V0ICpzZXQpCj4gPiAgZmFpbDoKPiA+ICAJCWludGVsX3NldF9jb25maWdf cmVzdG9yZV9zdGF0ZShkZXYsIGNvbmZpZyk7Cj4gPiAKPiA+ICsJCWRybV9hdG9taWNfc3RhdGVf Y2xlYXIoc3RhdGUpOwo+ID4gKwo+ID4gIAkJLyoKPiA+ICAJCSAqIEhBQ0s6IGlmIHRoZSBwaXBl IHdhcyBvbiwgYnV0IHdlIGRpZG4ndCBoYXZlIGEgZnJhbWVidWZmZXIsCj4gPiAgCQkgKiBmb3Jj ZSB0aGUgcGlwZSBvZmYgdG8gYXZvaWQgb29wc2luZyBpbiB0aGUgbW9kZXNldCBjb2RlIEBACj4g PiAtMTE4MDcsMTEgKzExOTAyLDE1IEBAIGZhaWw6Cj4gPiAgCQkvKiBUcnkgdG8gcmVzdG9yZSB0 aGUgY29uZmlnICovCj4gPiAgCQlpZiAoY29uZmlnLT5tb2RlX2NoYW5nZWQgJiYKPiA+ICAJCSAg ICBpbnRlbF9zZXRfbW9kZShzYXZlX3NldC5jcnRjLCBzYXZlX3NldC5tb2RlLAo+ID4gLQkJCQkg ICBzYXZlX3NldC54LCBzYXZlX3NldC55LCBzYXZlX3NldC5mYikpCj4gPiArCQkJCSAgIHNhdmVf c2V0LngsIHNhdmVfc2V0LnksIHNhdmVfc2V0LmZiLAo+ID4gKwkJCQkgICBzdGF0ZSkpCj4gPiAg CQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVzdG9yZSBjb25maWcgYWZ0ZXIgbW9kZXNldAo+ID4g ZmFpbHVyZVxuIik7Cj4gPiAgCX0KPiA+IAo+ID4gIG91dF9jb25maWc6Cj4gPiArCWlmIChzdGF0 ZSkKPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiArCj4gPiAgCWludGVs X3NldF9jb25maWdfZnJlZShjb25maWcpOwo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIH0KPiA+IEBA IC0xMzg1Miw4ICsxMzk1MSw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShz dHJ1Y3QKPiA+IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PQo+ID4gIAkJCQlkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV07Cj4gPiAKPiA+ IC0JCQlpbnRlbF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwK PiA+IC0JCQkJICAgICAgIGNydGMtPnByaW1hcnktPmZiKTsKPiA+ICsJCQlpbnRlbF9jcnRjX3Jl c3RvcmVfbW9kZShjcnRjKTsKPiA+ICAJCX0KPiA+ICAJfSBlbHNlIHsKPiA+ICAJCWludGVsX21v ZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUoZGV2KTsKPiA+IC0tCj4gPiAyLjEuMAo+ IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==