From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 5/7] drm/i915/selftests: Reorder request allocation vs vma pinning Date: Sat, 1 Dec 2018 09:52:29 +0000 Message-ID: <20181201095231.324-5-chris@chris-wilson.co.uk> References: <20181201095231.324-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 7DC026E0FC for ; Sat, 1 Dec 2018 09:52:43 +0000 (UTC) In-Reply-To: <20181201095231.324-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 SW1wb3NlIGEgcmVzdHJhaW50IHRoYXQgd2UgaGF2ZSBhbGwgdm1hIHBpbm5lZCBmb3IgYSByZXF1 ZXN0IHByaW9yIHRvCml0cyBhbGxvY2F0aW9uLiBUaGlzIGlzIHRvIHNpbXBsaWZ5IHJlcXVlc3Qg Y29uc3RydWN0aW9uLCBhbmQgc2hvdWxkCmZhY2lsaXRhdGUgdW5yYXZlbGxpbmcgdGhlIGxvY2sg aW50ZXJkZXBlbmRlbmNpZXMgbGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaHVnZV9wYWdlcy5jICAgfCAgMzEgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pZ3Rfc3Bpbm5lci5jICB8ICA4NiArKysrKystLS0tLS0KIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jICB8IDEyMyArKysrKysrKystLS0tLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDEyMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwppbmRleCAyNmMwNjVjOGQy YzAuLmEwYzdjYmMyMTJiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVn ZV9wYWdlcy5jCkBAIC05NzIsNyArOTcyLDYgQEAgc3RhdGljIGludCBncHVfd3JpdGUoc3RydWN0 IGk5MTVfdm1hICp2bWEsCiB7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJc3RydWN0IGk5 MTVfdm1hICpiYXRjaDsKLQlpbnQgZmxhZ3MgPSAwOwogCWludCBlcnI7CiAKIAlHRU1fQlVHX09O KCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpOwpAQCAtOTgxLDE0ICs5ODAs MTQgQEAgc3RhdGljIGludCBncHVfd3JpdGUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJaWYgKGVy cikKIAkJcmV0dXJuIGVycjsKIAotCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4 KTsKLQlpZiAoSVNfRVJSKHJxKSkKLQkJcmV0dXJuIFBUUl9FUlIocnEpOwotCiAJYmF0Y2ggPSBn cHVfd3JpdGVfZHcodm1hLCBkd29yZCAqIHNpemVvZih1MzIpLCB2YWx1ZSk7Ci0JaWYgKElTX0VS UihiYXRjaCkpIHsKLQkJZXJyID0gUFRSX0VSUihiYXRjaCk7Ci0JCWdvdG8gZXJyX3JlcXVlc3Q7 CisJaWYgKElTX0VSUihiYXRjaCkpCisJCXJldHVybiBQVFJfRVJSKGJhdGNoKTsKKworCXJxID0g aTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQll cnIgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBlcnJfYmF0Y2g7CiAJfQogCiAJZXJyID0gaTkxNV92 bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJxLCAwKTsKQEAgLTk5NiwyMSArOTk1LDIxIEBAIHN0 YXRpYyBpbnQgZ3B1X3dyaXRlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQlnb3RvIGVycl9yZXF1 ZXN0OwogCiAJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKGJhdGNoLT5vYmop OwotCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKLQlpOTE1X3ZtYV9jbG9zZShiYXRjaCk7CiAKLQll cnIgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsCi0JCQkJICAgIGJhdGNoLT5ub2RlLnN0YXJ0 LCBiYXRjaC0+bm9kZS5zaXplLAotCQkJCSAgICBmbGFncyk7CisJZXJyID0gaTkxNV92bWFfbW92 ZV90b19hY3RpdmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOwogCWlmIChlcnIpCiAJCWdv dG8gZXJyX3JlcXVlc3Q7CiAKLQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJx LCBFWEVDX09CSkVDVF9XUklURSk7CisJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJxLAor CQkJCSAgICBiYXRjaC0+bm9kZS5zdGFydCwgYmF0Y2gtPm5vZGUuc2l6ZSwKKwkJCQkgICAgMCk7 CitlcnJfcmVxdWVzdDoKIAlpZiAoZXJyKQogCQlpOTE1X3JlcXVlc3Rfc2tpcChycSwgZXJyKTsK LQotZXJyX3JlcXVlc3Q6CiAJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitlcnJfYmF0Y2g6CisJaTkx NV92bWFfdW5waW4oYmF0Y2gpOworCWk5MTVfdm1hX2Nsb3NlKGJhdGNoKTsKIAogCXJldHVybiBl cnI7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3Nw aW5uZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jCmlu ZGV4IDhjZDM0ZjZlNjg1OS4uMGU3MGRmMDIzMGI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwpAQCAtNjgsNDggKzY4LDY1IEBAIHN0YXRpYyB1NjQg aHdzX2FkZHJlc3MoY29uc3Qgc3RydWN0IGk5MTVfdm1hICpod3MsCiAJcmV0dXJuIGh3cy0+bm9k ZS5zdGFydCArIHNlcW5vX29mZnNldChycS0+ZmVuY2UuY29udGV4dCk7CiB9CiAKLXN0YXRpYyBp bnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwKLQkJCSAgICAg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAotCQkJICAgICAgdTMyIGFyYml0cmF0aW9uX2NvbW1h bmQpCitzdGF0aWMgaW50IG1vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAorCQkJ ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCSAgdW5zaWduZWQgaW50IGZsYWdzKQogewot CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJnJxLT5nZW1fY29udGV4dC0+cHBndHQt PnZtOworCWludCBlcnI7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJx LCBmbGFncyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWlmICghaTkxNV9nZW1fb2Jq ZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKSkgeworCQlpOTE1X2dlbV9vYmplY3Rf Z2V0KHZtYS0+b2JqKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKHZt YS0+b2JqKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IGk5MTVfcmVxdWVzdCAqCitp Z3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCisJCQkg ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJICAgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAorCQkJICAgdTMyIGFyYml0cmF0aW9uX2NvbW1hbmQpCit7CisJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAmY3R4LT5wcGd0dC0+dm07CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEgPSBOVUxMOwogCXN0cnVjdCBpOTE1X3ZtYSAqaHdzLCAqdm1hOwogCXUzMiAq YmF0Y2g7CiAJaW50IGVycjsKIAogCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKHNwaW4tPm9iaiwg dm0sIE5VTEwpOwogCWlmIChJU19FUlIodm1hKSkKLQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwkJ cmV0dXJuIEVSUl9DQVNUKHZtYSk7CiAKIAlod3MgPSBpOTE1X3ZtYV9pbnN0YW5jZShzcGluLT5o d3MsIHZtLCBOVUxMKTsKIAlpZiAoSVNfRVJSKGh3cykpCi0JCXJldHVybiBQVFJfRVJSKGh3cyk7 CisJCXJldHVybiBFUlJfQ0FTVChod3MpOwogCiAJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwg MCwgUElOX1VTRVIpOwogCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CisJCXJldHVybiBFUlJfUFRS KGVycik7CiAKIAllcnIgPSBpOTE1X3ZtYV9waW4oaHdzLCAwLCAwLCBQSU5fVVNFUik7CiAJaWYg KGVycikKIAkJZ290byB1bnBpbl92bWE7CiAKLQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2 ZSh2bWEsIHJxLCAwKTsKLQlpZiAoZXJyKQorCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQllcnIgPSBQVFJfRVJSKHJxKTsKIAkJZ290 byB1bnBpbl9od3M7Ci0KLQlpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfYWN0aXZlX3JlZmVyZW5j ZSh2bWEtPm9iaikpIHsKLQkJaTkxNV9nZW1fb2JqZWN0X2dldCh2bWEtPm9iaik7Ci0JCWk5MTVf Z2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZSh2bWEtPm9iaik7CiAJfQogCi0JZXJyID0g aTkxNV92bWFfbW92ZV90b19hY3RpdmUoaHdzLCBycSwgMCk7CisJZXJyID0gbW92ZV90b19hY3Rp dmUodm1hLCBycSwgMCk7CiAJaWYgKGVycikKLQkJZ290byB1bnBpbl9od3M7CisJCWdvdG8gY2Fu Y2VsX3JxOwogCi0JaWYgKCFpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZlcmVuY2UoaHdz LT5vYmopKSB7Ci0JCWk5MTVfZ2VtX29iamVjdF9nZXQoaHdzLT5vYmopOwotCQlpOTE1X2dlbV9v YmplY3Rfc2V0X2FjdGl2ZV9yZWZlcmVuY2UoaHdzLT5vYmopOwotCX0KKwllcnIgPSBtb3ZlX3Rv X2FjdGl2ZShod3MsIHJxLCAwKTsKKwlpZiAoZXJyKQorCQlnb3RvIGNhbmNlbF9ycTsKIAogCWJh dGNoID0gc3Bpbi0+YmF0Y2g7CiAKQEAgLTEyNywzNSArMTQ0LDE4IEBAIHN0YXRpYyBpbnQgZW1p dF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwKIAogCWk5MTVfZ2VtX2No aXBzZXRfZmx1c2goc3Bpbi0+aTkxNSk7CiAKLQllcnIgPSBycS0+ZW5naW5lLT5lbWl0X2JiX3N0 YXJ0KHJxLCB2bWEtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwgMCk7CisJZXJyID0gZW5naW5lLT5l bWl0X2JiX3N0YXJ0KHJxLCB2bWEtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwgMCk7CiAKK2NhbmNl bF9ycToKKwlpZiAoZXJyKSB7CisJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOworCQlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKKwl9CiB1bnBpbl9od3M6CiAJaTkxNV92bWFfdW5waW4oaHdzKTsK IHVucGluX3ZtYToKIAlpOTE1X3ZtYV91bnBpbih2bWEpOwotCXJldHVybiBlcnI7Ci19Ci0KLXN0 cnVjdCBpOTE1X3JlcXVlc3QgKgotaWd0X3NwaW5uZXJfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGln dF9zcGlubmVyICpzcGluLAotCQkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJ CSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCSAgIHUzMiBhcmJpdHJhdGlv bl9jb21tYW5kKQotewotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwotCWludCBlcnI7Ci0KLQly cSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Ci0JaWYgKElTX0VSUihycSkpCi0J CXJldHVybiBycTsKLQotCWVyciA9IGVtaXRfcmVjdXJzZV9iYXRjaChzcGluLCBycSwgYXJiaXRy YXRpb25fY29tbWFuZCk7Ci0JaWYgKGVycikgewotCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKLQkJ cmV0dXJuIEVSUl9QVFIoZXJyKTsKLQl9Ci0KLQlyZXR1cm4gcnE7CisJcmV0dXJuIGVyciA/IEVS Ul9QVFIoZXJyKSA6IHJxOwogfQogCiBzdGF0aWMgdTMyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKaW5kZXggYTQ4ZmJlMjU1N2VhLi4wZmY4 MTNhZDM0NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf aGFuZ2NoZWNrLmMKQEAgLTEwMiw1MiArMTAyLDg3IEBAIHN0YXRpYyB1NjQgaHdzX2FkZHJlc3Mo Y29uc3Qgc3RydWN0IGk5MTVfdm1hICpod3MsCiAJcmV0dXJuIGh3cy0+bm9kZS5zdGFydCArIG9m ZnNldF9pbl9wYWdlKHNpemVvZih1MzIpKnJxLT5mZW5jZS5jb250ZXh0KTsKIH0KIAotc3RhdGlj IGludCBlbWl0X3JlY3Vyc2VfYmF0Y2goc3RydWN0IGhhbmcgKmgsCi0JCQkgICAgICBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyBpbnQgbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVf dm1hICp2bWEsCisJCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJICB1bnNpZ25lZCBp bnQgZmxhZ3MpCit7CisJaW50IGVycjsKKworCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KHZtYSwgcnEsIGZsYWdzKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYgKCFpOTE1 X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZlcmVuY2Uodm1hLT5vYmopKSB7CisJCWk5MTVfZ2Vt X29iamVjdF9nZXQodm1hLT5vYmopOworCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2ZV9yZWZl cmVuY2Uodm1hLT5vYmopOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGk5 MTVfcmVxdWVzdCAqCitoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBoLT5pOTE1OwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0KLQkJcnEtPmdl bV9jb250ZXh0LT5wcGd0dCA/Ci0JCSZycS0+Z2VtX2NvbnRleHQtPnBwZ3R0LT52bSA6Ci0JCSZp OTE1LT5nZ3R0LnZtOworCQloLT5jdHgtPnBwZ3R0ID8gJmgtPmN0eC0+cHBndHQtPnZtIDogJmk5 MTUtPmdndHQudm07CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOwogCXN0cnVjdCBp OTE1X3ZtYSAqaHdzLCAqdm1hOwogCXVuc2lnbmVkIGludCBmbGFnczsKIAl1MzIgKmJhdGNoOwog CWludCBlcnI7CiAKKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShoLT5vYmopKSB7CisJ CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJCXZvaWQgKnZhZGRyOworCisJCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaC0+aTkxNSwgUEFHRV9TSVpFKTsK KwkJaWYgKElTX0VSUihvYmopKQorCQkJcmV0dXJuIEVSUl9DQVNUKG9iaik7CisKKwkJdmFkZHIg PSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosCisJCQkJCQlpOTE1X2NvaGVyZW50X21hcF90 eXBlKGgtPmk5MTUpKTsKKwkJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJCWk5MTVfZ2VtX29iamVj dF9wdXQob2JqKTsKKwkJCXJldHVybiBFUlJfQ0FTVCh2YWRkcik7CisJCX0KKworCQlpOTE1X2dl bV9vYmplY3RfdW5waW5fbWFwKGgtPm9iaik7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQoaC0+b2Jq KTsKKworCQloLT5vYmogPSBvYmo7CisJCWgtPmJhdGNoID0gdmFkZHI7CisJfQorCiAJdm1hID0g aTkxNV92bWFfaW5zdGFuY2UoaC0+b2JqLCB2bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEpKQot CQlyZXR1cm4gUFRSX0VSUih2bWEpOworCQlyZXR1cm4gRVJSX0NBU1Qodm1hKTsKIAogCWh3cyA9 IGk5MTVfdm1hX2luc3RhbmNlKGgtPmh3cywgdm0sIE5VTEwpOwogCWlmIChJU19FUlIoaHdzKSkK LQkJcmV0dXJuIFBUUl9FUlIoaHdzKTsKKwkJcmV0dXJuIEVSUl9DQVNUKGh3cyk7CiAKIAllcnIg PSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7CiAJaWYgKGVycikKLQkJcmV0dXJu IGVycjsKKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAogCWVyciA9IGk5MTVfdm1hX3Bpbihod3Ms IDAsIDAsIFBJTl9VU0VSKTsKIAlpZiAoZXJyKQogCQlnb3RvIHVucGluX3ZtYTsKIAotCWVyciA9 IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIDApOwotCWlmIChlcnIpCisJcnEgPSBp OTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBoLT5jdHgpOworCWlmIChJU19FUlIocnEpKSB7CisJ CWVyciA9IFBUUl9FUlIocnEpOwogCQlnb3RvIHVucGluX2h3czsKLQotCWlmICghaTkxNV9nZW1f b2JqZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKSkgewotCQlpOTE1X2dlbV9vYmpl Y3RfZ2V0KHZtYS0+b2JqKTsKLQkJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNl KHZtYS0+b2JqKTsKIAl9CiAKLQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShod3MsIHJx LCAwKTsKKwllcnIgPSBtb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCAwKTsKIAlpZiAoZXJyKQotCQln b3RvIHVucGluX2h3czsKKwkJZ290byBjYW5jZWxfcnE7CiAKLQlpZiAoIWk5MTVfZ2VtX29iamVj dF9oYXNfYWN0aXZlX3JlZmVyZW5jZShod3MtPm9iaikpIHsKLQkJaTkxNV9nZW1fb2JqZWN0X2dl dChod3MtPm9iaik7Ci0JCWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZShod3Mt Pm9iaik7Ci0JfQorCWVyciA9IG1vdmVfdG9fYWN0aXZlKGh3cywgcnEsIDApOworCWlmIChlcnIp CisJCWdvdG8gY2FuY2VsX3JxOwogCiAJYmF0Y2ggPSBoLT5iYXRjaDsKIAlpZiAoSU5URUxfR0VO KGk5MTUpID49IDgpIHsKQEAgLTIxMiw1MiArMjQ3LDE2IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1 cnNlX2JhdGNoKHN0cnVjdCBoYW5nICpoLAogCiAJZXJyID0gcnEtPmVuZ2luZS0+ZW1pdF9iYl9z dGFydChycSwgdm1hLT5ub2RlLnN0YXJ0LCBQQUdFX1NJWkUsIGZsYWdzKTsKIAorY2FuY2VsX3Jx OgorCWlmIChlcnIpIHsKKwkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7CisJCWk5MTVfcmVx dWVzdF9hZGQocnEpOworCX0KIHVucGluX2h3czoKIAlpOTE1X3ZtYV91bnBpbihod3MpOwogdW5w aW5fdm1hOgogCWk5MTVfdm1hX3VucGluKHZtYSk7Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGlj IHN0cnVjdCBpOTE1X3JlcXVlc3QgKgotaGFuZ19jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaGFuZyAq aCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOwotCWludCBlcnI7Ci0KLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShoLT5v YmopKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0JCXZvaWQgKnZhZGRy OwotCi0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaC0+aTkxNSwgUEFH RV9TSVpFKTsKLQkJaWYgKElTX0VSUihvYmopKQotCQkJcmV0dXJuIEVSUl9DQVNUKG9iaik7Ci0K LQkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosCi0JCQkJCQlpOTE1X2NvaGVy ZW50X21hcF90eXBlKGgtPmk5MTUpKTsKLQkJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJCWk5MTVf Z2VtX29iamVjdF9wdXQob2JqKTsKLQkJCXJldHVybiBFUlJfQ0FTVCh2YWRkcik7Ci0JCX0KLQot CQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGgtPm9iaik7Ci0JCWk5MTVfZ2VtX29iamVjdF9w dXQoaC0+b2JqKTsKLQotCQloLT5vYmogPSBvYmo7Ci0JCWgtPmJhdGNoID0gdmFkZHI7Ci0JfQot Ci0JcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBoLT5jdHgpOwotCWlmIChJU19FUlIo cnEpKQotCQlyZXR1cm4gcnE7Ci0KLQllcnIgPSBlbWl0X3JlY3Vyc2VfYmF0Y2goaCwgcnEpOwot CWlmIChlcnIpIHsKLQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Ci0JCXJldHVybiBFUlJfUFRSKGVy cik7Ci0JfQotCi0JcmV0dXJuIHJxOworCXJldHVybiBlcnIgPyBFUlJfUFRSKGVycikgOiBycTsK IH0KIAogc3RhdGljIHUzMiBod3Nfc2Vxbm8oY29uc3Qgc3RydWN0IGhhbmcgKmgsIGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQotLSAKMi4yMC4wLnJjMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==