From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 2/7] drm/i915: Refactor work that can sleep out of commit (v3) Date: Tue, 9 Dec 2014 11:53:38 -0800 Message-ID: <1418154823-10819-3-git-send-email-matthew.d.roper@intel.com> References: <1418154823-10819-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 087876E318 for ; Tue, 9 Dec 2014 11:54:39 -0800 (PST) In-Reply-To: <1418154823-10819-1-git-send-email-matthew.d.roper@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 T25jZSB3ZSBpbnRlZ3JhdGUgb3VyIHdvcmsgaW50byB0aGUgYXRvbWljIHBpcGVsaW5lLCBwbGFu ZSBjb21taXQKb3BlcmF0aW9ucyB3aWxsIG5lZWQgdG8gaGFwcGVuIHdpdGggaW50ZXJydXB0cyBk aXNhYmxlZCwgZHVlIHRvIHZibGFuawpldmFzaW9uLiAgT3VyIGNvbW1pdCBmdW5jdGlvbnMgdG9k YXkgaW5jbHVkZSBzbGVlcGFibGUgd29yaywgc28gdGhvc2UKb3BlcmF0aW9ucyBuZWVkIHRvIGJl IHNwbGl0IG91dCBhbmQgcnVuIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlCmF0b21pYyByZWdp c3RlciBwcm9ncmFtbWluZy4KClRoZSBzb2x1dGlvbiBoZXJlIGNhbGN1bGF0ZXMgd2hpY2ggb2Yg dGhvc2Ugb3BlcmF0aW9ucyB3aWxsIG5lZWQgdG8gYmUKcGVyZm9ybWVkIGR1cmluZyB0aGUgJ2No ZWNrJyBwaGFzZSBhbmQgc2V0cyBmbGFncyBpbiBhbiBpbnRlbF9jcnRjCnN1Yi1zdHJ1Y3QuICBO ZXcgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoKSBhbmQKaW50ZWxfZmluaXNoX2NydGNfY29tbWl0 KCkgZnVuY3Rpb25zIGFyZSBhZGRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZQphY3R1YWwgcmVnaXN0 ZXIgcHJvZ3JhbW1pbmc7IHRoZXNlIHdpbGwgZXZlbnR1YWxseSBiZSBjYWxsZWQgZnJvbSB0aGUK YXRvbWljIHBsYW5lIGhlbHBlcidzIC5hdG9taWNfYmVnaW4oKSBhbmQgLmF0b21pY19lbmQoKSBl bnRyeXBvaW50cy4KCnYyOiBGaXggYnJva2VuIHNwcml0ZSBjb2RlIHNwbGl0Cgp2MzogTWFrZSB0 aGUgcHJlL3Bvc3QgY29tbWl0IHdvcmsgY3J0Yy1iYXNlZCB0byBtYXRjaCBob3cgd2UgZXZlbnR1 YWxseQogICAgd2FudCB0aGlzIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBhdG9taWMgcGxhbmUgaGVs cGVycy4KClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTc0ICsrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICAgfCAgMzAgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyAgfCAgNjggKysrKysrLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlv bnMoKyksIDEwNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK aW5kZXggYTliZGMxMi4uNDkyOTAwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwpAQCAtMTE3MzcsNyArMTE3MzcsMTEgQEAgc3RhdGljIGludAogaW50ZWxfY2hlY2tfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpzdGF0ZSkKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7CisJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKIAlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3Qg PSAmc3RhdGUtPmRzdDsKIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwpAQCAt MTE3NTgsNiArMTE3NjIsNDAgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAKKwlpZiAoaW50ZWxfY3J0Yy0+ YWN0aXZlKSB7CisJCS8qCisJCSAqIEZCQyBkb2VzIG5vdCB3b3JrIG9uIHNvbWUgcGxhdGZvcm1z IGZvciByb3RhdGVkCisJCSAqIHBsYW5lcywgc28gZGlzYWJsZSBpdCB3aGVuIHJvdGF0aW9uIGlz IG5vdCAwIGFuZAorCQkgKiB1cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFjayB0byAw LgorCQkgKgorCQkgKiBGSVhNRTogVGhpcyBpcyByZWR1bmRhbnQgd2l0aCB0aGUgZmJjIHVwZGF0 ZSBkb25lIGluCisJCSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5jdGlvbiBleGNlcHQg dGhhdCB0aGF0CisJCSAqIG9uZSBpcyBkb25lIHRvbyBsYXRlLiBXZSBldmVudHVhbGx5IG5lZWQg dG8gdW5pZnkKKwkJICogdGhpcy4KKwkJICovCisJCWlmIChpbnRlbF9jcnRjLT5wcmltYXJ5X2Vu YWJsZWQgJiYKKwkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXYp ICYmCisJCSAgICBkZXZfcHJpdi0+ZmJjLnBsYW5lID09IGludGVsX2NydGMtPnBsYW5lICYmCisJ CSAgICBpbnRlbF9wbGFuZS0+cm90YXRpb24gIT0gQklUKERSTV9ST1RBVEVfMCkpIHsKKwkJCWlu dGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYyA9IHRydWU7CisJCX0KKworCQlpZiAoc3RhdGUt PnZpc2libGUpIHsKKwkJCS8qCisJCQkgKiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRl bHkgaWYgdGhlIHBsYW5lCisJCQkgKiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxhbmUgZW5h YmxlIGlzIGFscmVhZHkKKwkJCSAqIGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZibGFuayA6 KAorCQkJICovCisJCQlpZiAoSVNfQlJPQURXRUxMKGRldikgJiYgIWludGVsX2NydGMtPnByaW1h cnlfZW5hYmxlZCkKKwkJCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0cnVlOwor CQl9CisKKwkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KKwkJCUlOVEVMX0ZST05UQlVG RkVSX1BSSU1BUlkoaW50ZWxfY3J0Yy0+cGlwZSk7CisKKwkJaW50ZWxfY3J0Yy0+YXRvbWljLnVw ZGF0ZV9mYmMgPSB0cnVlOworCX0KKwogCXJldHVybiAwOwogfQogCkBAIC0xMTc3MywxOCArMTE4 MTEsNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsK IAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUp OwogCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7Ci0JZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9wbGFuZS0+cGlwZTsKLQotCWlmICghZmIpIHsKLQkJLyoKLQkJICogJ3ByZXBhcmUn IGlzIG5ldmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkLCBzbwotCQkgKiB3 ZSBuZWVkIHRvIGhhbmRsZSBmcm9udGJ1ZmZlciB0cmFja2luZyBoZXJlCi0JCSAqLwotCQltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2Zi X29iaihwbGFuZS0+ZmIpLCBOVUxMLAotCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShw aXBlKSk7Ci0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCX0KIAogCXBsYW5l LT5mYiA9IGZiOwogCWNydGMtPnggPSBzcmMtPngxID4+IDE2OwpAQCAtMTE4MDEsMjYgKzExODI3 LDcgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJaW50ZWxfcGxhbmUtPm9iaiA9IG9iajsKIAogCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsK LQkJLyoKLQkJICogRkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0 ZWQKLQkJICogcGxhbmVzLCBzbyBkaXNhYmxlIGl0IHdoZW4gcm90YXRpb24gaXMgbm90IDAgYW5k Ci0JCSAqIHVwZGF0ZSBpdCB3aGVuIHJvdGF0aW9uIGlzIHNldCBiYWNrIHRvIDAuCi0JCSAqCi0J CSAqIEZJWE1FOiBUaGlzIGlzIHJlZHVuZGFudCB3aXRoIHRoZSBmYmMgdXBkYXRlIGRvbmUgaW4K LQkJICogdGhlIHByaW1hcnkgcGxhbmUgZW5hYmxlIGZ1bmN0aW9uIGV4Y2VwdCB0aGF0IHRoYXQK LQkJICogb25lIGlzIGRvbmUgdG9vIGxhdGUuIFdlIGV2ZW50dWFsbHkgbmVlZCB0byB1bmlmeQot CQkgKiB0aGlzLgotCQkgKi8KLQkJaWYgKGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCAmJgot CQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzRYKGRldikgJiYKLQkJICAg IGRldl9wcml2LT5mYmMucGxhbmUgPT0gaW50ZWxfY3J0Yy0+cGxhbmUgJiYKLQkJICAgIGludGVs X3BsYW5lLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewotCQkJaW50ZWxfZGlzYWJs ZV9mYmMoZGV2KTsKLQkJfQotCiAJCWlmIChzdGF0ZS0+dmlzaWJsZSkgewotCQkJYm9vbCB3YXNf ZW5hYmxlZCA9IGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZDsKLQogCQkJLyogRklYTUU6IGtp bGwgdGhpcyBmYXN0Ym9vdCBoYWNrICovCiAJCQlpbnRlbF91cGRhdGVfcGlwZV9zaXplKGludGVs X2NydGMpOwogCkBAIC0xMTgyOCwxNCArMTE4MzUsNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBk YXRlX3ByaW1hcnlfcGxhbmUoY3J0YywgcGxhbmUtPmZiLAogCQkJCQljcnRjLT54LCBjcnRjLT55 KTsKLQotCQkJLyoKLQkJCSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlhdGVseSBpZiB0 aGUgcGxhbmUKLQkJCSAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRoZSBwbGFuZSBlbmFibGUgaXMg YWxyZWFkeQotCQkJICogYXJtZWQgdG8gb2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCi0JCQkg Ki8KLQkJCWlmIChJU19CUk9BRFdFTEwoZGV2KSAmJiAhd2FzX2VuYWJsZWQpCi0JCQkJaW50ZWxf d2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7CiAJCX0gZWxzZSB7CiAJCQkv KgogCQkJICogSWYgY2xpcHBpbmcgcmVzdWx0cyBpbiBhIG5vbi12aXNpYmxlIHByaW1hcnkgcGxh bmUsCkBAIC0xMTg0NiwxMyArMTE4NDUsNDQgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgKi8KIAkJCWludGVsX2Rpc2FibGVfcHJpbWFy eV9od19wbGFuZShwbGFuZSwgY3J0Yyk7CiAJCX0KKwl9Cit9CiAKLQkJaW50ZWxfZnJvbnRidWZm ZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkocGlwZSkpOworc3RhdGljIHZv aWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCisJaWYgKGludGVsX2NydGMtPmF0b21p Yy5kaXNhYmxlX2ZiYykKKwkJaW50ZWxfZGlzYWJsZV9mYmMoZGV2KTsKKworCWlmIChpbnRlbF9j cnRjLT5hdG9taWMucHJlX2Rpc2FibGVfcHJpbWFyeSkKKwkJaW50ZWxfcHJlX2Rpc2FibGVfcHJp bWFyeShjcnRjKTsKKworCWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtKQorCQlpbnRl bF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfZmluaXNo X2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKKworCWlmIChpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92Ymxhbmsp CisJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOworCisJaW50 ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIGludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzKTsKKwor CWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX2ZiYykgewogCQltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CiAJCWludGVsX3VwZGF0ZV9mYmMoZGV2KTsKIAkJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJfQorCisJaWYgKGludGVsX2NydGMtPmF0b21pYy5wb3N0 X2VuYWJsZV9wcmltYXJ5KQorCQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KGNydGMpOworCisJ bWVtc2V0KCZpbnRlbF9jcnRjLT5hdG9taWMsIDAsIHNpemVvZihpbnRlbF9jcnRjLT5hdG9taWMp KTsKIH0KIAogaW50CkBAIC0xMTg2NCw3ICsxMTg5NCw3IEBAIGludGVsX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogewogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg Km9sZF9mYiA9IHBsYW5lLT5mYjsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3RhdGU7CisJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHN0YXRlID0ge3sgMCB9fTsKIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwpAQCAt MTE5MDIsNyArMTE5MzIsMzMgQEAgaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQlyZXR1cm4gcmV0OwogCX0KIAorCWlm ICghc3RhdGUuYmFzZS5mYikgeworCQl1bnNpZ25lZCBmYl9iaXRzID0gMDsKKworCQlzd2l0Y2gg KHBsYW5lLT50eXBlKSB7CisJCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKKwkJCWZiX2Jp dHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGludGVsX3BsYW5lLT5waXBlKTsKKwkJCWJy ZWFrOworCQljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKKwkJCWZiX2JpdHMgPSBJTlRFTF9G Uk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfcGxhbmUtPnBpcGUpOworCQkJYnJlYWs7CisJCWNhc2Ug RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKKwkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9T UFJJVEUoaW50ZWxfcGxhbmUtPnBpcGUpOworCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiAn cHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVkIHdoZW4gcGxhbmUgaXMgYmVpbmcgZGlzYWJsZWQsIHNv CisJCSAqIHdlIG5lZWQgdG8gaGFuZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGhlcmUKKwkJICov CisJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJaTkxNV9nZW1fdHJhY2tfZmIo aW50ZWxfZmJfb2JqKHBsYW5lLT5mYiksIE5VTEwsIGZiX2JpdHMpOworCQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKKwl9CisKKwlpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChjcnRj KTsKIAlpbnRlbF9wbGFuZS0+Y29tbWl0X3BsYW5lKHBsYW5lLCAmc3RhdGUpOworCWludGVsX2Zp bmlzaF9jcnRjX2NvbW1pdChjcnRjKTsKIAogCWlmIChmYiAhPSBvbGRfZmIgJiYgb2xkX2ZiKSB7 CiAJCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCkBAIC0xMjAwOSw2ICsxMjA2NSw3IEBAIGludGVs X2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgZHJt X3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwogCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9 ICZzdGF0ZS0+Y2xpcDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxf ZmJfb2JqKGZiKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7CiAJaW50IGNydGNfdywgY3J0Y19oOwogCXVuc2lnbmVkIHN0cmlkZTsKIAlpbnQg cmV0OwpAQCAtMTIwMjQsNyArMTIwODEsNyBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAkvKiBpZiB3ZSB3YW50IHRvIHR1cm4gb2ZmIHRoZSBj dXJzb3IgaWdub3JlIHdpZHRoIGFuZCBoZWlnaHQgKi8KIAlpZiAoIW9iaikKLQkJcmV0dXJuIDA7 CisJCWdvdG8gZmluaXNoOwogCiAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0eXBlcyB3ZSBz dXBwb3J0ICovCiAJY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX2RzdCk7CkBA IC0xMjA1MSw2ICsxMjEwOCwxNiBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJfQogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwog CitmaW5pc2g6CisJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgeworCQlpZiAoaW50ZWxfY3J0Yy0+ Y3Vyc29yX3dpZHRoICE9CisJCSAgICBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KSkK KwkJCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfd20gPSB0cnVlOworCisJCWludGVsX2NydGMt PmF0b21pYy5mYl9iaXRzIHw9CisJCQlJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfY3J0 Yy0+cGlwZSk7CisJfQorCiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTIwNjMsOSArMTIxMzAsNiBA QCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooc3RhdGUtPmJhc2Uu ZmIpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxfZmJfb2Jq KHBsYW5lLT5mYik7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCXVuc2ln bmVkIG9sZF93aWR0aDsKIAl1aW50MzJfdCBhZGRyOwogCiAJcGxhbmUtPmZiID0gc3RhdGUtPmJh c2UuZmI7CkBAIC0xMjA4NSwxNyArMTIxNDksNiBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWlmIChpbnRlbF9jcnRjLT5jdXJzb3JfYm8gPT0g b2JqKQogCQlnb3RvIHVwZGF0ZTsKIAotCS8qCi0JICogJ3ByZXBhcmUnIGlzIG9ubHkgY2FsbGVk IHdoZW4gZmIgIT0gTlVMTDsgd2Ugc3RpbGwgbmVlZCB0byB1cGRhdGUKLQkgKiBmcm9udGJ1ZmZl ciB0cmFja2luZyBmb3IgdGhlICdkaXNhYmxlJyBjYXNlIGhlcmUuCi0JICovCi0JaWYgKCFvYmop IHsKLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpOTE1X2dlbV90cmFja19m YihvbGRfb2JqLCBOVUxMLAotCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBpcGUpKTsK LQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JfQotCiAJaWYgKCFvYmopCiAJ CWFkZHIgPSAwOwogCWVsc2UgaWYgKCFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlz aWNhbCkKQEAgLTEyMTA2LDE4ICsxMjE1OSwxMSBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludGVsX2NydGMtPmN1cnNvcl9hZGRyID0gYWRk cjsKIAlpbnRlbF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7CiB1cGRhdGU6Ci0Jb2xkX3dpZHRoID0g aW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoOwotCiAJaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoID0g ZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX2RzdCk7CiAJaW50ZWxfY3J0Yy0+Y3Vyc29yX2hl aWdodCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPm9yaWdfZHN0KTsKIAotCWlmIChpbnRlbF9j cnRjLT5hY3RpdmUpIHsKLQkJaWYgKG9sZF93aWR0aCAhPSBpbnRlbF9jcnRjLT5jdXJzb3Jfd2lk dGgpCi0JCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKKwlpZiAoaW50ZWxfY3J0Yy0+ YWN0aXZlKQogCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3IoY3J0Yywgc3RhdGUtPnZpc2libGUp OwotCi0JCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZFUl9DVVJT T1IocGlwZSkpOwotCX0KIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mg aW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRl eCA2MWE4OGZhLi5iMjUyMGZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMjUxLDYg KzI1MSwxMiBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewogCXN0cnVjdCBkcm1fcmVjdCBv cmlnX3NyYzsKIAlzdHJ1Y3QgZHJtX3JlY3Qgb3JpZ19kc3Q7CiAJYm9vbCB2aXNpYmxlOworCisJ LyoKKwkgKiB1c2VkIG9ubHkgZm9yIHNwcml0ZSBwbGFuZXMgdG8gZGV0ZXJtaW5lIHdoZW4gdG8g aW1wbGljaXRseQorCSAqIGVuYWJsZS9kaXNhYmxlIHRoZSBwcmltYXJ5IHBsYW5lCisJICovCisJ Ym9vbCBoaWRlc19wcmltYXJ5OwogfTsKIAogc3RydWN0IGludGVsX3BsYW5lX2NvbmZpZyB7CkBA IC00MTUsNiArNDIxLDI2IEBAIHN0cnVjdCBza2xfcGlwZV93bSB7CiAJdWludDMyX3QgbGluZXRp bWU7CiB9OwogCisvKgorICogVHJhY2tpbmcgb2Ygb3BlcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUg cGVyZm9ybWVkIGF0IHRoZSBiZWdpbm5pbmcvZW5kIG9mIGFuCisgKiBhdG9taWMgY29tbWl0LCBv dXRzaWRlIHRoZSBhdG9taWMgc2VjdGlvbiB3aGVyZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4K KyAqIFRoZXNlIGFyZSBnZW5lcmFsbHkgb3BlcmF0aW9ucyB0aGF0IGdyYWIgbXV0ZXhlcyBvciBt aWdodCBvdGhlcndpc2Ugc2xlZXAKKyAqIGFuZCB0aHVzIGNhbid0IGJlIHJ1biB3aXRoIGludGVy cnVwdHMgZGlzYWJsZWQuCisgKi8KK3N0cnVjdCBpbnRlbF9jcnRjX2F0b21pY19jb21taXQgewor CS8qIFNsZWVwYWJsZSBvcGVyYXRpb25zIHRvIHBlcmZvcm0gYmVmb3JlIGNvbW1pdCAqLworCWJv b2wgd2FpdF9mb3JfZmxpcHM7CisJYm9vbCBkaXNhYmxlX2ZiYzsKKwlib29sIHByZV9kaXNhYmxl X3ByaW1hcnk7CisJYm9vbCB1cGRhdGVfd207CisKKwkvKiBTbGVlcGFibGUgb3BlcmF0aW9ucyB0 byBwZXJmb3JtIGFmdGVyIGNvbW1pdCAqLworCXVuc2lnbmVkIGZiX2JpdHM7CisJYm9vbCB3YWl0 X3ZibGFuazsKKwlib29sIHVwZGF0ZV9mYmM7CisJYm9vbCBwb3N0X2VuYWJsZV9wcmltYXJ5Owor fTsKKwogc3RydWN0IGludGVsX2NydGMgewogCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwogCWVudW0g cGlwZSBwaXBlOwpAQCAtNDY4LDYgKzQ5NCw4IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAogCWlu dCBzY2FubGluZV9vZmZzZXQ7CiAJc3RydWN0IGludGVsX21taW9fZmxpcCBtbWlvX2ZsaXA7CisK KwlzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29tbWl0IGF0b21pYzsKIH07CiAKIHN0cnVjdCBp bnRlbF9wbGFuZV93bV9wYXJhbWV0ZXJzIHsKQEAgLTEyMDgsNiArMTIzNiw4IEBAIGludCBpbnRl bF9zcHJpdGVfZ2V0X2NvbG9ya2V5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiBib29sIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAog CQkJICAgICB1aW50MzJfdCAqc3RhcnRfdmJsX2NvdW50KTsKIHZvaWQgaW50ZWxfcGlwZV91cGRh dGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1MzIgc3RhcnRfdmJsX2NvdW50KTsKK3Zv aWQgaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwordm9p ZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAKIC8q IGludGVsX3R2LmMgKi8KIHZvaWQgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggYmM1ODM0Yi4uMGEyYmU3OCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTk4MSw3ICs5ODEsNyBAQCBpbGtf ZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjKQogCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhwbGFuZSwgY3J0YywgMCwgMCwg MCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotc3RhdGljIHZvaWQKK3ZvaWQKIGludGVsX3Bvc3RfZW5h YmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBpbnRlbF9wb3N0X2VuYWJs ZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIH0KIAotc3RhdGljIHZvaWQKK3ZvaWQKIGludGVsX3ByZV9kaXNhYmxlX3By aW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAlpZiAoIWZiKSB7CiAJCXN0YXRlLT52aXNp YmxlID0gZmFsc2U7Ci0JCXJldHVybiAwOworCQlnb3RvIGZpbmlzaDsKIAl9CiAKIAkvKiBEb24n dCBtb2RpZnkgYW5vdGhlciBwaXBlJ3MgcGxhbmUgKi8KQEAgLTEyNjAsNiArMTI2MCwyOSBAQCBp bnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJZHN0LT55 MSA9IGNydGNfeTsKIAlkc3QtPnkyID0gY3J0Y195ICsgY3J0Y19oOwogCitmaW5pc2g6CisJLyoK KwkgKiBJZiB0aGUgc3ByaXRlIGlzIGNvbXBsZXRlbHkgY292ZXJpbmcgdGhlIHByaW1hcnkgcGxh bmUsCisJICogd2UgY2FuIGRpc2FibGUgdGhlIHByaW1hcnkgYW5kIHNhdmUgcG93ZXIuCisJICov CisJc3RhdGUtPmhpZGVzX3ByaW1hcnkgPSBkcm1fcmVjdF9lcXVhbHMoZHN0LCBjbGlwKSAmJgor CQkhY29sb3JrZXlfZW5hYmxlZChpbnRlbF9wbGFuZSk7CisJV0FSTl9PTihzdGF0ZS0+aGlkZXNf cHJpbWFyeSAmJiAhc3RhdGUtPnZpc2libGUgJiYgaW50ZWxfY3J0Yy0+YWN0aXZlKTsKKworCWlm IChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKKwkJaWYgKGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxl ZCA9PSBzdGF0ZS0+aGlkZXNfcHJpbWFyeSkKKwkJCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGlu Z19mbGlwcygmaW50ZWxfY3J0Yy0+YmFzZSk7CisKKwkJaWYgKGludGVsX2NydGMtPnByaW1hcnlf ZW5hYmxlZCAmJiBzdGF0ZS0+aGlkZXNfcHJpbWFyeSkKKwkJCWludGVsX2NydGMtPmF0b21pYy5w cmVfZGlzYWJsZV9wcmltYXJ5ID0gdHJ1ZTsKKworCQlpbnRlbF9jcnRjLT5hdG9taWMuZmJfYml0 cyB8PQorCQkJSU5URUxfRlJPTlRCVUZGRVJfU1BSSVRFKGludGVsX2NydGMtPnBpcGUpOworCisJ CWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkICYmICFzdGF0ZS0+aGlkZXNfcHJpbWFy eSkKKwkJCWludGVsX2NydGMtPmF0b21pYy5wb3N0X2VuYWJsZV9wcmltYXJ5ID0gdHJ1ZTsKKwl9 CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTI2NywzNyArMTI5MCwxNCBAQCBzdGF0aWMgdm9pZAog aW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcGxhbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5j cnRjOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwogCWludCBjcnRjX3gsIGNydGNfeTsKIAl1bnNp Z25lZCBpbnQgY3J0Y193LCBjcnRjX2g7CiAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywg c3JjX2g7Ci0Jc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmc3RhdGUtPmRzdDsKLQljb25zdCBzdHJ1 Y3QgZHJtX3JlY3QgKmNsaXAgPSAmc3RhdGUtPmNsaXA7Ci0JYm9vbCBwcmltYXJ5X2VuYWJsZWQ7 Ci0KLQkvKgotCSAqICdwcmVwYXJlJyBpcyBuZXZlciBjYWxsZWQgd2hlbiBwbGFuZSBpcyBiZWlu ZyBkaXNhYmxlZCwgc28gd2UgbmVlZAotCSAqIHRvIGhhbmRsZSBmcm9udGJ1ZmZlciB0cmFja2lu ZyBoZXJlCi0JICovCi0JaWYgKCFmYikgewotCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Ci0JCWk5MTVfZ2VtX3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIpLCBOVUxMLAot CQkJCSAgSU5URUxfRlJPTlRCVUZGRVJfU1BSSVRFKHBpcGUpKTsKLQkJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Ci0JfQotCi0JLyoKLQkgKiBJZiB0aGUgc3ByaXRlIGlzIGNvbXBs ZXRlbHkgY292ZXJpbmcgdGhlIHByaW1hcnkgcGxhbmUsCi0JICogd2UgY2FuIGRpc2FibGUgdGhl IHByaW1hcnkgYW5kIHNhdmUgcG93ZXIuCi0JICovCi0JcHJpbWFyeV9lbmFibGVkID0gIWRybV9y ZWN0X2VxdWFscyhkc3QsIGNsaXApIHx8IGNvbG9ya2V5X2VuYWJsZWQoaW50ZWxfcGxhbmUpOwot CVdBUk5fT04oIXByaW1hcnlfZW5hYmxlZCAmJiAhc3RhdGUtPnZpc2libGUgJiYgaW50ZWxfY3J0 Yy0+YWN0aXZlKTsKIAogCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19kc3QueDE7 CiAJaW50ZWxfcGxhbmUtPmNydGNfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKQEAgLTEzMTAsMTUg KzEzMTAsNyBAQCBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCWludGVsX3BsYW5lLT5vYmogPSBvYmo7CiAKIAlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZl KSB7Ci0JCWJvb2wgcHJpbWFyeV93YXNfZW5hYmxlZCA9IGludGVsX2NydGMtPnByaW1hcnlfZW5h YmxlZDsKLQotCQlpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgPSBwcmltYXJ5X2VuYWJsZWQ7 Ci0KLQkJaWYgKHByaW1hcnlfd2FzX2VuYWJsZWQgIT0gcHJpbWFyeV9lbmFibGVkKQotCQkJaW50 ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKGNydGMpOwotCi0JCWlmIChwcmltYXJ5X3dh c19lbmFibGVkICYmICFwcmltYXJ5X2VuYWJsZWQpCi0JCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmlt YXJ5KGNydGMpOworCQlpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQgPSAhc3RhdGUtPmhpZGVz X3ByaW1hcnk7CiAKIAkJaWYgKHN0YXRlLT52aXNpYmxlKSB7CiAJCQljcnRjX3ggPSBzdGF0ZS0+ ZHN0LngxOwpAQCAtMTMzNSwxMiArMTMyNyw2IEBAIGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0gZWxzZSB7CiAJCQlpbnRlbF9wbGFuZS0+ZGlz YWJsZV9wbGFuZShwbGFuZSwgY3J0Yyk7CiAJCX0KLQotCi0JCWludGVsX2Zyb250YnVmZmVyX2Zs aXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUocGlwZSkpOwotCi0JCWlmICghcHJpbWFy eV93YXNfZW5hYmxlZCAmJiBwcmltYXJ5X2VuYWJsZWQpCi0JCQlpbnRlbF9wb3N0X2VuYWJsZV9w cmltYXJ5KGNydGMpOwogCX0KIH0KIAotLSAKMS44LjUuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK