From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak S Subject: Re: [PATCH 2/8] drm/i915: Assert that runtime pm is active on user fw access Date: Fri, 12 Dec 2014 17:09:26 +0530 Message-ID: <548AD3EE.7000203@linux.intel.com> References: <1418063262-32256-1-git-send-email-mika.kuoppala@intel.com> <1418063262-32256-2-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 334CC6E245 for ; Thu, 11 Dec 2014 03:42:28 -0800 (PST) In-Reply-To: <1418063262-32256-2-git-send-email-mika.kuoppala@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIE1vbmRheSAwOCBEZWNlbWJlciAyMDE0IDExOjU3IFBNLCBNaWthIEt1b3BwYWxhIHdyb3Rl Ogo+IEZyb206IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Cj4gT24g dXNlciBmb3JjZXdha2UgYWNjZXNzLCBhc3NlcnQgdGhhdCBydW50aW1lIHBtIHJlZmVyZW5jZSBp cyBoZWxkLgo+IEZpeCBhbmQgY2xlYW51cCB0aGUgY2FsbHNpdGVzIGFjY29yZGluZ2x5Lgo+Cj4g U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g U2lnbmVkLW9mZi1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4g LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAgMiArCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxOSArLS0tLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICB8IDUzICsrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICB8IDc2ICsr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAz MSBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+IGluZGV4IGQwZTQ0NWUuLmUxNDI2MjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IEBAIC00MjUwLDYgKzQyNTAsNyBAQCBzdGF0aWMgaW50IGk5MTVf Zm9yY2V3YWtlX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4g ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAr CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgIAlnZW42X2d0X2ZvcmNlX3dha2Vf Z2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+IEBAIC00 MjY0LDYgKzQyNjUsNyBAQCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX3JlbGVhc2Uoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gICAJCXJldHVybiAwOwo+ICAgCj4g ICAJZ2VuNl9ndF9mb3JjZV93YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gICAKPiAgIAlyZXR1cm4gMDsKPiAgIH0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZDUxNTNhNC4uODZjMjg4 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNzg2MiwxOSAr Nzg2Miw4IEBAIHN0YXRpYyB2b2lkIGhzd19yZXN0b3JlX2xjcGxsKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIAkvKgo+ICAgCSAqIE1ha2Ugc3VyZSB3ZSdyZSBub3Qgb24g UEM4IHN0YXRlIGJlZm9yZSBkaXNhYmxpbmcgUEM4LCBvdGhlcndpc2UKPiAgIAkgKiB3ZSdsbCBo YW5nIHRoZSBtYWNoaW5lLiBUbyBwcmV2ZW50IFBDOCBzdGF0ZSwganVzdCBlbmFibGUgZm9yY2Vf d2FrZS4KPiAtCSAqCj4gLQkgKiBUaGUgb3RoZXIgcHJvYmxlbSBpcyB0aGF0IGhzd19yZXN0b3Jl X2xjcGxsKCkgaXMgY2FsbGVkIGFzIHBhcnQgb2YKPiAtCSAqIHRoZSBydW50aW1lIFBNIHJlc3Vt ZSBzZXF1ZW5jZSwgc28gd2UgY2FuJ3QganVzdCBjYWxsCj4gLQkgKiBnZW42X2d0X2ZvcmNlX3dh a2VfZ2V0KCkgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIGNhbGxzCj4gLQkgKiBpbnRlbF9ydW50aW1l X3BtX2dldCgpLCBhbmQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBydW50aW1lIFBNIHJlZmNvdW50Cj4g LQkgKiB3aGlsZSB3ZSBhcmUgb24gdGhlIHJlc3VtZSBzZXF1ZW5jZS4gU28gdG8gc29sdmUgdGhp cyBwcm9ibGVtIHdlIGhhdmUKPiAtCSAqIHRvIGNhbGwgc3BlY2lhbCBmb3JjZXdha2UgY29kZSB0 aGF0IGRvZXNuJ3QgdG91Y2ggcnVudGltZSBQTSBhbmQKPiAtCSAqIGRvZXNuJ3QgZW5hYmxlIHRo ZSBmb3JjZXdha2UgZGVsYXllZCB3b3JrLgo+ICAgCSAqLwo+IC0Jc3Bpbl9sb2NrX2lycSgmZGV2 X3ByaXYtPnVuY29yZS5sb2NrKTsKPiAtCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9j b3VudCsrID09IDApCj4gLQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChk ZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gLQlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT51 bmNvcmUubG9jayk7Cj4gKwlnZW42X2d0X2ZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdB S0VfQUxMKTsKPiAgIAo+ICAgCWlmICh2YWwgJiBMQ1BMTF9QT1dFUl9ET1dOX0FMTE9XKSB7Cj4g ICAJCXZhbCAmPSB+TENQTExfUE9XRVJfRE9XTl9BTExPVzsKPiBAQCAtNzkwNCwxMSArNzg5Myw3 IEBAIHN0YXRpYyB2b2lkIGhzd19yZXN0b3JlX2xjcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIAkJCURSTV9FUlJPUigiU3dpdGNoaW5nIGJhY2sgdG8gTENQTEwgZmFp bGVkXG4iKTsKPiAgIAl9Cj4gICAKPiAtCS8qIFNlZSB0aGUgYmlnIGNvbW1lbnQgYWJvdmUuICov Cj4gLQlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwo+IC0JaWYgKC0tZGV2 X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQgPT0gMCkKPiAtCQlkZXZfcHJpdi0+dW5jb3Jl LmZ1bmNzLmZvcmNlX3dha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAtCXNwaW5f dW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCWdlbjZfZ3RfZm9yY2Vfd2Fr ZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAgfQo+ICAgCj4gICAvKgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYTgyMDIwZS4uZmNiNTE0MCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTI4NCw3ICsyODQsNiBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfZWxzcF93cml0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJdWlu dDY0X3QgdGVtcCA9IDA7Cj4gICAJdWludDMyX3QgZGVzY1s0XTsKPiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gICAKPiAgIAkvKiBYWFg6IFlvdSBtdXN0IGFsd2F5cyB3cml0ZSBib3RoIGRlc2Ny aXB0b3JzIGluIHRoZSBvcmRlciBiZWxvdy4gKi8KPiAgIAlpZiAoY3R4X29iajEpCj4gQEAgLTI5 OCw2MyArMjk3LDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJZGVzY1szXSA9ICh1MzIpKHRlbXAgPj4gMzIpOwo+ ICAgCWRlc2NbMl0gPSAodTMyKXRlbXA7Cj4gICAKPiAtCS8qIFNldCBGb3JjZSBXYWtldXAgYml0 IHRvIHByZXZlbnQgR1QgZnJvbSBlbnRlcmluZyBDNiB3aGlsZSBFTFNQIHdyaXRlcwo+IC0JICog YXJlIGluIHByb2dyZXNzLgo+IC0JICoKPiAtCSAqIFRoZSBvdGhlciBwcm9ibGVtIGlzIHRoYXQg d2UgY2FuJ3QganVzdCBjYWxsIGdlbjZfZ3RfZm9yY2Vfd2FrZV9nZXQoKQo+IC0JICogYmVjYXVz ZSB0aGF0IGZ1bmN0aW9uIGNhbGxzIGludGVsX3J1bnRpbWVfcG1fZ2V0KCksIHdoaWNoIG1pZ2h0 IHNsZWVwLgo+IC0JICogSW5zdGVhZCwgd2UgZG8gdGhlIHJ1bnRpbWVfcG1fZ2V0L3B1dCB3aGVu IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgcmVxdWVzdHMuCj4gLQkgKi8KPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGZsYWdzKTsKPiAtCWlmIChJU19DSEVSUllWSUVX KGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IC0JCWlmIChkZXZfcHJpdi0+ dW5jb3JlLmZ3X3JlbmRlcmNvdW50KysgPT0gMCkKPiAtCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5j cy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICAgIEZPUkNFV0FLRV9SRU5E RVIpOwo+IC0JCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZ3X21lZGlhY291bnQrKyA9PSAwKQo+IC0J CQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LAo+IC0JCQkJ CQkJICAgICAgRk9SQ0VXQUtFX01FRElBKTsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkgewo+IC0JCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19ibGl0dGVyY291bnQrKyA9PSAw KQo+IC0JCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwK PiAtCQkJCQkJCUZPUkNFV0FLRV9CTElUVEVSKTsKPiAtCQl9Cj4gLQl9IGVsc2Ugewo+IC0JCWlm IChkZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9jb3VudCsrID09IDApCj4gLQkJCWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsCj4gLQkJCQkJCQkgICAgICBG T1JDRVdBS0VfQUxMKTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2 LT51bmNvcmUubG9jaywgZmxhZ3MpOwo+IC0KPiArCWdlbjZfZ3RfZm9yY2Vfd2FrZV9nZXQoZGV2 X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAgCUk5MTVfV1JJVEUoUklOR19FTFNQKHJpbmcpLCBk ZXNjWzFdKTsKPiAgIAlJOTE1X1dSSVRFKFJJTkdfRUxTUChyaW5nKSwgZGVzY1swXSk7Cj4gICAJ STkxNV9XUklURShSSU5HX0VMU1AocmluZyksIGRlc2NbM10pOwo+ICsKPiAgIAkvKiBUaGUgY29u dGV4dCBpcyBhdXRvbWF0aWNhbGx5IGxvYWRlZCBhZnRlciB0aGUgZm9sbG93aW5nICovCj4gICAJ STkxNV9XUklURShSSU5HX0VMU1AocmluZyksIGRlc2NbMl0pOwo+ICAgCj4gICAJLyogRUxTUCBp cyBhIHdvIHJlZ2lzdGVyLCBzbyB1c2UgYW5vdGhlciBuZWFyYnkgcmVnIGZvciBwb3N0aW5nIGlu c3RlYWQgKi8KPiAgIAlQT1NUSU5HX1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVMocmluZykpOwo+ IC0KPiAtCS8qIFJlbGVhc2UgRm9yY2UgV2FrZXVwIChzZWUgdGhlIGJpZyBjb21tZW50IGFib3Zl KS4gKi8KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGZsYWdz KTsKPiAtCWlmIChJU19DSEVSUllWSUVXKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSkgewo+IC0JCWlmICgtLWRldl9wcml2LT51bmNvcmUuZndfcmVuZGVyY291bnQgPT0gMCkKPiAt CQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dChkZXZfcHJpdiwKPiAtCQkJ CQkJCSAgICAgIEZPUkNFV0FLRV9SRU5ERVIpOwo+IC0JCWlmICgtLWRldl9wcml2LT51bmNvcmUu ZndfbWVkaWFjb3VudCA9PSAwKQo+IC0JCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dh a2VfcHV0KGRldl9wcml2LAo+IC0JCQkJCQkJICAgICAgRk9SQ0VXQUtFX01FRElBKTsKPiAtCQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IC0JCQlpZiAoLS1kZXZfcHJpdi0+dW5j b3JlLmZ3X2JsaXR0ZXJjb3VudCA9PSAwKQo+IC0JCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5m b3JjZV93YWtlX3B1dChkZXZfcHJpdiwKPiAtCQkJCQkJCUZPUkNFV0FLRV9CTElUVEVSKTsKPiAt CQl9Cj4gLQl9IGVsc2Ugewo+IC0JCWlmICgtLWRldl9wcml2LT51bmNvcmUuZm9yY2V3YWtlX2Nv dW50ID09IDApCj4gLQkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2 X3ByaXYsCj4gLQkJCQkJCQkgICAgICBGT1JDRVdBS0VfQUxMKTsKPiAtCX0KPiAtCj4gLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGZsYWdzKTsKPiArCWdl bjZfZ3RfZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgaW50IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqY3R4X29iaiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGlu ZGV4IDM4YWMzODkuLmExY2ViOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu Ywo+IEBAIC0yNCw2ICsyNCw4IEBACj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNs dWRlICJpbnRlbF9kcnYuaCIKPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+ ICsKPiAgICNkZWZpbmUgRk9SQ0VXQUtFX0FDS19USU1FT1VUX01TIDIKPiAgIAo+ICAgI2RlZmlu ZSBfX3Jhd19pOTE1X3JlYWQ4KGRldl9wcml2X18sIHJlZ19fKSByZWFkYigoZGV2X3ByaXZfXykt PnJlZ3MgKyAocmVnX18pKQo+IEBAIC0yNDcsMTAgKzI0OSw2IEBAIHN0YXRpYyB2b2lkIF9fdmx2 X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAo+ ICAgc3RhdGljIHZvaWQgdmx2X2ZvcmNlX3dha2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IGZ3X2VuZ2luZSkKPiAgIHsKPiAtCXVuc2lnbmVkIGxvbmcgaXJxZmxh Z3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJx ZmxhZ3MpOwo+IC0KPiAgIAlpZiAoZndfZW5naW5lICYgRk9SQ0VXQUtFX1JFTkRFUiAmJgo+ICAg CSAgICBkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50KysgIT0gMCkKPiAgIAkJZndfZW5n aW5lICY9IH5GT1JDRVdBS0VfUkVOREVSOwo+IEBAIC0yNjAsMTYgKzI1OCwxMCBAQCBzdGF0aWMg dm9pZCB2bHZfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgZndfZW5naW5lKQo+ICAgCj4gICAJaWYgKGZ3X2VuZ2luZSkKPiAgIAkJZGV2X3ByaXYt PnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiAtCj4g LQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdz KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgdmx2X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGZ3X2VuZ2luZSkKPiAgIHsKPiAtCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51 bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+IC0KPiAgIAlpZiAoZndfZW5naW5lICYgRk9SQ0VXQUtF X1JFTkRFUikgewo+ICAgCQlXQVJOX09OKCFkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50 KTsKPiAgIAkJaWYgKC0tZGV2X3ByaXYtPnVuY29yZS5md19yZW5kZXJjb3VudCAhPSAwKQo+IEBA IC0yODQsOCArMjc2LDYgQEAgc3RhdGljIHZvaWQgdmx2X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGZ3X2VuZ2luZSkKPiAgIAo+ICAgCWlmIChm d19lbmdpbmUpCj4gICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2 X3ByaXYsIGZ3X2VuZ2luZSk7Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIF9f Z2VuOV9ndF9mb3JjZV93YWtlX210X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiBAQCAtMzgwLDEwICszNzAsNiBAQCBfX2dlbjlfZm9yY2Vfd2FrZV9wdXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZndfZW5naW5lKQo+ICAgc3RhdGljIHZv aWQKPiAgIGdlbjlfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgZndfZW5naW5lKQo+ICAgewo+IC0JdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAt Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7 Cj4gLQo+ICAgCWlmIChGT1JDRVdBS0VfUkVOREVSICYgZndfZW5naW5lKSB7Cj4gICAJCWlmIChk ZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50KysgPT0gMCkKPiAgIAkJCWRldl9wcml2LT51 bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsCj4gQEAgLTQwMSwxNyArMzg3LDEx IEBAIGdlbjlfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgZndfZW5naW5lKQo+ICAgCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtl X2dldChkZXZfcHJpdiwKPiAgIAkJCQkJCQlGT1JDRVdBS0VfQkxJVFRFUik7Cj4gICAJfQo+IC0K PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxh Z3MpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZAo+ICAgZ2VuOV9mb3JjZV93YWtlX3B1dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBmd19lbmdpbmUpCj4gICB7Cj4g LQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+IC0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZf cHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiAtCj4gICAJaWYgKEZPUkNFV0FLRV9SRU5E RVIgJiBmd19lbmdpbmUpIHsKPiAgIAkJV0FSTl9PTihkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRl cmNvdW50ID09IDApOwo+ICAgCQlpZiAoLS1kZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50 ID09IDApCj4gQEAgLTQzMiw4ICs0MTIsNiBAQCBnZW45X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGZ3X2VuZ2luZSkKPiAgIAkJCWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsCj4gICAJCQkJCQkJRk9SQ0VX QUtFX0JMSVRURVIpOwo+ICAgCX0KPiAtCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZf cHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQg Z2VuNl9mb3JjZV93YWtlX3RpbWVyKHVuc2lnbmVkIGxvbmcgYXJnKQo+IEBAIC01NjQsMTcgKzU0 MiwyMCBAQCB2b2lkIGdlbjZfZ3RfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBpbnQgZndfZW5naW5lKQo+ICAgCj4gICAJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+ICAgCgpJIHRoaW5rIHdlIG5lZWQgdG8gcmVtb3ZlICJpbnRlbF9ydW50 aW1lX3BtX2dldCIgaGVyZT8KSSBzZWUgcnVudGltZV9wdXQgaXMgcmVtb3ZlZCBmcm9tICJnZW42 X2d0X2ZvcmNlX3dha2VfcHV0IgoKPiAtCS8qIFJlZGlyZWN0IHRvIEdlbjkgc3BlY2lmaWMgcm91 dGluZSAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYtPmRldikpCj4gLQkJcmV0dXJuIGdlbjlf Zm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsIGZ3X2VuZ2luZSk7Cj4gLQo+IC0JLyogUmVkaXJlY3Qg dG8gVkxWIHNwZWNpZmljIHJvdXRpbmUgKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 LT5kZXYpKQo+IC0JCXJldHVybiB2bHZfZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsIGZ3X2VuZ2lu ZSk7Cj4gKwlXQVJOX09OKCFwbV9ydW50aW1lX2FjdGl2ZSgmZGV2X3ByaXYtPmRldi0+cGRldi0+ ZGV2KSk7Cj4gICAKPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2Nr LCBpcnFmbGFncyk7Cj4gLQlpZiAoZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQrKyA9 PSAwKQo+IC0JCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYs IEZPUkNFV0FLRV9BTEwpOwo+ICsKPiArCWlmIChJU19HRU45KGRldl9wcml2LT5kZXYpKSB7Cj4g KwkJZ2VuOV9mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiArCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkgewo+ICsJCXZsdl9mb3JjZV93YWtlX2dl dChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiArCX0gZWxzZSB7Cj4gKwkJaWYgKGRldl9wcml2LT51 bmNvcmUuZm9yY2V3YWtlX2NvdW50KysgPT0gMCkKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5j cy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwKPiArCQkJCQkJCSAgICAgIEZPUkNFV0FLRV9BTEwp Owo+ICsJfQo+ICsKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2ssIGlycWZsYWdzKTsKPiAgIH0KPiAgIAo+IEBAIC01ODgsMzEgKzU2OSwyMiBAQCB2b2lk IGdlbjZfZ3RfZm9yY2Vfd2FrZV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgZndfZW5naW5lKQo+ICAgCWlmICghZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93 YWtlX3B1dCkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gLQkvKiBSZWRpcmVjdCB0byBHZW45IHNwZWNp ZmljIHJvdXRpbmUgKi8KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKPiArCj4gICAJaWYgKElTX0dFTjkoZGV2X3ByaXYtPmRldikpIHsKPiAg IAkJZ2VuOV9mb3JjZV93YWtlX3B1dChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiAtCQlnb3RvIG91 dDsKPiAtCX0KPiAtCj4gLQkvKiBSZWRpcmVjdCB0byBWTFYgc3BlY2lmaWMgcm91dGluZSAqLwo+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkgewo+ICAgCQl2bHZfZm9yY2Vfd2FrZV9wdXQoZGV2 X3ByaXYsIGZ3X2VuZ2luZSk7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+IC0JV0FSTl9PTigh ZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQpOwo+IC0KPiAtCWlmICgtLWRldl9wcml2 LT51bmNvcmUuZm9yY2V3YWtlX2NvdW50ID09IDApIHsKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZv cmNld2FrZV9jb3VudCsrOwo+IC0JCW1vZF90aW1lcl9waW5uZWQoJmRldl9wcml2LT51bmNvcmUu Zm9yY2Vfd2FrZV90aW1lciwKPiAtCQkJCSBqaWZmaWVzICsgMSk7Cj4gKwl9IGVsc2Ugewo+ICsJ CVdBUk5fT04oIWRldl9wcml2LT51bmNvcmUuZm9yY2V3YWtlX2NvdW50KTsKPiArCQlpZiAoLS1k ZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9jb3VudCA9PSAwKSB7Cj4gKwkJCWRldl9wcml2LT51 bmNvcmUuZm9yY2V3YWtlX2NvdW50Kys7Cj4gKwkJCW1vZF90aW1lcl9waW5uZWQoJmRldl9wcml2 LT51bmNvcmUuZm9yY2Vfd2FrZV90aW1lciwKPiArCQkJCQkgamlmZmllcyArIDEpOwo+ICsJCX0K PiAgIAl9Cj4gICAKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2ssIGlycWZsYWdzKTsKPiAtCj4gLW91dDoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBhc3NlcnRfZm9yY2Vfd2FrZV9pbmFjdGl2ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=