From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 63/73] drm/i915: Start passing around i915_vma from execbuffer Date: Mon, 1 Aug 2016 10:11:11 +0100 Message-ID: <1470042681-25318-64-git-send-email-chris@chris-wilson.co.uk> References: <1470042681-25318-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 626D96E292 for ; Mon, 1 Aug 2016 09:13:04 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id o80so25252315wme.0 for ; Mon, 01 Aug 2016 02:13:04 -0700 (PDT) In-Reply-To: <1470042681-25318-1-git-send-email-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 Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org RHVyaW5nIGV4ZWNidWZmZXIgd2UgbG9vayB1cCB0aGUgaTkxNV92bWEgaW4gb3JkZXIgdG8gcmVz ZXJ2ZSB0aGVtIGluCnRoZSBWTS4gSG93ZXZlciwgd2UgdGhlbiBkbyBhIGRvdWJsZSBsb29rdXAg b2YgdGhlIHZtYSBpbiBvcmRlciB0byB0aGVuCnBpbiB0aGVtLCBhbGwgYmVjYXVzZSB3ZSBsYWNr IHRoZSBuZWNlc3NhcnkgaW50ZXJmYWNlcyB0byBvcGVyYXRlIG9uCmk5MTVfdm1hIC0gc28gaW50 cm9kdWNlIGk5MTVfdm1hX3BpbigpIQoKdjI6IFRpZHkgcGFyYW1ldGVyIGxpc3RzIHRvIHJlbW92 ZSBvbmUgbGV2ZWwgb2YgcmVkaXJlY3Rpb24gaW4gdGhlIGhvdApwYXRoLgoKU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBNaWthIEt1b3Bw YWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5l biA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMjQgKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDE1NyArKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMTQyICsr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyAgICAgICAgfCAgIDMgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmgg ICAgICAgIHwgIDE0ICsrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMjAx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDNkNzMzOTRiNTJkNy4u Y2RhODIzOGM5NTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMwMTgsMjMgKzMwMTgs NiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9m cm9tX2RhdGEoCiB2b2lkIGk5MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbSwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmpl Y3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCi0vKiBGbGFncyB1c2VkIGJ5IHBpbi9i aW5kJmZyaWVuZHMuICovCi0jZGVmaW5lIFBJTl9NQVBQQUJMRQkoMTw8MCkKLSNkZWZpbmUgUElO X05PTkJMT0NLCSgxPDwxKQotI2RlZmluZSBQSU5fR0xPQkFMCSgxPDwyKQotI2RlZmluZSBQSU5f T0ZGU0VUX0JJQVMJKDE8PDMpCi0jZGVmaW5lIFBJTl9VU0VSCSgxPDw0KQotI2RlZmluZSBQSU5f VVBEQVRFCSgxPDw1KQotI2RlZmluZSBQSU5fWk9ORV80RwkoMTw8NikKLSNkZWZpbmUgUElOX0hJ R0gJKDE8PDcpCi0jZGVmaW5lIFBJTl9PRkZTRVRfRklYRUQJKDE8PDgpCi0jZGVmaW5lIFBJTl9P RkZTRVRfTUFTSyAofjQwOTUpCi1pbnQgX19tdXN0X2NoZWNrCi1pOTE1X2dlbV9vYmplY3RfcGlu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCSAgICBzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKLQkJICAgIHU2NCBzaXplLAotCQkgICAgdTY0IGFsaWdubWVudCwKLQkJ ICAgIHU2NCBmbGFncyk7CiBpbnQgX19tdXN0X2NoZWNrCiBpOTE1X2dlbV9vYmplY3RfZ2d0dF9w aW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCSBjb25zdCBzdHJ1Y3QgaTkx NV9nZ3R0X3ZpZXcgKnZpZXcsCkBAIC0zMzExLDExICszMjk0LDggQEAgaTkxNV9nZW1fb2JqX2dn dHRfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAgICAgIHVpbnQzMl90 IGFsaWdubWVudCwKIAkJICAgICAgdW5zaWduZWQgZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0OwotCi0JcmV0dXJuIGk5MTVfZ2VtX29iamVj dF9waW4ob2JqLCAmZ2d0dC0+YmFzZSwgMCwgYWxpZ25tZW50LAotCQkJCSAgIGZsYWdzIHwgUElO X0dMT0JBTCk7CisJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosICZpOTE1X2dn dHRfdmlld19ub3JtYWwsCisJCQkJCTAsIGFsaWdubWVudCwgZmxhZ3MpOwogfQogCiB2b2lkIGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGZkZGQ5ODk4NzNmMC4uMzE1OGI1ZGQx NGFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI5NjgsMjUgKzI5NjgsMTcgQEAgc3Rh dGljIGJvb2wgaTkxNV9nZW1fdmFsaWRfZ3R0X3NwYWNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAog ICogQGFsaWdubWVudDogcmVxdWVzdGVkIGFsaWdubWVudAogICogQGZsYWdzOiBtYXNrIG9mIFBJ Tl8qIGZsYWdzIHRvIHVzZQogICovCi1zdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKLWk5MTVfZ2Vt X29iamVjdF9pbnNlcnRfaW50b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAot CQkJICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqZ2d0dF92aWV3LAotCQkJICAgICAgIHU2NCBzaXplLAot CQkJICAgICAgIHU2NCBhbGlnbm1lbnQsCi0JCQkgICAgICAgdTY0IGZsYWdzKQorc3RhdGljIGlu dAoraTkxNV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFs aWdubWVudCwgdTY0IGZsYWdzKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bWEtPnZtLT5kZXYpOwor CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKIAl1NjQgc3RhcnQs IGVuZDsKIAl1NjQgbWluX2FsaWdubWVudDsKIAlpbnQgcmV0OwogCi0Jdm1hID0gZ2d0dF92aWV3 ID8KLQkJaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEob2JqLCBnZ3R0X3Zp ZXcpIDoKLQkJaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKG9iaiwgdm0pOwotCWlm IChJU19FUlIodm1hKSkKLQkJcmV0dXJuIHZtYTsKKwlHRU1fQlVHX09OKHZtYS0+Ym91bmQpOwor CUdFTV9CVUdfT04oZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAogCXNpemUg PSBtYXgoc2l6ZSwgdm1hLT5zaXplKTsKIAlpZiAoZmxhZ3MgJiBQSU5fTUFQUEFCTEUpCkBAIC0z MDAwLDcgKzI5OTIsNyBAQCBpOTE1X2dlbV9vYmplY3RfaW5zZXJ0X2ludG9fdm0oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAoYWxpZ25tZW50ICYgKG1pbl9hbGlnbm1lbnQg LSAxKSkgewogCQlEUk1fREVCVUcoIkludmFsaWQgb2JqZWN0IGFsaWdubWVudCByZXF1ZXN0ZWQg JWxsdSwgbWluaW11bSAlbGx1XG4iLAogCQkJICBhbGlnbm1lbnQsIG1pbl9hbGlnbm1lbnQpOwot CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJc3Rh cnQgPSBmbGFncyAmIFBJTl9PRkZTRVRfQklBUyA/IGZsYWdzICYgUElOX09GRlNFVF9NQVNLIDog MDsKQEAgLTMwMjAsMTcgKzMwMTIsMTcgQEAgaTkxNV9nZW1fb2JqZWN0X2luc2VydF9pbnRvX3Zt KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHNpemUsIG9iai0+YmFzZS5z aXplLAogCQkJICBmbGFncyAmIFBJTl9NQVBQQUJMRSA/ICJtYXBwYWJsZSIgOiAidG90YWwiLAog CQkJICBlbmQpOwotCQlyZXR1cm4gRVJSX1BUUigtRTJCSUcpOworCQlyZXR1cm4gLUUyQklHOwog CX0KIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKIAlpZiAocmV0KQot CQlyZXR1cm4gRVJSX1BUUihyZXQpOworCQlyZXR1cm4gcmV0OwogCiAJaTkxNV9nZW1fb2JqZWN0 X3Bpbl9wYWdlcyhvYmopOwogCiAJaWYgKGZsYWdzICYgUElOX09GRlNFVF9GSVhFRCkgewotCQl1 aW50NjRfdCBvZmZzZXQgPSBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSzsKKwkJdTY0IG9mZnNldCA9 IGZsYWdzICYgUElOX09GRlNFVF9NQVNLOwogCQlpZiAob2Zmc2V0ICYgKGFsaWdubWVudCAtIDEp IHx8IG9mZnNldCA+IGVuZCAtIHNpemUpIHsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIGVy cl91bnBpbjsKQEAgLTMwOTIsMTEgKzMwODQsMTEgQEAgc2VhcmNoX2ZyZWU6CiAJbGlzdF9tb3Zl X3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwogCW9iai0+Ymlu ZF9jb3VudCsrOwogCi0JcmV0dXJuIHZtYTsKKwlyZXR1cm4gMDsKIAogZXJyX3VucGluOgogCWk5 MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwotCXJldHVybiBFUlJfUFRSKHJldCk7CisJ cmV0dXJuIHJldDsKIH0KIAogYm9vbApAQCAtMzY1Nyw2ICszNjQ5LDkgQEAgaTkxNV92bWFfbWlz cGxhY2VkKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0 IGZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsK IAorCWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQorCQlyZXR1cm4gZmFs c2U7CisKIAlpZiAodm1hLT5ub2RlLnNpemUgPCBzaXplKQogCQlyZXR1cm4gdHJ1ZTsKIApAQCAt MzcwMSw5MSArMzY5Niw0MiBAQCB2b2lkIF9faTkxNV92bWFfc2V0X21hcF9hbmRfZmVuY2VhYmxl KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCW9iai0+bWFwX2FuZF9mZW5jZWFibGUgPSBtYXBwYWJs ZSAmJiBmZW5jZWFibGU7CiB9CiAKLXN0YXRpYyBpbnQKLWk5MTVfZ2VtX29iamVjdF9kb19waW4o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJICAgICAgIHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAotCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICpn Z3R0X3ZpZXcsCi0JCSAgICAgICB1NjQgc2l6ZSwKLQkJICAgICAgIHU2NCBhbGlnbm1lbnQsCi0J CSAgICAgICB1NjQgZmxhZ3MpCitpbnQKK2k5MTVfdm1hX3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZt YSwgdTY0IHNpemUsIHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncykKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwotCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwotCXVuc2lnbmVkIGJvdW5kOworCXVuc2lnbmVkIGludCBib3VuZCA9IHZt YS0+Ym91bmQ7CiAJaW50IHJldDsKIAotCWlmIChXQVJOX09OKHZtID09ICZkZXZfcHJpdi0+bW0u YWxpYXNpbmdfcHBndHQtPmJhc2UpKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWlmIChXQVJOX09O KGZsYWdzICYgKFBJTl9HTE9CQUwgfCBQSU5fTUFQUEFCTEUpICYmICFpOTE1X2lzX2dndHQodm0p KSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoV0FSTl9PTigoZmxhZ3MgJiAoUElOX01BUFBB QkxFIHwgUElOX0dMT0JBTCkpID09IFBJTl9NQVBQQUJMRSkpCi0JCXJldHVybiAtRUlOVkFMOwot Ci0JaWYgKFdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmlldykpCi0JCXJldHVy biAtRUlOVkFMOwotCi0Jdm1hID0gZ2d0dF92aWV3ID8gaTkxNV9nZW1fb2JqX3RvX2dndHRfdmll dyhvYmosIGdndHRfdmlldykgOgotCQkJICBpOTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0pOwor CUdFTV9CVUdfT04oKGZsYWdzICYgKFBJTl9HTE9CQUwgfCBQSU5fVVNFUikpID09IDApOworCUdF TV9CVUdfT04oKGZsYWdzICYgUElOX0dMT0JBTCkgJiYgIXZtYS0+aXNfZ2d0dCk7CiAKLQlpZiAo dm1hKSB7Ci0JCWlmIChXQVJOX09OKGk5MTVfdm1hX3Bpbl9jb3VudCh2bWEpID09IERSTV9JOTE1 X0dFTV9PQkpFQ1RfTUFYX1BJTl9DT1VOVCkpCi0JCQlyZXR1cm4gLUVCVVNZOwotCi0JCWlmIChp OTE1X3ZtYV9taXNwbGFjZWQodm1hLCBzaXplLCBhbGlnbm1lbnQsIGZsYWdzKSkgewotCQkJV0FS TihpOTE1X3ZtYV9pc19waW5uZWQodm1hKSwKLQkJCSAgICAgImJvIGlzIGFscmVhZHkgcGlubmVk IGluICVzIHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCi0JCQkgICAgICIgb2Zmc2V0PSUwOHgg JTA4eCwgcmVxLmFsaWdubWVudD0lbGx4LCByZXEubWFwX2FuZF9mZW5jZWFibGU9JWQsIgotCQkJ ICAgICAiIG9iai0+bWFwX2FuZF9mZW5jZWFibGU9JWRcbiIsCi0JCQkgICAgIGdndHRfdmlldyA/ ICJnZ3R0IiA6ICJwcGd0dCIsCi0JCQkgICAgIHVwcGVyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0 KSwKLQkJCSAgICAgbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpLAotCQkJICAgICAobG9u ZyBsb25nKWFsaWdubWVudCwKLQkJCSAgICAgISEoZmxhZ3MgJiBQSU5fTUFQUEFCTEUpLAotCQkJ ICAgICBvYmotPm1hcF9hbmRfZmVuY2VhYmxlKTsKLQkJCXJldCA9IGk5MTVfdm1hX3VuYmluZCh2 bWEpOwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OworCWlmIChXQVJOX09OKGk5MTVfdm1h X3Bpbl9jb3VudCh2bWEpID09IERSTV9JOTE1X0dFTV9PQkpFQ1RfTUFYX1BJTl9DT1VOVCkpCisJ CXJldHVybiAtRUJVU1k7CiAKLQkJCXZtYSA9IE5VTEw7Ci0JCX0KLQl9CisJLyogUGluIGVhcmx5 IHRvIHByZXZlbnQgdGhlIHNocmlua2VyL2V2aWN0aW9uIGxvZ2ljIGZyb20gZGVzdHJveWluZwor CSAqIG91ciB2bWEgYXMgd2UgaW5zZXJ0IGFuZCBiaW5kLgorCSAqLworCV9faTkxNV92bWFfcGlu KHZtYSk7CiAKLQlpZiAodm1hID09IE5VTEwgfHwgIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1h LT5ub2RlKSkgewotCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfaW5zZXJ0X2ludG9fdm0ob2JqLCB2 bSwgZ2d0dF92aWV3LAotCQkJCQkJICAgICBzaXplLCBhbGlnbm1lbnQsIGZsYWdzKTsKLQkJaWYg KElTX0VSUih2bWEpKQotCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwlpZiAoIWJvdW5kKSB7CisJ CXJldCA9IGk5MTVfdm1hX2luc2VydCh2bWEsIHNpemUsIGFsaWdubWVudCwgZmxhZ3MpOworCQlp ZiAocmV0KQorCQkJZ290byBlcnI7CiAJfQogCi0JYm91bmQgPSB2bWEtPmJvdW5kOwotCXJldCA9 IGk5MTVfdm1hX2JpbmQodm1hLCBvYmotPmNhY2hlX2xldmVsLCBmbGFncyk7CisJcmV0ID0gaTkx NV92bWFfYmluZCh2bWEsIHZtYS0+b2JqLT5jYWNoZV9sZXZlbCwgZmxhZ3MpOwogCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJCWdvdG8gZXJyOwogCi0JaWYgKGdndHRfdmlldyAmJiBnZ3R0X3Zp ZXctPnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMICYmCi0JICAgIChib3VuZCBeIHZtYS0+ Ym91bmQpICYgR0xPQkFMX0JJTkQpIHsKKwlpZiAoKGJvdW5kIF4gdm1hLT5ib3VuZCkgJiBHTE9C QUxfQklORCkKIAkJX19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUodm1hKTsKLQkJV0FS Tl9PTihmbGFncyAmIFBJTl9NQVBQQUJMRSAmJiAhb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSk7Ci0J fQogCiAJR0VNX0JVR19PTihpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCBzaXplLCBhbGlnbm1lbnQs IGZsYWdzKSk7Ci0KLQlfX2k5MTVfdm1hX3Bpbih2bWEpOwogCXJldHVybiAwOwotfQogCi1pbnQK LWk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJ ICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkgICAgdTY0IHNpemUsCi0JCSAg ICB1NjQgYWxpZ25tZW50LAotCQkgICAgdTY0IGZsYWdzKQotewotCXJldHVybiBpOTE1X2dlbV9v YmplY3RfZG9fcGluKG9iaiwgdm0sCi0JCQkJICAgICAgaTkxNV9pc19nZ3R0KHZtKSA/ICZpOTE1 X2dndHRfdmlld19ub3JtYWwgOiBOVUxMLAotCQkJCSAgICAgIHNpemUsIGFsaWdubWVudCwgZmxh Z3MpOworZXJyOgorCV9faTkxNV92bWFfdW5waW4odm1hKTsKKwlyZXR1cm4gcmV0OwogfQogCiBp bnQKQEAgLTM3OTUsMTQgKzM3NDEsMzUgQEAgaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgdTY0IGFsaWdubWVudCwKIAkJCSB1NjQg ZmxhZ3MpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBp OTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7 CisJaW50IHJldDsKIAogCUJVR19PTighdmlldyk7CiAKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0 X2RvX3BpbihvYmosICZnZ3R0LT5iYXNlLCB2aWV3LAotCQkJCSAgICAgIHNpemUsIGFsaWdubWVu dCwgZmxhZ3MgfCBQSU5fR0xPQkFMKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2Ny ZWF0ZV9nZ3R0X3ZtYShvYmosIHZpZXcpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBU Ul9FUlIodm1hKTsKKworCWlmIChpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCBzaXplLCBhbGlnbm1l bnQsIGZsYWdzKSkgeworCQlpZiAoZmxhZ3MgJiBQSU5fTk9OQkxPQ0sgJiYKKwkJICAgIChpOTE1 X3ZtYV9pc19waW5uZWQodm1hKSB8fCBpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSkpCisJCQlyZXR1 cm4gLUVOT1NQQzsKKworCQlXQVJOKGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpLAorCQkgICAgICJi byBpcyBhbHJlYWR5IHBpbm5lZCBpbiBnZ3R0IHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCisJ CSAgICAgIiBvZmZzZXQ9JTA4eCAlMDh4LCByZXEuYWxpZ25tZW50PSVsbHgsIHJlcS5tYXBfYW5k X2ZlbmNlYWJsZT0lZCwiCisJCSAgICAgIiBvYmotPm1hcF9hbmRfZmVuY2VhYmxlPSVkXG4iLAor CQkgICAgIHVwcGVyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KSwKKwkJICAgICBsb3dlcl8zMl9i aXRzKHZtYS0+bm9kZS5zdGFydCksCisJCSAgICAgKGxvbmcgbG9uZylhbGlnbm1lbnQsCisJCSAg ICAgISEoZmxhZ3MgJiBQSU5fTUFQUEFCTEUpLAorCQkgICAgIG9iai0+bWFwX2FuZF9mZW5jZWFi bGUpOworCQlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CisJfQorCisJcmV0dXJuIGk5MTVfdm1hX3Bpbih2bWEsIHNpemUsIGFsaWdubWVudCwg ZmxhZ3MgfCBQSU5fR0xPQkFMKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDgyZWQ4MGY2ODEwMy4uZGI4N2QzMGI4NmFjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC00NSwxMSArNDUs MTAgQEAKIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zIHsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAgICAgICAgICAgICAgICpkZXY7CiAJc3RydWN0IGRybV9maWxlICAgICAgICAgICAgICAgICAq ZmlsZTsKLQl1MzIJCQkJIGRpc3BhdGNoX2ZsYWdzOwotCXUzMgkJCQkgYXJnc19iYXRjaF9zdGFy dF9vZmZzZXQ7Ci0JdTMyCQkJCSBiYXRjaF9vYmpfdm1fb2Zmc2V0OworCXN0cnVjdCBpOTE1X3Zt YQkJCSpiYXRjaDsKKwl1MzIJCQkJZGlzcGF0Y2hfZmxhZ3M7CisJdTMyCQkJCWFyZ3NfYmF0Y2hf c3RhcnRfb2Zmc2V0OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgICAgICAgICAgKmVuZ2luZTsK LQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAgICAgICpiYXRjaF9vYmo7CiAJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgICAgICAgICAqY3R4OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAgICAgKnJlcXVlc3Q7CiB9OwpAQCAtMTAyLDYgKzEwMSwyNiBAQCBlYl9yZXNldChzdHJ1Y3Qg ZWJfdm1hcyAqZWIpCiAJCW1lbXNldChlYi0+YnVja2V0cywgMCwgKGViLT5hbmQrMSkqc2l6ZW9m KHN0cnVjdCBobGlzdF9oZWFkKSk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgorZWJf Z2V0X2JhdGNoKHN0cnVjdCBlYl92bWFzICplYikKK3sKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9 IGxpc3RfZW50cnkoZWItPnZtYXMucHJldiwgdHlwZW9mKCp2bWEpLCBleGVjX2xpc3QpOworCisJ LyoKKwkgKiBTTkEgaXMgZG9pbmcgZmFuY3kgdHJpY2tzIHdpdGggY29tcHJlc3NpbmcgYmF0Y2gg YnVmZmVycywgd2hpY2ggbGVhZHMKKwkgKiB0byBuZWdhdGl2ZSByZWxvY2F0aW9uIGRlbHRhcy4g VXN1YWxseSB0aGF0IHdvcmtzIG91dCBvayBzaW5jZSB0aGUKKwkgKiByZWxvY2F0ZSBhZGRyZXNz IGlzIHN0aWxsIHBvc2l0aXZlLCBleGNlcHQgd2hlbiB0aGUgYmF0Y2ggaXMgcGxhY2VkCisJICog dmVyeSBsb3cgaW4gdGhlIEdUVC4gRW5zdXJlIHRoaXMgZG9lc24ndCBoYXBwZW4uCisJICoKKwkg KiBOb3RlIHRoYXQgYWN0dWFsIGhhbmdzIGhhdmUgb25seSBiZWVuIG9ic2VydmVkIG9uIGdlbjcs IGJ1dCBmb3IKKwkgKiBwYXJhbm9pYSBkbyBpdCBldmVyeXdoZXJlLgorCSAqLworCWlmICgodm1h LT5leGVjX2VudHJ5LT5mbGFncyAmIEVYRUNfT0JKRUNUX1BJTk5FRCkgPT0gMCkKKwkJdm1hLT5l eGVjX2VudHJ5LT5mbGFncyB8PSBfX0VYRUNfT0JKRUNUX05FRURTX0JJQVM7CisKKwlyZXR1cm4g dm1hOworfQorCiBzdGF0aWMgaW50CiBlYl9sb29rdXBfdm1hcyhzdHJ1Y3QgZWJfdm1hcyAqZWIs CiAJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjLApAQCAtMTk4 LDM1ICsyMTcsNiBAQCBlcnI6CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1 Y3QgaTkxNV92bWEgKgotZWJfZ2V0X2JhdGNoX3ZtYShzdHJ1Y3QgZWJfdm1hcyAqZWIpCi17Ci0J LyogVGhlIGJhdGNoIGlzIGFsd2F5cyB0aGUgTEFTVCBpdGVtIGluIHRoZSBWTUEgbGlzdCAqLwot CXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gbGlzdF9sYXN0X2VudHJ5KCZlYi0+dm1hcywgdHlwZW9m KCp2bWEpLCBleGVjX2xpc3QpOwotCi0JcmV0dXJuIHZtYTsKLX0KLQotc3RhdGljIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICoKLWViX2dldF9iYXRjaChzdHJ1Y3QgZWJfdm1hcyAqZWIpCi17 Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWEgPSBlYl9nZXRfYmF0Y2hfdm1hKGViKTsKLQotCS8qCi0J ICogU05BIGlzIGRvaW5nIGZhbmN5IHRyaWNrcyB3aXRoIGNvbXByZXNzaW5nIGJhdGNoIGJ1ZmZl cnMsIHdoaWNoIGxlYWRzCi0JICogdG8gbmVnYXRpdmUgcmVsb2NhdGlvbiBkZWx0YXMuIFVzdWFs bHkgdGhhdCB3b3JrcyBvdXQgb2sgc2luY2UgdGhlCi0JICogcmVsb2NhdGUgYWRkcmVzcyBpcyBz dGlsbCBwb3NpdGl2ZSwgZXhjZXB0IHdoZW4gdGhlIGJhdGNoIGlzIHBsYWNlZAotCSAqIHZlcnkg bG93IGluIHRoZSBHVFQuIEVuc3VyZSB0aGlzIGRvZXNuJ3QgaGFwcGVuLgotCSAqCi0JICogTm90 ZSB0aGF0IGFjdHVhbCBoYW5ncyBoYXZlIG9ubHkgYmVlbiBvYnNlcnZlZCBvbiBnZW43LCBidXQg Zm9yCi0JICogcGFyYW5vaWEgZG8gaXQgZXZlcnl3aGVyZS4KLQkgKi8KLQlpZiAoKHZtYS0+ZXhl Y19lbnRyeS0+ZmxhZ3MgJiBFWEVDX09CSkVDVF9QSU5ORUQpID09IDApCi0JCXZtYS0+ZXhlY19l bnRyeS0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9ORUVEU19CSUFTOwotCi0JcmV0dXJuIHZtYS0+ b2JqOwotfQotCiBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICplYl9nZXRfdm1hKHN0cnVjdCBlYl92 bWFzICplYiwgdW5zaWduZWQgbG9uZyBoYW5kbGUpCiB7CiAJaWYgKGViLT5hbmQgPCAwKSB7CkBA IC02ODIsMTYgKzY3MiwxNiBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3Jlc2VydmVfdm1hKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAogCQkJZmxhZ3MgfD0gUElOX0hJR0g7CiAJfQogCi0JcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3BpbihvYmosIHZtYS0+dm0sCi0JCQkJICBlbnRyeS0+cGFkX3RvX3NpemUs Ci0JCQkJICBlbnRyeS0+YWxpZ25tZW50LAotCQkJCSAgZmxhZ3MpOwotCWlmICgocmV0ID09IC1F Tk9TUEMgIHx8IHJldCA9PSAtRTJCSUcpICYmCisJcmV0ID0gaTkxNV92bWFfcGluKHZtYSwKKwkJ CSAgIGVudHJ5LT5wYWRfdG9fc2l6ZSwKKwkJCSAgIGVudHJ5LT5hbGlnbm1lbnQsCisJCQkgICBm bGFncyk7CisJaWYgKChyZXQgPT0gLUVOT1NQQyB8fCByZXQgPT0gLUUyQklHKSAmJgogCSAgICBv bmx5X21hcHBhYmxlX2Zvcl9yZWxvYyhlbnRyeS0+ZmxhZ3MpKQotCQlyZXQgPSBpOTE1X2dlbV9v YmplY3RfcGluKG9iaiwgdm1hLT52bSwKLQkJCQkJICBlbnRyeS0+cGFkX3RvX3NpemUsCi0JCQkJ CSAgZW50cnktPmFsaWdubWVudCwKLQkJCQkJICBmbGFncyAmIH5QSU5fTUFQUEFCTEUpOworCQly ZXQgPSBpOTE1X3ZtYV9waW4odm1hLAorCQkJCSAgIGVudHJ5LT5wYWRfdG9fc2l6ZSwKKwkJCQkg ICBlbnRyeS0+YWxpZ25tZW50LAorCQkJCSAgIGZsYWdzICYgflBJTl9NQVBQQUJMRSk7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTI1MiwxMSArMTI0MiwxMSBAQCBpOTE1X3Jlc2V0 X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCoKK3N0YXRpYyBz dHJ1Y3QgaTkxNV92bWEqCiBpOTE1X2dlbV9leGVjYnVmZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg KnNoYWRvd19leGVjX2VudHJ5LAotCQkJICBzdHJ1Y3QgZWJfdm1hcyAqZWIsCiAJCQkgIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmosCisJCQkgIHN0cnVjdCBlYl92bWFzICpl YiwKIAkJCSAgdTMyIGJhdGNoX3N0YXJ0X29mZnNldCwKIAkJCSAgdTMyIGJhdGNoX2xlbiwKIAkJ CSAgYm9vbCBpc19tYXN0ZXIpCkBAIC0xMjY4LDcgKzEyNTgsNyBAQCBpOTE1X2dlbV9leGVjYnVm ZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlzaGFkb3dfYmF0Y2hf b2JqID0gaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoJmVuZ2luZS0+YmF0Y2hfcG9vbCwKIAkJCQkJ CSAgIFBBR0VfQUxJR04oYmF0Y2hfbGVuKSk7CiAJaWYgKElTX0VSUihzaGFkb3dfYmF0Y2hfb2Jq KSkKLQkJcmV0dXJuIHNoYWRvd19iYXRjaF9vYmo7CisJCXJldHVybiBFUlJfQ0FTVChzaGFkb3df YmF0Y2hfb2JqKTsKIAogCXJldCA9IGludGVsX2VuZ2luZV9jbWRfcGFyc2VyKGVuZ2luZSwKIAkJ CQkgICAgICBiYXRjaF9vYmosCkBAIC0xMjkzLDE0ICsxMjgzLDEyIEBAIGk5MTVfZ2VtX2V4ZWNi dWZmZXJfcGFyc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWk5MTVfZ2VtX29i amVjdF9nZXQoc2hhZG93X2JhdGNoX29iaik7CiAJbGlzdF9hZGRfdGFpbCgmdm1hLT5leGVjX2xp c3QsICZlYi0+dm1hcyk7CiAKLQlzaGFkb3dfYmF0Y2hfb2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9k b21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Ci0KLQlyZXR1cm4gc2hhZG93X2JhdGNo X29iajsKKwlyZXR1cm4gdm1hOwogCiBlcnI6CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2Vz KHNoYWRvd19iYXRjaF9vYmopOwogCWlmIChyZXQgPT0gLUVBQ0NFUykgLyogdW5oYW5kbGVkIGNo YWluZWQgYmF0Y2ggKi8KLQkJcmV0dXJuIGJhdGNoX29iajsKKwkJcmV0dXJuIE5VTEw7CiAJZWxz ZQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQpAQCAtMTM4MSwxMSArMTM2OSwxMSBAQCBleGVj YnVmX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAogCX0KIAog CWV4ZWNfbGVuICAgPSBhcmdzLT5iYXRjaF9sZW47Ci0JZXhlY19zdGFydCA9IHBhcmFtcy0+YmF0 Y2hfb2JqX3ZtX29mZnNldCArCisJZXhlY19zdGFydCA9IHBhcmFtcy0+YmF0Y2gtPm5vZGUuc3Rh cnQgKwogCQkgICAgIHBhcmFtcy0+YXJnc19iYXRjaF9zdGFydF9vZmZzZXQ7CiAKIAlpZiAoZXhl Y19sZW4gPT0gMCkKLQkJZXhlY19sZW4gPSBwYXJhbXMtPmJhdGNoX29iai0+YmFzZS5zaXplOwor CQlleGVjX2xlbiA9IHBhcmFtcy0+YmF0Y2gtPnNpemU7CiAKIAlyZXQgPSBwYXJhbXMtPmVuZ2lu ZS0+ZW1pdF9iYl9zdGFydChwYXJhbXMtPnJlcXVlc3QsCiAJCQkJCSAgICBleGVjX3N0YXJ0LCBl eGVjX2xlbiwKQEAgLTE0ODksNyArMTQ3Nyw2IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZk ZXZfcHJpdi0+Z2d0dDsKIAlzdHJ1Y3QgZWJfdm1hcyAqZWI7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmJhdGNoX29iajsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBz aGFkb3dfZXhlY19lbnRyeTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKQEAgLTE1ODMsNyArMTU3MCw3IEBAIGk5MTVfZ2Vt X2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290 byBlcnI7CiAKIAkvKiB0YWtlIG5vdGUgb2YgdGhlIGJhdGNoIGJ1ZmZlciBiZWZvcmUgd2UgbWln aHQgcmVvcmRlciB0aGUgbGlzdHMgKi8KLQliYXRjaF9vYmogPSBlYl9nZXRfYmF0Y2goZWIpOwor CXBhcmFtcy0+YmF0Y2ggPSBlYl9nZXRfYmF0Y2goZWIpOwogCiAJLyogTW92ZSB0aGUgb2JqZWN0 cyBlbi1tYXNzZSBpbnRvIHRoZSBHVFQsIGV2aWN0aW5nIGlmIG5lY2Vzc2FyeS4gKi8KIAluZWVk X3JlbG9jcyA9IChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19OT19SRUxPQykgPT0gMDsKQEAgLTE2 MDcsNyArMTU5NCw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAl9CiAKIAkvKiBTZXQgdGhlIHBlbmRpbmcgcmVhZCBkb21haW5z IGZvciB0aGUgYmF0Y2ggYnVmZmVyIHRvIENPTU1BTkQgKi8KLQlpZiAoYmF0Y2hfb2JqLT5iYXNl LnBlbmRpbmdfd3JpdGVfZG9tYWluKSB7CisJaWYgKHBhcmFtcy0+YmF0Y2gtPm9iai0+YmFzZS5w ZW5kaW5nX3dyaXRlX2RvbWFpbikgewogCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gdXNlIHNl bGYtbW9kaWZ5aW5nIGJhdGNoIGJ1ZmZlclxuIik7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8g ZXJyOwpAQCAtMTYxNSwyNiArMTYwMiwyMCBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlwYXJhbXMtPmFyZ3NfYmF0Y2hfc3Rh cnRfb2Zmc2V0ID0gYXJncy0+YmF0Y2hfc3RhcnRfb2Zmc2V0OwogCWlmIChpbnRlbF9lbmdpbmVf bmVlZHNfY21kX3BhcnNlcihlbmdpbmUpICYmIGFyZ3MtPmJhdGNoX2xlbikgewotCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqcGFyc2VkX2JhdGNoX29iajsKLQotCQlwYXJzZWRfYmF0Y2hf b2JqID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9wYXJzZShlbmdpbmUsCi0JCQkJCQkJICAgICAmc2hh ZG93X2V4ZWNfZW50cnksCi0JCQkJCQkJICAgICBlYiwKLQkJCQkJCQkgICAgIGJhdGNoX29iaiwK LQkJCQkJCQkgICAgIGFyZ3MtPmJhdGNoX3N0YXJ0X29mZnNldCwKLQkJCQkJCQkgICAgIGFyZ3Mt PmJhdGNoX2xlbiwKLQkJCQkJCQkgICAgIGRybV9pc19jdXJyZW50X21hc3RlcihmaWxlKSk7Ci0J CWlmIChJU19FUlIocGFyc2VkX2JhdGNoX29iaikpIHsKLQkJCXJldCA9IFBUUl9FUlIocGFyc2Vk X2JhdGNoX29iaik7CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCisJCXZtYSA9IGk5MTVfZ2Vt X2V4ZWNidWZmZXJfcGFyc2UoZW5naW5lLCAmc2hhZG93X2V4ZWNfZW50cnksCisJCQkJCQlwYXJh bXMtPmJhdGNoLT5vYmosCisJCQkJCQllYiwKKwkJCQkJCWFyZ3MtPmJhdGNoX3N0YXJ0X29mZnNl dCwKKwkJCQkJCWFyZ3MtPmJhdGNoX2xlbiwKKwkJCQkJCWRybV9pc19jdXJyZW50X21hc3Rlcihm aWxlKSk7CisJCWlmIChJU19FUlIodm1hKSkgeworCQkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQkJ Z290byBlcnI7CiAJCX0KIAotCQkvKgotCQkgKiBwYXJzZWRfYmF0Y2hfb2JqID09IGJhdGNoX29i aiBtZWFucyBiYXRjaCBub3QgZnVsbHkgcGFyc2VkOgotCQkgKiBBY2NlcHQsIGJ1dCBkb24ndCBw cm9tb3RlIHRvIHNlY3VyZS4KLQkJICovCi0KLQkJaWYgKHBhcnNlZF9iYXRjaF9vYmogIT0gYmF0 Y2hfb2JqKSB7CisJCWlmICh2bWEpIHsKIAkJCS8qCiAJCQkgKiBCYXRjaCBwYXJzZWQgYW5kIGFj Y2VwdGVkOgogCQkJICoKQEAgLTE2NDYsMTYgKzE2MjcsMTggQEAgaTkxNV9nZW1fZG9fZXhlY2J1 ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICovCiAJCQlkaXNw YXRjaF9mbGFncyB8PSBJOTE1X0RJU1BBVENIX1NFQ1VSRTsKIAkJCXBhcmFtcy0+YXJnc19iYXRj aF9zdGFydF9vZmZzZXQgPSAwOwotCQkJYmF0Y2hfb2JqID0gcGFyc2VkX2JhdGNoX29iajsKKwkJ CXBhcmFtcy0+YmF0Y2ggPSB2bWE7CiAJCX0KIAl9CiAKLQliYXRjaF9vYmotPmJhc2UucGVuZGlu Z19yZWFkX2RvbWFpbnMgfD0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7CisJcGFyYW1zLT5iYXRj aC0+b2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21haW5zIHw9IEk5MTVfR0VNX0RPTUFJTl9DT01N QU5EOwogCiAJLyogc25iL2l2Yi92bHYgY29uZmxhdGUgdGhlICJiYXRjaCBpbiBwcGd0dCIgYml0 IHdpdGggdGhlICJub24tc2VjdXJlCiAJICogYmF0Y2giIGJpdC4gSGVuY2Ugd2UgbmVlZCB0byBw aW4gc2VjdXJlIGJhdGNoZXMgaW50byB0aGUgZ2xvYmFsIGd0dC4KIAkgKiBoc3cgc2hvdWxkIGhh dmUgdGhpcyBmaXhlZCwgYnV0IGJkdyBtdWNrcyBpdCB1cCBhZ2Fpbi4gKi8KIAlpZiAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gcGFyYW1zLT5iYXRjaC0+b2JqOworCiAJCS8qCiAJCSAqIFNvIG9uIGZp cnN0IGdsYW5jZSBpdCBsb29rcyBmcmVha3kgdGhhdCB3ZSBwaW4gdGhlIGJhdGNoIGhlcmUKIAkJ ICogb3V0c2lkZSBvZiB0aGUgcmVzZXJ2YXRpb24gbG9vcC4gQnV0OgpAQCAtMTY2NiwxMyArMTY0 OSwxMiBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCSAqICAgZml0dGluZyBkdWUgdG8gZnJhZ21lbnRhdGlvbi4KIAkJICogU28g dGhpcyBpcyBhY3R1YWxseSBzYWZlLgogCQkgKi8KLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKGJhdGNoX29iaiwgMCwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbihv YmosIE5VTEwsIDAsIDAsIDApOwogCQlpZiAocmV0KQogCQkJZ290byBlcnI7CiAKLQkJcGFyYW1z LT5iYXRjaF9vYmpfdm1fb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGJhdGNoX29i aik7Ci0JfSBlbHNlCi0JCXBhcmFtcy0+YmF0Y2hfb2JqX3ZtX29mZnNldCA9IGk5MTVfZ2VtX29i al9vZmZzZXQoYmF0Y2hfb2JqLCB2bSk7CisJCXBhcmFtcy0+YmF0Y2ggPSBpOTE1X2dlbV9vYmpf dG9fZ2d0dChvYmopOworCX0KIAogCS8qIEFsbG9jYXRlIGEgcmVxdWVzdCBmb3IgdGhpcyBiYXRj aCBidWZmZXIgbmljZSBhbmQgZWFybHkuICovCiAJcGFyYW1zLT5yZXF1ZXN0ID0gaTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7CkBAIC0xNjk1LDEyICsxNjc3LDExIEBAIGk5MTVf Z2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlw YXJhbXMtPmZpbGUgICAgICAgICAgICAgICAgICAgID0gZmlsZTsKIAlwYXJhbXMtPmVuZ2luZSAg ICAgICAgICAgICAgICAgICAgPSBlbmdpbmU7CiAJcGFyYW1zLT5kaXNwYXRjaF9mbGFncyAgICAg ICAgICA9IGRpc3BhdGNoX2ZsYWdzOwotCXBhcmFtcy0+YmF0Y2hfb2JqICAgICAgICAgICAgICAg PSBiYXRjaF9vYmo7CiAJcGFyYW1zLT5jdHggICAgICAgICAgICAgICAgICAgICA9IGN0eDsKIAog CXJldCA9IGV4ZWNidWZfc3VibWl0KHBhcmFtcywgYXJncywgJmViLT52bWFzKTsKIGVycl9yZXF1 ZXN0OgotCV9faTkxNV9hZGRfcmVxdWVzdChwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+YmF0Y2hf b2JqLCByZXQgPT0gMCk7CisJX19pOTE1X2FkZF9yZXF1ZXN0KHBhcmFtcy0+cmVxdWVzdCwgcGFy YW1zLT5iYXRjaC0+b2JqLCByZXQgPT0gMCk7CiAKIGVycl9iYXRjaF91bnBpbjoKIAkvKgpAQCAt MTcxMCw4ICsxNjkxLDcgQEAgZXJyX2JhdGNoX3VucGluOgogCSAqIGFjdGl2ZS4KIAkgKi8KIAlp ZiAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSkKLQkJaTkxNV9nZW1fb2Jq ZWN0X2dndHRfdW5waW4oYmF0Y2hfb2JqKTsKLQorCQlpOTE1X3ZtYV91bnBpbihwYXJhbXMtPmJh dGNoKTsKIGVycjoKIAkvKiB0aGUgcmVxdWVzdCBvd25zIHRoZSByZWYgbm93ICovCiAJaTkxNV9n ZW1fY29udGV4dF9wdXQoY3R4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXgg MjA1MmYwNWM0ZTEyLi44MjRhOGI1YzZiMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCkBAIC0zNjU4LDEzICszNjU4LDEwIEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJCXJldHVybiAw OwogCiAJaWYgKHZtYS0+Ym91bmQgPT0gMCAmJiB2bWEtPnZtLT5hbGxvY2F0ZV92YV9yYW5nZSkg ewotCQkvKiBYWFg6IGk5MTVfdm1hX3BpbigpIHdpbGwgZml4IHRoaXMgKy0gaGFjayAqLwotCQlf X2k5MTVfdm1hX3Bpbih2bWEpOwogCQl0cmFjZV9pOTE1X3ZhX2FsbG9jKHZtYSk7CiAJCXJldCA9 IHZtYS0+dm0tPmFsbG9jYXRlX3ZhX3JhbmdlKHZtYS0+dm0sCiAJCQkJCQkgdm1hLT5ub2RlLnN0 YXJ0LAogCQkJCQkJIHZtYS0+bm9kZS5zaXplKTsKLQkJX19pOTE1X3ZtYV91bnBpbih2bWEpOwog CQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCmluZGV4IGQ4MjI3MzRiNWJjMC4uY2VlNTUzZTg5YzE5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaApAQCAtNjExLDYgKzYxMSwyMCBAQCBpOTE1X2dndHRfdmlld19lcXVhbChj b25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmEsCiAJcmV0dXJuIHRydWU7CiB9CiAKK2ludCBf X211c3RfY2hlY2sKK2k5MTVfdm1hX3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IHNpemUs IHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncyk7CisvKiBGbGFncyB1c2VkIGJ5IHBpbi9iaW5kJmZy aWVuZHMuICovCisjZGVmaW5lIFBJTl9NQVBQQUJMRQkJQklUKDApCisjZGVmaW5lIFBJTl9OT05C TE9DSwkJQklUKDEpCisjZGVmaW5lIFBJTl9HTE9CQUwJCUJJVCgyKQorI2RlZmluZSBQSU5fT0ZG U0VUX0JJQVMJCUJJVCgzKQorI2RlZmluZSBQSU5fVVNFUgkJQklUKDQpCisjZGVmaW5lIFBJTl9V UERBVEUJCUJJVCg1KQorI2RlZmluZSBQSU5fWk9ORV80RwkJQklUKDYpCisjZGVmaW5lIFBJTl9I SUdICQlCSVQoNykKKyNkZWZpbmUgUElOX09GRlNFVF9GSVhFRAlCSVQoOCkKKyNkZWZpbmUgUElO X09GRlNFVF9NQVNLCQkofjQwOTUpCisKIHN0YXRpYyBpbmxpbmUgaW50IGk5MTVfdm1hX3Bpbl9j b3VudChjb25zdCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAlyZXR1cm4gdm1hLT5waW5fY291 bnQ7Ci0tIAoyLjguMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==