From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] drm/i915: Track pinned vma in intel_plane_state Date: Wed, 4 Jan 2017 14:31:26 +0100 Message-ID: <1483536686-5132-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83EA26E706 for ; Wed, 4 Jan 2017 13:31:30 +0000 (UTC) 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 RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpXaXRoIGF0b21p YyBwbGFuZSBzdGF0ZXMgd2UgYXJlIGFibGUgdG8gdHJhY2sgYW4gYWxsb2NhdGlvbiByaWdodCBm cm9tCnByZXBhcmF0aW9uLCBkdXJpbmcgdXNlIGFuZCB0aHJvdWdoIHRvIHRoZSBmaW5hbCBmcmVl IGFmdGVyIGJlaW5nCnN3YXBwZWQgb3V0IGZvciBhIG5ldyBwbGFuZS4gV2UgY2FuIGNvdXBsZSB0 aGUgVk1BIHdlIHBpbiBmb3IgdGhlCmZyYW1lYnVmZmVyIChhbmQgaXRzIHJvdGF0aW9uKSB0byB0 aGlzIGxpZmV0aW1lIGFuZCBhdm9pZCBhbGwgdGhlIGNsdW1zeQpsb29rdXBzIGluIGJldHdlZW4u Cgp2MjogUmVtb3ZlIHJlc2lkdWFsIHZtYSBvbiBwbGFuZSBjbGVhbnVwIChDaHJpcykKdjM6IEFk ZCBhIGRlc2NyaXB0aW9uIGZvciB0aGUgdm1hIGRlc3RydWN0aW9uIGluCiAgICBpbnRlbF9wbGFu ZV9kZXN0cm95X3N0YXRlIChNYWFydGVuKQoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0 IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgfCAgMTYgKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMjAgKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgMTI5ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgIDkgKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICAgICB8ICA1MiArKysrKy0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAgIHwgICA0ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICB8ICAgOCArLQogNyBmaWxl cyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgMTM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IDIyZDNmNjEwMjEyYy4uNTM2OWY1ZjljZTNhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTEwNzksNiArMTA3OSw4IEBAIHN0cnVjdCBpbnRlbF9mYmMgewog CXN0cnVjdCB3b3JrX3N0cnVjdCB1bmRlcnJ1bl93b3JrOwogCiAJc3RydWN0IGludGVsX2ZiY19z dGF0ZV9jYWNoZSB7CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCiAJCXN0cnVjdCB7CiAJCQl1 bnNpZ25lZCBpbnQgbW9kZV9mbGFnczsKIAkJCXVpbnQzMl90IGhzd19iZHdfcGl4ZWxfcmF0ZTsK QEAgLTEwOTIsMTUgKzEwOTQsMTQgQEAgc3RydWN0IGludGVsX2ZiYyB7CiAJCX0gcGxhbmU7CiAK IAkJc3RydWN0IHsKLQkJCXU2NCBpbGtfZ2d0dF9vZmZzZXQ7CiAJCQljb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICpmb3JtYXQ7CiAJCQl1bnNpZ25lZCBpbnQgc3RyaWRlOwotCQkJaW50IGZl bmNlX3JlZzsKLQkJCXVuc2lnbmVkIGludCB0aWxpbmdfbW9kZTsKIAkJfSBmYjsKIAl9IHN0YXRl X2NhY2hlOwogCiAJc3RydWN0IGludGVsX2ZiY19yZWdfcGFyYW1zIHsKKwkJc3RydWN0IGk5MTVf dm1hICp2bWE7CisKIAkJc3RydWN0IHsKIAkJCWVudW0gcGlwZSBwaXBlOwogCQkJZW51bSBwbGFu ZSBwbGFuZTsKQEAgLTExMDgsMTAgKzExMDksOCBAQCBzdHJ1Y3QgaW50ZWxfZmJjIHsKIAkJfSBj cnRjOwogCiAJCXN0cnVjdCB7Ci0JCQl1NjQgZ2d0dF9vZmZzZXQ7CiAJCQljb25zdCBzdHJ1Y3Qg ZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQ7CiAJCQl1bnNpZ25lZCBpbnQgc3RyaWRlOwotCQkJaW50 IGZlbmNlX3JlZzsKIAkJfSBmYjsKIAogCQlpbnQgY2ZiX3NpemU7CkBAIC0zNDA2LDEzICszNDA1 LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmosICZ0b19pOTE1KG9iai0+YmFz ZS5kZXYpLT5nZ3R0LmJhc2UsIHZpZXcpOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv bmcKLWk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbywKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCi17Ci0JcmV0 dXJuIGk5MTVfZ2d0dF9vZmZzZXQoaTkxNV9nZW1fb2JqZWN0X3RvX2dndHQobywgdmlldykpOwot fQotCiAvKiBpOTE1X2dlbV9mZW5jZV9yZWcuYyAqLwogaW50IF9fbXVzdF9jaGVjayBpOTE1X3Zt YV9nZXRfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwogaW50IF9fbXVzdF9jaGVjayBpOTE1 X3ZtYV9wdXRfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdG9taWNfcGxhbmUuYwppbmRleCA0NjEyZmZkNTU1YTcuLjQxZmQ5NGU2MmQzYyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTg1LDYgKzg1 LDggQEAgaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l KQogCiAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsIHN0 YXRlKTsKIAorCWludGVsX3N0YXRlLT52bWEgPSBOVUxMOworCiAJcmV0dXJuIHN0YXRlOwogfQog CkBAIC0xMDAsNiArMTAyLDI0IEBAIHZvaWQKIGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl KQogeworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCisJdm1hID0gZmV0Y2hfYW5kX3plcm8oJnRv X2ludGVsX3BsYW5lX3N0YXRlKHN0YXRlKS0+dm1hKTsKKworCS8qCisJICogRklYTUU6IE5vcm1h bGx5IGludGVsX2NsZWFudXBfcGxhbmVfZmIgaGFuZGxlcyBkZXN0cnVjdGlvbiBvZiB2bWEuCisJ ICogV2UgY3VycmVudGx5IGRvbid0IGNsZWFyIGFsbCBwbGFuZXMgZHVyaW5nIGRyaXZlciB1bmxv YWQsIHNvIHdlIGhhdmUKKwkgKiB0byBiZSBhYmxlIHRvIHVucGluIHZtYSBoZXJlIGZvciBub3cu CisJICoKKwkgKiBOb3JtYWxseSB0aGlzIGNhbiBvbmx5IGhhcHBlbiBkdXJpbmcgdW5sb2FkIHdo ZW4ga21zY29uIGlzIGRpc2FibGVkCisJICogYW5kIHVzZXJzcGFjZSBkb2Vzbid0IGF0dGVtcHQg dG8gc2V0IGEgZnJhbWVidWZmZXIgYXQgYWxsLgorCSAqLworCWlmICh2bWEpIHsKKwkJbXV0ZXhf bG9jaygmcGxhbmUtPmRldi0+c3RydWN0X211dGV4KTsKKwkJaW50ZWxfdW5waW5fZmJfdm1hKHZt YSk7CisJCW11dGV4X3VubG9jaygmcGxhbmUtPmRldi0+c3RydWN0X211dGV4KTsKKwl9CisKIAlk cm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHBsYW5lLCBzdGF0ZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA5YjY0ZWRjNDRlMjYuLjA3Zjc1 N2NiYzhkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjIzNiwyNCAr MjIzNiwxOSBAQCBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKQogCQkJaTkxNV92bWFfcGluX2ZlbmNlKHZt YSk7CiAJfQogCisJaTkxNV92bWFfZ2V0KHZtYSk7CiBlcnI6CiAJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwogCXJldHVybiB2bWE7CiB9CiAKLXZvaWQgaW50ZWxfdW5waW5fZmJfb2Jq KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCit2b2lk IGludGVsX3VucGluX2ZiX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgdmlldzsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQotCVdBUk5fT04oIW11dGV4 X2lzX2xvY2tlZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSk7Ci0KLQlpbnRlbF9maWxs X2ZiX2dndHRfdmlldygmdmlldywgZmIsIHJvdGF0aW9uKTsKLQl2bWEgPSBpOTE1X2dlbV9vYmpl Y3RfdG9fZ2d0dChvYmosICZ2aWV3KTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCWk5MTVfdm1hX3VucGluX2ZlbmNlKHZtYSk7CiAJ aTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZSh2bWEpOworCWk5MTVfdm1h X3B1dCh2bWEpOwogfQogCiBzdGF0aWMgaW50IGludGVsX2ZiX3BpdGNoKGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCkBAIC0yNzQ2LDcgKzI3NDEsNiBAQCBpbnRl bF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9j cnRjICpjOwotCXN0cnVjdCBpbnRlbF9jcnRjICppOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7CiAJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGludGVsX2NydGMtPmJhc2Uu cHJpbWFyeTsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IHByaW1hcnkt PnN0YXRlOwpAQCAtMjc3MSwyMCArMjc2NSwyMCBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVf b2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCSAqIGFuIGZiIHdpdGggYW5vdGhl ciBDUlRDIGluc3RlYWQKIAkgKi8KIAlmb3JfZWFjaF9jcnRjKGRldiwgYykgewotCQlpID0gdG9f aW50ZWxfY3J0YyhjKTsKKwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZTsKIAogCQlp ZiAoYyA9PSAmaW50ZWxfY3J0Yy0+YmFzZSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICghaS0+YWN0 aXZlKQorCQlpZiAoIXRvX2ludGVsX2NydGMoYyktPmFjdGl2ZSkKIAkJCWNvbnRpbnVlOwogCi0J CWZiID0gYy0+cHJpbWFyeS0+ZmI7Ci0JCWlmICghZmIpCisJCXN0YXRlID0gdG9faW50ZWxfcGxh bmVfc3RhdGUoYy0+cHJpbWFyeS0+c3RhdGUpOworCQlpZiAoIXN0YXRlLT52bWEpCiAJCQljb250 aW51ZTsKIAotCQlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwotCQlpZiAoaTkxNV9nZW1fb2JqZWN0 X2dndHRfb2Zmc2V0KG9iaiwgTlVMTCkgPT0gcGxhbmVfY29uZmlnLT5iYXNlKSB7CisJCWlmIChp OTE1X2dndHRfb2Zmc2V0KHN0YXRlLT52bWEpID09IHBsYW5lX2NvbmZpZy0+YmFzZSkgeworCQkJ ZmIgPSBjLT5wcmltYXJ5LT5mYjsKIAkJCWRybV9mcmFtZWJ1ZmZlcl9yZWZlcmVuY2UoZmIpOwog CQkJZ290byB2YWxpZF9mYjsKIAkJfQpAQCAtMjgwNSw2ICsyNzk5LDE5IEBAIGludGVsX2ZpbmRf aW5pdGlhbF9wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJcmV0dXJu OwogCiB2YWxpZF9mYjoKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaW50ZWxf c3RhdGUtPnZtYSA9CisJCWludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBwcmltYXJ5LT5z dGF0ZS0+cm90YXRpb24pOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlm IChJU19FUlIoaW50ZWxfc3RhdGUtPnZtYSkpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGlu IGJvb3QgZmIgb24gcGlwZSAlZDogJWxpXG4iLAorCQkJICBpbnRlbF9jcnRjLT5waXBlLCBQVFJf RVJSKGludGVsX3N0YXRlLT52bWEpKTsKKworCQlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsKKwkJ ZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKKwkJcmV0dXJuOworCX0KKwogCXBsYW5l X3N0YXRlLT5zcmNfeCA9IDA7CiAJcGxhbmVfc3RhdGUtPnNyY195ID0gMDsKIAlwbGFuZV9zdGF0 ZS0+c3JjX3cgPSBmYi0+d2lkdGggPDwgMTY7CkBAIC0zMDk3LDEzICszMTA0LDEzIEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFy eSwKIAlJOTE1X1dSSVRFKERTUFNUUklERShwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSks Ci0JCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCByb3RhdGlvbikgKworCQkJICAgaW50ZWxf cGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsKIAkJCSAgIGludGVsX2NydGMtPmRzcGFk ZHJfb2Zmc2V0KTsKIAkJSTkxNV9XUklURShEU1BUSUxFT0ZGKHBsYW5lKSwgKHkgPDwgMTYpIHwg eCk7CiAJCUk5MTVfV1JJVEUoRFNQTElOT0ZGKHBsYW5lKSwgbGluZWFyX29mZnNldCk7CiAJfSBl bHNlIHsKIAkJSTkxNV9XUklURShEU1BBRERSKHBsYW5lKSwKLQkJCSAgIGludGVsX2ZiX2d0dF9v ZmZzZXQoZmIsIHJvdGF0aW9uKSArCisJCQkgICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFu ZV9zdGF0ZSkgKwogCQkJICAgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQpOwogCX0KIAlQT1NU SU5HX1JFQUQocmVnKTsKQEAgLTMyMDAsNyArMzIwNyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAKIAlJOTE1 X1dSSVRFKERTUFNUUklERShwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKIAlJOTE1X1dSSVRFKERT UFNVUkYocGxhbmUpLAotCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCByb3RhdGlvbikgKwor CQkgICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKwogCQkgICBpbnRlbF9j cnRjLT5kc3BhZGRyX29mZnNldCk7CiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpIHsKIAkJSTkxNV9XUklURShEU1BPRkZTRVQocGxhbmUpLCAoeSA8 PCAxNikgfCB4KTsKQEAgLTMyMjMsMjMgKzMyMzAsNiBAQCB1MzIgaW50ZWxfZmJfc3RyaWRlX2Fs aWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJfQogfQog Ci11MzIgaW50ZWxfZmJfZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJ CXVuc2lnbmVkIGludCByb3RhdGlvbikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQlzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgdmlldzsKLQlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQotCWludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KCZ2aWV3LCBm Yiwgcm90YXRpb24pOwotCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X3RvX2dndHQob2JqLCAmdmll dyk7Ci0JaWYgKFdBUk4oIXZtYSwgImdndHQgdm1hIGZvciBkaXNwbGF5IG9iamVjdCBub3QgZm91 bmQhICh2aWV3PSV1KVxuIiwKLQkJIHZpZXcudHlwZSkpCi0JCXJldHVybiAtMTsKLQotCXJldHVy biBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7Ci19Ci0KIHN0YXRpYyB2b2lkIHNrbF9kZXRhY2hfc2Nh bGVyKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQgaWQpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2OwpAQCAtMzQzNSw3ICszNDI1LDcg QEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKIAl9CiAKIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgcGxhbmVfaWQp LAotCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCByb3RhdGlvbikgKyBzdXJmX2FkZHIpOwor CQkgICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBzdXJmX2FkZHIpOwog CiAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwgcGxhbmVfaWQpKTsKIH0KQEAgLTExNTY4 LDcgKzExNTU4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5waW5fd29ya19mbihzdHJ1Y3Qgd29y a19zdHJ1Y3QgKl9fd29yaykKIAkJZmx1c2hfd29yaygmd29yay0+bW1pb193b3JrKTsKIAogCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpbnRlbF91bnBpbl9mYl9vYmood29yay0+ b2xkX2ZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOworCWludGVsX3VucGluX2ZiX3ZtYSh3 b3JrLT5vbGRfdm1hKTsKIAlpOTE1X2dlbV9vYmplY3RfcHV0KHdvcmstPnBlbmRpbmdfZmxpcF9v YmopOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCkBAIC0xMjI3OCw4ICsx MjI2OCwxMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAkJZ290byBjbGVhbnVwX3BlbmRpbmc7CiAJfQogCi0Jd29yay0+Z3R0X29mZnNl dCA9IGludGVsX2ZiX2d0dF9vZmZzZXQoZmIsIHByaW1hcnktPnN0YXRlLT5yb3RhdGlvbik7Ci0J d29yay0+Z3R0X29mZnNldCArPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKKwl3b3JrLT5v bGRfdm1hID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52bWE7CisJdG9f aW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52bWEgPSB2bWE7CisKKwl3b3JrLT5n dHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9v ZmZzZXQ7CiAJd29yay0+cm90YXRpb24gPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb247 CiAKIAkvKgpAQCAtMTIzMzQsNyArMTIzMjYsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFn ZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIGNsZWFudXBfcmVxdWVzdDoKIAlpOTE1X2Fk ZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwogY2xlYW51cF91bnBpbjoKLQlpbnRlbF91bnBp bl9mYl9vYmooZmIsIGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbik7CisJdG9faW50ZWxf cGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52bWEgPSB3b3JrLT5vbGRfdm1hOworCWludGVs X3VucGluX2ZiX3ZtYSh2bWEpOwogY2xlYW51cF9wZW5kaW5nOgogCWF0b21pY19kZWMoJmludGVs X2NydGMtPnVucGluX3dvcmtfY291bnQpOwogdW5sb2NrOgpAQCAtMTQ4MzQsNiArMTQ4MjcsOCBA QCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJRFJN X0RFQlVHX0tNUygiZmFpbGVkIHRvIHBpbiBvYmplY3RcbiIpOwogCQkJcmV0dXJuIFBUUl9FUlIo dm1hKTsKIAkJfQorCisJCXRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19zdGF0ZSktPnZtYSA9IHZt YTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE0ODUyLDE5ICsxNDg0NywxMiBAQCB2b2lkCiBpbnRl bF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkgICAgICAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7Ci0Jc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpvbGRfaW50ZWxfc3RhdGU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9s ZF9vYmogPSBpbnRlbF9mYl9vYmoob2xkX3N0YXRlLT5mYik7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKTsKLQotCW9sZF9p bnRlbF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSk7Ci0KLQlpZiAoIW9i aiAmJiAhb2xkX29iaikKLQkJcmV0dXJuOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCi0JaWYg KG9sZF9vYmogJiYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUiB8fAotCSAg ICAhSU5URUxfSU5GTyhkZXZfcHJpdiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkpCi0JCWludGVs X3VucGluX2ZiX29iaihvbGRfc3RhdGUtPmZiLCBvbGRfc3RhdGUtPnJvdGF0aW9uKTsKKwkvKiBT aG91bGQgb25seSBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoKSEgKi8KKwl2bWEgPSBmZXRjaF9hbmRfemVybygmdG9faW50ZWxfcGxhbmVfc3RhdGUob2xk X3N0YXRlKS0+dm1hKTsKKwlpZiAodm1hKQorCQlpbnRlbF91bnBpbl9mYl92bWEodm1hKTsKIH0K IAogaW50CkBAIC0xNTAxNiw2ICsxNTAwNCw3IEBAIGludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xk X2ZiOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGNydGMtPnN0YXRlOwor CXN0cnVjdCBpOTE1X3ZtYSAqb2xkX3ZtYTsKIAogCS8qCiAJICogV2hlbiBjcnRjIGlzIGluYWN0 aXZlIG9yIHRoZXJlIGlzIGEgbW9kZXNldCBwZW5kaW5nLApAQCAtMTUwODcsOSArMTUwNzYsMTIg QEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQlyZXQgPSBQVFJfRVJSKHZtYSk7CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJCX0KKworCQl0b19p bnRlbF9wbGFuZV9zdGF0ZShuZXdfcGxhbmVfc3RhdGUpLT52bWEgPSB2bWE7CiAJfQogCiAJb2xk X2ZiID0gb2xkX3BsYW5lX3N0YXRlLT5mYjsKKwlvbGRfdm1hID0gdG9faW50ZWxfcGxhbmVfc3Rh dGUob2xkX3BsYW5lX3N0YXRlKS0+dm1hOwogCiAJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJf b2JqKG9sZF9mYiksIGludGVsX2ZiX29iaihmYiksCiAJCQkgIGludGVsX3BsYW5lLT5mcm9udGJ1 ZmZlcl9iaXQpOwpAQCAtMTUzMzcsNyArMTUzMjksNyBAQCBpbnRlbF91cGRhdGVfY3Vyc29yX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWlmICghb2JqKQogCQlhZGRyID0gMDsKIAll bHNlIGlmICghSU5URUxfSU5GTyhkZXZfcHJpdiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkKLQkJ YWRkciA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChvYmosIE5VTEwpOworCQlhZGRyID0g aTkxNV9nZ3R0X29mZnNldChzdGF0ZS0+dm1hKTsKIAllbHNlCiAJCWFkZHIgPSBvYmotPnBoeXNf aGFuZGxlLT5idXNhZGRyOwogCkBAIC0xNzIzNiw0MSArMTcyMjgsMTIgQEAgdm9pZCBpbnRlbF9k aXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogdm9pZCBpbnRlbF9tb2Rlc2V0 X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBkcm1fY3J0YyAqYzsKLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCiAJaW50ZWxfaW5pdF9ndF9wb3dlcnNh dmUoZGV2X3ByaXYpOwogCiAJaW50ZWxfbW9kZXNldF9pbml0X2h3KGRldik7CiAKIAlpbnRlbF9z ZXR1cF9vdmVybGF5KGRldl9wcml2KTsKLQotCS8qCi0JICogTWFrZSBzdXJlIGFueSBmYnMgd2Ug YWxsb2NhdGVkIGF0IHN0YXJ0dXAgYXJlIHByb3Blcmx5Ci0JICogcGlubmVkICYgZmVuY2VkLiAg V2hlbiB3ZSBkbyB0aGUgYWxsb2NhdGlvbiBpdCdzIHRvbyBlYXJseQotCSAqIGZvciB0aGlzLgot CSAqLwotCWZvcl9lYWNoX2NydGMoZGV2LCBjKSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwot Ci0JCW9iaiA9IGludGVsX2ZiX29iaihjLT5wcmltYXJ5LT5mYik7Ci0JCWlmIChvYmogPT0gTlVM TCkKLQkJCWNvbnRpbnVlOwotCi0JCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQkJ dm1hID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooYy0+cHJpbWFyeS0+ZmIsCi0JCQkJCQkg Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Ci0JCWlmIChJU19FUlIodm1hKSkgewotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g cGluIGJvb3QgZmIgb24gcGlwZSAlZFxuIiwKLQkJCQkgIHRvX2ludGVsX2NydGMoYyktPnBpcGUp OwotCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGMtPnByaW1hcnktPmZiKTsKLQkJCWMt PnByaW1hcnktPmZiID0gTlVMTDsKLQkJCWMtPnByaW1hcnktPmNydGMgPSBjLT5wcmltYXJ5LT5z dGF0ZS0+Y3J0YyA9IE5VTEw7Ci0JCQl1cGRhdGVfc3RhdGVfZmIoYy0+cHJpbWFyeSk7Ci0JCQlj LT5zdGF0ZS0+cGxhbmVfbWFzayAmPSB+KDEgPDwgZHJtX3BsYW5lX2luZGV4KGMtPnByaW1hcnkp KTsKLQkJfQotCX0KIH0KIAogaW50IGludGVsX2Nvbm5lY3Rvcl9yZWdpc3RlcihzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA1ZWUx NzE5YTI0MjQuLjQ1ODhiOGIwMWZlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTM3 Niw2ICszNzYsNyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSB7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBiYXNlOwogCXN0cnVjdCBkcm1f cmVjdCBjbGlwOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCiAJc3RydWN0IHsKIAkJdTMyIG9m ZnNldDsKQEAgLTEwNjcsNiArMTA2OCw3IEBAIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgewogCXN0 cnVjdCB3b3JrX3N0cnVjdCBtbWlvX3dvcms7CiAKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJ c3RydWN0IGk5MTVfdm1hICpvbGRfdm1hOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9m YjsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqcGVuZGluZ19mbGlwX29iajsKIAlzdHJ1 Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKQEAgLTEzMDIsNyArMTMwNCw3IEBA IHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCiAJCQkJICAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4 KTsKIHN0cnVjdCBpOTE1X3ZtYSAqCiBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKTsKLXZvaWQgaW50ZWxf dW5waW5fZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90 YXRpb24pOwordm9pZCBpbnRlbF91bnBpbl9mYl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpOwog c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCiBfX2ludGVsX2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVf Y21kLApAQCAtMTM5MSw3ICsxMzkzLDEwIEBAIHZvaWQgaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29u ZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogaW50IHNrbF91cGRhdGVfc2NhbGVy X2NydGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogaW50IHNrbF9tYXhf c2NhbGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKIAotdTMyIGludGVsX2ZiX2d0dF9vZmZzZXQoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIHVuc2lnbmVkIGludCByb3RhdGlvbik7CitzdGF0aWMgaW5saW5lIHUzMiBpbnRl bF9wbGFuZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRl KQoreworCXJldHVybiBpOTE1X2dndHRfb2Zmc2V0KHN0YXRlLT52bWEpOworfQogCiB1MzIgc2ts X3BsYW5lX2N0bF9mb3JtYXQodWludDMyX3QgcGl4ZWxfZm9ybWF0KTsKIHUzMiBza2xfcGxhbmVf Y3RsX3RpbGluZyh1aW50NjRfdCBmYl9tb2RpZmllcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j CmluZGV4IDlhZWM2M2JjMzBmZi4uMDI2NzVkZTEwM2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyB2b2lkIGk4eHhfZmJjX2FjdGl2YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoSVNfSTk0NUdNKGRldl9wcml2 KSkKIAkJZmJjX2N0bCB8PSBGQkNfQ1RMX0MzX0lETEU7IC8qIDk0NSBuZWVkcyBzcGVjaWFsIFNS IGhhbmRsaW5nICovCiAJZmJjX2N0bCB8PSAoY2ZiX3BpdGNoICYgMHhmZikgPDwgRkJDX0NUTF9T VFJJREVfU0hJRlQ7Ci0JZmJjX2N0bCB8PSBwYXJhbXMtPmZiLmZlbmNlX3JlZzsKKwlmYmNfY3Rs IHw9IHBhcmFtcy0+dm1hLT5mZW5jZS0+aWQ7CiAJSTkxNV9XUklURShGQkNfQ09OVFJPTCwgZmJj X2N0bCk7CiB9CiAKQEAgLTE5Myw4ICsxOTMsOCBAQCBzdGF0aWMgdm9pZCBnNHhfZmJjX2FjdGl2 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbHNlCiAJCWRwZmNfY3Rs IHw9IERQRkNfQ1RMX0xJTUlUXzFYOwogCi0JaWYgKHBhcmFtcy0+ZmIuZmVuY2VfcmVnICE9IEk5 MTVfRkVOQ0VfUkVHX05PTkUpIHsKLQkJZHBmY19jdGwgfD0gRFBGQ19DVExfRkVOQ0VfRU4gfCBw YXJhbXMtPmZiLmZlbmNlX3JlZzsKKwlpZiAocGFyYW1zLT52bWEtPmZlbmNlKSB7CisJCWRwZmNf Y3RsIHw9IERQRkNfQ1RMX0ZFTkNFX0VOIHwgcGFyYW1zLT52bWEtPmZlbmNlLT5pZDsKIAkJSTkx NV9XUklURShEUEZDX0ZFTkNFX1lPRkYsIHBhcmFtcy0+Y3J0Yy5mZW5jZV95X29mZnNldCk7CiAJ fSBlbHNlIHsKIAkJSTkxNV9XUklURShEUEZDX0ZFTkNFX1lPRkYsIDApOwpAQCAtMjUxLDEzICsy NTEsMTQgQEAgc3RhdGljIHZvaWQgaWxrX2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCWJyZWFrOwogCX0KIAotCWlmIChwYXJhbXMtPmZiLmZlbmNlX3Jl ZyAhPSBJOTE1X0ZFTkNFX1JFR19OT05FKSB7CisJaWYgKHBhcmFtcy0+dm1hLT5mZW5jZSkgewog CQlkcGZjX2N0bCB8PSBEUEZDX0NUTF9GRU5DRV9FTjsKIAkJaWYgKElTX0dFTjUoZGV2X3ByaXYp KQotCQkJZHBmY19jdGwgfD0gcGFyYW1zLT5mYi5mZW5jZV9yZWc7CisJCQlkcGZjX2N0bCB8PSBw YXJhbXMtPnZtYS0+ZmVuY2UtPmlkOwogCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKIAkJCUk5 MTVfV1JJVEUoU05CX0RQRkNfQ1RMX1NBLAotCQkJCSAgIFNOQl9DUFVfRkVOQ0VfRU5BQkxFIHwg cGFyYW1zLT5mYi5mZW5jZV9yZWcpOworCQkJCSAgIFNOQl9DUFVfRkVOQ0VfRU5BQkxFIHwKKwkJ CQkgICBwYXJhbXMtPnZtYS0+ZmVuY2UtPmlkKTsKIAkJCUk5MTVfV1JJVEUoRFBGQ19DUFVfRkVO Q0VfT0ZGU0VULAogCQkJCSAgIHBhcmFtcy0+Y3J0Yy5mZW5jZV95X29mZnNldCk7CiAJCX0KQEAg LTI2OSw3ICsyNzAsOCBAQCBzdGF0aWMgdm9pZCBpbGtfZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9CiAKIAlJOTE1X1dSSVRFKElMS19EUEZDX0ZFTkNF X1lPRkYsIHBhcmFtcy0+Y3J0Yy5mZW5jZV95X29mZnNldCk7Ci0JSTkxNV9XUklURShJTEtfRkJD X1JUX0JBU0UsIHBhcmFtcy0+ZmIuZ2d0dF9vZmZzZXQgfCBJTEtfRkJDX1JUX1ZBTElEKTsKKwlJ OTE1X1dSSVRFKElMS19GQkNfUlRfQkFTRSwKKwkJICAgaTkxNV9nZ3R0X29mZnNldChwYXJhbXMt PnZtYSkgfCBJTEtfRkJDX1JUX1ZBTElEKTsKIAkvKiBlbmFibGUgaXQuLi4gKi8KIAlJOTE1X1dS SVRFKElMS19EUEZDX0NPTlRST0wsIGRwZmNfY3RsIHwgRFBGQ19DVExfRU4pOwogCkBAIC0zMTks MTAgKzMyMSwxMSBAQCBzdGF0aWMgdm9pZCBnZW43X2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWJyZWFrOwogCX0KIAotCWlmIChwYXJhbXMtPmZiLmZl bmNlX3JlZyAhPSBJOTE1X0ZFTkNFX1JFR19OT05FKSB7CisJaWYgKHBhcmFtcy0+dm1hLT5mZW5j ZSkgewogCQlkcGZjX2N0bCB8PSBJVkJfRFBGQ19DVExfRkVOQ0VfRU47CiAJCUk5MTVfV1JJVEUo U05CX0RQRkNfQ1RMX1NBLAotCQkJICAgU05CX0NQVV9GRU5DRV9FTkFCTEUgfCBwYXJhbXMtPmZi LmZlbmNlX3JlZyk7CisJCQkgICBTTkJfQ1BVX0ZFTkNFX0VOQUJMRSB8CisJCQkgICBwYXJhbXMt PnZtYS0+ZmVuY2UtPmlkKTsKIAkJSTkxNV9XUklURShEUEZDX0NQVV9GRU5DRV9PRkZTRVQsIHBh cmFtcy0+Y3J0Yy5mZW5jZV95X29mZnNldCk7CiAJfSBlbHNlIHsKIAkJSTkxNV9XUklURShTTkJf RFBGQ19DVExfU0EsMCk7CkBAIC03MjcsMTQgKzczMCw2IEBAIHN0YXRpYyBib29sIGludGVsX2Zi Y19od190cmFja2luZ19jb3ZlcnNfc2NyZWVuKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXJl dHVybiBlZmZlY3RpdmVfdyA8PSBtYXhfdyAmJiBlZmZlY3RpdmVfaCA8PSBtYXhfaDsKIH0KIAot LyogWFhYIHJlcGxhY2UgbWUgd2hlbiB3ZSBoYXZlIFZNQSB0cmFja2luZyBmb3IgaW50ZWxfcGxh bmVfc3RhdGUgKi8KLXN0YXRpYyBpbnQgZ2V0X2ZlbmNlX2lkKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiKQotewotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gaTkxNV9nZW1fb2JqZWN0X3RvX2dn dHQoaW50ZWxfZmJfb2JqKGZiKSwgTlVMTCk7Ci0KLQlyZXR1cm4gdm1hICYmIHZtYS0+ZmVuY2Ug PyB2bWEtPmZlbmNlLT5pZCA6IEk5MTVfRkVOQ0VfUkVHX05PTkU7Ci19Ci0KIHN0YXRpYyB2b2lk IGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJ CQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkJIHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCkBAIC03NDMsNyArNzM4LDggQEAgc3RhdGlj IHZvaWQgaW50ZWxfZmJjX3VwZGF0ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKIAlzdHJ1Y3QgaW50 ZWxfZmJjX3N0YXRlX2NhY2hlICpjYWNoZSA9ICZmYmMtPnN0YXRlX2NhY2hlOwogCXN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Ci0Jc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKKworCWNhY2hlLT52bWEgPSBOVUxMOwogCiAJY2FjaGUtPmNy dGMubW9kZV9mbGFncyA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFnczsKIAlp ZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKQEAgLTc1 OCwxNiArNzU0LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUo c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJaWYgKCFjYWNoZS0+cGxhbmUudmlzaWJsZSkKIAkJ cmV0dXJuOwogCi0Jb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKLQotCS8qIEZJWE1FOiBXZSBsYWNr IHRoZSBwcm9wZXIgbG9ja2luZyBoZXJlLCBzbyBvbmx5IHJ1biB0aGlzIG9uIHRoZQotCSAqIHBs YXRmb3JtcyB0aGF0IG5lZWQuICovCi0JaWYgKElTX0dFTihkZXZfcHJpdiwgNSwgNikpCi0JCWNh Y2hlLT5mYi5pbGtfZ2d0dF9vZmZzZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9vZmZzZXQob2Jq LCBOVUxMKTsKIAljYWNoZS0+ZmIuZm9ybWF0ID0gZmItPmZvcm1hdDsKIAljYWNoZS0+ZmIuc3Ry aWRlID0gZmItPnBpdGNoZXNbMF07Ci0JY2FjaGUtPmZiLmZlbmNlX3JlZyA9IGdldF9mZW5jZV9p ZChmYik7Ci0JY2FjaGUtPmZiLnRpbGluZ19tb2RlID0gaTkxNV9nZW1fb2JqZWN0X2dldF90aWxp bmcob2JqKTsKKworCWNhY2hlLT52bWEgPSBwbGFuZV9zdGF0ZS0+dm1hOwogfQogCiBzdGF0aWMg Ym9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQpAQCAt Nzg0LDcgKzc3NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAoIWNhY2hlLT5w bGFuZS52aXNpYmxlKSB7CisJaWYgKCFjYWNoZS0+dm1hKSB7CiAJCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJwcmltYXJ5IHBsYW5lIG5vdCB2aXNpYmxlIjsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAg LTgwNyw4ICs3OTcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQogCSAqIHNvIGhhdmUgbm8gZmVuY2UgYXNzb2NpYXRlZCB3aXRo IGl0KSBkdWUgdG8gYXBlcnR1cmUgY29uc3RhaW50cwogCSAqIGF0IHRoZSB0aW1lIG9mIHBpbm5p bmcuCiAJICovCi0JaWYgKGNhY2hlLT5mYi50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19YIHx8 Ci0JICAgIGNhY2hlLT5mYi5mZW5jZV9yZWcgPT0gSTkxNV9GRU5DRV9SRUdfTk9ORSkgeworCWlm ICghY2FjaGUtPnZtYS0+ZmVuY2UpIHsKIAkJZmJjLT5ub19mYmNfcmVhc29uID0gImZyYW1lYnVm ZmVyIG5vdCB0aWxlZCBvciBmZW5jZWQiOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtODg4LDE3 ICs4NzcsMTYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX2dldF9yZWdfcGFyYW1zKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogCSAqIHplcm8uICovCiAJbWVtc2V0KHBhcmFtcywgMCwgc2l6ZW9m KCpwYXJhbXMpKTsKIAorCXBhcmFtcy0+dm1hID0gY2FjaGUtPnZtYTsKKwogCXBhcmFtcy0+Y3J0 Yy5waXBlID0gY3J0Yy0+cGlwZTsKIAlwYXJhbXMtPmNydGMucGxhbmUgPSBjcnRjLT5wbGFuZTsK IAlwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZzZXQgPSBnZXRfY3J0Y19mZW5jZV95X29mZnNldChj cnRjKTsKIAogCXBhcmFtcy0+ZmIuZm9ybWF0ID0gY2FjaGUtPmZiLmZvcm1hdDsKIAlwYXJhbXMt PmZiLnN0cmlkZSA9IGNhY2hlLT5mYi5zdHJpZGU7Ci0JcGFyYW1zLT5mYi5mZW5jZV9yZWcgPSBj YWNoZS0+ZmIuZmVuY2VfcmVnOwogCiAJcGFyYW1zLT5jZmJfc2l6ZSA9IGludGVsX2ZiY19jYWxj dWxhdGVfY2ZiX3NpemUoZGV2X3ByaXYsIGNhY2hlKTsKLQotCXBhcmFtcy0+ZmIuZ2d0dF9vZmZz ZXQgPSBjYWNoZS0+ZmIuaWxrX2dndHRfb2Zmc2V0OwogfQogCiBzdGF0aWMgYm9vbCBpbnRlbF9m YmNfcmVnX3BhcmFtc19lcXVhbChzdHJ1Y3QgaW50ZWxfZmJjX3JlZ19wYXJhbXMgKnBhcmFtczEs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCA3M2QwMmQyMWM3NjguLjFlNmYxMzY2 NDk4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCkBAIC0yODQsNyArMjg0LDcgQEAg c3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAog b3V0X2Rlc3Ryb3lfZmJpOgogCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsKIG91 dF91bnBpbjoKLQlpbnRlbF91bnBpbl9mYl9vYmooJmlmYmRldi0+ZmItPmJhc2UsIERSTV9ST1RB VEVfMCk7CisJaW50ZWxfdW5waW5fZmJfdm1hKHZtYSk7CiBvdXRfdW5sb2NrOgogCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCXJldHVybiByZXQ7CkBAIC01NDksNyArNTQ5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZmJkZXZfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZmJkZXYgKmlm YmRldikKIAogCWlmIChpZmJkZXYtPmZiKSB7CiAJCW11dGV4X2xvY2soJmlmYmRldi0+aGVscGVy LmRldi0+c3RydWN0X211dGV4KTsKLQkJaW50ZWxfdW5waW5fZmJfb2JqKCZpZmJkZXYtPmZiLT5i YXNlLCBEUk1fUk9UQVRFXzApOworCQlpbnRlbF91bnBpbl9mYl92bWEoaWZiZGV2LT52bWEpOwog CQltdXRleF91bmxvY2soJmlmYmRldi0+aGVscGVyLmRldi0+c3RydWN0X211dGV4KTsKIAogCQlk cm1fZnJhbWVidWZmZXJfcmVtb3ZlKCZpZmJkZXYtPmZiLT5iYXNlKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKaW5kZXggNzAzMWJjNzMzZDk3Li45ZWY1NDY4ODg3MmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0yNzMsNyArMjczLDcgQEAgc2tsX3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCiAKIAlJOTE1X1dSSVRFKFBMQU5FX0NU TChwaXBlLCBwbGFuZV9pZCksIHBsYW5lX2N0bCk7CiAJSTkxNV9XUklURShQTEFORV9TVVJGKHBp cGUsIHBsYW5lX2lkKSwKLQkJICAgaW50ZWxfZmJfZ3R0X29mZnNldChmYiwgcm90YXRpb24pICsg c3VyZl9hZGRyKTsKKwkJICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsg c3VyZl9hZGRyKTsKIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZV9pZCkpOwog fQogCkBAIC00NTgsNyArNDU4LDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpkcGxhbmUsCiAJSTkxNV9XUklURShTUFNJWkUocGlwZSwgcGxhbmVfaWQpLCAoY3J0Y19oIDw8 IDE2KSB8IGNydGNfdyk7CiAJSTkxNV9XUklURShTUENOVFIocGlwZSwgcGxhbmVfaWQpLCBzcHJj dGwpOwogCUk5MTVfV1JJVEUoU1BTVVJGKHBpcGUsIHBsYW5lX2lkKSwKLQkJICAgaW50ZWxfZmJf Z3R0X29mZnNldChmYiwgcm90YXRpb24pICsgc3Byc3VyZl9vZmZzZXQpOworCQkgICBpbnRlbF9w bGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBzcHJzdXJmX29mZnNldCk7CiAJUE9TVElO R19SRUFEKFNQU1VSRihwaXBlLCBwbGFuZV9pZCkpOwogfQogCkBAIC01OTQsNyArNTk0LDcgQEAg aXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJSTkxNV9XUklURShT UFJTQ0FMRShwaXBlKSwgc3Byc2NhbGUpOwogCUk5MTVfV1JJVEUoU1BSQ1RMKHBpcGUpLCBzcHJj dGwpOwogCUk5MTVfV1JJVEUoU1BSU1VSRihwaXBlKSwKLQkJICAgaW50ZWxfZmJfZ3R0X29mZnNl dChmYiwgcm90YXRpb24pICsgc3Byc3VyZl9vZmZzZXQpOworCQkgICBpbnRlbF9wbGFuZV9nZ3R0 X29mZnNldChwbGFuZV9zdGF0ZSkgKyBzcHJzdXJmX29mZnNldCk7CiAJUE9TVElOR19SRUFEKFNQ UlNVUkYocGlwZSkpOwogfQogCkBAIC03MjEsNyArNzIxLDcgQEAgaWxrX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlJOTE1X1dSSVRFKERWU1NDQUxFKHBpcGUpLCBkdnNz Y2FsZSk7CiAJSTkxNV9XUklURShEVlNDTlRSKHBpcGUpLCBkdnNjbnRyKTsKIAlJOTE1X1dSSVRF KERWU1NVUkYocGlwZSksCi0JCSAgIGludGVsX2ZiX2d0dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSAr IGR2c3N1cmZfb2Zmc2V0KTsKKwkJICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3Rh dGUpICsgZHZzc3VyZl9vZmZzZXQpOwogCVBPU1RJTkdfUkVBRChEVlNTVVJGKHBpcGUpKTsKIH0K IAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=