From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [RFC PATCH 4/7] drm/i915: enable fastboot for everyone Date: Tue, 23 Jun 2015 12:38:50 +0200 Message-ID: <5589373A.7020402@linux.intel.com> References: <1434700950-16242-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434700950-16242-5-git-send-email-maarten.lankhorst@linux.intel.com> <20150622152100.GR25769@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 249266E93B for ; Tue, 23 Jun 2015 03:39:07 -0700 (PDT) In-Reply-To: <20150622152100.GR25769@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjItMDYtMTUgb20gMTc6MjEgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIEZyaSwgSnVu IDE5LCAyMDE1IGF0IDEwOjAyOjI3QU0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ PiBOb3cgdGhhdCB3ZSByZWFkIG91dCB0aGUgZnVsbCBhdG9taWMgc3RhdGUgd2UgY2FuIGZvcmNl IGZhc3Rib290IHdpdGhvdXQgaGFja3MuCj4+IFRoZSBvbmx5IHRoaW5nIHRoYXQgd2Ugd29ycnkg YWJvdXQgaXMgcHJldmVudGluZyBhIG1vZGVzZXQuIFRoaXMgY2FuIGJlIGVhc2lseQo+PiBkb25l IGJ5IGNhbGN1bGF0aW5nIGlmIHN3IHN0YXRlIG1hdGNoZXMgaHcgc3RhdGUsIHdpdGggZXhjZXB0 aW9uIGZvciBwZml0IGFuZAo+PiBwaXBlIHNpemUuIFNpbmNlIHRoZSBvcmlnaW5hbCBmYXN0Ym9v dCBjb2RlIG9ubHkgdG91Y2hlZCBwaXBlIHNpemUgYW5kIHBhbmVsCj4+IGZpdHRlciB3ZSBrZWVw IHRob3NlLCBhbmQgY29tcGFyZSBmdWxsIHN3IHN0YXRlIGFnYWluc3QgaHcgc3RhdGUuCj4+Cj4+ IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMu YyAgIHwgICA1IC0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDI3 MSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwgIDEwICstCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDE2OSBp bnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w YXJhbXMuYwo+PiBpbmRleCA4YWM1YTFiMjlhYzAuLjliMzQ0YTk1NmJhNiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4+IEBAIC00MSw3ICs0MSw2IEBAIHN0cnVjdCBpOTE1 X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkgPSB7Cj4+ICAJLnByZWxpbWluYXJ5X2h3X3N1cHBv cnQgPSBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9QUkVMSU1JTkFSWV9IV19TVVBQT1JUKSwK Pj4gIAkuZGlzYWJsZV9wb3dlcl93ZWxsID0gMSwKPj4gIAkuZW5hYmxlX2lwcyA9IDEsCj4+IC0J LmZhc3Rib290ID0gMCwKPj4gIAkucHJlZmF1bHRfZGlzYWJsZSA9IDAsCj4+ICAJLmxvYWRfZGV0 ZWN0X3Rlc3QgPSAwLAo+PiAgCS5yZXNldCA9IHRydWUsCj4+IEBAIC0xMzcsMTAgKzEzNiw2IEBA IE1PRFVMRV9QQVJNX0RFU0MoZGlzYWJsZV9wb3dlcl93ZWxsLAo+PiAgbW9kdWxlX3BhcmFtX25h bWVkKGVuYWJsZV9pcHMsIGk5MTUuZW5hYmxlX2lwcywgaW50LCAwNjAwKTsKPj4gIE1PRFVMRV9Q QVJNX0RFU0MoZW5hYmxlX2lwcywgIkVuYWJsZSBJUFMgKGRlZmF1bHQ6IHRydWUpIik7Cj4+ICAK Pj4gLW1vZHVsZV9wYXJhbV9uYW1lZChmYXN0Ym9vdCwgaTkxNS5mYXN0Ym9vdCwgYm9vbCwgMDYw MCk7Cj4+IC1NT0RVTEVfUEFSTV9ERVNDKGZhc3Rib290LAo+PiAtCSJUcnkgdG8gc2tpcCB1bm5l Y2Vzc2FyeSBtb2RlIHNldHMgYXQgYm9vdCB0aW1lIChkZWZhdWx0OiBmYWxzZSkiKTsKPj4gLQo+ PiAgbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShwcmVmYXVsdF9kaXNhYmxlLCBpOTE1LnByZWZh dWx0X2Rpc2FibGUsIGJvb2wsIDA2MDApOwo+PiAgTU9EVUxFX1BBUk1fREVTQyhwcmVmYXVsdF9k aXNhYmxlLAo+PiAgCSJEaXNhYmxlIHBhZ2UgcHJlZmF1bHRpbmcgZm9yIHByZWFkL3B3cml0ZS9y ZWxvYyAoZGVmYXVsdDpmYWxzZSkuICIKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+PiBpbmRleCA5YjJhY2M3YjRlMjkuLmRlOTc1ZWYwOWUyMyAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTEwLDYgKzExMCw3IEBAIHN0YXRpYyB2b2lk IHNrbF9pbml0X3NjYWxlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NyCj4+ICBzdGF0aWMgaW50IGk5eHhfZ2V0X3JlZmNsayhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gIAkJCSAgIGludCBudW1fY29ubmVjdG9y cyk7Cj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1f Y3J0YyAqY3J0Yyk7Cj4+ICtzdGF0aWMgdm9pZCBza3lsYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKTsKPj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqCj4+ ICBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJv b2wgZm9yY2VfcmVzdG9yZSk7Cj4+ICAKPj4gQEAgLTMyODksMTQgKzMyOTAsMTcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGluZ19mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK Pj4gIAlyZXR1cm4gcGVuZGluZzsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQgaW50ZWxfdXBk YXRlX3BpcGVfc2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4gK3N0YXRpYyB2b2lkIGlu dGVsX3VwZGF0ZV9mYXN0Ym9vdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gKwkJCQkgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiBUaGF0J3Mgbm90IGEgdXNl ZnVsIHJlbmFtZSBpbW8gLSB1cGRhdGluZyBwZml0L3BpcGVfc2l6ZSBjbGVhcmx5IHRlbGxzIHVz Cj4gd2hhdCdzIGdvaW5nIG9uLCBmYXN0Ym9vdCBpcyBtdWNoIG1vcmUgYSBtYXJrZXRpbmcgdGhp bmcgcmVhbGx5LiBBbmQgSQo+IGV4cGVjdCB0aGF0IGV2ZW50dWFsbHkgd2UnbGwgaGF2ZSB0byBn cm93IGEgbG90IG1vcmUgdXBkYXRlIGNvZGUgdG8gZml4IHVwCj4gZmFzdGJvb3QuCj4KPj4gIHsK Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKPj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+PiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNy dGMtPmJhc2Uuc3RhdGUpOwo+PiAgCj4+IC0JaWYgKCFpOTE1LmZhc3Rib290KQo+PiAtCQlyZXR1 cm47Cj4+ICsJRFJNX0RFQlVHX0tNUygiQXBwbHlpbmcgZmFzdGJvb3QgcXVpcmtzLCAlaXglaSAt PiAlaXglaVxuIiwKPj4gKwkJICAgICAgb2xkX2NydGNfc3RhdGUtPnBpcGVfc3JjX3csIG9sZF9j cnRjX3N0YXRlLT5waXBlX3NyY19oLAo+PiArCQkgICAgICBwaXBlX2NvbmZpZy0+cGlwZV9zcmNf dywgcGlwZV9jb25maWctPnBpcGVfc3JjX2gpOwo+PiAgCj4+ICAJLyoKPj4gIAkgKiBVcGRhdGUg cGlwZSBzaXplIGFuZCBhZGp1c3QgZml0dGVyIGlmIG5lZWRlZDogdGhlIHJlYXNvbiBmb3IgdGhp cyBpcwo+PiBAQCAtMzMwNSwyNyArMzMwOSwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVf cGlwZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAgCSAqIGZhc3Rib290IGNhc2Us IHdlJ2xsIGZsaXAsIGJ1dCBpZiB3ZSBkb24ndCB1cGRhdGUgdGhlIHBpcGVzcmMgYW5kCj4+ICAJ ICogcGZpdCBzdGF0ZSwgd2UnbGwgZW5kIHVwIHdpdGggYSBiaWcgZmIgc2Nhbm5lZCBvdXQgaW50 byB0aGUgd3JvbmcKPj4gIAkgKiBzaXplZCBzdXJmYWNlLgo+PiAtCSAqCj4+IC0JICogVG8gZml4 IHRoaXMgcHJvcGVybHksIHdlIG5lZWQgdG8gaG9pc3QgdGhlIGNoZWNrcyB1cCBpbnRvCj4+IC0J ICogY29tcHV0ZV9tb2RlX2NoYW5nZXMgKG9yIGFib3ZlKSwgY2hlY2sgdGhlIGFjdHVhbCBwZml0 IHN0YXRlIGFuZAo+PiAtCSAqIHdoZXRoZXIgdGhlIHBsYXRmb3JtIGFsbG93cyBwZml0IGRpc2Fi bGUgd2l0aCBwaXBlIGFjdGl2ZSwgYW5kIG9ubHkKPj4gLQkgKiB0aGVuIHVwZGF0ZSB0aGUgcGlw ZXNyYyBhbmQgcGZpdCBzdGF0ZSwgZXZlbiBvbiB0aGUgZmxpcCBwYXRoLgo+PiAgCSAqLwo+PiAg Cj4+IC0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsK Pj4gLQo+PiAgCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5waXBlKSwKPj4gLQkJICAgKChhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC0gMSkgPDwgMTYpIHwKPj4gLQkJICAgKGFkanVzdGVk X21vZGUtPmNydGNfdmRpc3BsYXkgLSAxKSk7Cj4+IC0JaWYgKCFjcnRjLT5jb25maWctPnBjaF9w Zml0LmVuYWJsZWQgJiYKPj4gLQkgICAgKGludGVsX3BpcGVfaGFzX3R5cGUoY3J0YywgSU5URUxf T1VUUFVUX0xWRFMpIHx8Cj4+IC0JICAgICBpbnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVM X09VVFBVVF9FRFApKSkgewo+PiArCQkgICAoKHBpcGVfY29uZmlnLT5waXBlX3NyY193IC0gMSkg PDwgMTYpIHwKPj4gKwkJICAgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSkpOwo+PiArCj4+ ICsJLyogb24gc2t5bGFrZSB0aGlzIGlzIGRvbmUgYnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KPj4g KwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOSkgewo+PiArCQlza2xfZGV0YWNoX3NjYWxl cnMoY3J0Yyk7Cj4+ICsKPj4gKwkJaWYgKHBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKQo+ PiArCQkJc2t5bGFrZV9wZml0X2VuYWJsZShjcnRjKTsKPj4gKwl9Cj4+ICsJZWxzZSBpZiAoIXBp cGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkICYmCj4+ICsJICAgIG9sZF9jcnRjX3N0YXRlLT5w Y2hfcGZpdC5lbmFibGVkKSB7Cj4+ICsJCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBwYW5lbCBm aXR0ZXJcbiIpOwo+PiArCj4+ICAJCUk5MTVfV1JJVEUoUEZfQ1RMKGNydGMtPnBpcGUpLCAwKTsK Pj4gIAkJSTkxNV9XUklURShQRl9XSU5fUE9TKGNydGMtPnBpcGUpLCAwKTsKPj4gIAkJSTkxNV9X UklURShQRl9XSU5fU1ooY3J0Yy0+cGlwZSksIDApOwo+PiAgCX0KPj4gLQljcnRjLT5jb25maWct PnBpcGVfc3JjX3cgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+PiAtCWNydGMtPmNv bmZpZy0+cGlwZV9zcmNfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4+ICB9Cj4+ ICAKPj4gIHN0YXRpYyB2b2lkIGludGVsX2ZkaV9ub3JtYWxfdHJhaW4oc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+PiBAQCAtMTIyNDQsMTkgKzEyMjQ4LDYgQEAgZW5jb2Rlcl9yZXRyeToKPj4gIAlE Uk1fREVCVUdfS01TKCJwbGFuZSBicHA6ICVpLCBwaXBlIGJwcDogJWksIGRpdGhlcmluZzogJWlc biIsCj4+ICAJCSAgICAgIGJhc2VfYnBwLCBwaXBlX2NvbmZpZy0+cGlwZV9icHAsIHBpcGVfY29u ZmlnLT5kaXRoZXIpOwo+PiAgCj4+IC0JLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3JjZSBhIG1v ZGVzZXQgKi8KPj4gLQlpZiAocGlwZV9jb25maWctPmhhc19hdWRpbyAhPQo+PiAtCSAgICB0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+aGFzX2F1ZGlvKSB7Cj4+IC0JCXBpcGVfY29u ZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4+IC0JCXJldCA9IGRybV9hdG9taWNfYWRk X2FmZmVjdGVkX3BsYW5lcyhzdGF0ZSwgY3J0Yyk7Cj4+IC0JfQo+PiAtCj4+IC0JLyoKPj4gLQkg KiBOb3RlIHdlIGhhdmUgYW4gaXNzdWUgaGVyZSB3aXRoIGluZm9mcmFtZXM6IGN1cnJlbnQgY29k ZQo+PiAtCSAqIG9ubHkgdXBkYXRlcyB0aGVtIG9uIHRoZSBmdWxsIG1vZGUgc2V0IHBhdGggcGVy IGh3Cj4+IC0JICogcmVxdWlyZW1lbnRzLiAgU28gaGVyZSB3ZSBzaG91bGQgYmUgY2hlY2tpbmcg Zm9yIGFueQo+PiAtCSAqIHJlcXVpcmVkIGNoYW5nZXMgYW5kIGZvcmNpbmcgYSBtb2RlIHNldC4K Pj4gLQkgKi8KPj4gIGZhaWw6Cj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPj4gQEAgLTEyNTAwLDI5 ICsxMjQ5MSwyMSBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+ICAJCQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwo+PiAgCX0KPj4gIAo+ PiAtCVBJUEVfQ09ORl9DSEVDS19JKHBpcGVfc3JjX3cpOwo+PiAtCVBJUEVfQ09ORl9DSEVDS19J KHBpcGVfc3JjX2gpOwo+PiAtCj4+IC0JLyoKPj4gLQkgKiBGSVhNRTogQklPUyBsaWtlcyB0byBz ZXQgdXAgYSBjbG9uZWQgY29uZmlnIHdpdGggbHZkcytleHRlcm5hbAo+PiAtCSAqIHNjcmVlbi4g U2luY2Ugd2UgZG9uJ3QgeWV0IHJlLWNvbXB1dGUgdGhlIHBpcGUgY29uZmlnIHdoZW4gbW92aW5n Cj4+IC0JICoganVzdCB0aGUgbHZkcyBwb3J0IGF3YXkgdG8gYW5vdGhlciBwaXBlIHRoZSBzdyB0 cmFja2luZyB3b24ndCBtYXRjaC4KPj4gLQkgKgo+PiAtCSAqIFByb3BlciBhdG9taWMgbW9kZXNl dHMgd2l0aCByZWNvbXB1dGVkIGdsb2JhbCBzdGF0ZSB3aWxsIGZpeCB0aGlzLgo+PiAtCSAqIFVu dGlsIHRoZW4ganVzdCBkb24ndCBjaGVjayBnbWNoIHN0YXRlIGZvciBpbmhlcml0ZWQgbW9kZXMu Cj4+IC0JICovCj4+ICAJaWYgKCFQSVBFX0NPTkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktfSU5I RVJJVEVEX01PREUpKSB7Cj4gVGhpcyBzZWVtcyBsaWtlIGEgc2VwYXJhdGUgY2hhbmdlIC0gd2l0 aCByZWNvbXB1dGluZyBzdGF0ZSBvbiBhbGwgcGlwZXMKPiB1bmNvbmRpdGlvbmFsbHkgd2Ugc2hv dWxkIGJlIGFibGUgdG8gZHJvcCB0aGlzPwpXZSByZXB1cnBvc2UgaW5oZXJpdGVkIG1vZGUgaGVy ZSB0byBza2lwIHNvbWUgY2hlY2tzIG9uIGZpcnN0IGJvb3QgdGhhdCB3aWxsIGJlIHBhdGNoZWQg dXAgb24gZmlyc3QgYXRvbWljIGNvbW1pdC4KCj4+IC0JCVBJUEVfQ09ORl9DSEVDS19JKGdtY2hf cGZpdC5jb250cm9sKTsKPj4gLQkJLyogcGZpdCByYXRpb3MgYXJlIGF1dG9jb21wdXRlZCBieSB0 aGUgaHcgb24gZ2VuNCsgKi8KPj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKPj4g LQkJCVBJUEVfQ09ORl9DSEVDS19JKGdtY2hfcGZpdC5wZ21fcmF0aW9zKTsKPj4gLQkJUElQRV9D T05GX0NIRUNLX0koZ21jaF9wZml0Lmx2ZHNfYm9yZGVyX2JpdHMpOwo+PiAtCX0KPj4gKwkJUElQ RV9DT05GX0NIRUNLX0kocGlwZV9zcmNfdyk7Cj4+ICsJCVBJUEVfQ09ORl9DSEVDS19JKHBpcGVf c3JjX2gpOwo+PiArCj4+ICsJCVBJUEVfQ09ORl9DSEVDS19JKHBjaF9wZml0LmVuYWJsZWQpOwo+ PiArCQlpZiAoY3VycmVudF9jb25maWctPnBjaF9wZml0LmVuYWJsZWQpIHsKPj4gKwkJCVBJUEVf Q09ORl9DSEVDS19JKHBjaF9wZml0LnBvcyk7Cj4+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfSShwY2hf cGZpdC5zaXplKTsKPj4gIAo+PiAtCVBJUEVfQ09ORl9DSEVDS19JKHBjaF9wZml0LmVuYWJsZWQp Owo+PiAtCWlmIChjdXJyZW50X2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewo+PiAtCQlQSVBF X0NPTkZfQ0hFQ0tfSShwY2hfcGZpdC5wb3MpOwo+PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfSShwY2hf cGZpdC5zaXplKTsKPj4gKwkJCVBJUEVfQ09ORl9DSEVDS19JKGdtY2hfcGZpdC5jb250cm9sKTsK Pj4gKwkJCS8qIHBmaXQgcmF0aW9zIGFyZSBhdXRvY29tcHV0ZWQgYnkgdGhlIGh3IG9uIGdlbjQr ICovCj4+ICsJCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+PiArCQkJCVBJUEVfQ09O Rl9DSEVDS19JKGdtY2hfcGZpdC5wZ21fcmF0aW9zKTsKPj4gKwkJCVBJUEVfQ09ORl9DSEVDS19J KGdtY2hfcGZpdC5sdmRzX2JvcmRlcl9iaXRzKTsKPj4gKwkJfQo+PiAgCX0KPj4gIAo+PiAgCVBJ UEVfQ09ORl9DSEVDS19JKHNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQpOwo+PiBAQCAtMTMwNTcsMjYg KzEzMDQwLDE4IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+ICAJZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+PiAtCQlpZiAoIWNydGNf c3RhdGUtPmVuYWJsZSkgewo+PiAtCQkJaWYgKG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4+ IC0JCQkJYW55X21zID0gdHJ1ZTsKPj4gKwkJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUp KQo+PiAgCQkJY29udGludWU7Cj4+IC0JCX0KPj4gIAo+PiAtCQlpZiAoIW5lZWRzX21vZGVzZXQo Y3J0Y19zdGF0ZSkpIHsKPj4gLQkJCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5l Y3RvcnMoc3RhdGUsIGNydGMpOwo+PiAtCQkJaWYgKHJldCkKPj4gLQkJCQlyZXR1cm4gcmV0Owo+ PiAtCQl9Cj4+ICsJCWFueV9tcyA9IHRydWU7Cj4+ICsJCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxl KQo+PiArCQkJY29udGludWU7Cj4+ICAKPj4gIAkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2Nv bmZpZyhjcnRjLAo+PiAgCQkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpKTsKPj4g IAkJaWYgKHJldCkKPj4gIAkJCXJldHVybiByZXQ7Cj4+ICAKPj4gLQkJaWYgKG5lZWRzX21vZGVz ZXQoY3J0Y19zdGF0ZSkpCj4+IC0JCQlhbnlfbXMgPSB0cnVlOwo+PiAtCj4+ICAJCWludGVsX2R1 bXBfcGlwZV9jb25maWcodG9faW50ZWxfY3J0YyhjcnRjKSwKPj4gIAkJCQkgICAgICAgdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSwKPj4gIAkJCQkgICAgICAgIlttb2Rlc2V0XSIpOwo+ PiBAQCAtMTMxNDcsNyArMTMxMjIsMTAgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gIAkJaWYgKG5lZWRzX21vZGVzZXQoY3J0 Yy0+c3RhdGUpICYmIGNydGMtPnN0YXRlLT5hY3RpdmUpIHsKPj4gIAkJCXVwZGF0ZV9zY2FubGlu ZV9vZmZzZXQodG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2VuYWJsZShjcnRjKTsKPj4gLQkJfQo+PiArCQl9IGVsc2UgaWYgKHRvX2ludGVsX2NydGNf c3RhdGUoY3J0Y19zdGF0ZSktPnF1aXJrcyAmCj4+ICsJCQkgICBQSVBFX0NPTkZJR19RVUlSS19J TkhFUklURURfTU9ERSkKPj4gKwkJCS8qIGZvcmNlIGh3IHJlYWRvdXQgY2hlY2sgKi8KPj4gKwkJ CWFueV9tcyA9IHRydWU7Cj4gSW1vIHRoaXMgc2hvdWxkIGJlIGEgc2VwYXJhdGUgcGF0Y2ggc2lu Y2UgZm9yY2luZyBhIG1vZGVzZXQgY2hlY2sgYWZ0ZXIKPiB0aGUgaW5pdGlhbCB0YWtlb3ZlciBp cyBhIGdvb2QgdGhpbmcuIEFsc28gbWF5YmUgZG8gYQo+IHMvYW55X21zL2RvX21vZGVzZXRfY2hl Y2tzLyBmb3IgY2xhcml0eSBvZiB3aGF0IHRoaXMgZG9lcy4KSXQncyB1c2VkIGZvciBvdGhlciBy ZWFzb25zIHRvbywgbGlrZSB1cGRhdGluZyBwb3dlciBkb21haW5zIHdoZW4gY3J0YyBzdGF0ZXMg Y2hhbmdlLiBTbyBkb19tb2Rlc2V0X2NoZWNrcyB3b3VsZCBiZSBtaXNsZWFkaW5nLgo+PiAgCj4+ ICAJCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25fY3J0YyhjcnRjX3N0YXRlKTsK Pj4gIAl9Cj4+IEBAIC0xMzQzMCw4ICsxMzQwOCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19z ZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKPj4gIAlpZiAocmV0KQo+PiAgCQln b3RvIG91dDsKPj4gIAo+PiAtCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0Yyhz ZXQtPmNydGMpKTsKPj4gLQo+PiAgCXJldCA9IGludGVsX3NldF9tb2RlX2NoZWNrZWQoc3RhdGUp Owo+PiAgCWlmIChyZXQpIHsKPj4gIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHNldCBtb2Rl IG9uIFtDUlRDOiVkXSwgZXJyID0gJWRcbiIsCj4+IEBAIC0xMzcxOCwxMCArMTM2OTQsNiBAQCBp bnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gIAlp ZiAoIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAtCWlmIChzdGF0 ZS0+dmlzaWJsZSkKPj4gLQkJLyogRklYTUU6IGtpbGwgdGhpcyBmYXN0Ym9vdCBoYWNrICovCj4+ IC0JCWludGVsX3VwZGF0ZV9waXBlX3NpemUoaW50ZWxfY3J0Yyk7Cj4+IC0KPj4gIAlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZShjcnRjLCBmYiwgY3J0Yy0+eCwgY3J0Yy0+ eSk7Cj4+ICB9Cj4+ICAKPj4gQEAgLTEzNzQxLDYgKzEzNzEzLDggQEAgc3RhdGljIHZvaWQgaW50 ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+PiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+ICsJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9pbnRlbF9zdGF0ZSA9Cj4+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNf c3RhdGUpOwo+PiAgCj4+ICAJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKPj4gIAkJ aW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPj4gQEAgLTEzNzU2LDcgKzEzNzMw LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPj4gIAkJCWludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMsCj4+ICAJ CQkJCQkmaW50ZWxfY3J0Yy0+YXRvbWljLnN0YXJ0X3ZibF9jb3VudCk7Cj4+ICAKPj4gLQlpZiAo IW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp Cj4+ICsJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBjcnRjLT5zdGF0ZS0+YWN0 aXZlICYmCj4+ICsJICAgIG9sZF9pbnRlbF9zdGF0ZS0+cXVpcmtzICYgUElQRV9DT05GSUdfUVVJ UktfSU5IRVJJVEVEX01PREUpCj4+ICsJCWludGVsX3VwZGF0ZV9mYXN0Ym9vdChpbnRlbF9jcnRj LCBvbGRfaW50ZWxfc3RhdGUpOwo+IE5hY2ssIGZhc3Rib290IG9ubHkgZm9yIHRoZSBpbml0aWFs IG1vZGUgaXMgbm90IHdoYXQgSSB3YW50LiBXZSBzaG91bGQgYmUKPiBhYmxlIHRvIHNwZWVkIHVw IF9hbnlfIG1vZGVzZXQgd2hlcmUgd2UganVzdCBkaXNhYmxlIHRoZSBwZml0LiBBbGxvd2luZwo+ IGZhc3QgcGZpdCByZW1vdmFsIHVuY29uZGl0aW9uYWxseSB3aWxsIGFsc28gYWxsb3cgdXMgdG8g ZWFzaWx5IHRlc3QgdGhpcwo+IHBhcnQgb2YgZmFzdGJvb3Qgd2l0aCBhbiBpZ3QsIHdoaWNoIEkn ZCBhbHNvIGxpa2UgdG8gc2VlLgpZb3UncmUgcmlnaHQsIGJ1dCBJIHRoaW5rIGJlY2F1c2UgdGhp cyBuZWVkcyBtb3JlIGluZnJhc3RydWN0dXJlLiBJIG9ubHkgd2FudCB0byBjb252ZXJ0IGZhc3Ri b290IGF0IGZpcnN0LgpGb3IgTVNUIHdlIG1pZ2h0IGFsc28gbmVlZCBhIHZhcmlhbnQgd2hpY2gg b25seSBwZXJmb3JtcyBhIHBpcGUgbW9kZXNldCwgcmF0aGVyIHRoYW4gYSBmdWxsIG1vZGVzZXQu ClN0aWxsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB3ZSB3aWxsIG5lZWQgdG8gZm9yY2UgYSBtb2Rl c2V0IHJlZ2FyZGxlc3MsIGZvciBleGFtcGxlIHdoZW4gZGV2aWNlIGZyZXF1ZW5jeQpjaGFuZ2Vz LgoKSW4gZWl0aGVyIGNhc2UgdGhpcyBwcm9iYWJseSByZXF1aXJlcyBhIGxvdCBvZiBjb2RlIG1h eSBkaWZmZXIgb24gZWFjaCBwbGF0Zm9ybS4gOigKCj4+ICsJZWxzZSBpZiAoIW5lZWRzX21vZGVz ZXQoY3J0Yy0+c3RhdGUpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4+ICAJCXNrbF9k ZXRhY2hfc2NhbGVycyhpbnRlbF9jcnRjKTsKPiBBbHNvIEkgdGhpbmsgaXQnZCBiZSBjbGVhcmVy IGlmIHdlIGhhdmUgc3RhdGUgZmxhZ3MgKGxpa2UgZm9yIHRoZSBwYWdlZmxpcAo+IHN0dWZmKSBp biBjcnRjX3N0YXRlIHRvIGVuYWJsZSB0aGVzZSBmaXh1cCBmdW5jdGlvbnMgb24gYW4gYXMtbmVl ZGVkCj4gYmFzaXMuCkkgdGhpbmsgdGhpcyBjYWxsIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgcGxh bmUgY29tbWl0IGZ1bmN0aW9uIGluc3RlYWQsIHdpdGggYSBzaW5nbGUKZGV0YWNoX3NjYWxlciB0 byBkaXNhYmxlIHRoZSByZWxldmFudCBzY2FsZXIsIGlmIHRoZSBzY2FsZXIncyBub3QgdXNlZCBh ZnRlcndhcmRzLgoKZmFzdGJvb3QgdXBkYXRlcyB3b3VsZCBkaXNhYmxlIGl0IGZvciB0aGUgY3J0 YywgZWxpbWluYXRpbmcgdGhlIG5lZWQgdG8gY2FsbCBpdCBzZXBhcmF0ZWx5LgoKPj4gIH0KPj4g IAo+PiBAQCAtMTUwOTYsNiArMTUwNzMsMTE0IEBAIGludGVsX2NoZWNrX3BsYW5lX21hcHBpbmco c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICAJcmV0dXJuIHRydWU7Cj4+ICB9Cj4+ICAKPj4g K3N0YXRpYyBib29sCj4+ICtpbnRlbF9jb21wYXJlX21fbih1bnNpZ25lZCBpbnQgbSwgdW5zaWdu ZWQgaW50IG4sCj4+ICsJCSAgdW5zaWduZWQgaW50IG0yLCB1bnNpZ25lZCBpbnQgbjIpCj4+ICt7 Cj4+ICsJaWYgKG0gPT0gbTIgJiYgbiA9PSBuMikKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICsKPj4g KwlpZiAoIW0gfHwgIW4gfHwgIW0yIHx8ICFuMikKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCj4+ ICsJaWYgKG0gPiBtMikgewo+PiArCQl3aGlsZSAobSA+IG0yKSB7Cj4+ICsJCQltID4+PSAxOwo+ PiArCQkJbiA+Pj0gMTsKPj4gKwkJfQo+PiArCX0gZWxzZSBpZiAobSA8IG0yKSB7Cj4+ICsJCXdo aWxlIChtIDwgbTIpIHsKPj4gKwkJCW0yID4+PSAxOwo+PiArCQkJbjIgPj49IDE7Cj4+ICsJCX0K Pj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gbSA9PSBtMiAmJiBuID09IG4yOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgYm9vbAo+PiAraW50ZWxfY29tcGFyZV9saW5rX21fbihjb25zdCBzdHJ1Y3QgaW50 ZWxfbGlua19tX24gKm1fbiwKPj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9saW5rX21f biAqbTJfbjIpCj4+ICt7Cj4+ICsJaWYgKG1fbi0+dHUgPT0gbTJfbjItPnR1ICYmCj4+ICsJICAg IGludGVsX2NvbXBhcmVfbV9uKG1fbi0+Z21jaF9tLCBtX24tPmdtY2hfbiwKPj4gKwkJCSAgICAg IG0yX24yLT5nbWNoX20sIG0yX24yLT5nbWNoX24pICYmCj4+ICsJICAgIGludGVsX2NvbXBhcmVf bV9uKG1fbi0+bGlua19tLCBtX24tPmxpbmtfbiwKPj4gKwkJCSAgICAgIG0yX24yLT5saW5rX20s IG0yX24yLT5saW5rX24pKQo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiBmYWxz ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaW50ZWxfZmFzdGJvb3RfY2FsY19tb2Rlc2V0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqaHdfc3RhdGUsCj4+ICsJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZykKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4+ ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgc3dfc3RhdGU7Cj4+ICsKPj4gKwlpZiAobmVlZHNf bW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpKSB7Cj4+ICsJCURSTV9ERUJVR19LTVMoIlNraXBw aW5nIGZhc3Rib290IGNoZWNrcywgbW9kZXNldCBmb3JjZWRcbiIpOwo+PiArCQlyZXR1cm47Cj4+ ICsJfQo+PiArCj4+ICsJbWVtc2V0KCZzd19zdGF0ZSwgMCwgc2l6ZW9mKHN3X3N0YXRlKSk7Cj4+ ICsJc3dfc3RhdGUuYmFzZSA9IHBpcGVfY29uZmlnLT5iYXNlOwo+PiArCXN3X3N0YXRlLnNjYWxl cl9zdGF0ZSA9IHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4+ICsJc3dfc3RhdGUuc2hhcmVk X2RwbGwgPSBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGw7Cj4+ICsJc3dfc3RhdGUuZHBsbF9od19z dGF0ZSA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlOwo+PiArCXN3X3N0YXRlLmRkaV9wbGxf c2VsID0gcGlwZV9jb25maWctPmRkaV9wbGxfc2VsOwo+PiArCWludGVsX21vZGVzZXRfcGlwZV9j b25maWcoJmNydGMtPmJhc2UsICZzd19zdGF0ZSk7Cj4+ICsJc3dfc3RhdGUucXVpcmtzID0gaHdf c3RhdGUtPnF1aXJrcyAmIFBJUEVfQ09ORklHX1FVSVJLX01PREVfU1lOQ19GTEFHUzsKPj4gKwo+ PiArCWlmIChpbnRlbF9jb21wYXJlX2xpbmtfbV9uKCZzd19zdGF0ZS5mZGlfbV9uLCAmaHdfc3Rh dGUtPmZkaV9tX24pKQo+PiArCQlzd19zdGF0ZS5mZGlfbV9uID0gaHdfc3RhdGUtPmZkaV9tX247 Cj4+ICsKPj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4KSB7Cj4+ICsJCWlmIChpbnRl bF9jb21wYXJlX2xpbmtfbV9uKCZzd19zdGF0ZS5kcF9tX24sCj4+ICsJCQkJCSAgICZod19zdGF0 ZS0+ZHBfbV9uKSkKPj4gKwkJCXN3X3N0YXRlLmRwX21fbiA9IGh3X3N0YXRlLT5kcF9tX247Cj4+ ICsKPj4gKwkJaWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmRwX20yX24yLAo+ PiArCQkJCQkgICAmaHdfc3RhdGUtPmRwX20yX24yKSkKPj4gKwkJCXN3X3N0YXRlLmRwX20yX24y ID0gaHdfc3RhdGUtPmRwX20yX24yOwo+PiArCX0gZWxzZSB7Cj4+ICsJCWlmIChpbnRlbF9jb21w YXJlX2xpbmtfbV9uKCZzd19zdGF0ZS5kcF9tX24sCj4+ICsJCQkJCSAgICZod19zdGF0ZS0+ZHBf bV9uKSkgewo+PiArCQkJc3dfc3RhdGUuZHBfbV9uID0gaHdfc3RhdGUtPmRwX21fbjsKPj4gKwkJ CWh3X3N0YXRlLT5kcF9tMl9uMiA9IHN3X3N0YXRlLmRwX20yX24yOwo+PiArCQl9IGVsc2UgaWYg KGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmRwX20yX24yLAo+PiArCQkJCQkJICAm aHdfc3RhdGUtPmRwX21fbikpIHsKPj4gKwkJCXN3X3N0YXRlLmRwX20yX24yID0gaHdfc3RhdGUt PmRwX21fbjsKPj4gKwo+PiArCQkJaHdfc3RhdGUtPmRwX21fbiA9IHN3X3N0YXRlLmRwX21fbjsK Pj4gKwkJCWh3X3N0YXRlLT5kcF9tMl9uMiA9IHN3X3N0YXRlLmRwX20yX24yOwo+PiArCQl9Cj4+ ICsJfQo+IE5vdCB0b28gaGFwcHkgd2l0aCBzcGxpdHRpbmcgdXAgdGhlIG1vZGVzZXQgc3RhdGUg Y29tcGFyZSBjb2RlIGxpa2UgdGhpcy4KPiBJZiB3ZSBhZGQgZW51bSBtb2RlIHsgRVhBQ1QsIENP TVBBVElCTEUgfSB0byBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlIHdlCj4gY291bGQgdGllIHRo aW5ncyB0b2dldGhlciB3ZWxsIGFuZCBoYXZlIGFsbCB0aGUgcGlwZSBjb25maWcgY29kZSBncm91 cGVkCj4gaW4gb25lIHBsYWNlLiBCdXQgdGhlbiB0aGUgX2NvbXBhcmUoKSBpcyBhIGJpdCBtaXNs ZWFkaW5nIHNpbmNlIGl0J2QgYWxzbwo+IHVwZGF0ZSB0aGUgc3dfc3RhdGUsIHNvIG1heWJlIGJl dHRlciB0byBjYWxsIGl0IGNvbXBhcmVfYW5kX2FqdXN0LgpPciBwYXNzIGEgYm9vbCBhZGp1c3Qs IHNpbmNlIGNoZWNraW5nIHN0YXRlIGFmdGVyIGEgbW9kZXNldCBuZWVkcyB0byBtYXRjaCBleGFj dGx5LAphbmQgbm8gYWRqdXN0bWVudCBjYW4gYmUgZG9uZS4KCj4gVGhlIG1hY3JvcyB3b3VsZCB0 aGVuIGVpdGhlciBjb3B5IHRoZSBod19zdGF0ZSB0byBzd19zdGF0ZSAoaWYgaXQncyBzb21lCj4g aW50ZXJtZWRpYXRlIHN0YXRlIHdlIGRvbid0IGNhcmUgYWJvdXQpIG9yIGNvbXBhcmUgaXQgKHdp dGggbWF5YmUgc29tZQo+IGFkanVzdG1lbnRzIG1hZGUpLiBCdXQgSSdkIHJlYWxseSBsaWtlIHRv IGhhdmUgYWxsIHRoYXQgY29tcGFyZS9hZGp1c3QKPiBsb2dpYyBpbiBvbmUgcGxhY2UgaWYgcG9z c2libGUuCj4KPj4gKwo+PiArCS8qIENoZWNrIGlmIHdlIG5lZWQgdG8gZm9yY2UgYSBtb2Rlc2V0 ICovCj4+ICsJaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwgJnN3X3N0YXRlLCBo d19zdGF0ZSwgdHJ1ZSkpIHsKPj4gKwkJRFJNX0lORk8oIltDUlRDOiVpXSBzdyBzdGF0ZSBpbmNv bXBhdGlibGUsIGZvcmNpbmcgbW9kZXNldFxuIiwKPj4gKwkJCSBjcnRjLT5iYXNlLmJhc2UuaWQp Owo+PiArCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+PiArCX0gZWxz ZSB7Cj4+ICsJCURSTV9JTkZPKCJbQ1JUQzolaV0gc3cgc3RhdGUgYW5kIGh3IHN0YXRlIGZhc3Ri b290IGNvbXBhdGlibGVcbiIsCj4+ICsJCQkgY3J0Yy0+YmFzZS5iYXNlLmlkKTsKPj4gKwo+PiAr CQkqcGlwZV9jb25maWcgPSBzd19zdGF0ZTsKPj4gKwkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhj cnRjLCBwaXBlX2NvbmZpZywKPj4gKwkJCQkgICAgICAgIltuZXcgZmFzdGJvb3Qgc3RhdGVdIik7 Cj4+ICsKPj4gKwkJLyogcHJldmVudCBhIG1vZGVzZXQgYnkgcGF0Y2hpbmcgdXAgbW9kZSBzdHJ1 Y3QgKi8KPj4gKwo+PiArCQlod19zdGF0ZS0+YmFzZS5tb2RlLnR5cGUgPSBwaXBlX2NvbmZpZy0+ YmFzZS5tb2RlLnR5cGUgPQo+PiArCQlod19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLnR5cGUg PSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLnR5cGU7Cj4+ICsKPj4gKwkJLyogY2xv Y2sgcmVhZG91dCBjYW4gYmUgYXBwcm94aW1hdGUsIGp1c3QgY29weSBpdC4gKi8KPj4gKwkJaHdf c3RhdGUtPmJhc2UubW9kZS5jbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLm1vZGUuY2xvY2sgPSBw aXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNsb2NrOwo+IFdoeSBkbyB3ZSBzdGlsbCBu ZWVkIHRoaXM/IElmIHdlIHVzZSBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlIHRvIGNvbXB1dGUK PiBtb2RlX2NoYW5nZWQgdGhlbiB3ZSBob3BlZnVsbHkgZG9uJ3QgbmVlZCB0byBoYWNrIGFyb3Vu ZCB0aGluZ3MgYW55IG1vcmUuCj4gSSBndWVzcyB0aGlzIGlzIHdoZXJlIHdlIG5lZWQgeW91ciBw bGFuIHRvIHNwbGl0IG91dCBjb25uZWN0b3JfY2hhbmdlZAo+IGZyb20gbW9kZV9jaGFuZ2VkIGFu ZCB0aGVuIHJlcGxhY2UgdGhlIG1vZGVfY2hhbmdlZCBjb21wdXRlZCBieSB0aGUKPiBoZWxwZXJz IGJ5IHdoYXQgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZSB0aGluZ3MgaXMganVzdGlmaWVkLgpN eSBkaXNwbGF5IGhhcyBhIHNsaWdodGx5IGRpZmZlcmVudCBjbG9jayBhbmQgbW9kZS0+dHlwZSBp biBlZGlkLiBQYXRjaGluZyB0aGlzIHVwIHByZXZlbnRlZCB0aGUgbW9kZXNldC4KVGhlcmUgY2Fu IGFsc28gYmUgb3RoZXIgcmVhc29ucyBmb3IgbW9kZXNldCwgbGlrZSBDRENMSyBjaGFuZ2VzLgoK Pj4gKwl9Cj4+ICt9Cj4+ICsKPj4gIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnLAo+PiAgCQkJCWJvb2wgZm9yY2VfcmVzdG9yZSkKPj4gQEAgLTE1MTM1LDM3ICsx NTIyMCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+PiAgCQlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgPSAhIWVuYWJsZTsKPj4g IAl9Cj4+ICAKPj4gLQlpZiAoaHdfc3RhdGUtPnF1aXJrcyAmIFBJUEVfQ09ORklHX1FVSVJLX1dS T05HX1BMQU5FKSB7Cj4+IC0JCWlmIChmb3JjZV9yZXN0b3JlIHx8IGk5MTUuZmFzdGJvb3QpCj4+ IC0JCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+PiAtCQllbHNlCj4+ IC0JCQlwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgPSBmYWxzZTsKPj4gLQl9Cj4+IC0KPj4gLQkv KiBYWFg6IFRoaXMgaXMgbmVlZHMgdG8gYmUgbW9kaWZpZWQgZm9yIG1ha2luZyBmYXN0Ym9vdCBw b3NzaWJsZQo+PiAtCSAqIGJ5IGRlZmF1bHQgd2l0aG91dCByZXF1aXJpbmcgYSBtb2Rlc2V0Lgo+ PiAtCSAqLwo+PiAtCWlmIChod19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYgcGlwZV9jb25maWctPmJh c2UuYWN0aXZlKSB7Cj4+IC0JCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHN3X3N0YXRlOwo+PiAt Cj4+IC0JCW1lbXNldCgmc3dfc3RhdGUsIDAsIHNpemVvZihzd19zdGF0ZSkpOwo+PiAtCQlzd19z dGF0ZS5iYXNlID0gcGlwZV9jb25maWctPmJhc2U7Cj4+IC0JCXN3X3N0YXRlLnNjYWxlcl9zdGF0 ZSA9IHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4+IC0JCXN3X3N0YXRlLnNoYXJlZF9kcGxs ID0gcGlwZV9jb25maWctPnNoYXJlZF9kcGxsOwo+PiAtCQlzd19zdGF0ZS5kcGxsX2h3X3N0YXRl ID0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGU7Cj4+IC0JCXN3X3N0YXRlLmRkaV9wbGxfc2Vs ID0gcGlwZV9jb25maWctPmRkaV9wbGxfc2VsOwo+PiAtCj4+IC0JCWludGVsX21vZGVzZXRfcGlw ZV9jb25maWcoJmNydGMtPmJhc2UsICZzd19zdGF0ZSk7Cj4+IC0KPj4gLQkJLyogQ2hlY2sgaWYg d2UgbmVlZCB0byBmb3JjZSBhIG1vZGVzZXQgKi8KPj4gLQkJaWYgKCFpbnRlbF9waXBlX2NvbmZp Z19jb21wYXJlKGRldiwgJnN3X3N0YXRlLCBod19zdGF0ZSwgIWk5MTUuZmFzdGJvb3QpKSB7Cj4+ IC0JCQlEUk1fREVCVUdfS01TKCJzdyBhbmQgaHcgc3RhdGUgZGlmZmVyLCBmb3JjaW5nIG1vZGVz ZXRcbiIpOwo+PiAtCQkJcGlwZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPj4g LQkJfSBlbHNlIHsKPj4gLQkJCSpwaXBlX2NvbmZpZyA9IHN3X3N0YXRlOwo+PiAtCQl9Cj4+IC0J fQo+PiArCWlmIChod19zdGF0ZS0+cXVpcmtzICYgUElQRV9DT05GSUdfUVVJUktfV1JPTkdfUExB TkUpCj4+ICsJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4+ICAKPj4g KwllbHNlIGlmIChod19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYgcGlwZV9jb25maWctPmJhc2UuYWN0 aXZlKQo+PiArCQlpbnRlbF9mYXN0Ym9vdF9jYWxjX21vZGVzZXQoY3J0YywgaHdfc3RhdGUsIHBp cGVfY29uZmlnKTsKPj4gIAo+PiAgCWlmIChkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFf Rk9SQ0UgJiYgIWh3X3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgo+PiAgCSAgICBjcnRjLT5waXBlID09 IFBJUEVfQSAmJiAhcGlwZV9jb25maWctPmJhc2UuYWN0aXZlKSB7Cj4+IEBAIC0xNTU4NCw2ICsx NTY0Myw3IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgYm9vbCBmb3JjZV9yZXN0b3JlKQo+PiAgCQljcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdl ZCA9IGZhbHNlOwo+PiAgCj4+ICAJCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKSB7Cj4+ICsJCQlt ZW1zZXQoJmNydGMtPm1vZGUsIDAsIHNpemVvZihjcnRjLT5tb2RlKSk7Cj4+ICAJCQlpbnRlbF9t b2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGMtPm1vZGUsCj4+ICAJCQkJdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSkpOwo+PiAgCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZj cnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSwKPj4gQEAgLTE1Njc4LDkgKzE1NzM4LDEyIEBAIHZv aWQgaW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhCj4+ICAJCWludCBqOwo+PiAgCQlzdHJ1Y3QgZHJtX3BsYW5l ICpwcmltYXJ5ID0gYy0+cHJpbWFyeTsKPj4gIAo+PiArCQlpZiAoIWMtPnN0YXRlLT5hY3RpdmUp Cj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiAgCQlvYmogPSBpbnRlbF9mYl9vYmoocHJpbWFyeS0+ c3RhdGUtPmZiKTsKPj4gIAkJaWYgKG9iaiA9PSBOVUxMKQo+PiAtCQkJZ290byBkaXNhYmxlOwo+ PiArCQkJY29udGludWU7Cj4+ICAKPj4gIAkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+PiAgCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwcmltYXJ5LCBwcmltYXJ5 LT5zdGF0ZS0+ZmIsCj4+IEBAIC0xNTcxNSw2ICsxNTc3OCw4IEBAIHZvaWQgaW50ZWxfbW9kZXNl dF9nZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhCj4+ICAJCSAqLwo+PiAgCj4+ICBkaXNhYmxlOgo+PiArCQlEUk1fREVCVUdfS01TKCJb Q1JUQzolaV0gTm8gZmIgb3IgZm9yY2VkIGluYWN0aXZlLCBkaXNhYmxpbmcuXG4iLAo+PiArCQkJ ICAgICAgYy0+YmFzZS5pZCk7Cj4+ICAJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGNydGNfc3RhdGUt PmVuYWJsZSA9IGZhbHNlOwo+PiAgCj4+ICAJCXJldCA9IGRybV9hdG9taWNfc2V0X21vZGVfZm9y X2NydGMoY3J0Y19zdGF0ZSwgTlVMTCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ PiBpbmRleCA2YWM0OTkwYTBjMTEuLjJjNDk0ZDc4NjUyYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmRldi5jCj4+IEBAIC00ODYsMTUgKzQ4NiwxMCBAQCByZXRyeToKPj4gIAkJCSAq IGNvbmZpZywgbm90IHRoZSBpbnB1dCBtb2RlLCB3aGljaCBpcyB3aGF0IGNydGMtPm1vZGUKPj4g IAkJCSAqIHVzdWFsbHkgY29udGFpbnMuIEJ1dCBzaW5jZSBvdXIgY3VycmVudCBmYXN0Ym9vdAo+ PiAgCQkJICogY29kZSBwdXRzIGEgbW9kZSBkZXJpdmVkIGZyb20gdGhlIHBvc3QtcGZpdCB0aW1p bmdzCj4+IC0JCQkgKiBpbnRvIGNydGMtPm1vZGUgdGhpcyB3b3JrcyBvdXQgY29ycmVjdGx5LiBX ZSBkb24ndAo+PiAtCQkJICogdXNlIGh3bW9kZSBhbnl3aGVyZSByaWdodCBub3csIHNvIHVzZSBp dCBmb3IgdGhpcwo+PiAtCQkJICogc2luY2UgdGhlIGZiIGhlbHBlciBsYXllciB3YW50cyBhIHBv aW50ZXIgdG8KPj4gLQkJCSAqIHNvbWV0aGluZyB3ZSBvd24uCj4+ICsJCQkgKiBpbnRvIGNydGMt Pm1vZGUgdGhpcyB3b3JrcyBvdXQgY29ycmVjdGx5Lgo+PiAgCQkJICovCj4+ICAJCQlEUk1fREVC VUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+PiAg CQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+IC0JCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9j b25maWcoJmVuY29kZXItPmNydGMtPmh3bW9kZSwKPj4gLQkJCQkJCSAgICB0b19pbnRlbF9jcnRj KGVuY29kZXItPmNydGMpLT5jb25maWcpOwo+PiAgCQkJbW9kZXNbaV0gPSAmZW5jb2Rlci0+Y3J0 Yy0+aHdtb2RlOwo+PiAgCQl9Cj4+ICAJCWNydGNzW2ldID0gbmV3X2NydGM7Cj4+IEBAIC01ODQs OSArNTc5LDYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJkZXZfaW5pdF9iaW9zKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4+ICAJdW5z aWduZWQgaW50IG1heF9zaXplID0gMDsKPj4gIAo+PiAtCWlmICghaTkxNS5mYXN0Ym9vdCkKPj4g LQkJcmV0dXJuIGZhbHNlOwo+IEkgdGhpbmsgaXQnZCBiZSB1c2VmdWwgdG8gc3BsaXQgdGhlIGZi ZGV2IHBhcnQgb2YgdGhlIGZhc3Rib290IHJlbW92YWwgb3V0Cj4gaW50byBhIHNlcGFyYXRlIHBh dGNoLiBPciBkbyBJIG1pc3MgYSBkZXBlbmN5IGhlcmU/IEFzc3VtaW5nIG9mYyB0aGF0IHdlCj4g ZW5hYmxlIHRoZSBwZml0IHRyaWNrIGZvciBtb2Rlc2V0cyBpbiBnZW5lcmFsLgo+CkkgdGhpbmsg eW91IGRpZCBtaXNzIGEgZGVwZW5kZW5jeS4gTm90IGNvbXBldGVseSBzdXJlIHRob3VnaC4uCgp+ TWFhcnRlbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=