From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH 4/7] drm/i915: enable fastboot for everyone Date: Mon, 22 Jun 2015 17:21:00 +0200 Message-ID: <20150622152100.GR25769@phenom.ffwll.local> References: <1434700950-16242-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434700950-16242-5-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f176.google.com (mail-wi0-f176.google.com [209.85.212.176]) by gabe.freedesktop.org (Postfix) with ESMTP id 3069D6E7EF for ; Mon, 22 Jun 2015 08:18:13 -0700 (PDT) Received: by wiga1 with SMTP id a1so80147562wig.0 for ; Mon, 22 Jun 2015 08:18:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1434700950-16242-5-git-send-email-maarten.lankhorst@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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMTA6MDI6MjdBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTm93IHRoYXQgd2UgcmVhZCBvdXQgdGhlIGZ1bGwgYXRvbWljIHN0YXRlIHdl IGNhbiBmb3JjZSBmYXN0Ym9vdCB3aXRob3V0IGhhY2tzLgo+IFRoZSBvbmx5IHRoaW5nIHRoYXQg d2Ugd29ycnkgYWJvdXQgaXMgcHJldmVudGluZyBhIG1vZGVzZXQuIFRoaXMgY2FuIGJlIGVhc2ls eQo+IGRvbmUgYnkgY2FsY3VsYXRpbmcgaWYgc3cgc3RhdGUgbWF0Y2hlcyBodyBzdGF0ZSwgd2l0 aCBleGNlcHRpb24gZm9yIHBmaXQgYW5kCj4gcGlwZSBzaXplLiBTaW5jZSB0aGUgb3JpZ2luYWwg ZmFzdGJvb3QgY29kZSBvbmx5IHRvdWNoZWQgcGlwZSBzaXplIGFuZCBwYW5lbAo+IGZpdHRlciB3 ZSBrZWVwIHRob3NlLCBhbmQgY29tcGFyZSBmdWxsIHN3IHN0YXRlIGFnYWluc3QgaHcgc3RhdGUu Cj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuYyAgIHwgICA1IC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg MjcxICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2ZiZGV2LmMgICB8ICAxMCArLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE2OSBp bnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bh cmFtcy5jCj4gaW5kZXggOGFjNWExYjI5YWMwLi45YjM0NGE5NTZiYTYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBAQCAtNDEsNyArNDEsNiBAQCBzdHJ1Y3QgaTkxNV9wYXJh bXMgaTkxNSBfX3JlYWRfbW9zdGx5ID0gewo+ICAJLnByZWxpbWluYXJ5X2h3X3N1cHBvcnQgPSBJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9QUkVMSU1JTkFSWV9IV19TVVBQT1JUKSwKPiAgCS5k aXNhYmxlX3Bvd2VyX3dlbGwgPSAxLAo+ICAJLmVuYWJsZV9pcHMgPSAxLAo+IC0JLmZhc3Rib290 ID0gMCwKPiAgCS5wcmVmYXVsdF9kaXNhYmxlID0gMCwKPiAgCS5sb2FkX2RldGVjdF90ZXN0ID0g MCwKPiAgCS5yZXNldCA9IHRydWUsCj4gQEAgLTEzNywxMCArMTM2LDYgQEAgTU9EVUxFX1BBUk1f REVTQyhkaXNhYmxlX3Bvd2VyX3dlbGwsCj4gIG1vZHVsZV9wYXJhbV9uYW1lZChlbmFibGVfaXBz LCBpOTE1LmVuYWJsZV9pcHMsIGludCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxl X2lwcywgIkVuYWJsZSBJUFMgKGRlZmF1bHQ6IHRydWUpIik7Cj4gIAo+IC1tb2R1bGVfcGFyYW1f bmFtZWQoZmFzdGJvb3QsIGk5MTUuZmFzdGJvb3QsIGJvb2wsIDA2MDApOwo+IC1NT0RVTEVfUEFS TV9ERVNDKGZhc3Rib290LAo+IC0JIlRyeSB0byBza2lwIHVubmVjZXNzYXJ5IG1vZGUgc2V0cyBh dCBib290IHRpbWUgKGRlZmF1bHQ6IGZhbHNlKSIpOwo+IC0KPiAgbW9kdWxlX3BhcmFtX25hbWVk X3Vuc2FmZShwcmVmYXVsdF9kaXNhYmxlLCBpOTE1LnByZWZhdWx0X2Rpc2FibGUsIGJvb2wsIDA2 MDApOwo+ICBNT0RVTEVfUEFSTV9ERVNDKHByZWZhdWx0X2Rpc2FibGUsCj4gIAkiRGlzYWJsZSBw YWdlIHByZWZhdWx0aW5nIGZvciBwcmVhZC9wd3JpdGUvcmVsb2MgKGRlZmF1bHQ6ZmFsc2UpLiAi Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDliMmFjYzdiNGUyOS4u ZGU5NzVlZjA5ZTIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBA IC0xMTAsNiArMTEwLDcgQEAgc3RhdGljIHZvaWQgc2tsX2luaXRfc2NhbGVycyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3IKPiAgc3RhdGljIGludCBp OXh4X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAkJCSAgIGludCBudW1fY29ubmVjdG9ycyk7Cj4gIHN0YXRpYyB2b2lkIGludGVsX3ByZV9k aXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiArc3RhdGljIHZvaWQgc2t5 bGFrZV9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gIHN0YXRpYyBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqCj4gIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBmb3JjZV9yZXN0b3JlKTsKPiAgCj4gQEAgLTMyODks MTQgKzMyOTAsMTcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGluZ19mbGlwKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXJldHVybiBwZW5kaW5nOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ICtzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfZmFzdGJvb3Qoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKClRo YXQncyBub3QgYSB1c2VmdWwgcmVuYW1lIGltbyAtIHVwZGF0aW5nIHBmaXQvcGlwZV9zaXplIGNs ZWFybHkgdGVsbHMgdXMKd2hhdCdzIGdvaW5nIG9uLCBmYXN0Ym9vdCBpcyBtdWNoIG1vcmUgYSBt YXJrZXRpbmcgdGhpbmcgcmVhbGx5LiBBbmQgSQpleHBlY3QgdGhhdCBldmVudHVhbGx5IHdlJ2xs IGhhdmUgdG8gZ3JvdyBhIGxvdCBtb3JlIHVwZGF0ZSBjb2RlIHRvIGZpeCB1cApmYXN0Ym9vdC4K Cj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQlpZiAoIWk5MTUuZmFzdGJvb3QpCj4gLQkJcmV0dXJu Owo+ICsJRFJNX0RFQlVHX0tNUygiQXBwbHlpbmcgZmFzdGJvb3QgcXVpcmtzLCAlaXglaSAtPiAl aXglaVxuIiwKPiArCQkgICAgICBvbGRfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdywgb2xkX2NydGNf c3RhdGUtPnBpcGVfc3JjX2gsCj4gKwkJICAgICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBp cGVfY29uZmlnLT5waXBlX3NyY19oKTsKPiAgCj4gIAkvKgo+ICAJICogVXBkYXRlIHBpcGUgc2l6 ZSBhbmQgYWRqdXN0IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKPiBA QCAtMzMwNSwyNyArMzMwOSwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9zaXpl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJICogZmFzdGJvb3QgY2FzZSwgd2UnbGwgZmxp cCwgYnV0IGlmIHdlIGRvbid0IHVwZGF0ZSB0aGUgcGlwZXNyYyBhbmQKPiAgCSAqIHBmaXQgc3Rh dGUsIHdlJ2xsIGVuZCB1cCB3aXRoIGEgYmlnIGZiIHNjYW5uZWQgb3V0IGludG8gdGhlIHdyb25n Cj4gIAkgKiBzaXplZCBzdXJmYWNlLgo+IC0JICoKPiAtCSAqIFRvIGZpeCB0aGlzIHByb3Blcmx5 LCB3ZSBuZWVkIHRvIGhvaXN0IHRoZSBjaGVja3MgdXAgaW50bwo+IC0JICogY29tcHV0ZV9tb2Rl X2NoYW5nZXMgKG9yIGFib3ZlKSwgY2hlY2sgdGhlIGFjdHVhbCBwZml0IHN0YXRlIGFuZAo+IC0J ICogd2hldGhlciB0aGUgcGxhdGZvcm0gYWxsb3dzIHBmaXQgZGlzYWJsZSB3aXRoIHBpcGUgYWN0 aXZlLCBhbmQgb25seQo+IC0JICogdGhlbiB1cGRhdGUgdGhlIHBpcGVzcmMgYW5kIHBmaXQgc3Rh dGUsIGV2ZW4gb24gdGhlIGZsaXAgcGF0aC4KPiAgCSAqLwo+ICAKPiAtCWFkanVzdGVkX21vZGUg PSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gLQo+ICAJSTkxNV9XUklURShQ SVBFU1JDKGNydGMtPnBpcGUpLAo+IC0JCSAgICgoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSAtIDEpIDw8IDE2KSB8Cj4gLQkJICAgKGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgLSAx KSk7Cj4gLQlpZiAoIWNydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCAmJgo+IC0JICAgIChp bnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSB8fAo+IC0JICAgICBp bnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09VVFBVVF9FRFApKSkgewo+ICsJCSAgICgo cGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKSA8PCAxNikgfAo+ICsJCSAgIChwaXBlX2NvbmZp Zy0+cGlwZV9zcmNfaCAtIDEpKTsKPiArCj4gKwkvKiBvbiBza3lsYWtlIHRoaXMgaXMgZG9uZSBi eSBkZXRhY2hpbmcgc2NhbGVycyAqLwo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDkp IHsKPiArCQlza2xfZGV0YWNoX3NjYWxlcnMoY3J0Yyk7Cj4gKwo+ICsJCWlmIChwaXBlX2NvbmZp Zy0+cGNoX3BmaXQuZW5hYmxlZCkKPiArCQkJc2t5bGFrZV9wZml0X2VuYWJsZShjcnRjKTsKPiAr CX0KPiArCWVsc2UgaWYgKCFwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCAmJgo+ICsJICAg IG9sZF9jcnRjX3N0YXRlLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi RGlzYWJsaW5nIHBhbmVsIGZpdHRlclxuIik7Cj4gKwo+ICAJCUk5MTVfV1JJVEUoUEZfQ1RMKGNy dGMtPnBpcGUpLCAwKTsKPiAgCQlJOTE1X1dSSVRFKFBGX1dJTl9QT1MoY3J0Yy0+cGlwZSksIDAp Owo+ICAJCUk5MTVfV1JJVEUoUEZfV0lOX1NaKGNydGMtPnBpcGUpLCAwKTsKPiAgCX0KPiAtCWNy dGMtPmNvbmZpZy0+cGlwZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4g LQljcnRjLT5jb25maWctPnBpcGVfc3JjX2ggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5 Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiBAQCAtMTIyNDQsMTkgKzEyMjQ4LDYgQEAgZW5jb2Rlcl9yZXRyeToK PiAgCURSTV9ERUJVR19LTVMoInBsYW5lIGJwcDogJWksIHBpcGUgYnBwOiAlaSwgZGl0aGVyaW5n OiAlaVxuIiwKPiAgCQkgICAgICBiYXNlX2JwcCwgcGlwZV9jb25maWctPnBpcGVfYnBwLCBwaXBl X2NvbmZpZy0+ZGl0aGVyKTsKPiAgCj4gLQkvKiBDaGVjayBpZiB3ZSBuZWVkIHRvIGZvcmNlIGEg bW9kZXNldCAqLwo+IC0JaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVkaW8gIT0KPiAtCSAgICB0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+aGFzX2F1ZGlvKSB7Cj4gLQkJcGlwZV9jb25m aWctPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAtCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9h ZmZlY3RlZF9wbGFuZXMoc3RhdGUsIGNydGMpOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBOb3Rl IHdlIGhhdmUgYW4gaXNzdWUgaGVyZSB3aXRoIGluZm9mcmFtZXM6IGN1cnJlbnQgY29kZQo+IC0J ICogb25seSB1cGRhdGVzIHRoZW0gb24gdGhlIGZ1bGwgbW9kZSBzZXQgcGF0aCBwZXIgaHcKPiAt CSAqIHJlcXVpcmVtZW50cy4gIFNvIGhlcmUgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGZvciBhbnkK PiAtCSAqIHJlcXVpcmVkIGNoYW5nZXMgYW5kIGZvcmNpbmcgYSBtb2RlIHNldC4KPiAtCSAqLwo+ ICBmYWlsOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xMjUwMCwyOSArMTI0OTEsMjEgQEAg aW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJ ICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwo+ICAJfQo+ICAKPiAtCVBJUEVfQ09ORl9DSEVD S19JKHBpcGVfc3JjX3cpOwo+IC0JUElQRV9DT05GX0NIRUNLX0kocGlwZV9zcmNfaCk7Cj4gLQo+ IC0JLyoKPiAtCSAqIEZJWE1FOiBCSU9TIGxpa2VzIHRvIHNldCB1cCBhIGNsb25lZCBjb25maWcg d2l0aCBsdmRzK2V4dGVybmFsCj4gLQkgKiBzY3JlZW4uIFNpbmNlIHdlIGRvbid0IHlldCByZS1j b21wdXRlIHRoZSBwaXBlIGNvbmZpZyB3aGVuIG1vdmluZwo+IC0JICoganVzdCB0aGUgbHZkcyBw b3J0IGF3YXkgdG8gYW5vdGhlciBwaXBlIHRoZSBzdyB0cmFja2luZyB3b24ndCBtYXRjaC4KPiAt CSAqCj4gLQkgKiBQcm9wZXIgYXRvbWljIG1vZGVzZXRzIHdpdGggcmVjb21wdXRlZCBnbG9iYWwg c3RhdGUgd2lsbCBmaXggdGhpcy4KPiAtCSAqIFVudGlsIHRoZW4ganVzdCBkb24ndCBjaGVjayBn bWNoIHN0YXRlIGZvciBpbmhlcml0ZWQgbW9kZXMuCj4gLQkgKi8KPiAgCWlmICghUElQRV9DT05G X1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RFKSkgewoKVGhpcyBzZWVtcyBs aWtlIGEgc2VwYXJhdGUgY2hhbmdlIC0gd2l0aCByZWNvbXB1dGluZyBzdGF0ZSBvbiBhbGwgcGlw ZXMKdW5jb25kaXRpb25hbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRyb3AgdGhpcz8KCj4gLQkJ UElQRV9DT05GX0NIRUNLX0koZ21jaF9wZml0LmNvbnRyb2wpOwo+IC0JCS8qIHBmaXQgcmF0aW9z IGFyZSBhdXRvY29tcHV0ZWQgYnkgdGhlIGh3IG9uIGdlbjQrICovCj4gLQkJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgNCkKPiAtCQkJUElQRV9DT05GX0NIRUNLX0koZ21jaF9wZml0LnBnbV9y YXRpb3MpOwo+IC0JCVBJUEVfQ09ORl9DSEVDS19JKGdtY2hfcGZpdC5sdmRzX2JvcmRlcl9iaXRz KTsKPiAtCX0KPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX3NyY193KTsKPiArCQlQSVBFX0NP TkZfQ0hFQ0tfSShwaXBlX3NyY19oKTsKPiArCj4gKwkJUElQRV9DT05GX0NIRUNLX0kocGNoX3Bm aXQuZW5hYmxlZCk7Cj4gKwkJaWYgKGN1cnJlbnRfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7 Cj4gKwkJCVBJUEVfQ09ORl9DSEVDS19JKHBjaF9wZml0LnBvcyk7Cj4gKwkJCVBJUEVfQ09ORl9D SEVDS19JKHBjaF9wZml0LnNpemUpOwo+ICAKPiAtCVBJUEVfQ09ORl9DSEVDS19JKHBjaF9wZml0 LmVuYWJsZWQpOwo+IC0JaWYgKGN1cnJlbnRfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7Cj4g LQkJUElQRV9DT05GX0NIRUNLX0kocGNoX3BmaXQucG9zKTsKPiAtCQlQSVBFX0NPTkZfQ0hFQ0tf SShwY2hfcGZpdC5zaXplKTsKPiArCQkJUElQRV9DT05GX0NIRUNLX0koZ21jaF9wZml0LmNvbnRy b2wpOwo+ICsJCQkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVkIGJ5IHRoZSBodyBvbiBn ZW40KyAqLwo+ICsJCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJCQkJUElQRV9D T05GX0NIRUNLX0koZ21jaF9wZml0LnBnbV9yYXRpb3MpOwo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tf SShnbWNoX3BmaXQubHZkc19ib3JkZXJfYml0cyk7Cj4gKwkJfQo+ICAJfQo+ICAKPiAgCVBJUEVf Q09ORl9DSEVDS19JKHNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQpOwo+IEBAIC0xMzA1NywyNiArMTMw NDAsMTggQEAgaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5l bmFibGUpIHsKPiAtCQkJaWYgKG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4gLQkJCQlhbnlf bXMgPSB0cnVlOwo+ICsJCWlmICghbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPiAgCQkJY29u dGludWU7Cj4gLQkJfQo+ICAKPiAtCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpIHsK PiAtCQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0 Yyk7Cj4gLQkJCWlmIChyZXQpCj4gLQkJCQlyZXR1cm4gcmV0Owo+IC0JCX0KPiArCQlhbnlfbXMg PSB0cnVlOwo+ICsJCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ICsJCQljb250aW51ZTsKPiAg Cj4gIAkJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhjcnRjLAo+ICAJCQkJCXRvX2lu dGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSkpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiBy ZXQ7Cj4gIAo+IC0JCWlmIChuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQo+IC0JCQlhbnlfbXMg PSB0cnVlOwo+IC0KPiAgCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHRvX2ludGVsX2NydGMoY3J0 YyksCj4gIAkJCQkgICAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSwKPiAgCQkJ CSAgICAgICAiW21vZGVzZXRdIik7Cj4gQEAgLTEzMTQ3LDcgKzEzMTIyLDEwIEBAIHN0YXRpYyBp bnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJ aWYgKG5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpICYmIGNydGMtPnN0YXRlLT5hY3RpdmUpIHsK PiAgCQkJdXBkYXRlX3NjYW5saW5lX29mZnNldCh0b19pbnRlbF9jcnRjKGNydGMpKTsKPiAgCQkJ ZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0Yyk7Cj4gLQkJfQo+ICsJCX0gZWxzZSBp ZiAodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+cXVpcmtzICYKPiArCQkJICAgUElQ RV9DT05GSUdfUVVJUktfSU5IRVJJVEVEX01PREUpCj4gKwkJCS8qIGZvcmNlIGh3IHJlYWRvdXQg Y2hlY2sgKi8KPiArCQkJYW55X21zID0gdHJ1ZTsKCkltbyB0aGlzIHNob3VsZCBiZSBhIHNlcGFy YXRlIHBhdGNoIHNpbmNlIGZvcmNpbmcgYSBtb2Rlc2V0IGNoZWNrIGFmdGVyCnRoZSBpbml0aWFs IHRha2VvdmVyIGlzIGEgZ29vZCB0aGluZy4gQWxzbyBtYXliZSBkbyBhCnMvYW55X21zL2RvX21v ZGVzZXRfY2hlY2tzLyBmb3IgY2xhcml0eSBvZiB3aGF0IHRoaXMgZG9lcy4KCj4gIAo+ICAJCWRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25fY3J0YyhjcnRjX3N0YXRlKTsKPiAgCX0K PiBAQCAtMTM0MzAsOCArMTM0MDgsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZp ZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gb3V0Owo+ ICAKPiAtCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0YyhzZXQtPmNydGMpKTsK PiAtCj4gIAlyZXQgPSBpbnRlbF9zZXRfbW9kZV9jaGVja2VkKHN0YXRlKTsKPiAgCWlmIChyZXQp IHsKPiAgCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUgb24gW0NSVEM6JWRdLCBl cnIgPSAlZFxuIiwKPiBAQCAtMTM3MTgsMTAgKzEzNjk0LDYgQEAgaW50ZWxfY29tbWl0X3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlpZiAoIWNydGMtPnN0YXRlLT5h Y3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChzdGF0ZS0+dmlzaWJsZSkKPiAtCQkvKiBG SVhNRToga2lsbCB0aGlzIGZhc3Rib290IGhhY2sgKi8KPiAtCQlpbnRlbF91cGRhdGVfcGlwZV9z aXplKGludGVsX2NydGMpOwo+IC0KPiAgCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5 X3BsYW5lKGNydGMsIGZiLCBjcnRjLT54LCBjcnRjLT55KTsKPiAgfQo+ICAKPiBAQCAtMTM3NDEs NiArMTM3MTMsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQo+ICsJCXRvX2lu dGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwo+ICAKPiAgCWlmICghbmVlZHNfbW9kZXNl dChjcnRjLT5zdGF0ZSkpCj4gIAkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsK PiBAQCAtMTM3NTYsNyArMTM3MzAsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19j b21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFy dChpbnRlbF9jcnRjLAo+ICAJCQkJCQkmaW50ZWxfY3J0Yy0+YXRvbWljLnN0YXJ0X3ZibF9jb3Vu dCk7Cj4gIAo+IC0JaWYgKCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBj cnRjLT5zdGF0ZS0+YWN0aXZlICYmCj4gKwkgICAgb2xkX2ludGVsX3N0YXRlLT5xdWlya3MgJiBQ SVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERSkKPiArCQlpbnRlbF91cGRhdGVfZmFzdGJv b3QoaW50ZWxfY3J0Yywgb2xkX2ludGVsX3N0YXRlKTsKCk5hY2ssIGZhc3Rib290IG9ubHkgZm9y IHRoZSBpbml0aWFsIG1vZGUgaXMgbm90IHdoYXQgSSB3YW50LiBXZSBzaG91bGQgYmUKYWJsZSB0 byBzcGVlZCB1cCBfYW55XyBtb2Rlc2V0IHdoZXJlIHdlIGp1c3QgZGlzYWJsZSB0aGUgcGZpdC4g QWxsb3dpbmcKZmFzdCBwZml0IHJlbW92YWwgdW5jb25kaXRpb25hbGx5IHdpbGwgYWxzbyBhbGxv dyB1cyB0byBlYXNpbHkgdGVzdCB0aGlzCnBhcnQgb2YgZmFzdGJvb3Qgd2l0aCBhbiBpZ3QsIHdo aWNoIEknZCBhbHNvIGxpa2UgdG8gc2VlLgoKPiArCWVsc2UgaWYgKCFuZWVkc19tb2Rlc2V0KGNy dGMtPnN0YXRlKSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICAJCXNrbF9kZXRhY2hf c2NhbGVycyhpbnRlbF9jcnRjKTsKCkFsc28gSSB0aGluayBpdCdkIGJlIGNsZWFyZXIgaWYgd2Ug aGF2ZSBzdGF0ZSBmbGFncyAobGlrZSBmb3IgdGhlIHBhZ2VmbGlwCnN0dWZmKSBpbiBjcnRjX3N0 YXRlIHRvIGVuYWJsZSB0aGVzZSBmaXh1cCBmdW5jdGlvbnMgb24gYW4gYXMtbmVlZGVkCmJhc2lz LgoKPiAgfQo+ICAKPiBAQCAtMTUwOTYsNiArMTUwNzMsMTE0IEBAIGludGVsX2NoZWNrX3BsYW5l X21hcHBpbmcoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ ICAKPiArc3RhdGljIGJvb2wKPiAraW50ZWxfY29tcGFyZV9tX24odW5zaWduZWQgaW50IG0sIHVu c2lnbmVkIGludCBuLAo+ICsJCSAgdW5zaWduZWQgaW50IG0yLCB1bnNpZ25lZCBpbnQgbjIpCj4g K3sKPiArCWlmIChtID09IG0yICYmIG4gPT0gbjIpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJ aWYgKCFtIHx8ICFuIHx8ICFtMiB8fCAhbjIpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlm IChtID4gbTIpIHsKPiArCQl3aGlsZSAobSA+IG0yKSB7Cj4gKwkJCW0gPj49IDE7Cj4gKwkJCW4g Pj49IDE7Cj4gKwkJfQo+ICsJfSBlbHNlIGlmIChtIDwgbTIpIHsKPiArCQl3aGlsZSAobSA8IG0y KSB7Cj4gKwkJCW0yID4+PSAxOwo+ICsJCQluMiA+Pj0gMTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIG0gPT0gbTIgJiYgbiA9PSBuMjsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiAraW50 ZWxfY29tcGFyZV9saW5rX21fbihjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiAr CQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2xpbmtfbV9uICptMl9uMikKPiArewo+ICsJaWYg KG1fbi0+dHUgPT0gbTJfbjItPnR1ICYmCj4gKwkgICAgaW50ZWxfY29tcGFyZV9tX24obV9uLT5n bWNoX20sIG1fbi0+Z21jaF9uLAo+ICsJCQkgICAgICBtMl9uMi0+Z21jaF9tLCBtMl9uMi0+Z21j aF9uKSAmJgo+ICsJICAgIGludGVsX2NvbXBhcmVfbV9uKG1fbi0+bGlua19tLCBtX24tPmxpbmtf biwKPiArCQkJICAgICAgbTJfbjItPmxpbmtfbSwgbTJfbjItPmxpbmtfbikpCj4gKwkJcmV0dXJu IHRydWU7Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRl bF9mYXN0Ym9vdF9jYWxjX21vZGVzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmh3X3N0YXRlLAo+ICsJCQkJCXN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgc3dfc3RhdGU7Cj4g Kwo+ICsJaWYgKG5lZWRzX21vZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNlKSkgewo+ICsJCURSTV9E RUJVR19LTVMoIlNraXBwaW5nIGZhc3Rib290IGNoZWNrcywgbW9kZXNldCBmb3JjZWRcbiIpOwo+ ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwltZW1zZXQoJnN3X3N0YXRlLCAwLCBzaXplb2Yoc3df c3RhdGUpKTsKPiArCXN3X3N0YXRlLmJhc2UgPSBwaXBlX2NvbmZpZy0+YmFzZTsKPiArCXN3X3N0 YXRlLnNjYWxlcl9zdGF0ZSA9IHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4gKwlzd19zdGF0 ZS5zaGFyZWRfZHBsbCA9IHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbDsKPiArCXN3X3N0YXRlLmRw bGxfaHdfc3RhdGUgPSBwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZTsKPiArCXN3X3N0YXRlLmRk aV9wbGxfc2VsID0gcGlwZV9jb25maWctPmRkaV9wbGxfc2VsOwo+ICsJaW50ZWxfbW9kZXNldF9w aXBlX2NvbmZpZygmY3J0Yy0+YmFzZSwgJnN3X3N0YXRlKTsKPiArCXN3X3N0YXRlLnF1aXJrcyA9 IGh3X3N0YXRlLT5xdWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZTkNfRkxBR1M7Cj4g Kwo+ICsJaWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmZkaV9tX24sICZod19z dGF0ZS0+ZmRpX21fbikpCj4gKwkJc3dfc3RhdGUuZmRpX21fbiA9IGh3X3N0YXRlLT5mZGlfbV9u Owo+ICsKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpIHsKPiArCQlpZiAoaW50ZWxf Y29tcGFyZV9saW5rX21fbigmc3dfc3RhdGUuZHBfbV9uLAo+ICsJCQkJCSAgICZod19zdGF0ZS0+ ZHBfbV9uKSkKPiArCQkJc3dfc3RhdGUuZHBfbV9uID0gaHdfc3RhdGUtPmRwX21fbjsKPiArCj4g KwkJaWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmRwX20yX24yLAo+ICsJCQkJ CSAgICZod19zdGF0ZS0+ZHBfbTJfbjIpKQo+ICsJCQlzd19zdGF0ZS5kcF9tMl9uMiA9IGh3X3N0 YXRlLT5kcF9tMl9uMjsKPiArCX0gZWxzZSB7Cj4gKwkJaWYgKGludGVsX2NvbXBhcmVfbGlua19t X24oJnN3X3N0YXRlLmRwX21fbiwKPiArCQkJCQkgICAmaHdfc3RhdGUtPmRwX21fbikpIHsKPiAr CQkJc3dfc3RhdGUuZHBfbV9uID0gaHdfc3RhdGUtPmRwX21fbjsKPiArCQkJaHdfc3RhdGUtPmRw X20yX24yID0gc3dfc3RhdGUuZHBfbTJfbjI7Cj4gKwkJfSBlbHNlIGlmIChpbnRlbF9jb21wYXJl X2xpbmtfbV9uKCZzd19zdGF0ZS5kcF9tMl9uMiwKPiArCQkJCQkJICAmaHdfc3RhdGUtPmRwX21f bikpIHsKPiArCQkJc3dfc3RhdGUuZHBfbTJfbjIgPSBod19zdGF0ZS0+ZHBfbV9uOwo+ICsKPiAr CQkJaHdfc3RhdGUtPmRwX21fbiA9IHN3X3N0YXRlLmRwX21fbjsKPiArCQkJaHdfc3RhdGUtPmRw X20yX24yID0gc3dfc3RhdGUuZHBfbTJfbjI7Cj4gKwkJfQo+ICsJfQoKTm90IHRvbyBoYXBweSB3 aXRoIHNwbGl0dGluZyB1cCB0aGUgbW9kZXNldCBzdGF0ZSBjb21wYXJlIGNvZGUgbGlrZSB0aGlz LgpJZiB3ZSBhZGQgZW51bSBtb2RlIHsgRVhBQ1QsIENPTVBBVElCTEUgfSB0byBpbnRlbF9waXBl X2NvbmZpZ19jb21wYXJlIHdlCmNvdWxkIHRpZSB0aGluZ3MgdG9nZXRoZXIgd2VsbCBhbmQgaGF2 ZSBhbGwgdGhlIHBpcGUgY29uZmlnIGNvZGUgZ3JvdXBlZAppbiBvbmUgcGxhY2UuIEJ1dCB0aGVu IHRoZSBfY29tcGFyZSgpIGlzIGEgYml0IG1pc2xlYWRpbmcgc2luY2UgaXQnZCBhbHNvCnVwZGF0 ZSB0aGUgc3dfc3RhdGUsIHNvIG1heWJlIGJldHRlciB0byBjYWxsIGl0IGNvbXBhcmVfYW5kX2Fq dXN0LgoKVGhlIG1hY3JvcyB3b3VsZCB0aGVuIGVpdGhlciBjb3B5IHRoZSBod19zdGF0ZSB0byBz d19zdGF0ZSAoaWYgaXQncyBzb21lCmludGVybWVkaWF0ZSBzdGF0ZSB3ZSBkb24ndCBjYXJlIGFi b3V0KSBvciBjb21wYXJlIGl0ICh3aXRoIG1heWJlIHNvbWUKYWRqdXN0bWVudHMgbWFkZSkuIEJ1 dCBJJ2QgcmVhbGx5IGxpa2UgdG8gaGF2ZSBhbGwgdGhhdCBjb21wYXJlL2FkanVzdApsb2dpYyBp biBvbmUgcGxhY2UgaWYgcG9zc2libGUuCgo+ICsKPiArCS8qIENoZWNrIGlmIHdlIG5lZWQgdG8g Zm9yY2UgYSBtb2Rlc2V0ICovCj4gKwlpZiAoIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2 LCAmc3dfc3RhdGUsIGh3X3N0YXRlLCB0cnVlKSkgewo+ICsJCURSTV9JTkZPKCJbQ1JUQzolaV0g c3cgc3RhdGUgaW5jb21wYXRpYmxlLCBmb3JjaW5nIG1vZGVzZXRcbiIsCj4gKwkJCSBjcnRjLT5i YXNlLmJhc2UuaWQpOwo+ICsJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7 Cj4gKwl9IGVsc2Ugewo+ICsJCURSTV9JTkZPKCJbQ1JUQzolaV0gc3cgc3RhdGUgYW5kIGh3IHN0 YXRlIGZhc3Rib290IGNvbXBhdGlibGVcbiIsCj4gKwkJCSBjcnRjLT5iYXNlLmJhc2UuaWQpOwo+ ICsKPiArCQkqcGlwZV9jb25maWcgPSBzd19zdGF0ZTsKPiArCQlpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKGNydGMsIHBpcGVfY29uZmlnLAo+ICsJCQkJICAgICAgICJbbmV3IGZhc3Rib290IHN0YXRl XSIpOwo+ICsKPiArCQkvKiBwcmV2ZW50IGEgbW9kZXNldCBieSBwYXRjaGluZyB1cCBtb2RlIHN0 cnVjdCAqLwo+ICsKPiArCQlod19zdGF0ZS0+YmFzZS5tb2RlLnR5cGUgPSBwaXBlX2NvbmZpZy0+ YmFzZS5tb2RlLnR5cGUgPQo+ICsJCWh3X3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUudHlwZSA9 IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUudHlwZTsKPiArCj4gKwkJLyogY2xvY2sg cmVhZG91dCBjYW4gYmUgYXBwcm94aW1hdGUsIGp1c3QgY29weSBpdC4gKi8KPiArCQlod19zdGF0 ZS0+YmFzZS5tb2RlLmNsb2NrID0gcGlwZV9jb25maWctPmJhc2UubW9kZS5jbG9jayA9IHBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY2xvY2s7CgpXaHkgZG8gd2Ugc3RpbGwgbmVlZCB0 aGlzPyBJZiB3ZSB1c2UgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZSB0byBjb21wdXRlCm1vZGVf Y2hhbmdlZCB0aGVuIHdlIGhvcGVmdWxseSBkb24ndCBuZWVkIHRvIGhhY2sgYXJvdW5kIHRoaW5n cyBhbnkgbW9yZS4KSSBndWVzcyB0aGlzIGlzIHdoZXJlIHdlIG5lZWQgeW91ciBwbGFuIHRvIHNw bGl0IG91dCBjb25uZWN0b3JfY2hhbmdlZApmcm9tIG1vZGVfY2hhbmdlZCBhbmQgdGhlbiByZXBs YWNlIHRoZSBtb2RlX2NoYW5nZWQgY29tcHV0ZWQgYnkgdGhlCmhlbHBlcnMgYnkgd2hhdCBpbnRl bF9waXBlX2NvbmZpZ19jb21wYXJlIHRoaW5ncyBpcyBqdXN0aWZpZWQuCgo+ICsJfQo+ICt9Cj4g Kwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkJ Ym9vbCBmb3JjZV9yZXN0b3JlKQo+IEBAIC0xNTEzNSwzNyArMTUyMjAsMTEgQEAgc3RhdGljIHZv aWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlwaXBl X2NvbmZpZy0+YmFzZS5hY3RpdmUgPSAhIWVuYWJsZTsKPiAgCX0KPiAgCj4gLQlpZiAoaHdfc3Rh dGUtPnF1aXJrcyAmIFBJUEVfQ09ORklHX1FVSVJLX1dST05HX1BMQU5FKSB7Cj4gLQkJaWYgKGZv cmNlX3Jlc3RvcmUgfHwgaTkxNS5mYXN0Ym9vdCkKPiAtCQkJcGlwZV9jb25maWctPmJhc2UubW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKPiAtCQllbHNlCj4gLQkJCXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2 ZSA9IGZhbHNlOwo+IC0JfQo+IC0KPiAtCS8qIFhYWDogVGhpcyBpcyBuZWVkcyB0byBiZSBtb2Rp ZmllZCBmb3IgbWFraW5nIGZhc3Rib290IHBvc3NpYmxlCj4gLQkgKiBieSBkZWZhdWx0IHdpdGhv dXQgcmVxdWlyaW5nIGEgbW9kZXNldC4KPiAtCSAqLwo+IC0JaWYgKGh3X3N0YXRlLT5iYXNlLmFj dGl2ZSAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSBzd19zdGF0ZTsKPiAtCj4gLQkJbWVtc2V0KCZzd19zdGF0ZSwgMCwgc2l6ZW9mKHN3 X3N0YXRlKSk7Cj4gLQkJc3dfc3RhdGUuYmFzZSA9IHBpcGVfY29uZmlnLT5iYXNlOwo+IC0JCXN3 X3N0YXRlLnNjYWxlcl9zdGF0ZSA9IHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4gLQkJc3df c3RhdGUuc2hhcmVkX2RwbGwgPSBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGw7Cj4gLQkJc3dfc3Rh dGUuZHBsbF9od19zdGF0ZSA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlOwo+IC0JCXN3X3N0 YXRlLmRkaV9wbGxfc2VsID0gcGlwZV9jb25maWctPmRkaV9wbGxfc2VsOwo+IC0KPiAtCQlpbnRl bF9tb2Rlc2V0X3BpcGVfY29uZmlnKCZjcnRjLT5iYXNlLCAmc3dfc3RhdGUpOwo+IC0KPiAtCQkv KiBDaGVjayBpZiB3ZSBuZWVkIHRvIGZvcmNlIGEgbW9kZXNldCAqLwo+IC0JCWlmICghaW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShkZXYsICZzd19zdGF0ZSwgaHdfc3RhdGUsICFpOTE1LmZhc3Ri b290KSkgewo+IC0JCQlEUk1fREVCVUdfS01TKCJzdyBhbmQgaHcgc3RhdGUgZGlmZmVyLCBmb3Jj aW5nIG1vZGVzZXRcbiIpOwo+IC0JCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0 cnVlOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCSpwaXBlX2NvbmZpZyA9IHN3X3N0YXRlOwo+IC0JCX0K PiAtCX0KPiArCWlmIChod19zdGF0ZS0+cXVpcmtzICYgUElQRV9DT05GSUdfUVVJUktfV1JPTkdf UExBTkUpCj4gKwkJcGlwZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCj4g KwllbHNlIGlmIChod19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYgcGlwZV9jb25maWctPmJhc2UuYWN0 aXZlKQo+ICsJCWludGVsX2Zhc3Rib290X2NhbGNfbW9kZXNldChjcnRjLCBod19zdGF0ZSwgcGlw ZV9jb25maWcpOwo+ICAKPiAgCWlmIChkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9S Q0UgJiYgIWh3X3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgo+ICAJICAgIGNydGMtPnBpcGUgPT0gUElQ RV9BICYmICFwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpIHsKPiBAQCAtMTU1ODQsNiArMTU2NDMs NyBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGJvb2wgZm9yY2VfcmVzdG9yZSkKPiAgCQljcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdlZCA9IGZh bHNlOwo+ICAKPiAgCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewo+ICsJCQltZW1zZXQoJmNy dGMtPm1vZGUsIDAsIHNpemVvZihjcnRjLT5tb2RlKSk7Cj4gIAkJCWludGVsX21vZGVfZnJvbV9w aXBlX2NvbmZpZygmY3J0Yy0+bW9kZSwKPiAgCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+ c3RhdGUpKTsKPiAgCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZjcnRjLT5zdGF0ZS0+ YWRqdXN0ZWRfbW9kZSwKPiBAQCAtMTU2NzgsOSArMTU3MzgsMTIgQEAgdm9pZCBpbnRlbF9tb2Rl c2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGEKPiAgCQlpbnQgajsKPiAgCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gYy0+ cHJpbWFyeTsKPiAgCj4gKwkJaWYgKCFjLT5zdGF0ZS0+YWN0aXZlKQo+ICsJCQljb250aW51ZTsK PiArCj4gIAkJb2JqID0gaW50ZWxfZmJfb2JqKHByaW1hcnktPnN0YXRlLT5mYik7Cj4gIAkJaWYg KG9iaiA9PSBOVUxMKQo+IC0JCQlnb3RvIGRpc2FibGU7Cj4gKwkJCWNvbnRpbnVlOwo+ICAKPiAg CQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAkJcmV0ID0gaW50ZWxfcGluX2Fu ZF9mZW5jZV9mYl9vYmoocHJpbWFyeSwgcHJpbWFyeS0+c3RhdGUtPmZiLAo+IEBAIC0xNTcxNSw2 ICsxNTc3OCw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhCj4gIAkJICovCj4gIAo+ICBkaXNh YmxlOgo+ICsJCURSTV9ERUJVR19LTVMoIltDUlRDOiVpXSBObyBmYiBvciBmb3JjZWQgaW5hY3Rp dmUsIGRpc2FibGluZy5cbiIsCj4gKwkJCSAgICAgIGMtPmJhc2UuaWQpOwo+ICAJCWNydGNfc3Rh dGUtPmFjdGl2ZSA9IGNydGNfc3RhdGUtPmVuYWJsZSA9IGZhbHNlOwo+ICAKPiAgCQlyZXQgPSBk cm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKGNydGNfc3RhdGUsIE5VTEwpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IDZhYzQ5OTBhMGMxMS4uMmM0OTRkNzg2NTJhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gQEAgLTQ4NiwxNSArNDg2LDEwIEBA IHJldHJ5Ogo+ICAJCQkgKiBjb25maWcsIG5vdCB0aGUgaW5wdXQgbW9kZSwgd2hpY2ggaXMgd2hh dCBjcnRjLT5tb2RlCj4gIAkJCSAqIHVzdWFsbHkgY29udGFpbnMuIEJ1dCBzaW5jZSBvdXIgY3Vy cmVudCBmYXN0Ym9vdAo+ICAJCQkgKiBjb2RlIHB1dHMgYSBtb2RlIGRlcml2ZWQgZnJvbSB0aGUg cG9zdC1wZml0IHRpbWluZ3MKPiAtCQkJICogaW50byBjcnRjLT5tb2RlIHRoaXMgd29ya3Mgb3V0 IGNvcnJlY3RseS4gV2UgZG9uJ3QKPiAtCQkJICogdXNlIGh3bW9kZSBhbnl3aGVyZSByaWdodCBu b3csIHNvIHVzZSBpdCBmb3IgdGhpcwo+IC0JCQkgKiBzaW5jZSB0aGUgZmIgaGVscGVyIGxheWVy IHdhbnRzIGEgcG9pbnRlciB0bwo+IC0JCQkgKiBzb21ldGhpbmcgd2Ugb3duLgo+ICsJCQkgKiBp bnRvIGNydGMtPm1vZGUgdGhpcyB3b3JrcyBvdXQgY29ycmVjdGx5Lgo+ICAJCQkgKi8KPiAgCQkJ RFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgY3VycmVudCBtb2RlIG9uIGNvbm5lY3RvciAlc1xu IiwKPiAgCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gLQkJCWludGVsX21vZGVfZnJvbV9w aXBlX2NvbmZpZygmZW5jb2Rlci0+Y3J0Yy0+aHdtb2RlLAo+IC0JCQkJCQkgICAgdG9faW50ZWxf Y3J0YyhlbmNvZGVyLT5jcnRjKS0+Y29uZmlnKTsKPiAgCQkJbW9kZXNbaV0gPSAmZW5jb2Rlci0+ Y3J0Yy0+aHdtb2RlOwo+ICAJCX0KPiAgCQljcnRjc1tpXSA9IG5ld19jcnRjOwo+IEBAIC01ODQs OSArNTc5LDYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJkZXZfaW5pdF9iaW9zKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgCXVuc2ln bmVkIGludCBtYXhfc2l6ZSA9IDA7Cj4gIAo+IC0JaWYgKCFpOTE1LmZhc3Rib290KQo+IC0JCXJl dHVybiBmYWxzZTsKCkkgdGhpbmsgaXQnZCBiZSB1c2VmdWwgdG8gc3BsaXQgdGhlIGZiZGV2IHBh cnQgb2YgdGhlIGZhc3Rib290IHJlbW92YWwgb3V0CmludG8gYSBzZXBhcmF0ZSBwYXRjaC4gT3Ig ZG8gSSBtaXNzIGEgZGVwZW5jeSBoZXJlPyBBc3N1bWluZyBvZmMgdGhhdCB3ZQplbmFibGUgdGhl IHBmaXQgdHJpY2sgZm9yIG1vZGVzZXRzIGluIGdlbmVyYWwuCi1EYW5pZWwKCj4gLQo+ICAJLyog RmluZCB0aGUgbGFyZ2VzdCBmYiAqLwo+ICAJZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIHsKPiAg CQlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKnBsYW5lX2ZiID0KPiAtLSAKPiAyLjEuMAo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK