From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 01/12] drm/i915/bdw: Make pdp allocation more dynamic Date: Fri, 20 Feb 2015 17:45:55 +0000 Message-ID: <1424454366-19006-2-git-send-email-michel.thierry@intel.com> References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 8FA4F6E6C8 for ; Fri, 20 Feb 2015 09:46:10 -0800 (PST) In-Reply-To: <1424454366-19006-1-git-send-email-michel.thierry@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 RnJvbTogQmVuIFdpZGF3c2t5IDxiZW5qYW1pbi53aWRhd3NreUBpbnRlbC5jb20+CgpUaGlzIHRy YW5zaXRpb25hbCBwYXRjaCBkb2Vzbid0IGRvIG11Y2ggZm9yIHRoZSBleGlzdGluZyBjb2RlLiBI b3dldmVyLAppdCBzaG91bGQgbWFrZSB1cGNvbWluZyBwYXRjaGVzIHRvIHVzZSB0aGUgZnVsbCA0 OGIgYWRkcmVzcyBzcGFjZSBhIGJpdAplYXNpZXIgdG8gc3dhbGxvdy4gVGhlIHBhdGNoIGFsc28g aW50cm9kdWNlcyB0aGUgUE1MNCwgaWUuIHRoZSBuZXcgdG9wCmxldmVsIHN0cnVjdHVyZSBvZiB0 aGUgcGFnZSB0YWJsZXMuCgp2MjogUmVuYW1lZCAgcGRwX2ZyZWUgdG8gYmUgc2ltaWxhciB0byAg cGQvcHQgKHVubWFwX2FuZF9mcmVlX3BkcCksClRvIGZhY2lsaXRhdGUgdGVzdGluZywgNDhiIG1v ZGUgd2lsbCBiZSBhdmFpbGFibGUgb24gQnJvYWR3ZWxsLCB3aGVuCmk5MTUuZW5hYmxlX3BwZ3R0 ID0gMy4KClNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KU2ln bmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYy KQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgICA3ICsrLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAxMDggKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCB8 ICA0MSArKysrKysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwg MzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMmRlZGQ0My4uYWYw ZDE0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yNDMyLDcgKzI0MzIsMTIgQEAgc3Ry dWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAjZGVmaW5lIEhBU19IV19DT05URVhUUyhkZXYpCShJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQogI2RlZmluZSBIQVNfTE9HSUNBTF9SSU5HX0NPTlRF WFRTKGRldikJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpCiAjZGVmaW5lIFVTRVNfUFBHVFQo ZGV2KQkJKGk5MTUuZW5hYmxlX3BwZ3R0KQotI2RlZmluZSBVU0VTX0ZVTExfUFBHVFQoZGV2KQko aTkxNS5lbmFibGVfcHBndHQgPT0gMikKKyNkZWZpbmUgVVNFU19GVUxMX1BQR1RUKGRldikJKGk5 MTUuZW5hYmxlX3BwZ3R0ID49IDIpCisjaWZkZWYgQ09ORklHXzY0QklUCisjIGRlZmluZSBVU0VT X0ZVTExfNDhCSVRfUFBHVFQoZGV2KQkoaTkxNS5lbmFibGVfcHBndHQgPT0gMykKKyNlbHNlCisj IGRlZmluZSBVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KQlmYWxzZQorI2VuZGlmCiAKICNkZWZp bmUgSEFTX09WRVJMQVkoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+aGFzX292ZXJsYXkpCiAjZGVm aW5lIE9WRVJMQVlfTkVFRFNfUEhZU0lDQUwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5vdmVybGF5 X25lZWRzX3BoeXNpY2FsKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCBmZjg2 NTAxLi40ODlmOGRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTAwLDEw ICsxMDAsMTcgQEAgc3RhdGljIGludCBzYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGVuYWJsZV9wcGd0dCkKIHsKIAlib29sIGhhc19hbGlhc2luZ19wcGd0 dDsKIAlib29sIGhhc19mdWxsX3BwZ3R0OworCWJvb2wgaGFzX2Z1bGxfNjRiaXRfcHBndHQ7CiAK IAloYXNfYWxpYXNpbmdfcHBndHQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2OwogCWhhc19m dWxsX3BwZ3R0ID0gSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNzsKIAorI2lmZGVmIENPTkZJR182 NEJJVAorCWhhc19mdWxsXzY0Yml0X3BwZ3R0ID0gSVNfQlJPQURXRUxMKGRldikgJiYgZmFsc2U7 IC8qIEZJWE1FOiA2NGIgKi8KKyNlbHNlCisJaGFzX2Z1bGxfNjRiaXRfcHBndHQgPSBmYWxzZTsK KyNlbmRpZgorCiAJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCiAJCWhhc19mdWxsX3BwZ3R0 ID0gZmFsc2U7IC8qIGVtdWxhdGlvbiBpcyB0b28gaGFyZCAqLwogCkBAIC0xMjEsNiArMTI4LDkg QEAgc3RhdGljIGludCBzYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGVuYWJsZV9wcGd0dCkKIAlpZiAoZW5hYmxlX3BwZ3R0ID09IDIgJiYgaGFzX2Z1bGxf cHBndHQpCiAJCXJldHVybiAyOwogCisJaWYgKGVuYWJsZV9wcGd0dCA9PSAzICYmIGhhc19mdWxs XzY0Yml0X3BwZ3R0KQorCQlyZXR1cm4gMzsKKwogI2lmZGVmIENPTkZJR19JTlRFTF9JT01NVQog CS8qIERpc2FibGUgcHBndHQgb24gU05CIGlmIFZULWQgaXMgb24uICovCiAJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID09IDYgJiYgaW50ZWxfaW9tbXVfZ2Z4X21hcHBlZCkgewpAQCAtNDYyLDYg KzQ3Miw0NSBAQCBmcmVlX3BkOgogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKK3N0YXRpYyB2 b2lkIF9fcGRwX2Zpbmkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAq cGRwKQoreworCWtmcmVlKHBkcC0+dXNlZF9wZHBlcyk7CisJa2ZyZWUocGRwLT5wYWdlX2RpcmVj dG9yeSk7CisJLyogSEFDSyAqLworCXBkcC0+cGFnZV9kaXJlY3RvcnkgPSBOVUxMOworfQorCitz dGF0aWMgdm9pZCB1bm1hcF9hbmRfZnJlZV9wZHAoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlcl9lbnRyeSAqcGRwLAorCQkJICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ X19wZHBfZmluaShwZHApOworCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkKKwkJa2Zy ZWUocGRwKTsKK30KKworc3RhdGljIGludCBfX3BkcF9pbml0KHN0cnVjdCBpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCwKKwkJICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKKwlzaXplX3QgcGRwZXMgPSBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KTsKKworCXBkcC0+ dXNlZF9wZHBlcyA9IGtjYWxsb2MoQklUU19UT19MT05HUyhwZHBlcyksCisJCQkJICBzaXplb2Yo dW5zaWduZWQgbG9uZyksCisJCQkJICBHRlBfS0VSTkVMKTsKKwlpZiAoIXBkcC0+dXNlZF9wZHBl cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwZHAtPnBhZ2VfZGlyZWN0b3J5ID0ga2NhbGxvYyhw ZHBlcywgc2l6ZW9mKCpwZHAtPnBhZ2VfZGlyZWN0b3J5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFw ZHAtPnBhZ2VfZGlyZWN0b3J5KSB7CisJCWtmcmVlKHBkcC0+dXNlZF9wZHBlcyk7CisJCS8qIHRo ZSBQRFAgbWlnaHQgYmUgdGhlIHN0YXRpY2FsbHkgYWxsb2NhdGVkIHRvcCBsZXZlbC4gS2VlcCBp dAorCQkgKiBhcyBjbGVhbiBhcyBwb3NzaWJsZSAqLworCQlwZHAtPnVzZWRfcGRwZXMgPSBOVUxM OworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogLyogQnJvYWR3ZWxs IFBhZ2UgRGlyZWN0b3J5IFBvaW50ZXIgRGVzY3JpcHRvcnMgKi8KIHN0YXRpYyBpbnQgZ2VuOF93 cml0ZV9wZHAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkJCSAgdW5zaWduZWQgZW50 cnksCkBAIC00OTEsNyArNTQwLDcgQEAgc3RhdGljIGludCBnZW44X21tX3N3aXRjaChzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQsCiB7CiAJaW50IGksIHJldDsKIAotCWZvciAoaSA9IEdFTjhf TEVHQUNZX1BEUEVTIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwlmb3IgKGkgPSAzOyBpID49IDA7IGkt LSkgewogCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQgPSBwcGd0dC0+cGRw LnBhZ2VfZGlyZWN0b3J5W2ldOwogCQlkbWFfYWRkcl90IHBkX2RhZGRyID0gcGQgPyBwZC0+ZGFk ZHIgOiBwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHI7CiAJCS8qIFRoZSBwYWdlIGRpcmVjdG9yeSBt aWdodCBiZSBOVUxMLCBidXQgd2UgbmVlZCB0byBjbGVhciBvdXQKQEAgLTU4MCw5ICs2MjksNiBA QCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAogCXB0X3ZhZGRyID0gTlVMTDsKIAogCWZvcl9lYWNoX3NnX3BhZ2UocGFn ZXMtPnNnbCwgJnNnX2l0ZXIsIHBhZ2VzLT5uZW50cywgMCkgewotCQlpZiAoV0FSTl9PTihwZHBl ID49IEdFTjhfTEVHQUNZX1BEUEVTKSkKLQkJCWJyZWFrOwotCiAJCWlmIChwdF92YWRkciA9PSBO VUxMKSB7CiAJCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQgPSBwcGd0dC0+ cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdOwogCQkJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRy eSAqcHQgPSBwZC0+cGFnZV90YWJsZXNbcGRlXTsKQEAgLTY2NCw3ICs3MTAsOCBAQCBzdGF0aWMg dm9pZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK IAlzdHJ1Y3QgcGNpX2RldiAqaHdkZXYgPSBwcGd0dC0+YmFzZS5kZXYtPnBkZXY7CiAJaW50IGks IGo7CiAKLQlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywgR0VOOF9M RUdBQ1lfUERQRVMpIHsKKwlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBl cywKKwkJCUk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpKSB7CiAJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZDsKIAogCQlpZiAoV0FSTl9PTighcHBndHQtPnBk cC5wYWdlX2RpcmVjdG9yeVtpXSkpCkBAIC02OTYsMTMgKzc0MywxNSBAQCBzdGF0aWMgdm9pZCBn ZW44X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCWludCBpOwog Ci0JZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsIEdFTjhfTEVHQUNZ X1BEUEVTKSB7CisJZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsCisJ CQkJSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikpIHsKIAkJaWYgKFdBUk5fT04o IXBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQogCQkJY29udGludWU7CiAKIAkJZ2VuOF9m cmVlX3BhZ2VfdGFibGVzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sIHBwZ3R0LT5iYXNl LmRldik7CiAJCXVubWFwX2FuZF9mcmVlX3BkKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0s IHBwZ3R0LT5iYXNlLmRldik7CiAJfQorCXVubWFwX2FuZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwg cHBndHQtPmJhc2UuZGV2KTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQpAQCAtNzk5LDggKzg0OCw5IEBAIHN0YXRpYyBp bnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQ7CiAJdWludDY0 X3QgdGVtcDsKIAl1aW50MzJfdCBwZHBlOworCXNpemVfdCBwZHBlcyA9ICBJOTE1X1BEUEVTX1BF Ul9QRFAocHBndHQtPmJhc2UuZGV2KTsKIAotCUJVR19PTighYml0bWFwX2VtcHR5KG5ld19wZHMs IEdFTjhfTEVHQUNZX1BEUEVTKSk7CisJQlVHX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcywgcGRw ZXMpKTsKIAogCS8qIEZJWE1FOiBQUEdUVCBjb250YWluZXJfb2Ygd29uJ3Qgd29yayBmb3IgNjRi ICovCiAJQlVHX09OKChzdGFydCArIGxlbmd0aCkgPiAweDgwMDAwMDAwMFVMTCk7CkBAIC04MjAs MTggKzg3MCwxOSBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3Rvcmll cyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJcmV0dXJuIDA7CiAKIHVud2luZF9vdXQ6 Ci0JZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGRzLCBHRU44X0xFR0FDWV9QRFBFUykKKwlm b3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wZHMsIHBkcGVzKQogCQl1bm1hcF9hbmRfZnJlZV9w ZChwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdLCBwcGd0dC0+YmFzZS5kZXYpOwogCiAJcmV0dXJu IC1FTk9NRU07CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotZnJlZV9nZW44X3RlbXBfYml0bWFw cyh1bnNpZ25lZCBsb25nICpuZXdfcGRzLCB1bnNpZ25lZCBsb25nICoqbmV3X3B0cykKK2ZyZWVf Z2VuOF90ZW1wX2JpdG1hcHModW5zaWduZWQgbG9uZyAqbmV3X3BkcywgdW5zaWduZWQgbG9uZyAq Km5ld19wdHMsCisJCSAgICAgICBzaXplX3QgcGRwZXMpCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkg PSAwOyBpIDwgR0VOOF9MRUdBQ1lfUERQRVM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgcGRwZXM7 IGkrKykKIAkJa2ZyZWUobmV3X3B0c1tpXSk7CiAJa2ZyZWUobmV3X3B0cyk7CiAJa2ZyZWUobmV3 X3Bkcyk7CkBAIC04NDEsMTMgKzg5MiwxNCBAQCBmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKHVuc2ln bmVkIGxvbmcgKm5ld19wZHMsIHVuc2lnbmVkIGxvbmcgKipuZXdfcHRzKQogICogb2YgdGhlc2Ug YXJlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgUERQRXMgaW4gdGhlIHN5c3RlbS4KICAqLwogaW50 IF9fbXVzdF9jaGVjayBhbGxvY19nZW44X3RlbXBfYml0bWFwcyh1bnNpZ25lZCBsb25nICoqbmV3 X3BkcywKLQkJCQkJIHVuc2lnbmVkIGxvbmcgKioqbmV3X3B0cykKKwkJCQkJIHVuc2lnbmVkIGxv bmcgKioqbmV3X3B0cywKKwkJCQkJIHNpemVfdCBwZHBlcykKIHsKIAlpbnQgaTsKIAl1bnNpZ25l ZCBsb25nICpwZHM7CiAJdW5zaWduZWQgbG9uZyAqKnB0czsKIAotCXBkcyA9IGtjYWxsb2MoQklU U19UT19MT05HUyhHRU44X0xFR0FDWV9QRFBFUyksIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQ X0tFUk5FTCk7CisJcGRzID0ga2NhbGxvYyhCSVRTX1RPX0xPTkdTKHBkcGVzKSwgc2l6ZW9mKHVu c2lnbmVkIGxvbmcpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBkcykKIAkJcmV0dXJuIC1FTk9NRU07 CiAKQEAgLTg1Nyw3ICs5MDksNyBAQCBpbnQgX19tdXN0X2NoZWNrIGFsbG9jX2dlbjhfdGVtcF9i aXRtYXBzKHVuc2lnbmVkIGxvbmcgKipuZXdfcGRzLAogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAK LQlmb3IgKGkgPSAwOyBpIDwgR0VOOF9MRUdBQ1lfUERQRVM7IGkrKykgeworCWZvciAoaSA9IDA7 IGkgPCBwZHBlczsgaSsrKSB7CiAJCXB0c1tpXSA9IGtjYWxsb2MoQklUU19UT19MT05HUyhHRU44 X1BERVNfUEVSX1BBR0UpLAogCQkJCSBzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwp OwogCQlpZiAoIXB0c1tpXSkKQEAgLTg3MCw3ICs5MjIsNyBAQCBpbnQgX19tdXN0X2NoZWNrIGFs bG9jX2dlbjhfdGVtcF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcgKipuZXdfcGRzLAogCXJldHVybiAw OwogCiBlcnJfb3V0OgotCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMocGRzLCBwdHMpOworCWZyZWVf Z2VuOF90ZW1wX2JpdG1hcHMocGRzLCBwdHMsIHBkcGVzKTsKIAlyZXR1cm4gLUVOT01FTTsKIH0K IApAQCAtODg2LDYgKzkzOCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAljb25zdCB1aW50NjRfdCBvcmlnX2xlbmd0aCA9 IGxlbmd0aDsKIAl1aW50NjRfdCB0ZW1wOwogCXVpbnQzMl90IHBkcGU7CisJc2l6ZV90IHBkcGVz ID0gSTkxNV9QRFBFU19QRVJfUERQKGRldik7CiAJaW50IHJldDsKIAogI2lmbmRlZiBDT05GSUdf NjRCSVQKQEAgLTkwMyw3ICs5NTYsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJaWYgKFdBUk5fT04oc3RhcnQgKyBsZW5n dGggPCBzdGFydCkpCiAJCXJldHVybiAtRVJBTkdFOwogCi0JcmV0ID0gYWxsb2NfZ2VuOF90ZW1w X2JpdG1hcHMoJm5ld19wYWdlX2RpcnMsICZuZXdfcGFnZV90YWJsZXMpOworCXJldCA9IGFsbG9j X2dlbjhfdGVtcF9iaXRtYXBzKCZuZXdfcGFnZV9kaXJzLCAmbmV3X3BhZ2VfdGFibGVzLCBwZHBl cyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtOTExLDcgKzk2NCw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK IAlyZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMocHBndHQsICZwcGd0dC0+ cGRwLCBzdGFydCwgbGVuZ3RoLAogCQkJCQluZXdfcGFnZV9kaXJzKTsKIAlpZiAocmV0KSB7Ci0J CWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzKTsK KwkJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMs IHBkcGVzKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTk2OCw3ICsxMDIxLDcgQEAgc3RhdGlj IGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAog CQlzZXRfYml0KHBkcGUsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcyk7CiAJfQogCi0JZnJlZV9nZW44 X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMpOworCWZyZWVfZ2Vu OF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7CiAJ cmV0dXJuIDA7CiAKIGVycl9vdXQ6CkBAIC05NzcsMTMgKzEwMzAsMTkgQEAgZXJyX291dDoKIAkJ CXVubWFwX2FuZF9mcmVlX3B0KHBkLT5wYWdlX3RhYmxlc1t0ZW1wXSwgdm0tPmRldik7CiAJfQog Ci0JZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGFnZV9kaXJzLCBHRU44X0xFR0FDWV9QRFBF UykKKwlmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdlX2RpcnMsIHBkcGVzKQogCQl1bm1h cF9hbmRfZnJlZV9wZChwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdLCB2bS0+ZGV2KTsK IAotCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVz KTsKKwlmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19wYWdlX2RpcnMsIG5ld19wYWdlX3RhYmxl cywgcGRwZXMpOwogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfZmlu aV9jb21tb24oc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQoreworCXVubWFwX2FuZF9mcmVl X3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYpOworCXVubWFwX2FuZF9mcmVl X3BkcCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKK30KKwogLyoqCiAgKiBHRU44IGxl Z2FjeSBwcGd0dCBwcm9ncmFtbWluZyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCBhIG1heCA0IFBE UCByZWdpc3RlcnMKICAqIHdpdGggYSBuZXQgZWZmZWN0IHJlc2VtYmxpbmcgYSAyLWxldmVsIHBh Z2UgdGFibGUgaW4gbm9ybWFsIHg4NiB0ZXJtcy4gRWFjaApAQCAtMTAwNCw2ICsxMDYzLDE1IEBA IHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0X2NvbW1vbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsIHVpbnQ2NF90IHNpemUpCiAKIAlwcGd0dC0+c3dpdGNoX21tID0gZ2VuOF9tbV9zd2l0 Y2g7CiAKKwlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKSB7CisJ CWludCByZXQgPSBfX3BkcF9pbml0KCZwcGd0dC0+cGRwLCBmYWxzZSk7CisJCWlmIChyZXQpIHsK KwkJCXVubWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYp OworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0gZWxzZQorCQlyZXR1cm4gLUVQRVJNOyAvKiBOb3Qg eWV0IGltcGxlbWVudGVkICovCisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTAyNSw3ICsxMDkzLDcg QEAgc3RhdGljIGludCBnZW44X2FsaWFzaW5nX3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0KQogCSAqIGV2ZW50dWFsbHkuICovCiAJcmV0ID0gZ2VuOF9hbGxvY192YV9yYW5n ZSgmcHBndHQtPmJhc2UsIHN0YXJ0LCBzaXplKTsKIAlpZiAocmV0KSB7Ci0JCXVubWFwX2FuZF9m cmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYpOworCQlnZW44X3BwZ3R0 X2ZpbmlfY29tbW9uKHBwZ3R0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKaW5kZXggYzY4ZWMzYS4uYTMzYzZlOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKQEAgLTg1LDggKzg1LDEyIEBAIHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3Qg Z2VuOF9wcGd0dF9wZGVfdDsKICAqIFRoZSBkaWZmZXJlbmNlIGFzIGNvbXBhcmVkIHRvIG5vcm1h bCB4ODYgMyBsZXZlbCBwYWdlIHRhYmxlIGlzIHRoZSBQRFBFcyBhcmUKICAqIHByb2dyYW1tZWQg dmlhIHJlZ2lzdGVyLgogICovCisjZGVmaW5lIEdFTjhfUE1MNEVTX1BFUl9QTUw0CQk1MTIKKyNk ZWZpbmUgR0VOOF9QTUw0RV9TSElGVAkJMzkKICNkZWZpbmUgR0VOOF9QRFBFX1NISUZUCQkJMzAK LSNkZWZpbmUgR0VOOF9QRFBFX01BU0sJCQkweDMKKy8qIE5COiBHRU44X1BEUEVfTUFTSyBpcyB1 bnRydWUgZm9yIDMyYiBwbGF0Zm9ybXMsIGJ1dCBpdCBoYXMgbm8gaW1wYWN0IG9uIDMyYiBwYWdl CisgKiB0YWJsZXMgKi8KKyNkZWZpbmUgR0VOOF9QRFBFX01BU0sJCQkweDFmZgogI2RlZmluZSBH RU44X1BERV9TSElGVAkJCTIxCiAjZGVmaW5lIEdFTjhfUERFX01BU0sJCQkweDFmZgogI2RlZmlu ZSBHRU44X1BURV9TSElGVAkJCTEyCkBAIC05NSw2ICs5OSwxMyBAQCB0eXBlZGVmIGdlbjhfZ3R0 X3B0ZV90IGdlbjhfcHBndHRfcGRlX3Q7CiAjZGVmaW5lIEdFTjhfUFRFU19QRVJfUEFHRQkJKFBB R0VfU0laRSAvIHNpemVvZihnZW44X2d0dF9wdGVfdCkpCiAjZGVmaW5lIEdFTjhfUERFU19QRVJf UEFHRQkJKFBBR0VfU0laRSAvIHNpemVvZihnZW44X3BwZ3R0X3BkZV90KSkKIAorI2lmZGVmIENP TkZJR182NEJJVAorIyBkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQKGRldikgKFVTRVNfRlVMTF80 OEJJVF9QUEdUVChkZXYpID9cCisJCUdFTjhfUE1MNEVTX1BFUl9QTUw0IDogR0VOOF9MRUdBQ1lf UERQRVMpCisjZWxzZQorIyBkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQCQlHRU44X0xFR0FDWV9Q RFBFUworI2VuZGlmCisKICNkZWZpbmUgUFBBVF9VTkNBQ0hFRF9JTkRFWAkJKF9QQUdFX1BXVCB8 IF9QQUdFX1BDRCkKICNkZWZpbmUgUFBBVF9DQUNIRURfUERFX0lOREVYCQkwIC8qIFdCIExMQyAq LwogI2RlZmluZSBQUEFUX0NBQ0hFRF9JTkRFWAkJX1BBR0VfUEFUIC8qIFdCIExMQ2VMTEMgKi8K QEAgLTIxMCw5ICsyMjEsMTcgQEAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgewog fTsKIAogc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSB7Ci0JLyogc3Ry dWN0IHBhZ2UgKnBhZ2U7ICovCi0JREVDTEFSRV9CSVRNQVAodXNlZF9wZHBlcywgR0VOOF9MRUdB Q1lfUERQRVMpOwotCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwYWdlX2RpcmVj dG9yeVtHRU44X0xFR0FDWV9QRFBFU107CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJZG1hX2FkZHJf dCBkYWRkcjsKKwl1bnNpZ25lZCBsb25nICp1c2VkX3BkcGVzOworCXN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X2VudHJ5ICoqcGFnZV9kaXJlY3Rvcnk7Cit9OworCitzdHJ1Y3QgaTkxNV9wbWw0 IHsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwlkbWFfYWRkcl90IGRhZGRyOworCURFQ0xBUkVfQklU TUFQKHVzZWRfcG1sNGVzLCBHRU44X1BNTDRFU19QRVJfUE1MNCk7CisJc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwc1tHRU44X1BNTDRFU19QRVJfUE1MNF07CiB9 OwogCiBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKQEAgLTMwMiw4ICszMjEsOSBAQCBzdHJ1 Y3QgaTkxNV9od19wcGd0dCB7CiAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7CiAJdW5zaWduZWQg bG9uZyBwZF9kaXJ0eV9yaW5nczsKIAl1bmlvbiB7Ci0JCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0 b3J5X3BvaW50ZXJfZW50cnkgcGRwOwotCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRy eSBwZDsKKwkJc3RydWN0IGk5MTVfcG1sNCBwbWw0OwkJLyogR0VOOCsgJiA2NGIgUFBHVFQgKi8K KwkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSBwZHA7CS8qIEdFTjgr ICovCisJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5IHBkOwkJLyogR0VONi03ICov CiAJfTsKIAogCXVuaW9uIHsKQEAgLTM5OSwxNCArNDE5LDE3IEBAIHN0YXRpYyBpbmxpbmUgdWlu dDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMyX3QgYWRkcikKIAkgICAgIHRlbXAgPSBtaW4odGVt cCwgbGVuZ3RoKSwJCQkJCVwKIAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQog Ci0jZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1w LCBpdGVyKQkJXAotCWZvciAoaXRlciA9IGdlbjhfcGRwZV9pbmRleChzdGFydCksIHBkID0gKHBk cCktPnBhZ2VfZGlyZWN0b3J5W2l0ZXJdOwlcCi0JICAgICBsZW5ndGggPiAwICYmIGl0ZXIgPCBH RU44X0xFR0FDWV9QRFBFUzsJCQlcCisjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZV9lKHBkLCBw ZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIsIGIpCVwKKwlmb3IgKGl0ZXIgPSBnZW44X3Bk cGVfaW5kZXgoc3RhcnQpLCBwZCA9IChwZHApLT5wYWdlX2RpcmVjdG9yeVtpdGVyXTsgXAorCSAg ICAgbGVuZ3RoID4gMCAmJiAoaXRlciA8IGIpOwkJCQkJXAogCSAgICAgcGQgPSAocGRwKS0+cGFn ZV9kaXJlY3RvcnlbKytpdGVyXSwJCQkJXAogCSAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDEg PDwgR0VOOF9QRFBFX1NISUZUKSAtIHN0YXJ0LAlcCiAJICAgICB0ZW1wID0gbWluKHRlbXAsIGxl bmd0aCksCQkJCQlcCiAJICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkKIAorI2Rl ZmluZSBnZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgaXRl cikJCVwKKwlnZW44X2Zvcl9lYWNoX3BkcGVfZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1w LCBpdGVyLCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSkKKwogLyogQ2xhbXAgbGVuZ3RoIHRvIHRo ZSBuZXh0IHBhZ2VfZGlyZWN0b3J5IGJvdW5kYXJ5ICovCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90 IGdlbjhfY2xhbXBfcGQodWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKLS0gCjIu MS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=