From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 14/17] drm/i915: Only include active engines in the capture state Date: Tue, 30 Jul 2019 14:30:32 +0100 Message-ID: <20190730133035.1977-15-chris@chris-wilson.co.uk> References: <20190730133035.1977-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 0AAD96E505 for ; Tue, 30 Jul 2019 13:30:54 +0000 (UTC) In-Reply-To: <20190730133035.1977-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 U2tpcCBwcmludGluZyBvdXQgaWRsZSBlbmdpbmVzIHRoYXQgZGlkIG5vdCBjb250cmlidXRlIHRv IHRoZSBHUFUgaGFuZy4KQXMgdGhlIG51bWJlciBvZiBlbmdpbmVzIGdldHMgZXZlciBsYXJnZXIs IHdlIGhhdmUgaW5jcmVhc2luZyBub2lzZSBpbgp0aGUgZXJyb3Igc3RhdGUgd2hlcmUgdHlwaWNh bGx5IHRoZXJlIGlzIG9ubHkgb25lIGd1aWx0eSByZXF1ZXN0IG9uIG9uZQplbmdpbmUgdGhhdCB3 ZSBuZWVkIHRvIGluc3BlY3QuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jIHwgMjM4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5oIHwgICA3ICstCiAyIGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRp b25zKCspLCAxNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKaW5kZXggMGMwZjI1NTAwMGMyLi41ZDhlOTI4N2Y5Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwpAQCAtNDksMjcgKzQ5LDYgQEAKICNkZWZpbmUgQUxMT1dfRkFJTCAo R0ZQX0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01BWUZBSUwgfCBfX0dGUF9OT1dBUk4pCiAjZGVmaW5l IEFUT01JQ19NQVlGQUlMIChHRlBfQVRPTUlDIHwgX19HRlBfTk9XQVJOKQogCi1zdGF0aWMgaW5s aW5lIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgotZW5naW5lX2xvb2t1cChjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IGlkKQotewotCWlmIChp ZCA+PSBJOTE1X05VTV9FTkdJTkVTKQotCQlyZXR1cm4gTlVMTDsKLQotCXJldHVybiBpOTE1LT5l bmdpbmVbaWRdOwotfQotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgotX19lbmdpbmVfbmFt ZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JcmV0dXJuIGVuZ2lu ZSA/IGVuZ2luZS0+bmFtZSA6ICIiOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciAqCi1lbmdpbmVf bmFtZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IGlk KQotewotCXJldHVybiBfX2VuZ2luZV9uYW1lKGVuZ2luZV9sb29rdXAoaTkxNSwgaWQpKTsKLX0K LQogc3RhdGljIHZvaWQgX19zZ19zZXRfYnVmKHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAJCQkg dm9pZCAqYWRkciwgdW5zaWduZWQgaW50IGxlbiwgbG9mZl90IGl0KQogewpAQCAtNDQ3LDcgKzQy Niw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25lKHN0cnVjdCBkcm1faTkxNV9l cnJvcl9zdGF0ZV9idWYgKm0sCiAJZXJyX3ByaW50ZihtLCAiICBJTlNURE9ORTogMHglMDh4XG4i LAogCQkgICBlZS0+aW5zdGRvbmUuaW5zdGRvbmUpOwogCi0JaWYgKGVlLT5lbmdpbmVfaWQgIT0g UkNTMCB8fCBJTlRFTF9HRU4obS0+aTkxNSkgPD0gMykKKwlpZiAoZWUtPmVuZ2luZS0+Y2xhc3Mg IT0gUkVOREVSX0NMQVNTIHx8IElOVEVMX0dFTihtLT5pOTE1KSA8PSAzKQogCQlyZXR1cm47CiAK IAllcnJfcHJpbnRmKG0sICIgIFNDX0lOU1RET05FOiAweCUwOHhcbiIsCkBAIC01MDEsOCArNDgw LDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9lcnJv cl9zdGF0ZV9idWYgKm0sCiB7CiAJaW50IG47CiAKLQllcnJfcHJpbnRmKG0sICIlcyBjb21tYW5k IHN0cmVhbTpcbiIsCi0JCSAgIGVuZ2luZV9uYW1lKG0tPmk5MTUsIGVlLT5lbmdpbmVfaWQpKTsK KwllcnJfcHJpbnRmKG0sICIlcyBjb21tYW5kIHN0cmVhbTpcbiIsIGVlLT5lbmdpbmUtPm5hbWUp OwogCWVycl9wcmludGYobSwgIiAgSURMRT86ICVzXG4iLCB5ZXNubyhlZS0+aWRsZSkpOwogCWVy cl9wcmludGYobSwgIiAgU1RBUlQ6IDB4JTA4eFxuIiwgZWUtPnN0YXJ0KTsKIAllcnJfcHJpbnRm KG0sICIgIEhFQUQ6ICAweCUwOHggWzB4JTA4eF1cbiIsIGVlLT5oZWFkLCBlZS0+cnFfaGVhZCk7 CkBAIC01NzgsOSArNTU2LDkgQEAgdm9pZCBpOTE1X2Vycm9yX3ByaW50ZihzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3Jfc3RhdGVfYnVmICplLCBjb25zdCBjaGFyICpmLCAuLi4pCiB9CiAKIHN0YXRpYyB2 b2lkIHByaW50X2Vycm9yX29iaihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAot CQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgICAgY29uc3QgY2hhciAqbmFtZSwKLQkJ CSAgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfb2JqZWN0ICpvYmopCisJCQkgICAgY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2Vycm9yX29iamVjdCAqb2JqKQogewogCWNoYXIgb3V0W0FTQ0lJODVfQlVG U1pdOwogCWludCBwYWdlOwpAQCAtNjc3LDcgKzY1NSw3IEBAIHN0YXRpYyB2b2lkIGVycl9mcmVl X3NnbChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCkKIHN0YXRpYyB2b2lkIF9fZXJyX3ByaW50X3Rv X3NnbChzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJICAgICAgIHN0cnVj dCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2Vycm9yX29iamVj dCAqb2JqOworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVlOwogCXN0cnVj dCB0aW1lc3BlYzY0IHRzOwogCWludCBpLCBqOwogCkBAIC03MDEsMTUgKzY3OSwxMiBAQCBzdGF0 aWMgdm9pZCBfX2Vycl9wcmludF90b19zZ2woc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1 ZiAqbSwKIAkJICAgamlmZmllc190b19tc2VjcyhqaWZmaWVzIC0gZXJyb3ItPmNhcHR1cmUpLAog CQkgICBqaWZmaWVzX3RvX21zZWNzKGVycm9yLT5jYXB0dXJlIC0gZXJyb3ItPmVwb2NoKSk7CiAK LQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKSB7Ci0JCWlm ICghZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBpZCkKLQkJCWNvbnRpbnVlOwotCisJZm9yIChl ZSA9IGVycm9yLT5lbmdpbmU7IGVlOyBlZSA9IGVlLT5uZXh0KQogCQllcnJfcHJpbnRmKG0sICJB Y3RpdmUgcHJvY2VzcyAob24gcmluZyAlcyk6ICVzIFslZF1cbiIsCi0JCQkgICBlbmdpbmVfbmFt ZShtLT5pOTE1LCBpKSwKLQkJCSAgIGVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5jb21tLAotCQkJ ICAgZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LnBpZCk7Ci0JfQorCQkJICAgZWUtPmVuZ2luZS0+ bmFtZSwKKwkJCSAgIGVlLT5jb250ZXh0LmNvbW0sCisJCQkgICBlZS0+Y29udGV4dC5waWQpOwor CiAJZXJyX3ByaW50ZihtLCAiUmVzZXQgY291bnQ6ICV1XG4iLCBlcnJvci0+cmVzZXRfY291bnQp OwogCWVycl9wcmludGYobSwgIlN1c3BlbmQgY291bnQ6ICV1XG4iLCBlcnJvci0+c3VzcGVuZF9j b3VudCk7CiAJZXJyX3ByaW50ZihtLCAiUGxhdGZvcm06ICVzXG4iLCBpbnRlbF9wbGF0Zm9ybV9u YW1lKGVycm9yLT5kZXZpY2VfaW5mby5wbGF0Zm9ybSkpOwpAQCAtNzU4LDE3ICs3MzMsMTUgQEAg c3RhdGljIHZvaWQgX19lcnJfcHJpbnRfdG9fc2dsKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZV9idWYgKm0sCiAJaWYgKElTX0dFTihtLT5pOTE1LCA3KSkKIAkJZXJyX3ByaW50ZihtLCAiRVJS X0lOVDogMHglMDh4XG4iLCBlcnJvci0+ZXJyX2ludCk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKSB7Ci0JCWlmIChlcnJvci0+ZW5naW5lW2ldLmVu Z2luZV9pZCAhPSAtMSkKLQkJCWVycm9yX3ByaW50X2VuZ2luZShtLCAmZXJyb3ItPmVuZ2luZVtp XSwgZXJyb3ItPmVwb2NoKTsKLQl9CisJZm9yIChlZSA9IGVycm9yLT5lbmdpbmU7IGVlOyBlZSA9 IGVlLT5uZXh0KQorCQllcnJvcl9wcmludF9lbmdpbmUobSwgZWUsIGVycm9yLT5lcG9jaCk7CiAK LQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKSB7Ci0JCWNv bnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVlID0gJmVycm9yLT5lbmdpbmVbaV07 CisJZm9yIChlZSA9IGVycm9yLT5lbmdpbmU7IGVlOyBlZSA9IGVlLT5uZXh0KSB7CisJCWNvbnN0 IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKm9iajsKIAogCQlvYmogPSBlZS0+YmF0Y2hi dWZmZXI7CiAJCWlmIChvYmopIHsKLQkJCWVycl9wdXRzKG0sIG0tPmk5MTUtPmVuZ2luZVtpXS0+ bmFtZSk7CisJCQllcnJfcHV0cyhtLCBlZS0+ZW5naW5lLT5uYW1lKTsKIAkJCWlmIChlZS0+Y29u dGV4dC5waWQpCiAJCQkJZXJyX3ByaW50ZihtLCAiIChzdWJtaXR0ZWQgYnkgJXMgWyVkXSkiLAog CQkJCQkgICBlZS0+Y29udGV4dC5jb21tLApAQCAtNzc2LDE2ICs3NDksMTUgQEAgc3RhdGljIHZv aWQgX19lcnJfcHJpbnRfdG9fc2dsKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0s CiAJCQllcnJfcHJpbnRmKG0sICIgLS0tIGd0dF9vZmZzZXQgPSAweCUwOHggJTA4eFxuIiwKIAkJ CQkgICB1cHBlcl8zMl9iaXRzKG9iai0+Z3R0X29mZnNldCksCiAJCQkJICAgbG93ZXJfMzJfYml0 cyhvYmotPmd0dF9vZmZzZXQpKTsKLQkJCXByaW50X2Vycm9yX29iaihtLCBtLT5pOTE1LT5lbmdp bmVbaV0sIE5VTEwsIG9iaik7CisJCQlwcmludF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwgTlVM TCwgb2JqKTsKIAkJfQogCiAJCWZvciAoaiA9IDA7IGogPCBlZS0+dXNlcl9ib19jb3VudDsgaisr KQotCQkJcHJpbnRfZXJyb3Jfb2JqKG0sIG0tPmk5MTUtPmVuZ2luZVtpXSwKLQkJCQkJInVzZXIi LCBlZS0+dXNlcl9ib1tqXSk7CisJCQlwcmludF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwgInVz ZXIiLCBlZS0+dXNlcl9ib1tqXSk7CiAKIAkJaWYgKGVlLT5udW1fcmVxdWVzdHMpIHsKIAkJCWVy cl9wcmludGYobSwgIiVzIC0tLSAlZCByZXF1ZXN0c1xuIiwKLQkJCQkgICBtLT5pOTE1LT5lbmdp bmVbaV0tPm5hbWUsCisJCQkJICAgZWUtPmVuZ2luZS0+bmFtZSwKIAkJCQkgICBlZS0+bnVtX3Jl cXVlc3RzKTsKIAkJCWZvciAoaiA9IDA7IGogPCBlZS0+bnVtX3JlcXVlc3RzOyBqKyspCiAJCQkJ ZXJyb3JfcHJpbnRfcmVxdWVzdChtLCAiICIsCkBAIC03OTMsMjIgKzc2NSwxMyBAQCBzdGF0aWMg dm9pZCBfX2Vycl9wcmludF90b19zZ2woc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAq bSwKIAkJCQkJCSAgICBlcnJvci0+ZXBvY2gpOwogCQl9CiAKLQkJcHJpbnRfZXJyb3Jfb2JqKG0s IG0tPmk5MTUtPmVuZ2luZVtpXSwKLQkJCQkicmluZ2J1ZmZlciIsIGVlLT5yaW5nYnVmZmVyKTsK LQotCQlwcmludF9lcnJvcl9vYmoobSwgbS0+aTkxNS0+ZW5naW5lW2ldLAotCQkJCSJIVyBTdGF0 dXMiLCBlZS0+aHdzX3BhZ2UpOwotCi0JCXByaW50X2Vycm9yX29iaihtLCBtLT5pOTE1LT5lbmdp bmVbaV0sCi0JCQkJIkhXIGNvbnRleHQiLCBlZS0+Y3R4KTsKLQotCQlwcmludF9lcnJvcl9vYmoo bSwgbS0+aTkxNS0+ZW5naW5lW2ldLAotCQkJCSJXQSBjb250ZXh0IiwgZWUtPndhX2N0eCk7Ci0K LQkJcHJpbnRfZXJyb3Jfb2JqKG0sIG0tPmk5MTUtPmVuZ2luZVtpXSwKKwkJcHJpbnRfZXJyb3Jf b2JqKG0sIGVlLT5lbmdpbmUsICJyaW5nYnVmZmVyIiwgZWUtPnJpbmdidWZmZXIpOworCQlwcmlu dF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwgIkhXIFN0YXR1cyIsIGVlLT5od3NfcGFnZSk7CisJ CXByaW50X2Vycm9yX29iaihtLCBlZS0+ZW5naW5lLCAiSFcgY29udGV4dCIsIGVlLT5jdHgpOwor CQlwcmludF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwgIldBIGNvbnRleHQiLCBlZS0+d2FfY3R4 KTsKKwkJcHJpbnRfZXJyb3Jfb2JqKG0sIGVlLT5lbmdpbmUsCiAJCQkJIldBIGJhdGNoYnVmZmVy IiwgZWUtPndhX2JhdGNoYnVmZmVyKTsKLQotCQlwcmludF9lcnJvcl9vYmoobSwgbS0+aTkxNS0+ ZW5naW5lW2ldLAorCQlwcmludF9lcnJvcl9vYmoobSwgZWUtPmVuZ2luZSwKIAkJCQkiTlVMTCBj b250ZXh0IiwgZWUtPmRlZmF1bHRfc3RhdGUpOwogCX0KIApAQCAtOTU3LDEzICs5MjAsMTUgQEAg dm9pZCBfX2k5MTVfZ3B1X3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKmVycm9yX3JlZikKIHsKIAlz dHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yID0KIAkJY29udGFpbmVyX29mKGVycm9yX3JlZiwg dHlwZW9mKCplcnJvciksIHJlZik7Ci0JbG9uZyBpLCBqOworCWxvbmcgaTsKIAotCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5lbmdpbmUpOyBpKyspIHsKLQkJc3RydWN0IGRybV9p OTE1X2Vycm9yX2VuZ2luZSAqZWUgPSAmZXJyb3ItPmVuZ2luZVtpXTsKKwl3aGlsZSAoZXJyb3It PmVuZ2luZSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSA9IGVycm9yLT5l bmdpbmU7CiAKLQkJZm9yIChqID0gMDsgaiA8IGVlLT51c2VyX2JvX2NvdW50OyBqKyspCi0JCQlp OTE1X2Vycm9yX29iamVjdF9mcmVlKGVlLT51c2VyX2JvW2pdKTsKKwkJZXJyb3ItPmVuZ2luZSA9 IGVlLT5uZXh0OworCisJCWZvciAoaSA9IDA7IGkgPCBlZS0+dXNlcl9ib19jb3VudDsgaSsrKQor CQkJaTkxNV9lcnJvcl9vYmplY3RfZnJlZShlZS0+dXNlcl9ib1tpXSk7CiAJCWtmcmVlKGVlLT51 c2VyX2JvKTsKIAogCQlpOTE1X2Vycm9yX29iamVjdF9mcmVlKGVlLT5iYXRjaGJ1ZmZlcik7CkBA IC05NzQsNiArOTM5LDcgQEAgdm9pZCBfX2k5MTVfZ3B1X3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYg KmVycm9yX3JlZikKIAkJaTkxNV9lcnJvcl9vYmplY3RfZnJlZShlZS0+d2FfY3R4KTsKIAogCQlr ZnJlZShlZS0+cmVxdWVzdHMpOworCQlrZnJlZShlZSk7CiAJfQogCiAJa2ZyZWUoZXJyb3ItPm92 ZXJsYXkpOwpAQCAtMTA1NSwyMyArMTAyMSwxNyBAQCBpOTE1X2Vycm9yX29iamVjdF9jcmVhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAgKgogICogSXQncyBvbmx5IGEgc21hbGwg c3RlcCBiZXR0ZXIgdGhhbiBhIHJhbmRvbSBudW1iZXIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KICAq Lwotc3RhdGljIHUzMiBpOTE1X2Vycm9yX2dlbmVyYXRlX2NvZGUoc3RydWN0IGk5MTVfZ3B1X3N0 YXRlICplcnJvciwKLQkJCQkgICAgaW50ZWxfZW5naW5lX21hc2tfdCBlbmdpbmVfbWFzaykKK3N0 YXRpYyB1MzIgaTkxNV9lcnJvcl9nZW5lcmF0ZV9jb2RlKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAq ZXJyb3IpCiB7CisJY29uc3Qgc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUgPSBlcnJv ci0+ZW5naW5lOworCiAJLyoKIAkgKiBJUEVIUiB3b3VsZCBiZSBhbiBpZGVhbCB3YXkgdG8gZGV0 ZWN0IGVycm9ycywgYXMgaXQncyB0aGUgZ3Jvc3MKIAkgKiBtZWFzdXJlIG9mICJ0aGUgY29tbWFu ZCB0aGF0IGh1bmcuIiBIb3dldmVyLCBoYXMgc29tZSB2ZXJ5IGNvbW1vbgogCSAqIHN5bmNocm9u aXphdGlvbiBjb21tYW5kcyB3aGljaCBhbG1vc3QgYWx3YXlzIGFwcGVhciBpbiB0aGUgY2FzZQog CSAqIHN0cmljdGx5IGEgY2xpZW50IGJ1Zy4gVXNlIGluc3Rkb25lIHRvIGRpZmZlcmVudGlhdGUg dGhvc2Ugc29tZS4KIAkgKi8KLQlpZiAoZW5naW5lX21hc2spIHsKLQkJc3RydWN0IGRybV9pOTE1 X2Vycm9yX2VuZ2luZSAqZWUgPQotCQkJJmVycm9yLT5lbmdpbmVbZmZzKGVuZ2luZV9tYXNrKV07 Ci0KLQkJcmV0dXJuIGVlLT5pcGVociBeIGVlLT5pbnN0ZG9uZS5pbnN0ZG9uZTsKLQl9Ci0KLQly ZXR1cm4gMDsKKwlyZXR1cm4gZWUgPyBlZS0+aXBlaHIgXiBlZS0+aW5zdGRvbmUuaW5zdGRvbmUg OiAwOwogfQogCiBzdGF0aWMgdm9pZCBnZW1fcmVjb3JkX2ZlbmNlcyhzdHJ1Y3QgaTkxNV9ncHVf c3RhdGUgKmVycm9yKQpAQCAtMTI4Miw5ICsxMjQyLDExIEBAIHN0YXRpYyB2b2lkIGVycm9yX3Jl Y29yZF9lbmdpbmVfZXhlY2xpc3RzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKIAllZS0+bnVtX3BvcnRzID0gbjsKIH0KIAotc3RhdGljIHZvaWQgcmVjb3JkX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2Vycm9yX2NvbnRleHQgKmUsCi0JCQkgICBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQorc3RhdGljIGJvb2wgcmVjb3JkX2NvbnRleHQoc3RydWN0IGRybV9pOTE1 X2Vycm9yX2NvbnRleHQgKmUsCisJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK IHsKKwljb25zdCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gcnEtPmdlbV9jb250ZXh0 OworCiAJaWYgKGN0eC0+cGlkKSB7CiAJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKIApAQCAt MTMwMSw2ICsxMjYzLDggQEAgc3RhdGljIHZvaWQgcmVjb3JkX2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2Vycm9yX2NvbnRleHQgKmUsCiAJZS0+c2NoZWRfYXR0ciA9IGN0eC0+c2NoZWQ7CiAJZS0+ Z3VpbHR5ID0gYXRvbWljX3JlYWQoJmN0eC0+Z3VpbHR5X2NvdW50KTsKIAllLT5hY3RpdmUgPSBh dG9taWNfcmVhZCgmY3R4LT5hY3RpdmVfY291bnQpOworCisJcmV0dXJuIGk5MTVfZ2VtX2NvbnRl eHRfbm9fZXJyb3JfY2FwdHVyZShjdHgpOwogfQogCiBzdHJ1Y3QgY2FwdHVyZV92bWEgewpAQCAt MTM5NSw3NCArMTM1OSw2NyBAQCBzdGF0aWMgdm9pZAogZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3Qg aTkxNV9ncHVfc3RhdGUgKmVycm9yLCBzdHJ1Y3QgY29tcHJlc3MgKmNvbXByZXNzKQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZXJyb3ItPmk5MTU7Ci0JaW50IGk7CisJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdp bmUgKmVlOworCisJZWUgPSBremFsbG9jKHNpemVvZigqZWUpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IWVlKQorCQlyZXR1cm47CiAKLQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsr KSB7Ci0JCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTUtPmVuZ2luZVtpXTsK LQkJc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUgPSAmZXJyb3ItPmVuZ2luZVtpXTsK Kwlmb3JfZWFjaF91c2VyX2VuZ2luZShlbmdpbmUsIGk5MTUpIHsKIAkJc3RydWN0IGNhcHR1cmVf dm1hICpjYXB0dXJlID0gTlVMTDsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKIAkJ dW5zaWduZWQgbG9uZyBmbGFnczsKIAotCQllZS0+ZW5naW5lX2lkID0gLTE7Ci0KLQkJaWYgKCFl bmdpbmUpCi0JCQljb250aW51ZTsKLQotCQllZS0+ZW5naW5lX2lkID0gaTsKLQogCQkvKiBSZWZp bGwgb3VyIHBhZ2UgcG9vbCBiZWZvcmUgZW50ZXJpbmcgYXRvbWljIHNlY3Rpb24gKi8KIAkJcG9v bF9yZWZpbGwoJmNvbXByZXNzLT5wb29sLCBBTExPV19GQUlMKTsKIAotCQllcnJvcl9yZWNvcmRf ZW5naW5lX3JlZ2lzdGVycyhlcnJvciwgZW5naW5lLCBlZSk7Ci0JCWVycm9yX3JlY29yZF9lbmdp bmVfZXhlY2xpc3RzKGVuZ2luZSwgZWUpOwotCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUt PmFjdGl2ZS5sb2NrLCBmbGFncyk7CiAJCXJlcXVlc3QgPSBpbnRlbF9lbmdpbmVfZmluZF9hY3Rp dmVfcmVxdWVzdChlbmdpbmUpOwotCQlpZiAocmVxdWVzdCkgewotCQkJc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCA9IHJlcXVlc3QtPmdlbV9jb250ZXh0OwotCQkJc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCi0JCQlyZWNvcmRfY29udGV4dCgmZWUtPmNvbnRl eHQsIGN0eCk7Ci0KLQkJCS8qCi0JCQkgKiBXZSBuZWVkIHRvIGNvcHkgdGhlc2UgdG8gYW4gYW5v bnltb3VzIGJ1ZmZlcgotCQkJICogYXMgdGhlIHNpbXBsZXN0IG1ldGhvZCB0byBhdm9pZCBiZWlu ZyBvdmVyd3JpdHRlbgotCQkJICogYnkgdXNlcnNwYWNlLgotCQkJICovCi0JCQljYXB0dXJlID0g Y2FwdHVyZV92bWEoY2FwdHVyZSwKLQkJCQkJICAgICAgcmVxdWVzdC0+YmF0Y2gsCi0JCQkJCSAg ICAgICZlZS0+YmF0Y2hidWZmZXIpOworCQlpZiAoIXJlcXVlc3QpIHsKKwkJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKKwkJCWNvbnRpbnVlOwor CQl9CiAKLQkJCWlmIChIQVNfQlJPS0VOX0NTX1RMQihpOTE1KSkKLQkJCQljYXB0dXJlID0gY2Fw dHVyZV92bWEoY2FwdHVyZSwKLQkJCQkJCSAgICAgIGVuZ2luZS0+Z3QtPnNjcmF0Y2gsCi0JCQkJ CQkgICAgICAmZWUtPndhX2JhdGNoYnVmZmVyKTsKKwkJZXJyb3ItPnNpbXVsYXRlZCB8PSByZWNv cmRfY29udGV4dCgmZWUtPmNvbnRleHQsIHJlcXVlc3QpOwogCi0JCQljYXB0dXJlID0gcmVxdWVz dF9yZWNvcmRfdXNlcl9ibyhyZXF1ZXN0LCBlZSwgY2FwdHVyZSk7CisJCS8qCisJCSAqIFdlIG5l ZWQgdG8gY29weSB0aGVzZSB0byBhbiBhbm9ueW1vdXMgYnVmZmVyCisJCSAqIGFzIHRoZSBzaW1w bGVzdCBtZXRob2QgdG8gYXZvaWQgYmVpbmcgb3ZlcndyaXR0ZW4KKwkJICogYnkgdXNlcnNwYWNl LgorCQkgKi8KKwkJY2FwdHVyZSA9IGNhcHR1cmVfdm1hKGNhcHR1cmUsCisJCQkJICAgICAgcmVx dWVzdC0+YmF0Y2gsCisJCQkJICAgICAgJmVlLT5iYXRjaGJ1ZmZlcik7CiAKKwkJaWYgKEhBU19C Uk9LRU5fQ1NfVExCKGk5MTUpKQogCQkJY2FwdHVyZSA9IGNhcHR1cmVfdm1hKGNhcHR1cmUsCi0J CQkJCSAgICAgIHJlcXVlc3QtPmh3X2NvbnRleHQtPnN0YXRlLAotCQkJCQkgICAgICAmZWUtPmN0 eCk7CisJCQkJCSAgICAgIGVuZ2luZS0+Z3QtPnNjcmF0Y2gsCisJCQkJCSAgICAgICZlZS0+d2Ff YmF0Y2hidWZmZXIpOwogCi0JCQljYXB0dXJlID0gY2FwdHVyZV92bWEoY2FwdHVyZSwKLQkJCQkJ ICAgICAgcmluZy0+dm1hLAotCQkJCQkgICAgICAmZWUtPnJpbmdidWZmZXIpOworCQljYXB0dXJl ID0gcmVxdWVzdF9yZWNvcmRfdXNlcl9ibyhyZXF1ZXN0LCBlZSwgY2FwdHVyZSk7CiAKLQkJCWVy cm9yLT5zaW11bGF0ZWQgfD0KLQkJCQlpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUo Y3R4KTsKKwkJY2FwdHVyZSA9IGNhcHR1cmVfdm1hKGNhcHR1cmUsCisJCQkJICAgICAgcmVxdWVz dC0+aHdfY29udGV4dC0+c3RhdGUsCisJCQkJICAgICAgJmVlLT5jdHgpOwogCi0JCQllZS0+cnFf aGVhZCA9IHJlcXVlc3QtPmhlYWQ7Ci0JCQllZS0+cnFfcG9zdCA9IHJlcXVlc3QtPnBvc3RmaXg7 Ci0JCQllZS0+cnFfdGFpbCA9IHJlcXVlc3QtPnRhaWw7CisJCWNhcHR1cmUgPSBjYXB0dXJlX3Zt YShjYXB0dXJlLAorCQkJCSAgICAgIHJlcXVlc3QtPnJpbmctPnZtYSwKKwkJCQkgICAgICAmZWUt PnJpbmdidWZmZXIpOwogCi0JCQllZS0+Y3B1X3JpbmdfaGVhZCA9IHJpbmctPmhlYWQ7Ci0JCQll ZS0+Y3B1X3JpbmdfdGFpbCA9IHJpbmctPnRhaWw7CisJCWVlLT5jcHVfcmluZ19oZWFkID0gcmVx dWVzdC0+cmluZy0+aGVhZDsKKwkJZWUtPmNwdV9yaW5nX3RhaWwgPSByZXF1ZXN0LT5yaW5nLT50 YWlsOwogCi0JCQllbmdpbmVfcmVjb3JkX3JlcXVlc3RzKGVuZ2luZSwgcmVxdWVzdCwgZWUpOwot CQl9CisJCWVlLT5ycV9oZWFkID0gcmVxdWVzdC0+aGVhZDsKKwkJZWUtPnJxX3Bvc3QgPSByZXF1 ZXN0LT5wb3N0Zml4OworCQllZS0+cnFfdGFpbCA9IHJlcXVlc3QtPnRhaWw7CisKKwkJZW5naW5l X3JlY29yZF9yZXF1ZXN0cyhlbmdpbmUsIHJlcXVlc3QsIGVlKTsKIAkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogCisJCWVycm9yX3JlY29yZF9l bmdpbmVfcmVnaXN0ZXJzKGVycm9yLCBlbmdpbmUsIGVlKTsKKwkJZXJyb3JfcmVjb3JkX2VuZ2lu ZV9leGVjbGlzdHMoZW5naW5lLCBlZSk7CisKIAkJd2hpbGUgKGNhcHR1cmUpIHsKIAkJCXN0cnVj dCBjYXB0dXJlX3ZtYSAqdGhpcyA9IGNhcHR1cmU7CiAJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9 ICp0aGlzLT5zbG90OwpAQCAtMTQ4OSw3ICsxNDQ2LDE4IEBAIGdlbV9yZWNvcmRfcmluZ3Moc3Ry dWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwgc3RydWN0IGNvbXByZXNzICpjb21wcmVzcykKIAog CQllZS0+ZGVmYXVsdF9zdGF0ZSA9CiAJCQljYXB0dXJlX29iamVjdChpOTE1LCBlbmdpbmUtPmRl ZmF1bHRfc3RhdGUsIGNvbXByZXNzKTsKKworCQllZS0+ZW5naW5lID0gZW5naW5lOworCisJCWVl LT5uZXh0ID0gZXJyb3ItPmVuZ2luZTsKKwkJZXJyb3ItPmVuZ2luZSA9IGVlOworCisJCWVlID0g a3phbGxvYyhzaXplb2YoKmVlKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghZWUpCisJCQlyZXR1cm47 CiAJfQorCisJa2ZyZWUoZWUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYxOCwyNCArMTU4Niwx OCBAQCBlcnJvcl9tc2coc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKIAkgIGludGVsX2Vu Z2luZV9tYXNrX3QgZW5naW5lcywgY29uc3QgY2hhciAqbXNnKQogewogCWludCBsZW47Ci0JaW50 IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKQot CQlpZiAoIWVycm9yLT5lbmdpbmVbaV0uY29udGV4dC5waWQpCi0JCQllbmdpbmVzICY9IH5CSVQo aSk7CiAKIAlsZW4gPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZywgc2l6ZW9mKGVycm9yLT5l cnJvcl9tc2cpLAogCQkJIkdQVSBIQU5HOiBlY29kZSAlZDoleDoweCUwOHgiLAogCQkJSU5URUxf R0VOKGVycm9yLT5pOTE1KSwgZW5naW5lcywKLQkJCWk5MTVfZXJyb3JfZ2VuZXJhdGVfY29kZShl cnJvciwgZW5naW5lcykpOwotCWlmIChlbmdpbmVzKSB7CisJCQlpOTE1X2Vycm9yX2dlbmVyYXRl X2NvZGUoZXJyb3IpKTsKKwlpZiAoZXJyb3ItPmVuZ2luZSkgewogCQkvKiBKdXN0IHNob3cgdGhl IGZpcnN0IGV4ZWN1dGluZyBwcm9jZXNzLCBtb3JlIGlzIGNvbmZ1c2luZyAqLwotCQlpID0gX19m ZnMoZW5naW5lcyk7CiAJCWxlbiArPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZyArIGxlbiwK IAkJCQkgc2l6ZW9mKGVycm9yLT5lcnJvcl9tc2cpIC0gbGVuLAogCQkJCSAiLCBpbiAlcyBbJWRd IiwKLQkJCQkgZXJyb3ItPmVuZ2luZVtpXS5jb250ZXh0LmNvbW0sCi0JCQkJIGVycm9yLT5lbmdp bmVbaV0uY29udGV4dC5waWQpOworCQkJCSBlcnJvci0+ZW5naW5lLT5jb250ZXh0LmNvbW0sCisJ CQkJIGVycm9yLT5lbmdpbmUtPmNvbnRleHQucGlkKTsKIAl9CiAJaWYgKG1zZykKIAkJbGVuICs9 IHNjbnByaW50ZihlcnJvci0+ZXJyb3JfbXNnICsgbGVuLApAQCAtMTY3NiwxMiArMTYzOCwxMCBA QCBzdGF0aWMgdm9pZCBjYXB0dXJlX3BhcmFtcyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9y KQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBjYXB0dXJlX2ZpbmRfZXBvY2goY29uc3Qgc3RydWN0 IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKIHsKKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf ZW5naW5lICplZTsKIAl1bnNpZ25lZCBsb25nIGVwb2NoID0gZXJyb3ItPmNhcHR1cmU7Ci0JaW50 IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlcnJvci0+ZW5naW5lKTsgaSsrKSB7 Ci0JCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVlID0gJmVycm9yLT5lbmdp bmVbaV07CiAKKwlmb3IgKGVlID0gZXJyb3ItPmVuZ2luZTsgZWU7IGVlID0gZWUtPm5leHQpIHsK IAkJaWYgKGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wICYmCiAJCSAgICB0aW1lX2JlZm9yZShlZS0+ aGFuZ2NoZWNrX3RpbWVzdGFtcCwgZXBvY2gpKQogCQkJZXBvY2ggPSBlZS0+aGFuZ2NoZWNrX3Rp bWVzdGFtcDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCmluZGV4IGEyNGMzNTEw N2QxNi4uZGY5ZjU3NzY2NjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgK QEAgLTgxLDcgKzgxLDggQEAgc3RydWN0IGk5MTVfZ3B1X3N0YXRlIHsKIAlzdHJ1Y3QgaW50ZWxf ZGlzcGxheV9lcnJvcl9zdGF0ZSAqZGlzcGxheTsKIAogCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9l bmdpbmUgewotCQlpbnQgZW5naW5lX2lkOworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisKIAkJLyogU29mdHdhcmUgdHJhY2tlZCBzdGF0ZSAqLwogCQlib29sIGlkbGU7 CiAJCXVuc2lnbmVkIGxvbmcgaGFuZ2NoZWNrX3RpbWVzdGFtcDsKQEAgLTE1OCw3ICsxNTksOSBA QCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgewogCQkJCXUzMiBwcF9kaXJfYmFzZTsKIAkJCX07CiAJ CX0gdm1faW5mbzsKLQl9IGVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKKworCQlzdHJ1Y3QgZHJt X2k5MTVfZXJyb3JfZW5naW5lICpuZXh0OworCX0gKmVuZ2luZTsKIAogCXN0cnVjdCBzY2F0dGVy bGlzdCAqc2dsLCAqZml0OwogfTsKLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4