From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 06/11] drm/i915/gtt: Convert vm->scratch into an array Date: Sun, 7 Jul 2019 22:00:19 +0100 Message-ID: <20190707210024.26192-7-chris@chris-wilson.co.uk> References: <20190707210024.26192-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3339489ABA for ; Sun, 7 Jul 2019 21:02:20 +0000 (UTC) In-Reply-To: <20190707210024.26192-1-chris@chris-wilson.co.uk> 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 RWFjaCBsZXZlbCBoYXMgaXRzIG93biBzY3JhdGNoLiBNYWtlIHRoZSBsZXZlbHMgbW9yZSBvYnZp b3VzIGJ5IGZvcmdvaW5nCnRoZSBmYW5jeSBzaW1pbGFybHkgbmFtZXMgYW5kIHJlcGxhY2UgdGhl bSB3aXRoIGEgbnVtYmVyLiAwIGlzIHRoZSBib3R0b20KbW9zdCBsZXZlbCwgdGhlIHBoeXNpY2Fs IHBhZ2UgdXNlZCBmb3IgYWN0dWFsIGRhdGE7IDErIGFyZSB0aGUgcGFnZQpkaXJlY3Rvcmllcy4K ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgMjA2ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwg IDE0ICstCiAyIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDEyMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDI3MTMwNTcwNWMxYy4uYjc4 ODJmMDYyMTRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtNjM0LDcgKzYz NCw3IEBAIHNldHVwX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwg Z2ZwX3QgZ2ZwKQogCWdmcCB8PSBfX0dGUF9aRVJPIHwgX19HRlBfUkVUUllfTUFZRkFJTDsKIAog CWRvIHsKLQkJaW50IG9yZGVyID0gZ2V0X29yZGVyKHNpemUpOworCQl1bnNpZ25lZCBpbnQgb3Jk ZXIgPSBnZXRfb3JkZXIoc2l6ZSk7CiAJCXN0cnVjdCBwYWdlICpwYWdlOwogCQlkbWFfYWRkcl90 IGFkZHI7CiAKQEAgLTY1Myw4ICs2NTMsOCBAQCBzZXR1cF9zY3JhdGNoX3BhZ2Uoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sIGdmcF90IGdmcCkKIAkJaWYgKHVubGlrZWx5KCFJU19BTElH TkVEKGFkZHIsIHNpemUpKSkKIAkJCWdvdG8gdW5tYXBfcGFnZTsKIAotCQl2bS0+c2NyYXRjaF9w YWdlLnBhZ2UgPSBwYWdlOwotCQl2bS0+c2NyYXRjaF9wYWdlLmRhZGRyID0gYWRkcjsKKwkJdm0t PnNjcmF0Y2hbMF0uYmFzZS5wYWdlID0gcGFnZTsKKwkJdm0tPnNjcmF0Y2hbMF0uYmFzZS5kYWRk ciA9IGFkZHI7CiAJCXZtLT5zY3JhdGNoX29yZGVyID0gb3JkZXI7CiAJCXJldHVybiAwOwogCkBA IC02NzMsOCArNjczLDggQEAgc2V0dXBfc2NyYXRjaF9wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLCBnZnBfdCBnZnApCiAKIHN0YXRpYyB2b2lkIGNsZWFudXBfc2NyYXRjaF9wYWdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogewotCXN0cnVjdCBpOTE1X3BhZ2VfZG1h ICpwID0gJnZtLT5zY3JhdGNoX3BhZ2U7Ci0JaW50IG9yZGVyID0gdm0tPnNjcmF0Y2hfb3JkZXI7 CisJc3RydWN0IGk5MTVfcGFnZV9kbWEgKnAgPSBweF9iYXNlKCZ2bS0+c2NyYXRjaFswXSk7CisJ dW5zaWduZWQgaW50IG9yZGVyID0gdm0tPnNjcmF0Y2hfb3JkZXI7CiAKIAlkbWFfdW5tYXBfcGFn ZSh2bS0+ZG1hLCBwLT5kYWRkciwgQklUKG9yZGVyKSA8PCBQQUdFX1NISUZULAogCQkgICAgICAg UENJX0RNQV9CSURJUkVDVElPTkFMKTsKQEAgLTY4MywxNSArNjgzLDE2IEBAIHN0YXRpYyB2b2lk IGNsZWFudXBfc2NyYXRjaF9wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCiBz dGF0aWMgdm9pZCBmcmVlX3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7 Ci0JaWYgKCF2bS0+c2NyYXRjaF9wYWdlLmRhZGRyKSAvKiBzZXQgdG8gMCBvbiBjbG9uZXMgKi8K KwlpbnQgaTsKKworCWlmICghcHhfZG1hKCZ2bS0+c2NyYXRjaFswXSkpIC8qIHNldCB0byAwIG9u IGNsb25lcyAqLwogCQlyZXR1cm47CiAKLQlpZiAodm0tPnNjcmF0Y2hfcGRwLmRhZGRyKQotCQlj bGVhbnVwX3BhZ2VfZG1hKHZtLCAmdm0tPnNjcmF0Y2hfcGRwKTsKLQlpZiAodm0tPnNjcmF0Y2hf cGQuZGFkZHIpCi0JCWNsZWFudXBfcGFnZV9kbWEodm0sICZ2bS0+c2NyYXRjaF9wZCk7Ci0JaWYg KHZtLT5zY3JhdGNoX3B0LmRhZGRyKQotCQljbGVhbnVwX3BhZ2VfZG1hKHZtLCAmdm0tPnNjcmF0 Y2hfcHQpOworCWZvciAoaSA9IDE7IGkgPD0gdm0tPnRvcDsgaSsrKSB7CisJCWlmICghcHhfZG1h KCZ2bS0+c2NyYXRjaFtpXSkpCisJCQlicmVhazsKKwkJY2xlYW51cF9wYWdlX2RtYSh2bSwgcHhf YmFzZSgmdm0tPnNjcmF0Y2hbaV0pKTsKKwl9CiAKIAljbGVhbnVwX3NjcmF0Y2hfcGFnZSh2bSk7 CiB9CkBAIC03NTMsOSArNzU0LDkgQEAgc3RhdGljIHZvaWQgZnJlZV9wZChzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwgc3RydWN0IGk5MTVfcGFnZV9kbWEgKnBkKQogI2RlZmluZSBmcmVl X3B4KHZtLCBweCkgZnJlZV9wZCh2bSwgcHhfYmFzZShweCkpCiAKIHN0YXRpYyB2b2lkIGluaXRf cGQoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkLAotCQkgICAgc3RydWN0IGk5MTVfcGFn ZV9kbWEgKnNjcmF0Y2gpCisJCSAgICBzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKnNjcmF0Y2gp CiB7Ci0JZmlsbF9weChwZCwgZ2VuOF9wZGVfZW5jb2RlKHNjcmF0Y2gtPmRhZGRyLCBJOTE1X0NB Q0hFX0xMQykpOworCWZpbGxfcHgocGQsIHNjcmF0Y2gtPmVuY29kZSk7CiAJbWVtc2V0X3AocGQt PmVudHJ5LCBzY3JhdGNoLCA1MTIpOwogfQogCkBAIC03ODMsMzAgKzc4NCwyNiBAQCBfX3NldF9w ZF9lbnRyeShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkLAogCXdyaXRlX2Rt YV9lbnRyeShweF9iYXNlKHBkKSwgcGRlLCBlbmNvZGUodG8tPmRhZGRyLCBJOTE1X0NBQ0hFX0xM QykpOwogfQogCisjZGVmaW5lIHNldF9wZF9lbnRyeShwZCwgcGRlLCB0bykgXAorCV9fc2V0X3Bk X2VudHJ5KChwZCksIChwZGUpLCBweF9iYXNlKHRvKSwgZ2VuOF9wZGVfZW5jb2RlKQorCiBzdGF0 aWMgaW5saW5lIHZvaWQKLV9fY2xlYXJfcGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKiBjb25zdCBwZCwKLQkJIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBkZSwKLQkJIHN0cnVjdCBp OTE1X3BhZ2VfZG1hICogY29uc3QgdG8sCi0JCSB1NjQgKCplbmNvZGUpKGNvbnN0IGRtYV9hZGRy X3QsIGNvbnN0IGVudW0gaTkxNV9jYWNoZV9sZXZlbCkpCitjbGVhcl9wZF9lbnRyeShzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkLAorCSAgICAgICBjb25zdCB1bnNpZ25lZCBz aG9ydCBwZGUsCisJICAgICAgIHN0cnVjdCBpOTE1X3BhZ2Vfc2NyYXRjaCAqIGNvbnN0IHNjcmF0 Y2gpCiB7CiAJR0VNX0JVR19PTihhdG9taWNfcmVhZChweF91c2VkKHBkKSkgPT0gMCk7CiAKLQl3 cml0ZV9kbWFfZW50cnkocHhfYmFzZShwZCksIHBkZSwgZW5jb2RlKHRvLT5kYWRkciwgSTkxNV9D QUNIRV9MTEMpKTsKLQlwZC0+ZW50cnlbcGRlXSA9IHRvOworCXdyaXRlX2RtYV9lbnRyeShweF9i YXNlKHBkKSwgcGRlLCBzY3JhdGNoLT5lbmNvZGUpOworCXBkLT5lbnRyeVtwZGVdID0gc2NyYXRj aDsKIAlhdG9taWNfZGVjKHB4X3VzZWQocGQpKTsKIH0KIAotI2RlZmluZSBzZXRfcGRfZW50cnko cGQsIHBkZSwgdG8pIFwKLQlfX3NldF9wZF9lbnRyeSgocGQpLCAocGRlKSwgcHhfYmFzZSh0byks IGdlbjhfcGRlX2VuY29kZSkKLQotI2RlZmluZSBjbGVhcl9wZF9lbnRyeShwZCwgcGRlLCB0bykg XAotCV9fY2xlYXJfcGRfZW50cnkoKHBkKSwgKHBkZSksICh0byksIGdlbjhfcGRlX2VuY29kZSkK LQogc3RhdGljIGJvb2wKIHJlbGVhc2VfcGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKiBjb25zdCBwZCwKIAkJIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBkZSwKIAkJIHN0cnVjdCBp OTE1X3BhZ2VfdGFibGUgKiBjb25zdCBwdCwKLQkJIHN0cnVjdCBpOTE1X3BhZ2VfZG1hICogY29u c3Qgc2NyYXRjaCkKKwkJIHN0cnVjdCBpOTE1X3BhZ2Vfc2NyYXRjaCAqIGNvbnN0IHNjcmF0Y2gp CiB7CiAJYm9vbCBmcmVlID0gZmFsc2U7CiAKQEAgLTkxMyw3ICs5MTAsNyBAQCBzdGF0aWMgdm9p ZCBnZW44X2ZyZWVfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJ aW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9QREVTOyBpKyspIHsKLQkJaWYgKHBkLT5l bnRyeVtpXSAhPSAmdm0tPnNjcmF0Y2hfcHQpCisJCWlmIChwZC0+ZW50cnlbaV0gIT0gJnZtLT5z Y3JhdGNoWzFdKQogCQkJZnJlZV9wZCh2bSwgcGQtPmVudHJ5W2ldKTsKIAl9CiB9CkBAIC05MjUs NyArOTIyLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcGRwZXM7 IGkrKykgewotCQlpZiAocGRwLT5lbnRyeVtpXSA9PSAmdm0tPnNjcmF0Y2hfcGQpCisJCWlmIChw ZHAtPmVudHJ5W2ldID09ICZ2bS0+c2NyYXRjaFsyXSkKIAkJCWNvbnRpbnVlOwogCiAJCWdlbjhf ZnJlZV9wYWdlX3RhYmxlcyh2bSwgcGRwLT5lbnRyeVtpXSk7CkBAIC05NDMsNyArOTQwLDcgQEAg c3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwoc3RydWN0IGk5MTVfcHBndHQgKnBw Z3R0KQogCWZvciAoaSA9IDA7IGkgPCBHRU44X1BNTDRFU19QRVJfUE1MNDsgaSsrKSB7CiAJCXN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZHAgPSBpOTE1X3BkcF9lbnRyeShwbWw0LCBpKTsK IAotCQlpZiAocHhfYmFzZShwZHApID09ICZwcGd0dC0+dm0uc2NyYXRjaF9wZHApCisJCWlmIChw eF9iYXNlKHBkcCkgPT0gcHhfYmFzZSgmcHBndHQtPnZtLnNjcmF0Y2hbM10pKQogCQkJY29udGlu dWU7CiAKIAkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoJnBwZ3R0LT52bSwgcGRwKTsKQEAgLTk3 OSw3ICs5NzYsOSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3B0KGNvbnN0IHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCWdlbjhfcHRlX3QgKnZhZGRyOwogCiAJdmFkZHIg PSBrbWFwX2F0b21pY19weChwdCk7Ci0JbWVtc2V0NjQodmFkZHIgKyBnZW44X3B0ZV9pbmRleChz dGFydCksIHZtLT5zY3JhdGNoX3B0ZSwgbnVtX2VudHJpZXMpOworCW1lbXNldDY0KHZhZGRyICsg Z2VuOF9wdGVfaW5kZXgoc3RhcnQpLAorCQkgdm0tPnNjcmF0Y2hbMF0uZW5jb2RlLAorCQkgbnVt X2VudHJpZXMpOwogCWt1bm1hcF9hdG9taWModmFkZHIpOwogCiAJR0VNX0JVR19PTihudW1fZW50 cmllcyA+IGF0b21pY19yZWFkKCZwdC0+dXNlZCkpOwpAQCAtOTk1LDExICs5OTQsMTEgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKIAl1MzIgcGRlOwogCiAJZ2VuOF9mb3JfZWFjaF9wZGUocHQsIHBkLCBzdGFydCwgbGVuZ3Ro LCBwZGUpIHsKLQkJR0VNX0JVR19PTihweF9iYXNlKHB0KSA9PSAmdm0tPnNjcmF0Y2hfcHQpOwor CQlHRU1fQlVHX09OKHB4X2Jhc2UocHQpID09IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzFdKSk7CiAK IAkJYXRvbWljX2luYygmcHQtPnVzZWQpOwogCQlnZW44X3BwZ3R0X2NsZWFyX3B0KHZtLCBwdCwg c3RhcnQsIGxlbmd0aCk7Ci0JCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkLCBwZGUsIHB0LCAmdm0t PnNjcmF0Y2hfcHQpKQorCQlpZiAocmVsZWFzZV9wZF9lbnRyeShwZCwgcGRlLCBwdCwgJnZtLT5z Y3JhdGNoWzFdKSkKIAkJCWZyZWVfcHgodm0sIHB0KTsKIAl9CiB9CkBAIC0xMDE1LDExICsxMDE0 LDExIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYXJfcGRwKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAogCXVuc2lnbmVkIGludCBwZHBlOwogCiAJZ2VuOF9mb3JfZWFjaF9wZHBl KHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHBkcGUpIHsKLQkJR0VNX0JVR19PTihweF9iYXNlKHBk KSA9PSAmdm0tPnNjcmF0Y2hfcGQpOworCQlHRU1fQlVHX09OKHB4X2Jhc2UocGQpID09IHB4X2Jh c2UoJnZtLT5zY3JhdGNoWzJdKSk7CiAKIAkJYXRvbWljX2luYyhweF91c2VkKHBkKSk7CiAJCWdl bjhfcHBndHRfY2xlYXJfcGQodm0sIHBkLCBzdGFydCwgbGVuZ3RoKTsKLQkJaWYgKHJlbGVhc2Vf cGRfZW50cnkocGRwLCBwZHBlLCAmcGQtPnB0LCAmdm0tPnNjcmF0Y2hfcGQpKQorCQlpZiAocmVs ZWFzZV9wZF9lbnRyeShwZHAsIHBkcGUsICZwZC0+cHQsICZ2bS0+c2NyYXRjaFsyXSkpCiAJCQlm cmVlX3B4KHZtLCBwZCk7CiAJfQogfQpAQCAtMTA0NSwxNiArMTA0NCwxNSBAQCBzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X2NsZWFyXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJ R0VNX0JVR19PTighaTkxNV92bV9pc180bHZsKHZtKSk7CiAKIAlnZW44X2Zvcl9lYWNoX3BtbDRl KHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgcG1sNGUpIHsKLQkJR0VNX0JVR19PTihweF9iYXNl KHBkcCkgPT0gJnZtLT5zY3JhdGNoX3BkcCk7CisJCUdFTV9CVUdfT04ocHhfYmFzZShwZHApID09 IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzNdKSk7CiAKIAkJYXRvbWljX2luYyhweF91c2VkKHBkcCkp OwogCQlnZW44X3BwZ3R0X2NsZWFyX3BkcCh2bSwgcGRwLCBzdGFydCwgbGVuZ3RoKTsKLQkJaWYg KHJlbGVhc2VfcGRfZW50cnkocG1sNCwgcG1sNGUsICZwZHAtPnB0LCAmdm0tPnNjcmF0Y2hfcGRw KSkKKwkJaWYgKHJlbGVhc2VfcGRfZW50cnkocG1sNCwgcG1sNGUsICZwZHAtPnB0LCAmdm0tPnNj cmF0Y2hbM10pKQogCQkJZnJlZV9weCh2bSwgcGRwKTsKIAl9CiB9CiAKLQogc3RhdGljIGludCBn ZW44X3BwZ3R0X2FsbG9jX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJICAg ICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCwKIAkJCSAgICAgICB1NjQgc3RhcnQs IHU2NCBsZW5ndGgpCkBAIC0xMDY4LDcgKzEwNjYsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRf YWxsb2NfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJZ2VuOF9mb3JfZWFjaF9w ZGUocHQsIHBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpIHsKIAkJY29uc3QgaW50IGNvdW50ID0gZ2Vu OF9wdGVfY291bnQoc3RhcnQsIGxlbmd0aCk7CiAKLQkJaWYgKHB4X2Jhc2UocHQpID09ICZ2bS0+ c2NyYXRjaF9wdCkgeworCQlpZiAocHhfYmFzZShwdCkgPT0gcHhfYmFzZSgmdm0tPnNjcmF0Y2hb MV0pKSB7CiAJCQlzcGluX3VubG9jaygmcGQtPmxvY2spOwogCiAJCQlwdCA9IGZldGNoX2FuZF96 ZXJvKCZhbGxvYyk7CkBAIC0xMDgwLDEwICsxMDc4LDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0 dF9hbGxvY19wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCX0KIAogCQkJaWYg KGNvdW50IDwgR0VOOF9QVEVTIHx8IGludGVsX3ZncHVfYWN0aXZlKHZtLT5pOTE1KSkKLQkJCQlm aWxsX3B4KHB0LCB2bS0+c2NyYXRjaF9wdGUpOworCQkJCWZpbGxfcHgocHQsIHZtLT5zY3JhdGNo WzBdLmVuY29kZSk7CiAKIAkJCXNwaW5fbG9jaygmcGQtPmxvY2spOwotCQkJaWYgKHBkLT5lbnRy eVtwZGVdID09ICZ2bS0+c2NyYXRjaF9wdCkgeworCQkJaWYgKHBkLT5lbnRyeVtwZGVdID09ICZ2 bS0+c2NyYXRjaFsxXSkgewogCQkJCXNldF9wZF9lbnRyeShwZCwgcGRlLCBwdCk7CiAJCQl9IGVs c2UgewogCQkJCWFsbG9jID0gcHQ7CkBAIC0xMTE1LDcgKzExMTMsNyBAQCBzdGF0aWMgaW50IGdl bjhfcHBndHRfYWxsb2NfcGRwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCiAJc3Bp bl9sb2NrKCZwZHAtPmxvY2spOwogCWdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwg bGVuZ3RoLCBwZHBlKSB7Ci0JCWlmIChweF9iYXNlKHBkKSA9PSAmdm0tPnNjcmF0Y2hfcGQpIHsK KwkJaWYgKHB4X2Jhc2UocGQpID09IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzJdKSkgewogCQkJc3Bp bl91bmxvY2soJnBkcC0+bG9jayk7CiAKIAkJCXBkID0gZmV0Y2hfYW5kX3plcm8oJmFsbG9jKTsK QEAgLTExMjYsMTAgKzExMjQsMTAgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BkcChz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQlnb3RvIHVud2luZDsKIAkJCX0KIAot CQkJaW5pdF9wZChwZCwgJnZtLT5zY3JhdGNoX3B0KTsKKwkJCWluaXRfcGQocGQsICZ2bS0+c2Ny YXRjaFsxXSk7CiAKIAkJCXNwaW5fbG9jaygmcGRwLT5sb2NrKTsKLQkJCWlmIChwZHAtPmVudHJ5 W3BkcGVdID09ICZ2bS0+c2NyYXRjaF9wZCkgeworCQkJaWYgKHBkcC0+ZW50cnlbcGRwZV0gPT0g JnZtLT5zY3JhdGNoWzJdKSB7CiAJCQkJc2V0X3BkX2VudHJ5KHBkcCwgcGRwZSwgcGQpOwogCQkJ fSBlbHNlIHsKIAkJCQlhbGxvYyA9IHBkOwpAQCAtMTE1MCw3ICsxMTQ4LDcgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2FsbG9jX3BkcChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAln b3RvIG91dDsKIAogdW53aW5kX3BkOgotCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRwZSwg JnBkLT5wdCwgJnZtLT5zY3JhdGNoX3BkKSkKKwlpZiAocmVsZWFzZV9wZF9lbnRyeShwZHAsIHBk cGUsICZwZC0+cHQsICZ2bS0+c2NyYXRjaFsyXSkpCiAJCWZyZWVfcHgodm0sIHBkKTsKIHVud2lu ZDoKIAlnZW44X3BwZ3R0X2NsZWFyX3BkcCh2bSwgcGRwLCBmcm9tLCBzdGFydCAtIGZyb20pOwpA QCAtMTE3OSw3ICsxMTc3LDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jXzRsdmwoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAlzcGluX2xvY2soJnBtbDQtPmxvY2spOwog CWdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCBwbWw0ZSkgewot CQlpZiAocHhfYmFzZShwZHApID09ICZ2bS0+c2NyYXRjaF9wZHApIHsKKwkJaWYgKHB4X2Jhc2Uo cGRwKSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRjaFszXSkpIHsKIAkJCXNwaW5fdW5sb2NrKCZwbWw0 LT5sb2NrKTsKIAogCQkJcGRwID0gZmV0Y2hfYW5kX3plcm8oJmFsbG9jKTsKQEAgLTExOTAsMTAg KzExODgsMTAgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jXzRsdmwoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJZ290byB1bndpbmQ7CiAJCQl9CiAKLQkJCWluaXRfcGQo cGRwLCAmdm0tPnNjcmF0Y2hfcGQpOworCQkJaW5pdF9wZChwZHAsICZ2bS0+c2NyYXRjaFsyXSk7 CiAKIAkJCXNwaW5fbG9jaygmcG1sNC0+bG9jayk7Ci0JCQlpZiAocG1sNC0+ZW50cnlbcG1sNGVd ID09ICZ2bS0+c2NyYXRjaF9wZHApIHsKKwkJCWlmIChwbWw0LT5lbnRyeVtwbWw0ZV0gPT0gJnZt LT5zY3JhdGNoWzNdKSB7CiAJCQkJc2V0X3BkX2VudHJ5KHBtbDQsIHBtbDRlLCBwZHApOwogCQkJ fSBlbHNlIHsKIAkJCQlhbGxvYyA9IHBkcDsKQEAgLTEyMTQsNyArMTIxMiw3IEBAIHN0YXRpYyBp bnQgZ2VuOF9wcGd0dF9hbGxvY180bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAog CWdvdG8gb3V0OwogCiB1bndpbmRfcGRwOgotCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBtbDQsIHBt bDRlLCAmcGRwLT5wdCwgJnZtLT5zY3JhdGNoX3BkcCkpCisJaWYgKHJlbGVhc2VfcGRfZW50cnko cG1sNCwgcG1sNGUsICZwZHAtPnB0LCAmdm0tPnNjcmF0Y2hbM10pKQogCQlmcmVlX3B4KHZtLCBw ZHApOwogdW53aW5kOgogCWdlbjhfcHBndHRfY2xlYXJfNGx2bCh2bSwgZnJvbSwgc3RhcnQgLSBm cm9tKTsKQEAgLTE0MjgsNyArMTQyNiw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0 X2h1Z2VfZW50cmllcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkJCWlmIChJOTE1X1NFTEZURVNU X09OTFkodm1hLT52bS0+c2NydWJfNjRLKSkgewogCQkJCXUxNiBpOwogCi0JCQkJZW5jb2RlID0g dm1hLT52bS0+c2NyYXRjaF9wdGU7CisJCQkJZW5jb2RlID0gdm1hLT52bS0+c2NyYXRjaFswXS5l bmNvZGU7CiAJCQkJdmFkZHIgPSBrbWFwX2F0b21pY19weChpOTE1X3B0X2VudHJ5KHBkLAogCQkJ CQkJCQkgICAgIGlkeC5wZGUpKTsKIApAQCAtMTQ3MSw2ICsxNDY5LDcgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9pbnNlcnRfNGx2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIHN0 YXRpYyBpbnQgZ2VuOF9pbml0X3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p CiB7CiAJaW50IHJldDsKKwlpbnQgaTsKIAogCS8qCiAJICogSWYgZXZlcnlib2R5IGFncmVlcyB0 byBub3QgdG8gd3JpdGUgaW50byB0aGUgc2NyYXRjaCBwYWdlLApAQCAtMTQ4NCwxMCArMTQ4Myw4 IEBAIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCiAJCUdFTV9CVUdfT04oIWNsb25lLT5oYXNfcmVhZF9vbmx5KTsKIAogCQl2bS0+c2Ny YXRjaF9vcmRlciA9IGNsb25lLT5zY3JhdGNoX29yZGVyOwotCQl2bS0+c2NyYXRjaF9wdGUgPSBj bG9uZS0+c2NyYXRjaF9wdGU7Ci0JCXZtLT5zY3JhdGNoX3B0ICA9IGNsb25lLT5zY3JhdGNoX3B0 OwotCQl2bS0+c2NyYXRjaF9wZCAgPSBjbG9uZS0+c2NyYXRjaF9wZDsKLQkJdm0tPnNjcmF0Y2hf cGRwID0gY2xvbmUtPnNjcmF0Y2hfcGRwOworCQltZW1jcHkodm0tPnNjcmF0Y2gsIGNsb25lLT5z Y3JhdGNoLCBzaXplb2Yodm0tPnNjcmF0Y2gpKTsKKwkJcHhfZG1hKCZ2bS0+c2NyYXRjaFswXSkg PSAwOyAvKiBubyB4ZmVyIG9mIG93bmVyc2hpcCAqLwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE0 OTUsNDQgKzE0OTIsMjUgQEAgc3RhdGljIGludCBnZW44X2luaXRfc2NyYXRjaChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0Jdm0tPnNj cmF0Y2hfcHRlID0KLQkJZ2VuOF9wdGVfZW5jb2RlKHZtLT5zY3JhdGNoX3BhZ2UuZGFkZHIsCi0J CQkJSTkxNV9DQUNIRV9MTEMsCi0JCQkJdm0tPmhhc19yZWFkX29ubHkpOworCXZtLT5zY3JhdGNo WzBdLmVuY29kZSA9CisJCWdlbjhfcHRlX2VuY29kZShweF9kbWEoJnZtLT5zY3JhdGNoWzBdKSwK KwkJCQlJOTE1X0NBQ0hFX0xMQywgdm0tPmhhc19yZWFkX29ubHkpOwogCi0JaWYgKHVubGlrZWx5 KHNldHVwX3BhZ2VfZG1hKHZtLCAmdm0tPnNjcmF0Y2hfcHQpKSkgewotCQlyZXQgPSAtRU5PTUVN OwotCQlnb3RvIGZyZWVfc2NyYXRjaF9wYWdlOwotCX0KLQlmaWxsX3BhZ2VfZG1hKCZ2bS0+c2Ny YXRjaF9wdCwgdm0tPnNjcmF0Y2hfcHRlKTsKKwlmb3IgKGkgPSAxOyBpIDw9IHZtLT50b3A7IGkr KykgeworCQlpZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEodm0sIHB4X2Jhc2UoJnZtLT5zY3Jh dGNoW2ldKSkpKQorCQkJZ290byBmcmVlX3NjcmF0Y2g7CiAKLQlpZiAodW5saWtlbHkoc2V0dXBf cGFnZV9kbWEodm0sICZ2bS0+c2NyYXRjaF9wZCkpKSB7Ci0JCXJldCA9IC1FTk9NRU07Ci0JCWdv dG8gZnJlZV9wdDsKLQl9Ci0JZmlsbF9wYWdlX2RtYSgmdm0tPnNjcmF0Y2hfcGQsCi0JCSAgICAg IGdlbjhfcGRlX2VuY29kZSh2bS0+c2NyYXRjaF9wZC5kYWRkciwgSTkxNV9DQUNIRV9MTEMpKTsK LQotCWlmIChpOTE1X3ZtX2lzXzRsdmwodm0pKSB7Ci0JCWlmICh1bmxpa2VseShzZXR1cF9wYWdl X2RtYSh2bSwgJnZtLT5zY3JhdGNoX3BkcCkpKSB7Ci0JCQlyZXQgPSAtRU5PTUVNOwotCQkJZ290 byBmcmVlX3BkOwotCQl9Ci0JCWZpbGxfcGFnZV9kbWEoJnZtLT5zY3JhdGNoX3BkcCwKLQkJCSAg ICAgIGdlbjhfcGRlX2VuY29kZSh2bS0+c2NyYXRjaF9wZHAuZGFkZHIsCi0JCQkJCSAgICAgIEk5 MTVfQ0FDSEVfTExDKSk7CisJCWZpbGxfcHgoJnZtLT5zY3JhdGNoW2ldLCB2bS0+c2NyYXRjaFtp IC0gMV0uZW5jb2RlKTsKKwkJdm0tPnNjcmF0Y2hbaV0uZW5jb2RlID0KKwkJCWdlbjhfcGRlX2Vu Y29kZShweF9kbWEoJnZtLT5zY3JhdGNoW2ldKSwKKwkJCQkJSTkxNV9DQUNIRV9MTEMpOwogCX0K IAogCXJldHVybiAwOwogCi1mcmVlX3BkOgotCWNsZWFudXBfcGFnZV9kbWEodm0sICZ2bS0+c2Ny YXRjaF9wZCk7Ci1mcmVlX3B0OgotCWNsZWFudXBfcGFnZV9kbWEodm0sICZ2bS0+c2NyYXRjaF9w dCk7Ci1mcmVlX3NjcmF0Y2hfcGFnZToKLQljbGVhbnVwX3NjcmF0Y2hfcGFnZSh2bSk7Ci0KLQly ZXR1cm4gcmV0OworZnJlZV9zY3JhdGNoOgorCWZyZWVfc2NyYXRjaCh2bSk7CisJcmV0dXJuIC1F Tk9NRU07CiB9CiAKIHN0YXRpYyBpbnQgZ2VuOF9wcmVhbGxvY2F0ZV90b3BfbGV2ZWxfcGRwKHN0 cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCkKQEAgLTE1NDksNyArMTUyNyw3IEBAIHN0YXRpYyBpbnQg Z2VuOF9wcmVhbGxvY2F0ZV90b3BfbGV2ZWxfcGRwKHN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCkK IAkJaWYgKElTX0VSUihwZCkpCiAJCQlnb3RvIHVud2luZDsKIAotCQlpbml0X3BkKHBkLCAmdm0t PnNjcmF0Y2hfcHQpOworCQlpbml0X3BkKHBkLCAmdm0tPnNjcmF0Y2hbMV0pOwogCQlzZXRfcGRf ZW50cnkocGRwLCBwZHBlLCBwZCk7CiAJfQogCkBAIC0xNTgyLDE2ICsxNTYwLDE1IEBAIHN0YXRp YyB2b2lkIHBwZ3R0X2luaXQoc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0LCBzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQogCiBzdGF0aWMgdm9pZCBpbml0X3BkX24oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCSAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCwKLQkJICAgICAg c3RydWN0IGk5MTVfcGFnZV9kbWEgKnRvLAorCQkgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0 Y2ggKnNjcmF0Y2gsCiAJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBlbnRyaWVzKQogewotCWNv bnN0IHU2NCBkYWRkciA9IGdlbjhfcGRlX2VuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FDSEVfTExD KTsKIAl1NjQgKiBjb25zdCB2YWRkciA9IGttYXBfYXRvbWljX3B4KHBkKTsKIAotCW1lbXNldDY0 KHZhZGRyLCBkYWRkciwgZW50cmllcyk7CisJbWVtc2V0NjQodmFkZHIsIHNjcmF0Y2gtPmVuY29k ZSwgZW50cmllcyk7CiAJa3VubWFwX2F0b21pYyh2YWRkcik7CiAKLQltZW1zZXRfcChwZC0+ZW50 cnksIHRvLCBlbnRyaWVzKTsKKwltZW1zZXRfcChwZC0+ZW50cnksIHNjcmF0Y2gsIGVudHJpZXMp OwogfQogCiBzdGF0aWMgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKgpAQCAtMTYwMiw3ICsx NTc5LDcgQEAgZ2VuOF9hbGxvY190b3BfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p CiAJaWYgKGk5MTVfdm1faXNfNGx2bCh2bSkpIHsKIAkJcGQgPSBhbGxvY19wZCh2bSk7CiAJCWlm ICghSVNfRVJSKHBkKSkKLQkJCWluaXRfcGQocGQsICZ2bS0+c2NyYXRjaF9wZHApOworCQkJaW5p dF9wZChwZCwgJnZtLT5zY3JhdGNoWzNdKTsKIAogCQlyZXR1cm4gcGQ7CiAJfQpAQCAtMTYxOSw3 ICsxNTk2LDcgQEAgZ2VuOF9hbGxvY190b3BfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KIAotCWluaXRfcGRfbih2bSwgcGQs ICZ2bS0+c2NyYXRjaF9wZCwgR0VOOF8zTFZMX1BEUEVTKTsKKwlpbml0X3BkX24odm0sIHBkLCAm dm0tPnNjcmF0Y2hbMl0sIEdFTjhfM0xWTF9QRFBFUyk7CiAKIAlyZXR1cm4gcGQ7CiB9CkBAIC0x NzY2LDcgKzE3NDMsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFyX3JhbmdlKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBnZW42X3BwZ3R0ICogY29uc3Qg cHBndHQgPSB0b19nZW42X3BwZ3R0KGk5MTVfdm1fdG9fcHBndHQodm0pKTsKIAljb25zdCB1bnNp Z25lZCBpbnQgZmlyc3RfZW50cnkgPSBzdGFydCAvIEk5MTVfR1RUX1BBR0VfU0laRTsKLQljb25z dCBnZW42X3B0ZV90IHNjcmF0Y2hfcHRlID0gdm0tPnNjcmF0Y2hfcHRlOworCWNvbnN0IGdlbjZf cHRlX3Qgc2NyYXRjaF9wdGUgPSB2bS0+c2NyYXRjaFswXS5lbmNvZGU7CiAJdW5zaWduZWQgaW50 IHBkZSA9IGZpcnN0X2VudHJ5IC8gR0VONl9QVEVTOwogCXVuc2lnbmVkIGludCBwdGUgPSBmaXJz dF9lbnRyeSAlIEdFTjZfUFRFUzsKIAl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMgPSBsZW5ndGgg LyBJOTE1X0dUVF9QQUdFX1NJWkU7CkBAIC0xNzc3LDcgKzE3NTQsNyBAQCBzdGF0aWMgdm9pZCBn ZW42X3BwZ3R0X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQlj b25zdCB1bnNpZ25lZCBpbnQgY291bnQgPSBtaW4obnVtX2VudHJpZXMsIEdFTjZfUFRFUyAtIHB0 ZSk7CiAJCWdlbjZfcHRlX3QgKnZhZGRyOwogCi0JCUdFTV9CVUdfT04ocHhfYmFzZShwdCkgPT0g JnZtLT5zY3JhdGNoX3B0KTsKKwkJR0VNX0JVR19PTihweF9iYXNlKHB0KSA9PSBweF9iYXNlKCZ2 bS0+c2NyYXRjaFsxXSkpOwogCiAJCW51bV9lbnRyaWVzIC09IGNvdW50OwogCkBAIC0xODE0LDcg KzE3OTEsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCXN0cnVjdCBzZ3RfZG1hIGl0ZXIgPSBzZ3RfZG1hKHZt YSk7CiAJZ2VuNl9wdGVfdCAqdmFkZHI7CiAKLQlHRU1fQlVHX09OKHBkLT5lbnRyeVthY3RfcHRd ID09ICZ2bS0+c2NyYXRjaF9wdCk7CisJR0VNX0JVR19PTihwZC0+ZW50cnlbYWN0X3B0XSA9PSAm dm0tPnNjcmF0Y2hbMV0pOwogCiAJdmFkZHIgPSBrbWFwX2F0b21pY19weChpOTE1X3B0X2VudHJ5 KHBkLCBhY3RfcHQpKTsKIAlkbyB7CkBAIC0xODU5LDcgKzE4MzYsNyBAQCBzdGF0aWMgaW50IGdl bjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJZ2VuNl9m b3JfZWFjaF9wZGUocHQsIHBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpIHsKIAkJY29uc3QgdW5zaWdu ZWQgaW50IGNvdW50ID0gZ2VuNl9wdGVfY291bnQoc3RhcnQsIGxlbmd0aCk7CiAKLQkJaWYgKHB4 X2Jhc2UocHQpID09ICZ2bS0+c2NyYXRjaF9wdCkgeworCQlpZiAocHhfYmFzZShwdCkgPT0gcHhf YmFzZSgmdm0tPnNjcmF0Y2hbMV0pKSB7CiAJCQlzcGluX3VubG9jaygmcGQtPmxvY2spOwogCiAJ CQlwdCA9IGZldGNoX2FuZF96ZXJvKCZhbGxvYyk7CkBAIC0xODcwLDEwICsxODQ3LDEwIEBAIHN0 YXRpYyBpbnQgZ2VuNl9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKIAkJCQlnb3RvIHVud2luZF9vdXQ7CiAJCQl9CiAKLQkJCWZpbGwzMl9weChwdCwgdm0tPnNj cmF0Y2hfcHRlKTsKKwkJCWZpbGwzMl9weChwdCwgdm0tPnNjcmF0Y2hbMF0uZW5jb2RlKTsKIAog CQkJc3Bpbl9sb2NrKCZwZC0+bG9jayk7Ci0JCQlpZiAocGQtPmVudHJ5W3BkZV0gPT0gJnZtLT5z Y3JhdGNoX3B0KSB7CisJCQlpZiAocGQtPmVudHJ5W3BkZV0gPT0gJnZtLT5zY3JhdGNoWzFdKSB7 CiAJCQkJcGQtPmVudHJ5W3BkZV0gPSBwdDsKIAkJCQlpZiAoaTkxNV92bWFfaXNfYm91bmQocHBn dHQtPnZtYSwKIAkJCQkJCSAgICAgIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkgewpAQCAtMTkxMCwy NiArMTg4NywyMyBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdF9zY3JhdGNoKHN0cnVjdCBn ZW42X3BwZ3R0ICpwcGd0dCkKIHsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICogY29uc3Qg dm0gPSAmcHBndHQtPmJhc2Uudm07CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiBjb25z dCBwZCA9IHBwZ3R0LT5iYXNlLnBkOwotCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnVudXNlZDsK LQl1MzIgcGRlOwogCWludCByZXQ7CiAKIAlyZXQgPSBzZXR1cF9zY3JhdGNoX3BhZ2Uodm0sIF9f R0ZQX0hJR0hNRU0pOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQl2bS0+c2NyYXRjaF9w dGUgPSB2bS0+cHRlX2VuY29kZSh2bS0+c2NyYXRjaF9wYWdlLmRhZGRyLAotCQkJCQkgSTkxNV9D QUNIRV9OT05FLAotCQkJCQkgUFRFX1JFQURfT05MWSk7CisJdm0tPnNjcmF0Y2hbMF0uZW5jb2Rl ID0KKwkJdm0tPnB0ZV9lbmNvZGUocHhfZG1hKCZ2bS0+c2NyYXRjaFswXSksCisJCQkgICAgICAg STkxNV9DQUNIRV9OT05FLCBQVEVfUkVBRF9PTkxZKTsKIAotCWlmICh1bmxpa2VseShzZXR1cF9w YWdlX2RtYSh2bSwgJnZtLT5zY3JhdGNoX3B0KSkpIHsKKwlpZiAodW5saWtlbHkoc2V0dXBfcGFn ZV9kbWEodm0sIHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzFdKSkpKSB7CiAJCWNsZWFudXBfc2NyYXRj aF9wYWdlKHZtKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQotCWZpbGxfcGFnZV9kbWFfMzIoJnZt LT5zY3JhdGNoX3B0LCB2bS0+c2NyYXRjaF9wdGUpOwogCi0JZ2VuNl9mb3JfYWxsX3BkZXModW51 c2VkLCBwZCwgcGRlKQotCQlwZC0+ZW50cnlbcGRlXSA9ICZ2bS0+c2NyYXRjaF9wdDsKKwlmaWxs MzJfcHgoJnZtLT5zY3JhdGNoWzFdLCB2bS0+c2NyYXRjaFswXS5lbmNvZGUpOworCW1lbXNldF9w KHBkLT5lbnRyeSwgJnZtLT5zY3JhdGNoWzFdLCBJOTE1X1BERVMpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0xOTM3LDExICsxOTExLDEzIEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0X3NjcmF0 Y2goc3RydWN0IGdlbjZfcHBndHQgKnBwZ3R0KQogc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9mcmVl X3BkKHN0cnVjdCBnZW42X3BwZ3R0ICpwcGd0dCkKIHsKIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeSAqIGNvbnN0IHBkID0gcHBndHQtPmJhc2UucGQ7CisJc3RydWN0IGk5MTVfcGFnZV9kbWEg KiBjb25zdCBzY3JhdGNoID0KKwkJcHhfYmFzZSgmcHBndHQtPmJhc2Uudm0uc2NyYXRjaFsxXSk7 CiAJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQ7CiAJdTMyIHBkZTsKIAogCWdlbjZfZm9yX2Fs bF9wZGVzKHB0LCBwZCwgcGRlKQotCQlpZiAocHhfYmFzZShwdCkgIT0gJnBwZ3R0LT5iYXNlLnZt LnNjcmF0Y2hfcHQpCisJCWlmIChweF9iYXNlKHB0KSAhPSBzY3JhdGNoKQogCQkJZnJlZV9weCgm cHBndHQtPmJhc2Uudm0sIHB0KTsKIH0KIApAQCAtMTk5OSw3ICsxOTc1LDggQEAgc3RhdGljIHZv aWQgcGRfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAlzdHJ1Y3QgZ2VuNl9w cGd0dCAqcHBndHQgPSB2bWEtPnByaXZhdGU7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnkg KiBjb25zdCBwZCA9IHBwZ3R0LT5iYXNlLnBkOwotCXN0cnVjdCBpOTE1X3BhZ2VfZG1hICogY29u c3Qgc2NyYXRjaCA9ICZwcGd0dC0+YmFzZS52bS5zY3JhdGNoX3B0OworCXN0cnVjdCBpOTE1X3Bh Z2VfZG1hICogY29uc3Qgc2NyYXRjaCA9CisJCXB4X2Jhc2UoJnBwZ3R0LT5iYXNlLnZtLnNjcmF0 Y2hbMV0pOwogCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0OwogCXVuc2lnbmVkIGludCBwZGU7 CiAKQEAgLTI0MDUsNyArMjM4Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZ2d0dF9jbGVhcl9yYW5n ZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 ID0gaTkxNV92bV90b19nZ3R0KHZtKTsKIAl1bnNpZ25lZCBmaXJzdF9lbnRyeSA9IHN0YXJ0IC8g STkxNV9HVFRfUEFHRV9TSVpFOwogCXVuc2lnbmVkIG51bV9lbnRyaWVzID0gbGVuZ3RoIC8gSTkx NV9HVFRfUEFHRV9TSVpFOwotCWNvbnN0IGdlbjhfcHRlX3Qgc2NyYXRjaF9wdGUgPSB2bS0+c2Ny YXRjaF9wdGU7CisJY29uc3QgZ2VuOF9wdGVfdCBzY3JhdGNoX3B0ZSA9IHZtLT5zY3JhdGNoWzBd LmVuY29kZTsKIAlnZW44X3B0ZV90IF9faW9tZW0gKmd0dF9iYXNlID0KIAkJKGdlbjhfcHRlX3Qg X19pb21lbSAqKWdndHQtPmdzbSArIGZpcnN0X2VudHJ5OwogCWNvbnN0IGludCBtYXhfZW50cmll cyA9IGdndHRfdG90YWxfZW50cmllcyhnZ3R0KSAtIGZpcnN0X2VudHJ5OwpAQCAtMjUzMCw4ICsy NTA3LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9nZ3R0X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCQkgZmlyc3RfZW50cnksIG51bV9lbnRyaWVzLCBtYXhfZW50cmll cykpCiAJCW51bV9lbnRyaWVzID0gbWF4X2VudHJpZXM7CiAKLQlzY3JhdGNoX3B0ZSA9IHZtLT5z Y3JhdGNoX3B0ZTsKLQorCXNjcmF0Y2hfcHRlID0gdm0tPnNjcmF0Y2hbMF0uZW5jb2RlOwogCWZv ciAoaSA9IDA7IGkgPCBudW1fZW50cmllczsgaSsrKQogCQlpb3dyaXRlMzIoc2NyYXRjaF9wdGUs ICZndHRfYmFzZVtpXSk7CiB9CkBAIC0zMDA1LDggKzI5ODEsOCBAQCBzdGF0aWMgaW50IGdndHRf cHJvYmVfY29tbW9uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2NCBzaXplKQogCQlyZXR1cm4g cmV0OwogCX0KIAotCWdndHQtPnZtLnNjcmF0Y2hfcHRlID0KLQkJZ2d0dC0+dm0ucHRlX2VuY29k ZShnZ3R0LT52bS5zY3JhdGNoX3BhZ2UuZGFkZHIsCisJZ2d0dC0+dm0uc2NyYXRjaFswXS5lbmNv ZGUgPQorCQlnZ3R0LT52bS5wdGVfZW5jb2RlKHB4X2RtYSgmZ2d0dC0+dm0uc2NyYXRjaFswXSks CiAJCQkJICAgIEk5MTVfQ0FDSEVfTk9ORSwgMCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggMTE5YjZkMzNiMjY2Li42NjliMjA0ZDRjMTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0yNDAsNiArMjQwLDExIEBAIHN0cnVjdCBp OTE1X3BhZ2VfZG1hIHsKIAl9OwogfTsKIAorc3RydWN0IGk5MTVfcGFnZV9zY3JhdGNoIHsKKwlz dHJ1Y3QgaTkxNV9wYWdlX2RtYSBiYXNlOworCXU2NCBlbmNvZGU7Cit9OworCiBzdHJ1Y3QgaTkx NV9wYWdlX3RhYmxlIHsKIAlzdHJ1Y3QgaTkxNV9wYWdlX2RtYSBiYXNlOwogCWF0b21pY190IHVz ZWQ7CkBAIC0yNjAsOSArMjY1LDEwIEBAIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5IHsKIAog I2RlZmluZSBweF9iYXNlKHB4KSBcCiAJX19weF9jaG9vc2VfZXhwcihweCwgc3RydWN0IGk5MTVf cGFnZV9kbWEgKiwgX194LCBcCisJX19weF9jaG9vc2VfZXhwcihweCwgc3RydWN0IGk5MTVfcGFn ZV9zY3JhdGNoICosICZfX3gtPmJhc2UsIFwKIAlfX3B4X2Nob29zZV9leHByKHB4LCBzdHJ1Y3Qg aTkxNV9wYWdlX3RhYmxlICosICZfX3gtPmJhc2UsIFwKIAlfX3B4X2Nob29zZV9leHByKHB4LCBz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqLCAmX194LT5wdC5iYXNlLCBcCi0JKHZvaWQpMCkp KQorCSh2b2lkKTApKSkpCiAjZGVmaW5lIHB4X2RtYShweCkgKHB4X2Jhc2UocHgpLT5kYWRkcikK IAogI2RlZmluZSBweF9wdChweCkgXApAQCAtMzE3LDEyICszMjMsOCBAQCBzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlIHsKICNkZWZpbmUgVk1fQ0xBU1NfR0dUVCAwCiAjZGVmaW5lIFZNX0NMQVNT X1BQR1RUIDEKIAotCXU2NCBzY3JhdGNoX3B0ZTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2gg c2NyYXRjaFs0XTsKIAlpbnQgc2NyYXRjaF9vcmRlcjsKLQlzdHJ1Y3QgaTkxNV9wYWdlX2RtYSBz Y3JhdGNoX3BhZ2U7Ci0Jc3RydWN0IGk5MTVfcGFnZV9kbWEgc2NyYXRjaF9wdDsKLQlzdHJ1Y3Qg aTkxNV9wYWdlX2RtYSBzY3JhdGNoX3BkOwotCXN0cnVjdCBpOTE1X3BhZ2VfZG1hIHNjcmF0Y2hf cGRwOyAvKiBHRU44KyAmIDQ4YiBQUEdUVCAqLwogCWludCB0b3A7CiAKIAkvKioKLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4