From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 02/11] drm/i915/gtt: Wrap page_table with page_directory Date: Sun, 7 Jul 2019 22:00:15 +0100 Message-ID: <20190707210024.26192-3-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 983DB89A9A for ; Sun, 7 Jul 2019 21:00:50 +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 VGhlIHBhZ2UgZGlyZWN0b3J5IGV4dGVuZHMgdGhlIHBhZ2UgdGFibGUgd2l0aCB0aGUgc2hhZG93 IGVudHJpZXMuIE1ha2UKdGhlIHBhZ2UgZGlyZWN0b3J5IHN0cnVjdCBlbWJlZCB0aGUgcGFnZSB0 YWJsZSBmb3IgZWFzaWVyIGNvZGUgcmV1c2UuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nYnVmZmVyLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jICAgICAgICB8IDEwMCArKysrKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICB8ICAzMSArKysrKy0tCiAzIGZpbGVzIGNoYW5n ZWQsIDcwIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCBiMzNjZmM1NmY2MjMuLjkxNjNiNTIzODA4 MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMTUw Myw3ICsxNTAzLDcgQEAgc3RhdGljIGludCBsb2FkX3BkX2RpcihzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgY29uc3Qgc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0KQogCiAJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSgxKTsKIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfUFBf RElSX0JBU0UoZW5naW5lLT5tbWlvX2Jhc2UpKTsKLQkqY3MrKyA9IHBwZ3R0LT5wZC0+YmFzZS5n Z3R0X29mZnNldCA8PCAxMDsKKwkqY3MrKyA9IHB4X2Jhc2UocHBndHQtPnBkKS0+Z2d0dF9vZmZz ZXQgPDwgMTA7CiAKIAlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYwppbmRleCA5MzcyMzY5MTNlNzAuLjFmYTkzZjU2NzkyZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTEwNyw2ICsxMDcsOCBAQAogICoKICAqLwog CisjZGVmaW5lIGFzX3BkKHgpIGNvbnRhaW5lcl9vZigoeCksIHR5cGVvZihzdHJ1Y3QgaTkxNV9w YWdlX2RpcmVjdG9yeSksIHB0KQorCiBzdGF0aWMgaW50CiBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdl cyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7CiAKQEAgLTcxMiwyOCArNzE0LDE3IEBAIHN0YXRpYyBz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICphbGxvY19wdChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSkKIAlyZXR1cm4gcHQ7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcHQoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0sIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0KQotewotCWNsZWFu dXBfcGFnZV9kbWEodm0sICZwdC0+YmFzZSk7Ci0Ja2ZyZWUocHQpOwotfQotCiBzdGF0aWMgc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKl9fYWxsb2NfcGQodm9pZCkKIHsKIAlzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeSAqcGQ7CiAKIAlwZCA9IGttYWxsb2Moc2l6ZW9mKCpwZCksIEk5MTVf R0ZQX0FMTE9XX0ZBSUwpOwotCiAJaWYgKHVubGlrZWx5KCFwZCkpCiAJCXJldHVybiBOVUxMOwog Ci0JbWVtc2V0KCZwZC0+YmFzZSwgMCwgc2l6ZW9mKHBkLT5iYXNlKSk7Ci0JYXRvbWljX3NldCgm cGQtPnVzZWQsIDApOworCWF0b21pY19zZXQocHhfdXNlZChwZCksIDApOwogCXNwaW5fbG9ja19p bml0KCZwZC0+bG9jayk7CiAKLQkvKiBmb3Igc2FmZXR5ICovCi0JcGQtPmVudHJ5WzBdID0gTlVM TDsKLQogCXJldHVybiBwZDsKIH0KIApAQCAtNzQ1LDcgKzczNiw3IEBAIHN0YXRpYyBzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSAqYWxsb2NfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCiAJaWYgKHVubGlrZWx5KCFwZCkpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0J aWYgKHVubGlrZWx5KHNldHVwX3BhZ2VfZG1hKHZtLCAmcGQtPmJhc2UpKSkgeworCWlmICh1bmxp a2VseShzZXR1cF9wYWdlX2RtYSh2bSwgcHhfYmFzZShwZCkpKSkgewogCQlrZnJlZShwZCk7CiAJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KQEAgLTc1MywxMyArNzQ0LDE0IEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqYWxsb2NfcGQoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCiAJcmV0dXJuIHBkOwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BkKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKnBkKQorc3RhdGljIHZvaWQgZnJlZV9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwgc3RydWN0IGk5MTVfcGFnZV9kbWEgKnBkKQogewotCWNsZWFudXBfcGFnZV9kbWEodm0sICZw ZC0+YmFzZSk7CisJY2xlYW51cF9wYWdlX2RtYSh2bSwgcGQpOwogCWtmcmVlKHBkKTsKIH0KIAor I2RlZmluZSBmcmVlX3B4KHZtLCBweCkgZnJlZV9wZCh2bSwgcHhfYmFzZShweCkpCisKIHN0YXRp YyB2b2lkIGluaXRfcGQoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkLAogCQkgICAgc3Ry dWN0IGk5MTVfcGFnZV9kbWEgKnNjcmF0Y2gpCiB7CkBAIC03ODQsOSArNzc2LDkgQEAgX19zZXRf cGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiBjb25zdCBwZCwKIAkgICAgICAg c3RydWN0IGk5MTVfcGFnZV9kbWEgKiBjb25zdCB0bywKIAkgICAgICAgdTY0ICgqZW5jb2RlKShj b25zdCBkbWFfYWRkcl90LCBjb25zdCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwpKQogewotCUdFTV9C VUdfT04oYXRvbWljX3JlYWQoJnBkLT51c2VkKSA+IDUxMik7CisJR0VNX0JVR19PTihhdG9taWNf cmVhZChweF91c2VkKHBkKSkgPiA1MTIpOwogCi0JYXRvbWljX2luYygmcGQtPnVzZWQpOworCWF0 b21pY19pbmMocHhfdXNlZChwZCkpOwogCXBkLT5lbnRyeVtwZGVdID0gdG87CiAJd3JpdGVfZG1h X2VudHJ5KHB4X2Jhc2UocGQpLCBwZGUsIGVuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FDSEVfTExD KSk7CiB9CkBAIC03OTcsMTEgKzc4OSwxMSBAQCBfX2NsZWFyX3BkX2VudHJ5KHN0cnVjdCBpOTE1 X3BhZ2VfZGlyZWN0b3J5ICogY29uc3QgcGQsCiAJCSBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNv bnN0IHRvLAogCQkgdTY0ICgqZW5jb2RlKShjb25zdCBkbWFfYWRkcl90LCBjb25zdCBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwpKQogewotCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJnBkLT51c2VkKSA9 PSAwKTsKKwlHRU1fQlVHX09OKGF0b21pY19yZWFkKHB4X3VzZWQocGQpKSA9PSAwKTsKIAogCXdy aXRlX2RtYV9lbnRyeShweF9iYXNlKHBkKSwgcGRlLCBlbmNvZGUodG8tPmRhZGRyLCBJOTE1X0NB Q0hFX0xMQykpOwogCXBkLT5lbnRyeVtwZGVdID0gdG87Ci0JYXRvbWljX2RlYygmcGQtPnVzZWQp OworCWF0b21pY19kZWMocHhfdXNlZChwZCkpOwogfQogCiAjZGVmaW5lIHNldF9wZF9lbnRyeShw ZCwgcGRlLCB0bykgXApAQCAtODEzLDEzICs4MDUsMTMgQEAgX19jbGVhcl9wZF9lbnRyeShzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkLAogc3RhdGljIGJvb2wKIHJlbGVhc2Vf cGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiBjb25zdCBwZCwKIAkJIGNvbnN0 IHVuc2lnbmVkIHNob3J0IHBkZSwKLQkJIGF0b21pY190ICpjb3VudGVyLAorCQkgc3RydWN0IGk5 MTVfcGFnZV90YWJsZSAqIGNvbnN0IHB0LAogCQkgc3RydWN0IGk5MTVfcGFnZV9kbWEgKiBjb25z dCBzY3JhdGNoKQogewogCWJvb2wgZnJlZSA9IGZhbHNlOwogCiAJc3Bpbl9sb2NrKCZwZC0+bG9j ayk7Ci0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoY291bnRlcikpIHsKKwlpZiAoYXRvbWljX2Rl Y19hbmRfdGVzdCgmcHQtPnVzZWQpKSB7CiAJCWNsZWFyX3BkX2VudHJ5KHBkLCBwZGUsIHNjcmF0 Y2gpOwogCQlmcmVlID0gdHJ1ZTsKIAl9CkBAIC04NzAsOCArODYyLDggQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9jbGVhcl9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCQlh dG9taWNfaW5jKCZwdC0+dXNlZCk7CiAJCWdlbjhfcHBndHRfY2xlYXJfcHQodm0sIHB0LCBzdGFy dCwgbGVuZ3RoKTsKLQkJaWYgKHJlbGVhc2VfcGRfZW50cnkocGQsIHBkZSwgJnB0LT51c2VkLCAm dm0tPnNjcmF0Y2hfcHQpKQotCQkJZnJlZV9wdCh2bSwgcHQpOworCQlpZiAocmVsZWFzZV9wZF9l bnRyeShwZCwgcGRlLCBwdCwgJnZtLT5zY3JhdGNoX3B0KSkKKwkJCWZyZWVfcHgodm0sIHB0KTsK IAl9CiB9CiAKQEAgLTg4OCwxMCArODgwLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xl YXJfcGRwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCWdlbjhfZm9yX2VhY2hfcGRw ZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCBwZHBlKSB7CiAJCUdFTV9CVUdfT04ocHhfYmFzZShw ZCkgPT0gJnZtLT5zY3JhdGNoX3BkKTsKIAotCQlhdG9taWNfaW5jKCZwZC0+dXNlZCk7CisJCWF0 b21pY19pbmMocHhfdXNlZChwZCkpOwogCQlnZW44X3BwZ3R0X2NsZWFyX3BkKHZtLCBwZCwgc3Rh cnQsIGxlbmd0aCk7Ci0JCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRwZSwgJnBkLT51c2Vk LCAmdm0tPnNjcmF0Y2hfcGQpKQotCQkJZnJlZV9wZCh2bSwgcGQpOworCQlpZiAocmVsZWFzZV9w ZF9lbnRyeShwZHAsIHBkcGUsICZwZC0+cHQsICZ2bS0+c2NyYXRjaF9wZCkpCisJCQlmcmVlX3B4 KHZtLCBwZCk7CiAJfQogfQogCkBAIC05MTgsMTAgKzkxMCwxMCBAQCBzdGF0aWMgdm9pZCBnZW44 X3BwZ3R0X2NsZWFyXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJZ2VuOF9m b3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHBtbDRlKSB7CiAJCUdFTV9C VUdfT04ocHhfYmFzZShwZHApID09ICZ2bS0+c2NyYXRjaF9wZHApOwogCi0JCWF0b21pY19pbmMo JnBkcC0+dXNlZCk7CisJCWF0b21pY19pbmMocHhfdXNlZChwZHApKTsKIAkJZ2VuOF9wcGd0dF9j bGVhcl9wZHAodm0sIHBkcCwgc3RhcnQsIGxlbmd0aCk7Ci0JCWlmIChyZWxlYXNlX3BkX2VudHJ5 KHBtbDQsIHBtbDRlLCAmcGRwLT51c2VkLCAmdm0tPnNjcmF0Y2hfcGRwKSkKLQkJCWZyZWVfcGQo dm0sIHBkcCk7CisJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBtbDQsIHBtbDRlLCAmcGRwLT5wdCwg JnZtLT5zY3JhdGNoX3BkcCkpCisJCQlmcmVlX3B4KHZtLCBwZHApOwogCX0KIH0KIApAQCAtMTE3 Niw3ICsxMTY4LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCiAJZm9yIChpID0gMDsgaSA8IEk5MTVfUERFUzsgaSsr KSB7CiAJCWlmIChwZC0+ZW50cnlbaV0gIT0gJnZtLT5zY3JhdGNoX3B0KQotCQkJZnJlZV9wdCh2 bSwgcGQtPmVudHJ5W2ldKTsKKwkJCWZyZWVfcGQodm0sIHBkLT5lbnRyeVtpXSk7CiAJfQogfQog CkBAIC0xMjU1LDkgKzEyNDcsOSBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfbm90aWZ5X3ZndChz dHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQsIGJvb2wgY3JlYXRlKQogCWludCBpOwogCiAJaWYgKGNy ZWF0ZSkKLQkJYXRvbWljX2luYygmcHBndHQtPnBkLT51c2VkKTsgLyogbmV2ZXIgcmVtb3ZlICov CisJCWF0b21pY19pbmMocHhfdXNlZChwcGd0dC0+cGQpKTsgLyogbmV2ZXIgcmVtb3ZlICovCiAJ ZWxzZQotCQlhdG9taWNfZGVjKCZwcGd0dC0+cGQtPnVzZWQpOworCQlhdG9taWNfZGVjKHB4X3Vz ZWQocHBndHQtPnBkKSk7CiAKIAlpZiAoaTkxNV92bV9pc180bHZsKHZtKSkgewogCQljb25zdCB1 NjQgZGFkZHIgPSBweF9kbWEocHBndHQtPnBkKTsKQEAgLTEyOTgsNyArMTI5MCw3IEBAIHN0YXRp YyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAogCQlmcmVlX3BkKHZtLCBwZHAtPmVudHJ5W2ldKTsKIAl9CiAKLQlmcmVlX3BkKHZtLCBw ZHApOworCWZyZWVfcHgodm0sIHBkcCk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xl YW51cF80bHZsKHN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCkKQEAgLTEzMTUsNyArMTMwNyw3IEBA IHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF80bHZsKHN0cnVjdCBpOTE1X3BwZ3R0ICpw cGd0dCkKIAkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoJnBwZ3R0LT52bSwgcGRwKTsKIAl9CiAK LQlmcmVlX3BkKCZwcGd0dC0+dm0sIHBtbDQpOworCWZyZWVfcHgoJnBwZ3R0LT52bSwgcG1sNCk7 CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSkKQEAgLTEzNzksNyArMTM3MSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9h bGxvY19wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlnZW44X3BwZ3R0X2NsZWFy X3BkKHZtLCBwZCwgZnJvbSwgc3RhcnQgLSBmcm9tKTsKIG91dDoKIAlpZiAoYWxsb2MpCi0JCWZy ZWVfcHQodm0sIGFsbG9jKTsKKwkJZnJlZV9weCh2bSwgYWxsb2MpOwogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTE0MTUsNyArMTQwNyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wZHAo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJcGQgPSBwZHAtPmVudHJ5W3BkcGVd OwogCQkJfQogCQl9Ci0JCWF0b21pY19pbmMoJnBkLT51c2VkKTsKKwkJYXRvbWljX2luYyhweF91 c2VkKHBkKSk7CiAJCXNwaW5fdW5sb2NrKCZwZHAtPmxvY2spOwogCiAJCXJldCA9IGdlbjhfcHBn dHRfYWxsb2NfcGQodm0sIHBkLCBzdGFydCwgbGVuZ3RoKTsKQEAgLTE0MjMsMTkgKzE0MTUsMTkg QEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BkcChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKIAkJCWdvdG8gdW53aW5kX3BkOwogCiAJCXNwaW5fbG9jaygmcGRwLT5sb2NrKTsK LQkJYXRvbWljX2RlYygmcGQtPnVzZWQpOworCQlhdG9taWNfZGVjKHB4X3VzZWQocGQpKTsKIAl9 CiAJc3Bpbl91bmxvY2soJnBkcC0+bG9jayk7CiAJZ290byBvdXQ7CiAKIHVud2luZF9wZDoKLQlp ZiAocmVsZWFzZV9wZF9lbnRyeShwZHAsIHBkcGUsICZwZC0+dXNlZCwgJnZtLT5zY3JhdGNoX3Bk KSkKLQkJZnJlZV9wZCh2bSwgcGQpOworCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRwZSwg JnBkLT5wdCwgJnZtLT5zY3JhdGNoX3BkKSkKKwkJZnJlZV9weCh2bSwgcGQpOwogdW53aW5kOgog CWdlbjhfcHBndHRfY2xlYXJfcGRwKHZtLCBwZHAsIGZyb20sIHN0YXJ0IC0gZnJvbSk7CiBvdXQ6 CiAJaWYgKGFsbG9jKQotCQlmcmVlX3BkKHZtLCBhbGxvYyk7CisJCWZyZWVfcHgodm0sIGFsbG9j KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xNDc5LDcgKzE0NzEsNyBAQCBzdGF0aWMgaW50IGdl bjhfcHBndHRfYWxsb2NfNGx2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQlw ZHAgPSBwbWw0LT5lbnRyeVtwbWw0ZV07CiAJCQl9CiAJCX0KLQkJYXRvbWljX2luYygmcGRwLT51 c2VkKTsKKwkJYXRvbWljX2luYyhweF91c2VkKHBkcCkpOwogCQlzcGluX3VubG9jaygmcG1sNC0+ bG9jayk7CiAKIAkJcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wZHAodm0sIHBkcCwgc3RhcnQsIGxl bmd0aCk7CkBAIC0xNDg3LDE5ICsxNDc5LDE5IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxv Y180bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJZ290byB1bndpbmRfcGRw OwogCiAJCXNwaW5fbG9jaygmcG1sNC0+bG9jayk7Ci0JCWF0b21pY19kZWMoJnBkcC0+dXNlZCk7 CisJCWF0b21pY19kZWMocHhfdXNlZChwZHApKTsKIAl9CiAJc3Bpbl91bmxvY2soJnBtbDQtPmxv Y2spOwogCWdvdG8gb3V0OwogCiB1bndpbmRfcGRwOgotCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBt bDQsIHBtbDRlLCAmcGRwLT51c2VkLCAmdm0tPnNjcmF0Y2hfcGRwKSkKLQkJZnJlZV9wZCh2bSwg cGRwKTsKKwlpZiAocmVsZWFzZV9wZF9lbnRyeShwbWw0LCBwbWw0ZSwgJnBkcC0+cHQsICZ2bS0+ c2NyYXRjaF9wZHApKQorCQlmcmVlX3B4KHZtLCBwZHApOwogdW53aW5kOgogCWdlbjhfcHBndHRf Y2xlYXJfNGx2bCh2bSwgZnJvbSwgc3RhcnQgLSBmcm9tKTsKIG91dDoKIAlpZiAoYWxsb2MpCi0J CWZyZWVfcGQodm0sIGFsbG9jKTsKKwkJZnJlZV9weCh2bSwgYWxsb2MpOwogCXJldHVybiByZXQ7 CiB9CiAKQEAgLTE1MjUsNyArMTUxNyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcmVhbGxvY2F0ZV90 b3BfbGV2ZWxfcGRwKHN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCkKIAogdW53aW5kOgogCWdlbjhf cHBndHRfY2xlYXJfcGRwKHZtLCBwZHAsIGZyb20sIHN0YXJ0IC0gZnJvbSk7Ci0JYXRvbWljX3Nl dCgmcGRwLT51c2VkLCAwKTsKKwlhdG9taWNfc2V0KHB4X3VzZWQocGRwKSwgMCk7CiAJcmV0dXJu IC1FTk9NRU07CiB9CiAKQEAgLTE1NTIsNyArMTU0NCw3IEBAIHN0YXRpYyB2b2lkIGluaXRfcGRf bihzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJICAgICAgY29uc3QgdW5zaWduZWQg aW50IGVudHJpZXMpCiB7CiAJY29uc3QgdTY0IGRhZGRyID0gZ2VuOF9wZGVfZW5jb2RlKHRvLT5k YWRkciwgSTkxNV9DQUNIRV9MTEMpOwotCXU2NCAqIGNvbnN0IHZhZGRyID0ga21hcF9hdG9taWMo cGQtPmJhc2UucGFnZSk7CisJdTY0ICogY29uc3QgdmFkZHIgPSBrbWFwX2F0b21pY19weChwZCk7 CiAKIAltZW1zZXQ2NCh2YWRkciwgZGFkZHIsIGVudHJpZXMpOwogCWt1bm1hcF9hdG9taWModmFk ZHIpOwpAQCAtMTU4MCw3ICsxNTcyLDcgQEAgZ2VuOF9hbGxvY190b3BfcGQoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCiAKIAlwZC0+ZW50cnlbR0VOOF8zTFZMX1BEUEVTXSA9IE5VTEw7 CiAKLQlpZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEodm0sICZwZC0+YmFzZSkpKSB7CisJaWYg KHVubGlrZWx5KHNldHVwX3BhZ2VfZG1hKHZtLCBweF9iYXNlKHBkKSkpKSB7CiAJCWtmcmVlKHBk KTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJfQpAQCAtMTY1Niw3ICsxNjQ4LDcgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3BwZ3R0ICpnZW44X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAlyZXR1cm4gcHBndHQ7CiAKIGVycl9mcmVlX3BkOgotCWZyZWVf cGQoJnBwZ3R0LT52bSwgcHBndHQtPnBkKTsKKwlmcmVlX3B4KCZwcGd0dC0+dm0sIHBwZ3R0LT5w ZCk7CiBlcnJfZnJlZV9zY3JhdGNoOgogCWZyZWVfc2NyYXRjaCgmcHBndHQtPnZtKTsKIGVycl9m cmVlOgpAQCAtMTg2Nyw3ICsxODU5LDcgQEAgc3RhdGljIGludCBnZW42X2FsbG9jX3ZhX3Jhbmdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCWdlbjZfcHBndHRfY2xlYXJfcmFuZ2Uo dm0sIGZyb20sIHN0YXJ0IC0gZnJvbSk7CiBvdXQ6CiAJaWYgKGFsbG9jKQotCQlmcmVlX3B0KHZt LCBhbGxvYyk7CisJCWZyZWVfcHgodm0sIGFsbG9jKTsKIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgm dm0tPmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xOTA4 LDcgKzE5MDAsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2ZyZWVfcGQoc3RydWN0IGdlbjZf cHBndHQgKnBwZ3R0KQogCiAJZ2VuNl9mb3JfYWxsX3BkZXMocHQsIHBkLCBwZGUpCiAJCWlmIChw eF9iYXNlKHB0KSAhPSAmcHBndHQtPmJhc2Uudm0uc2NyYXRjaF9wdCkKLQkJCWZyZWVfcHQoJnBw Z3R0LT5iYXNlLnZtLCBwdCk7CisJCQlmcmVlX3B4KCZwcGd0dC0+YmFzZS52bSwgcHQpOwogfQog CiBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCkBAIC0xOTQ5LDcgKzE5NDEsNyBAQCBzdGF0aWMgaW50IHBkX3ZtYV9iaW5kKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAogCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0OwogCXVuc2lnbmVk IGludCBwZGU7CiAKLQlwcGd0dC0+YmFzZS5wZC0+YmFzZS5nZ3R0X29mZnNldCA9IGdndHRfb2Zm c2V0ICogc2l6ZW9mKGdlbjZfcHRlX3QpOworCXB4X2Jhc2UocHBndHQtPmJhc2UucGQpLT5nZ3R0 X29mZnNldCA9IGdndHRfb2Zmc2V0ICogc2l6ZW9mKGdlbjZfcHRlX3QpOwogCXBwZ3R0LT5wZF9h ZGRyID0gKGdlbjZfcHRlX3QgX19pb21lbSAqKWdndHQtPmdzbSArIGdndHRfb2Zmc2V0OwogCiAJ Z2VuNl9mb3JfYWxsX3BkZXMocHQsIHBwZ3R0LT5iYXNlLnBkLCBwZGUpCkBAIC0xOTc3LDcgKzE5 NjksNyBAQCBzdGF0aWMgdm9pZCBwZF92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQog CQlpZiAocHhfYmFzZShwdCkgPT0gc2NyYXRjaCB8fCBhdG9taWNfcmVhZCgmcHQtPnVzZWQpKQog CQkJY29udGludWU7CiAKLQkJZnJlZV9wdCgmcHBndHQtPmJhc2Uudm0sIHB0KTsKKwkJZnJlZV9w eCgmcHBndHQtPmJhc2Uudm0sIHB0KTsKIAkJcGQtPmVudHJ5W3BkZV0gPSBzY3JhdGNoOwogCX0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRleCA4NjA4NTA0MTFhMWIuLjQ4YmI4 YzUxMjVlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKQEAgLTI0MCwyMSArMjQw LDM3IEBAIHN0cnVjdCBpOTE1X3BhZ2VfZG1hIHsKIAl9OwogfTsKIAotI2RlZmluZSBweF9iYXNl KHB4KSAoJihweCktPmJhc2UpCi0jZGVmaW5lIHB4X2RtYShweCkgKHB4X2Jhc2UocHgpLT5kYWRk cikKLQogc3RydWN0IGk5MTVfcGFnZV90YWJsZSB7CiAJc3RydWN0IGk5MTVfcGFnZV9kbWEgYmFz ZTsKIAlhdG9taWNfdCB1c2VkOwogfTsKIAogc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnkgewot CXN0cnVjdCBpOTE1X3BhZ2VfZG1hIGJhc2U7Ci0JYXRvbWljX3QgdXNlZDsKKwlzdHJ1Y3QgaTkx NV9wYWdlX3RhYmxlIHB0OwogCXNwaW5sb2NrX3QgbG9jazsKIAl2b2lkICplbnRyeVs1MTJdOwog fTsKIAorI2RlZmluZSBfX3B4X2Nob29zZV9leHByKHgsIHR5cGUsIGV4cHIsIG90aGVyKSBcCisJ X19idWlsdGluX2Nob29zZV9leHByKCBcCisJX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoeCksIHR5cGUpIHx8IFwKKwlfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv Zih4KSwgY29uc3QgdHlwZSksIFwKKwkoeyB0eXBlIF9feCA9ICh0eXBlKSh4KTsgZXhwcjsgfSks IFwKKwlvdGhlcikKKworI2RlZmluZSBweF9iYXNlKHB4KSBcCisJX19weF9jaG9vc2VfZXhwcihw eCwgc3RydWN0IGk5MTVfcGFnZV9kbWEgKiwgX194LCBcCisJX19weF9jaG9vc2VfZXhwcihweCwg c3RydWN0IGk5MTVfcGFnZV90YWJsZSAqLCAmX194LT5iYXNlLCBcCisJX19weF9jaG9vc2VfZXhw cihweCwgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiwgJl9feC0+cHQuYmFzZSwgXAorCSh2 b2lkKTApKSkKKyNkZWZpbmUgcHhfZG1hKHB4KSAocHhfYmFzZShweCktPmRhZGRyKQorCisjZGVm aW5lIHB4X3B0KHB4KSBcCisJX19weF9jaG9vc2VfZXhwcihweCwgc3RydWN0IGk5MTVfcGFnZV90 YWJsZSAqLCBfX3gsIFwKKwlfX3B4X2Nob29zZV9leHByKHB4LCBzdHJ1Y3QgaTkxNV9wYWdlX2Rp cmVjdG9yeSAqLCAmX194LT5wdCwgXAorCSh2b2lkKTApKQorI2RlZmluZSBweF91c2VkKHB4KSAo JnB4X3B0KHB4KS0+dXNlZCkKKwogc3RydWN0IGk5MTVfdm1hX29wcyB7CiAJLyogTWFwIGFuIG9i amVjdCBpbnRvIGFuIGFkZHJlc3Mgc3BhY2Ugd2l0aCB0aGUgZ2l2ZW4gY2FjaGUgZmxhZ3MuICov CiAJaW50ICgqYmluZF92bWEpKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLApAQCAtNTg5LDEwICs2MDUs OSBAQCBzdGF0aWMgaW5saW5lIHU2NCBnZW44X3B0ZV9jb3VudCh1NjQgYWRkcmVzcywgdTY0IGxl bmd0aCkKIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdAogaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihj b25zdCBzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQsIGNvbnN0IHVuc2lnbmVkIGludCBuKQogewot CXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAq cHQgPSBwcGd0dC0+cGQtPmVudHJ5W25dOwogCi0JcGQgPSBpOTE1X3BkcF9lbnRyeShwcGd0dC0+ cGQsIG4pOwotCXJldHVybiBweF9kbWEocGQpOworCXJldHVybiBweF9kbWEocHQpOwogfQogCiBz dGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2dndHQgKgotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=