From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 3/5] drm/i915: Track pinned vma in intel_plane_state Date: Tue, 15 Nov 2016 08:58:15 +0000 Message-ID: <20161115085817.4210-3-chris@chris-wilson.co.uk> References: <20161115085817.4210-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 mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id B69096E153 for ; Tue, 15 Nov 2016 08:58:23 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id u144so23401784wmu.0 for ; Tue, 15 Nov 2016 00:58:23 -0800 (PST) In-Reply-To: <20161115085817.4210-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 V2l0aCBhdG9taWMgcGxhbmUgc3RhdGVzIHdlIGFyZSBhYmxlIHRvIHRyYWNrIGFuIGFsbG9jYXRp b24gcmlnaHQgZnJvbQpwcmVwYXJhdGlvbiwgZHVyaW5nIHVzZSBhbmQgdGhyb3VnaCB0byB0aGUg ZmluYWwgZnJlZSBhZnRlciBiZWluZwpzd2FwcGVkIG91dCBmb3IgYSBuZXcgcGxhbmUuIFdlIGNh biBjb3VwbGUgdGhlIFZNQSB3ZSBwaW4gZm9yIHRoZQpmcmFtZWJ1ZmZlciAoYW5kIGl0cyByb3Rh dGlvbikgdG8gdGhpcyBsaWZldGltZSBhbmQgYXZvaWQgYWxsIHRoZSBjbHVtc3kKbG9va3VwcyBp biBiZXR3ZWVuLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAg fCAxNiArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAg MiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8IDk3ICsrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICAgICAgIHwgIDkgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAg ICAgICAgICB8IDUyICsrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmRldi5jICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyAgICAgICB8ICA4ICstLQogNyBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCAx MTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNGU3MTQ4YTNlZThi Li4yYmMyODVlMmZmODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtOTg5LDYgKzk4OSw4 IEBAIHN0cnVjdCBpbnRlbF9mYmMgewogCXN0cnVjdCB3b3JrX3N0cnVjdCB1bmRlcnJ1bl93b3Jr OwogCiAJc3RydWN0IGludGVsX2ZiY19zdGF0ZV9jYWNoZSB7CisJCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOworCiAJCXN0cnVjdCB7CiAJCQl1bnNpZ25lZCBpbnQgbW9kZV9mbGFnczsKIAkJCXVpbnQz Ml90IGhzd19iZHdfcGl4ZWxfcmF0ZTsKQEAgLTEwMDIsMTUgKzEwMDQsMTQgQEAgc3RydWN0IGlu dGVsX2ZiYyB7CiAJCX0gcGxhbmU7CiAKIAkJc3RydWN0IHsKLQkJCXU2NCBpbGtfZ2d0dF9vZmZz ZXQ7CiAJCQl1aW50MzJfdCBwaXhlbF9mb3JtYXQ7CiAJCQl1bnNpZ25lZCBpbnQgc3RyaWRlOwot CQkJaW50IGZlbmNlX3JlZzsKLQkJCXVuc2lnbmVkIGludCB0aWxpbmdfbW9kZTsKIAkJfSBmYjsK IAl9IHN0YXRlX2NhY2hlOwogCiAJc3RydWN0IGludGVsX2ZiY19yZWdfcGFyYW1zIHsKKwkJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CisKIAkJc3RydWN0IHsKIAkJCWVudW0gcGlwZSBwaXBlOwogCQkJ ZW51bSBwbGFuZSBwbGFuZTsKQEAgLTEwMTgsMTAgKzEwMTksOCBAQCBzdHJ1Y3QgaW50ZWxfZmJj IHsKIAkJfSBjcnRjOwogCiAJCXN0cnVjdCB7Ci0JCQl1NjQgZ2d0dF9vZmZzZXQ7CiAJCQl1aW50 MzJfdCBwaXhlbF9mb3JtYXQ7CiAJCQl1bnNpZ25lZCBpbnQgc3RyaWRlOwotCQkJaW50IGZlbmNl X3JlZzsKIAkJfSBmYjsKIAogCQlpbnQgY2ZiX3NpemU7CkBAIC0zMTUwLDEzICszMTQ5LDYgQEAg aTkxNV9nZW1fb2JqZWN0X3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IAlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmosICZ0b19pOTE1KG9iai0+YmFzZS5kZXYp LT5nZ3R0LmJhc2UsIHZpZXcpOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKLWk5 MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywK LQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCi17Ci0JcmV0dXJuIGk5 MTVfZ2d0dF9vZmZzZXQoaTkxNV9nZW1fb2JqZWN0X3RvX2dndHQobywgdmlldykpOwotfQotCiAv KiBpOTE1X2dlbV9mZW5jZV9yZWcuYyAqLwogaW50IF9fbXVzdF9jaGVjayBpOTE1X3ZtYV9nZXRf ZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwogaW50IF9fbXVzdF9jaGVjayBpOTE1X3ZtYV9w dXRfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYwppbmRleCA4OWEzNDM1MGEzNWQuLjVhODZlMGQ1MjQwOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTg1LDYgKzg1LDggQEAg aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCiAJ X19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsIHN0YXRlKTsK IAorCWludGVsX3N0YXRlLT52bWEgPSBOVUxMOworCiAJcmV0dXJuIHN0YXRlOwogfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZGNhMWUwYjUxMmU1Li5jYjUyMTE2Zjg1 NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTIyNDEsMjQgKzIyNDEs MTkgQEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsIHVuc2lnbmVkIGludCByb3RhdGlvbikKIAkJCWk5MTVfdm1hX3Bpbl9mZW5jZSh2bWEpOwog CX0KIAorCWk5MTVfdm1hX2dldCh2bWEpOwogZXJyOgogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKIAlyZXR1cm4gdm1hOwogfQogCi12b2lkIGludGVsX3VucGluX2ZiX29iaihzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKQordm9pZCBpbnRl bF91bnBpbl9mYl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Ci0Jc3RydWN0IGk5MTVfZ2d0dF92 aWV3IHZpZXc7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0KLQlXQVJOX09OKCFtdXRleF9pc19s b2NrZWQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpOwotCi0JaW50ZWxfZmlsbF9mYl9n Z3R0X3ZpZXcoJnZpZXcsIGZiLCByb3RhdGlvbik7Ci0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X3Rv X2dndHQob2JqLCAmdmlldyk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+ZGV2LT5z dHJ1Y3RfbXV0ZXgpOwogCiAJaTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKIAlpOTE1X2dlbV9v YmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHZtYSk7CisJaTkxNV92bWFfcHV0KHZtYSk7 CiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfZmJfcGl0Y2goY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCBwbGFuZSwKQEAgLTI3NTIsNyArMjc0Nyw2IEBAIGludGVsX2ZpbmRfaW5p dGlhbF9wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmM7Ci0J c3RydWN0IGludGVsX2NydGMgKmk7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK IAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gaW50ZWxfY3J0Yy0+YmFzZS5wcmltYXJ5Owog CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gcHJpbWFyeS0+c3RhdGU7CkBA IC0yNzc3LDIwICsyNzcxLDIwIEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJICogYW4gZmIgd2l0aCBhbm90aGVyIENSVEMgaW5z dGVhZAogCSAqLwogCWZvcl9lYWNoX2NydGMoZGV2LCBjKSB7Ci0JCWkgPSB0b19pbnRlbF9jcnRj KGMpOworCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlOwogCiAJCWlmIChjID09ICZp bnRlbF9jcnRjLT5iYXNlKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFpLT5hY3RpdmUpCisJCWlm ICghdG9faW50ZWxfY3J0YyhjKS0+YWN0aXZlKQogCQkJY29udGludWU7CiAKLQkJZmIgPSBjLT5w cmltYXJ5LT5mYjsKLQkJaWYgKCFmYikKKwkJc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShj LT5wcmltYXJ5LT5zdGF0ZSk7CisJCWlmICghc3RhdGUtPnZtYSkKIAkJCWNvbnRpbnVlOwogCi0J CW9iaiA9IGludGVsX2ZiX29iaihmYik7Ci0JCWlmIChpOTE1X2dlbV9vYmplY3RfZ2d0dF9vZmZz ZXQob2JqLCBOVUxMKSA9PSBwbGFuZV9jb25maWctPmJhc2UpIHsKKwkJaWYgKGk5MTVfZ2d0dF9v ZmZzZXQoc3RhdGUtPnZtYSkgPT0gcGxhbmVfY29uZmlnLT5iYXNlKSB7CisJCQlmYiA9IGMtPnBy aW1hcnktPmZiOwogCQkJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5jZShmYik7CiAJCQlnb3RvIHZh bGlkX2ZiOwogCQl9CkBAIC0yODMwLDYgKzI4MjQsMTIgQEAgaW50ZWxfZmluZF9pbml0aWFsX3Bs YW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAogCWRybV9mcmFtZWJ1ZmZl cl9yZWZlcmVuY2UoZmIpOwogCXByaW1hcnktPmZiID0gcHJpbWFyeS0+c3RhdGUtPmZiID0gZmI7 CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaW50ZWxfc3RhdGUtPnZtYSA9 CisJCWludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRp b24pOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCiAJcHJpbWFyeS0+Y3J0 YyA9IHByaW1hcnktPnN0YXRlLT5jcnRjID0gJmludGVsX2NydGMtPmJhc2U7CiAJaW50ZWxfY3J0 Yy0+YmFzZS5zdGF0ZS0+cGxhbmVfbWFzayB8PSAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocHJpbWFy eSkpOwogCWF0b21pY19vcih0b19pbnRlbF9wbGFuZShwcmltYXJ5KS0+ZnJvbnRidWZmZXJfYml0 LApAQCAtMzEwNCwxMyArMzEwNCwxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAJSTkxNV9XUklURShEU1BTVFJJREUo cGxhbmUpLCBmYi0+cGl0Y2hlc1swXSk7CiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQp IHsKIAkJSTkxNV9XUklURShEU1BTVVJGKHBsYW5lKSwKLQkJCSAgIGludGVsX2ZiX2d0dF9vZmZz ZXQoZmIsIHJvdGF0aW9uKSArCisJCQkgICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9z dGF0ZSkgKwogCQkJICAgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQpOwogCQlJOTE1X1dSSVRF KERTUFRJTEVPRkYocGxhbmUpLCAoeSA8PCAxNikgfCB4KTsKIAkJSTkxNV9XUklURShEU1BMSU5P RkYocGxhbmUpLCBsaW5lYXJfb2Zmc2V0KTsKIAl9IGVsc2UgewogCQlJOTE1X1dSSVRFKERTUEFE RFIocGxhbmUpLAotCQkJICAgaW50ZWxfZmJfZ3R0X29mZnNldChmYiwgcm90YXRpb24pICsKKwkJ CSAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCiAJCQkgICBpbnRlbF9j cnRjLT5kc3BhZGRyX29mZnNldCk7CiAJfQogCVBPU1RJTkdfUkVBRChyZWcpOwpAQCAtMzIwNyw3 ICszMjA3LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAogCUk5MTVfV1JJVEUoRFNQU1RSSURFKHBsYW5lKSwg ZmItPnBpdGNoZXNbMF0pOwogCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSksCi0JCSAgIGludGVs X2ZiX2d0dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSArCisJCSAgIGludGVsX3BsYW5lX2dndHRfb2Zm c2V0KHBsYW5lX3N0YXRlKSArCiAJCSAgIGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKIAlp ZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQlJ OTE1X1dSSVRFKERTUE9GRlNFVChwbGFuZSksICh5IDw8IDE2KSB8IHgpOwpAQCAtMzIzMCwyMyAr MzIzMCw2IEBAIHUzMiBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiB9CiAKLXUzMiBpbnRlbF9mYl9ndHRfb2Zmc2V0 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAotCQkJdW5zaWduZWQgaW50IHJvdGF0aW9uKQot ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwot CXN0cnVjdCBpOTE1X2dndHRfdmlldyB2aWV3OwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCi0J aW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoJnZpZXcsIGZiLCByb3RhdGlvbik7Ci0KLQl2bWEgPSBp OTE1X2dlbV9vYmplY3RfdG9fZ2d0dChvYmosICZ2aWV3KTsKLQlpZiAoV0FSTighdm1hLCAiZ2d0 dCB2bWEgZm9yIGRpc3BsYXkgb2JqZWN0IG5vdCBmb3VuZCEgKHZpZXc9JXUpXG4iLAotCQkgdmll dy50eXBlKSkKLQkJcmV0dXJuIC0xOwotCi0JcmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsK LX0KLQogc3RhdGljIHZvaWQgc2tsX2RldGFjaF9zY2FsZXIoc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsIGludCBpZCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0 Yy0+YmFzZS5kZXY7CkBAIC0zNDQ3LDcgKzM0MzAsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCX0KIAogCUk5MTVf V1JJVEUoUExBTkVfU1VSRihwaXBlLCAwKSwKLQkJICAgaW50ZWxfZmJfZ3R0X29mZnNldChmYiwg cm90YXRpb24pICsgc3VyZl9hZGRyKTsKKwkJICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxh bmVfc3RhdGUpICsgc3VyZl9hZGRyKTsKIAogCVBPU1RJTkdfUkVBRChQTEFORV9TVVJGKHBpcGUs IDApKTsKIH0KQEAgLTExNTc2LDcgKzExNTU5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5waW5f d29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKIAkJZmx1c2hfd29yaygmd29yay0+ bW1pb193b3JrKTsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpbnRlbF91 bnBpbl9mYl9vYmood29yay0+b2xkX2ZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOworCWlu dGVsX3VucGluX2ZiX3ZtYSh3b3JrLT5vbGRfdm1hKTsKIAlpOTE1X2dlbV9vYmplY3RfcHV0KHdv cmstPnBlbmRpbmdfZmxpcF9vYmopOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCkBAIC0xMjI4Niw4ICsxMjI2OSwxMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJZ290byBjbGVhbnVwX3BlbmRpbmc7CiAJfQog Ci0Jd29yay0+Z3R0X29mZnNldCA9IGludGVsX2ZiX2d0dF9vZmZzZXQoZmIsIHByaW1hcnktPnN0 YXRlLT5yb3RhdGlvbik7Ci0Jd29yay0+Z3R0X29mZnNldCArPSBpbnRlbF9jcnRjLT5kc3BhZGRy X29mZnNldDsKKwl3b3JrLT5vbGRfdm1hID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+ c3RhdGUpLT52bWE7CisJdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52bWEg PSB2bWE7CisKKwl3b3JrLT5ndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaW50 ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CiAJd29yay0+cm90YXRpb24gPSBjcnRjLT5wcmltYXJ5 LT5zdGF0ZS0+cm90YXRpb247CiAKIAkvKgpAQCAtMTIzNDAsNyArMTIzMjUsOCBAQCBzdGF0aWMg aW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIGNsZWFudXBf cmVxdWVzdDoKIAlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwogY2xlYW51cF91 bnBpbjoKLQlpbnRlbF91bnBpbl9mYl9vYmooZmIsIGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3Rh dGlvbik7CisJdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52bWEgPSB3b3Jr LT5vbGRfdm1hOworCWludGVsX3VucGluX2ZiX3ZtYSh2bWEpOwogY2xlYW51cF9wZW5kaW5nOgog CWF0b21pY19kZWMoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpOwogCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMTQyMzQsMTAgKzE0MjIwLDEwIEBAIGludGVsX3By ZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwogCiAJCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBuZXdfc3Rh dGUtPnJvdGF0aW9uKTsKLQkJaWYgKElTX0VSUih2bWEpKSB7Ci0JCQlEUk1fREVCVUdfS01TKCJm YWlsZWQgdG8gcGluIG9iamVjdFxuIik7Ci0JCQlyZXR1cm4gUFRSX0VSUih2bWEpOwotCQl9CisJ CWlmIChJU19FUlIodm1hKSkKKwkJCXJldCA9IFBUUl9FUlIodm1hKTsKKworCQl0b19pbnRlbF9w bGFuZV9zdGF0ZShuZXdfc3RhdGUpLT52bWEgPSB2bWE7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0x NDI1NiwxOSArMTQyNDIsMTIgQEAgc3RhdGljIHZvaWQKIGludGVsX2NsZWFudXBfcGxhbmVfZmIo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpvbGRfc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZS0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9pbnRlbF9z dGF0ZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGludGVsX2ZiX29i aihvbGRfc3RhdGUtPmZiKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50 ZWxfZmJfb2JqKHBsYW5lLT5zdGF0ZS0+ZmIpOwotCi0Jb2xkX2ludGVsX3N0YXRlID0gdG9faW50 ZWxfcGxhbmVfc3RhdGUob2xkX3N0YXRlKTsKLQotCWlmICghb2JqICYmICFvbGRfb2JqKQotCQly ZXR1cm47CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKLQlpZiAob2xkX29iaiAmJiAocGxhbmUt PnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SIHx8Ci0JICAgICFJTlRFTF9JTkZPKGRldl9w cml2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSkKLQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9z dGF0ZS0+ZmIsIG9sZF9zdGF0ZS0+cm90YXRpb24pOworCS8qIFNob3VsZCBvbmx5IGNhbGxlZCBh ZnRlciBhIHN1Y2Nlc3NmdWwgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYigpISAqLworCXZtYSA9IGZl dGNoX2FuZF96ZXJvKCZ0b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfc3RhdGUpLT52bWEpOworCWlm ICh2bWEpCisJCWludGVsX3VucGluX2ZiX3ZtYSh2bWEpOwogfQogCiBzdGF0aWMgaW50IGludGVs X2F0b21pY19jb21taXRfcHJlcGFyZV9wbGFuZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQpAQCAtMTUyMTUsNyArMTUxOTQsNyBAQCBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWlmICghb2JqKQogCQlhZGRyID0gMDsKIAllbHNlIGlm ICghSU5URUxfSU5GTyhkZXZfcHJpdiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkKLQkJYWRkciA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChvYmosIE5VTEwpOworCQlhZGRyID0gaTkxNV9n Z3R0X29mZnNldChzdGF0ZS0+dm1hKTsKIAllbHNlCiAJCWFkZHIgPSBvYmotPnBoeXNfaGFuZGxl LT5idXNhZGRyOwogCkBAIC0xNzEzNSw2ICsxNzExNCw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9n ZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJdXBkYXRlX3N0YXRlX2ZiKGMtPnBy aW1hcnkpOwogCQkJYy0+c3RhdGUtPnBsYW5lX21hc2sgJj0gfigxIDw8IGRybV9wbGFuZV9pbmRl eChjLT5wcmltYXJ5KSk7CiAJCX0KKworCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjLT5wcmltYXJ5 LT5zdGF0ZSktPnZtYSA9IHZtYTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggZmZmNTVkOTNjYTczLi5kM2QyNmQ2OTkzMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CkBAIC0zNzIsNiArMzcyLDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7CiBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgewogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgYmFzZTsKIAlzdHJ1 Y3QgZHJtX3JlY3QgY2xpcDsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAogCXN0cnVjdCB7CiAJ CXUzMiBvZmZzZXQ7CkBAIC0xMDQ2LDYgKzEwNDcsNyBAQCBzdHJ1Y3QgaW50ZWxfZmxpcF93b3Jr IHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbW1pb193b3JrOwogCiAJc3RydWN0IGRybV9jcnRjICpj cnRjOworCXN0cnVjdCBpOTE1X3ZtYSAqb2xkX3ZtYTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpvbGRfZmI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnBlbmRpbmdfZmxpcF9vYmo7 CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7CkBAIC0xMjczLDcgKzEy NzUsNyBAQCB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9j dHggKmN0eCk7CiBzdHJ1Y3QgaTkxNV92bWEgKgogaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmoo c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHVuc2lnbmVkIGludCByb3RhdGlvbik7Ci12b2lk IGludGVsX3VucGluX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgdW5zaWduZWQg aW50IHJvdGF0aW9uKTsKK3ZvaWQgaW50ZWxfdW5waW5fZmJfdm1hKHN0cnVjdCBpOTE1X3ZtYSAq dm1hKTsKIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgogX19pbnRlbF9mcmFtZWJ1ZmZlcl9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQy ICptb2RlX2NtZCwKQEAgLTEzNTgsNyArMTM2MCwxMCBAQCB2b2lkIGludGVsX21vZGVfZnJvbV9w aXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIGludCBza2xfdXBkYXRl X3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIGludCBz a2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSk7CiAKLXUzMiBpbnRlbF9mYl9ndHRfb2Zmc2V0KHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pOworc3RhdGljIGlubGluZSB1 MzIgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpzdGF0ZSkKK3sKKwlyZXR1cm4gaTkxNV9nZ3R0X29mZnNldChzdGF0ZS0+dm1hKTsKK30KIAog dTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCk7CiB1MzIgc2ts X3BsYW5lX2N0bF90aWxpbmcodWludDY0X3QgZmJfbW9kaWZpZXIpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwppbmRleCA2MmYyMTViMTJlYjUuLmYzYTFkNmE1Y2FiZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJjLmMKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCBpOHh4X2ZiY19hY3Rp dmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKElTX0k5NDVHTShk ZXZfcHJpdikpCiAJCWZiY19jdGwgfD0gRkJDX0NUTF9DM19JRExFOyAvKiA5NDUgbmVlZHMgc3Bl Y2lhbCBTUiBoYW5kbGluZyAqLwogCWZiY19jdGwgfD0gKGNmYl9waXRjaCAmIDB4ZmYpIDw8IEZC Q19DVExfU1RSSURFX1NISUZUOwotCWZiY19jdGwgfD0gcGFyYW1zLT5mYi5mZW5jZV9yZWc7CisJ ZmJjX2N0bCB8PSBwYXJhbXMtPnZtYS0+ZmVuY2UtPmlkOwogCUk5MTVfV1JJVEUoRkJDX0NPTlRS T0wsIGZiY19jdGwpOwogfQogCkBAIC0xOTMsOCArMTkzLDggQEAgc3RhdGljIHZvaWQgZzR4X2Zi Y19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZWxzZQogCQlk cGZjX2N0bCB8PSBEUEZDX0NUTF9MSU1JVF8xWDsKIAotCWlmIChwYXJhbXMtPmZiLmZlbmNlX3Jl ZyAhPSBJOTE1X0ZFTkNFX1JFR19OT05FKSB7Ci0JCWRwZmNfY3RsIHw9IERQRkNfQ1RMX0ZFTkNF X0VOIHwgcGFyYW1zLT5mYi5mZW5jZV9yZWc7CisJaWYgKHBhcmFtcy0+dm1hLT5mZW5jZSkgewor CQlkcGZjX2N0bCB8PSBEUEZDX0NUTF9GRU5DRV9FTiB8IHBhcmFtcy0+dm1hLT5mZW5jZS0+aWQ7 CiAJCUk5MTVfV1JJVEUoRFBGQ19GRU5DRV9ZT0ZGLCBwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZz ZXQpOwogCX0gZWxzZSB7CiAJCUk5MTVfV1JJVEUoRFBGQ19GRU5DRV9ZT0ZGLCAwKTsKQEAgLTI1 MSwxMyArMjUxLDE0IEBAIHN0YXRpYyB2b2lkIGlsa19mYmNfYWN0aXZhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlicmVhazsKIAl9CiAKLQlpZiAocGFyYW1zLT5mYi5m ZW5jZV9yZWcgIT0gSTkxNV9GRU5DRV9SRUdfTk9ORSkgeworCWlmIChwYXJhbXMtPnZtYS0+ZmVu Y2UpIHsKIAkJZHBmY19jdGwgfD0gRFBGQ19DVExfRkVOQ0VfRU47CiAJCWlmIChJU19HRU41KGRl dl9wcml2KSkKLQkJCWRwZmNfY3RsIHw9IHBhcmFtcy0+ZmIuZmVuY2VfcmVnOworCQkJZHBmY19j dGwgfD0gcGFyYW1zLT52bWEtPmZlbmNlLT5pZDsKIAkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7 CiAJCQlJOTE1X1dSSVRFKFNOQl9EUEZDX0NUTF9TQSwKLQkJCQkgICBTTkJfQ1BVX0ZFTkNFX0VO QUJMRSB8IHBhcmFtcy0+ZmIuZmVuY2VfcmVnKTsKKwkJCQkgICBTTkJfQ1BVX0ZFTkNFX0VOQUJM RSB8CisJCQkJICAgcGFyYW1zLT52bWEtPmZlbmNlLT5pZCk7CiAJCQlJOTE1X1dSSVRFKERQRkNf Q1BVX0ZFTkNFX09GRlNFVCwKIAkJCQkgICBwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZzZXQpOwog CQl9CkBAIC0yNjksNyArMjcwLDggQEAgc3RhdGljIHZvaWQgaWxrX2ZiY19hY3RpdmF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJSTkxNV9XUklURShJTEtfRFBG Q19GRU5DRV9ZT0ZGLCBwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZzZXQpOwotCUk5MTVfV1JJVEUo SUxLX0ZCQ19SVF9CQVNFLCBwYXJhbXMtPmZiLmdndHRfb2Zmc2V0IHwgSUxLX0ZCQ19SVF9WQUxJ RCk7CisJSTkxNV9XUklURShJTEtfRkJDX1JUX0JBU0UsCisJCSAgIGk5MTVfZ2d0dF9vZmZzZXQo cGFyYW1zLT52bWEpIHwgSUxLX0ZCQ19SVF9WQUxJRCk7CiAJLyogZW5hYmxlIGl0Li4uICovCiAJ STkxNV9XUklURShJTEtfRFBGQ19DT05UUk9MLCBkcGZjX2N0bCB8IERQRkNfQ1RMX0VOKTsKIApA QCAtMzE5LDEwICszMjEsMTEgQEAgc3RhdGljIHZvaWQgZ2VuN19mYmNfYWN0aXZhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlicmVhazsKIAl9CiAKLQlpZiAocGFyYW1z LT5mYi5mZW5jZV9yZWcgIT0gSTkxNV9GRU5DRV9SRUdfTk9ORSkgeworCWlmIChwYXJhbXMtPnZt YS0+ZmVuY2UpIHsKIAkJZHBmY19jdGwgfD0gSVZCX0RQRkNfQ1RMX0ZFTkNFX0VOOwogCQlJOTE1 X1dSSVRFKFNOQl9EUEZDX0NUTF9TQSwKLQkJCSAgIFNOQl9DUFVfRkVOQ0VfRU5BQkxFIHwgcGFy YW1zLT5mYi5mZW5jZV9yZWcpOworCQkJICAgU05CX0NQVV9GRU5DRV9FTkFCTEUgfAorCQkJICAg cGFyYW1zLT52bWEtPmZlbmNlLT5pZCk7CiAJCUk5MTVfV1JJVEUoRFBGQ19DUFVfRkVOQ0VfT0ZG U0VULCBwYXJhbXMtPmNydGMuZmVuY2VfeV9vZmZzZXQpOwogCX0gZWxzZSB7CiAJCUk5MTVfV1JJ VEUoU05CX0RQRkNfQ1RMX1NBLDApOwpAQCAtNzI3LDE0ICs3MzAsNiBAQCBzdGF0aWMgYm9vbCBp bnRlbF9mYmNfaHdfdHJhY2tpbmdfY292ZXJzX3NjcmVlbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKIAlyZXR1cm4gZWZmZWN0aXZlX3cgPD0gbWF4X3cgJiYgZWZmZWN0aXZlX2ggPD0gbWF4X2g7 CiB9CiAKLS8qIFhYWCByZXBsYWNlIG1lIHdoZW4gd2UgaGF2ZSBWTUEgdHJhY2tpbmcgZm9yIGlu dGVsX3BsYW5lX3N0YXRlICovCi1zdGF0aWMgaW50IGdldF9mZW5jZV9pZChzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYikKLXsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGk5MTVfZ2VtX29iamVj dF90b19nZ3R0KGludGVsX2ZiX29iaihmYiksIE5VTEwpOwotCi0JcmV0dXJuIHZtYSAmJiB2bWEt PmZlbmNlID8gdm1hLT5mZW5jZS0+aWQgOiBJOTE1X0ZFTkNFX1JFR19OT05FOwotfQotCiBzdGF0 aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJCSBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQpAQCAtNzQzLDcgKzczOCw4IEBA IHN0YXRpYyB2b2lkIGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7CiAJc3Ry dWN0IGludGVsX2ZiY19zdGF0ZV9jYWNoZSAqY2FjaGUgPSAmZmJjLT5zdGF0ZV9jYWNoZTsKIAlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwotCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisKKwljYWNoZS0+dm1hID0gTlVMTDsKIAogCWNh Y2hlLT5jcnRjLm1vZGVfZmxhZ3MgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuZmxh Z3M7CiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp CkBAIC03NTgsMTYgKzc1NCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRl X2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlmICghY2FjaGUtPnBsYW5lLnZpc2li bGUpCiAJCXJldHVybjsKIAotCW9iaiA9IGludGVsX2ZiX29iaihmYik7Ci0KLQkvKiBGSVhNRTog V2UgbGFjayB0aGUgcHJvcGVyIGxvY2tpbmcgaGVyZSwgc28gb25seSBydW4gdGhpcyBvbiB0aGUK LQkgKiBwbGF0Zm9ybXMgdGhhdCBuZWVkLiAqLwotCWlmIChJU19HRU4oZGV2X3ByaXYsIDUsIDYp KQotCQljYWNoZS0+ZmIuaWxrX2dndHRfb2Zmc2V0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfb2Zm c2V0KG9iaiwgTlVMTCk7CiAJY2FjaGUtPmZiLnBpeGVsX2Zvcm1hdCA9IGZiLT5waXhlbF9mb3Jt YXQ7CiAJY2FjaGUtPmZiLnN0cmlkZSA9IGZiLT5waXRjaGVzWzBdOwotCWNhY2hlLT5mYi5mZW5j ZV9yZWcgPSBnZXRfZmVuY2VfaWQoZmIpOwotCWNhY2hlLT5mYi50aWxpbmdfbW9kZSA9IGk5MTVf Z2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7CisKKwljYWNoZS0+dm1hID0gcGxhbmVfc3RhdGUt PnZtYTsKIH0KIAogc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKQEAgLTc4NCw3ICs3NzQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNf Y2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCi0JaWYgKCFjYWNoZS0+cGxhbmUudmlzaWJsZSkgeworCWlmICghY2FjaGUtPnZtYSkgewog CQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicHJpbWFyeSBwbGFuZSBub3QgdmlzaWJsZSI7CiAJCXJl dHVybiBmYWxzZTsKIAl9CkBAIC04MDcsOCArNzk3LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJj X2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkgKiBzbyBoYXZlIG5vIGZl bmNlIGFzc29jaWF0ZWQgd2l0aCBpdCkgZHVlIHRvIGFwZXJ0dXJlIGNvbnN0YWludHMKIAkgKiBh dCB0aGUgdGltZSBvZiBwaW5uaW5nLgogCSAqLwotCWlmIChjYWNoZS0+ZmIudGlsaW5nX21vZGUg IT0gSTkxNV9USUxJTkdfWCB8fAotCSAgICBjYWNoZS0+ZmIuZmVuY2VfcmVnID09IEk5MTVfRkVO Q0VfUkVHX05PTkUpIHsKKwlpZiAoIWNhY2hlLT52bWEtPmZlbmNlKSB7CiAJCWZiYy0+bm9fZmJj X3JlYXNvbiA9ICJmcmFtZWJ1ZmZlciBub3QgdGlsZWQgb3IgZmVuY2VkIjsKIAkJcmV0dXJuIGZh bHNlOwogCX0KQEAgLTg4OCwxNyArODc3LDE2IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19nZXRf cmVnX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgKiB6ZXJvLiAqLwogCW1lbXNl dChwYXJhbXMsIDAsIHNpemVvZigqcGFyYW1zKSk7CiAKKwlwYXJhbXMtPnZtYSA9IGNhY2hlLT52 bWE7CisKIAlwYXJhbXMtPmNydGMucGlwZSA9IGNydGMtPnBpcGU7CiAJcGFyYW1zLT5jcnRjLnBs YW5lID0gY3J0Yy0+cGxhbmU7CiAJcGFyYW1zLT5jcnRjLmZlbmNlX3lfb2Zmc2V0ID0gZ2V0X2Ny dGNfZmVuY2VfeV9vZmZzZXQoY3J0Yyk7CiAKIAlwYXJhbXMtPmZiLnBpeGVsX2Zvcm1hdCA9IGNh Y2hlLT5mYi5waXhlbF9mb3JtYXQ7CiAJcGFyYW1zLT5mYi5zdHJpZGUgPSBjYWNoZS0+ZmIuc3Ry aWRlOwotCXBhcmFtcy0+ZmIuZmVuY2VfcmVnID0gY2FjaGUtPmZiLmZlbmNlX3JlZzsKIAogCXBh cmFtcy0+Y2ZiX3NpemUgPSBpbnRlbF9mYmNfY2FsY3VsYXRlX2NmYl9zaXplKGRldl9wcml2LCBj YWNoZSk7Ci0KLQlwYXJhbXMtPmZiLmdndHRfb2Zmc2V0ID0gY2FjaGUtPmZiLmlsa19nZ3R0X29m ZnNldDsKIH0KIAogc3RhdGljIGJvb2wgaW50ZWxfZmJjX3JlZ19wYXJhbXNfZXF1YWwoc3RydWN0 IGludGVsX2ZiY19yZWdfcGFyYW1zICpwYXJhbXMxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMKaW5kZXggZmM5NThkNWVkMGRjLi5jYTI5YTUzMTRmMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmJkZXYuYwpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUo c3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIG91dF9kZXN0cm95X2ZiaToKIAlkcm1fZmJf aGVscGVyX3JlbGVhc2VfZmJpKGhlbHBlcik7CiBvdXRfdW5waW46Ci0JaW50ZWxfdW5waW5fZmJf b2JqKCZpZmJkZXYtPmZiLT5iYXNlLCBEUk1fUk9UQVRFXzApOworCWludGVsX3VucGluX2ZiX3Zt YSh2bWEpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK IAlyZXR1cm4gcmV0OwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiZGV2 X2Rlc3Ryb3koc3RydWN0IGludGVsX2ZiZGV2ICppZmJkZXYpCiAKIAlpZiAoaWZiZGV2LT5mYikg ewogCQltdXRleF9sb2NrKCZpZmJkZXYtPmhlbHBlci5kZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWlu dGVsX3VucGluX2ZiX29iaigmaWZiZGV2LT5mYi0+YmFzZSwgRFJNX1JPVEFURV8wKTsKKwkJaW50 ZWxfdW5waW5fZmJfdm1hKGlmYmRldi0+dm1hKTsKIAkJbXV0ZXhfdW5sb2NrKCZpZmJkZXYtPmhl bHBlci5kZXYtPnN0cnVjdF9tdXRleCk7CiAKIAkJZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZSgmaWZi ZGV2LT5mYi0+YmFzZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCmluZGV4IDhiMmZj NjdhY2JiYS4uYWU4Y2U2MjFlM2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpA QCAtMjgxLDcgKzI4MSw3IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJt X3BsYW5lLAogCiAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgcGxhbmUpLCBwbGFuZV9jdGwp OwogCUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksCi0JCSAgIGludGVsX2ZiX2d0 dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSArIHN1cmZfYWRkcik7CisJCSAgIGludGVsX3BsYW5lX2dn dHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArIHN1cmZfYWRkcik7CiAJUE9TVElOR19SRUFEKFBMQU5F X1NVUkYocGlwZSwgcGxhbmUpKTsKIH0KIApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAogCUk5MTVfV1JJVEUoU1BTSVpFKHBpcGUs IHBsYW5lKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwogCUk5MTVfV1JJVEUoU1BDTlRSKHBp cGUsIHBsYW5lKSwgc3ByY3RsKTsKIAlJOTE1X1dSSVRFKFNQU1VSRihwaXBlLCBwbGFuZSksCi0J CSAgIGludGVsX2ZiX2d0dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSArIHNwcnN1cmZfb2Zmc2V0KTsK KwkJICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsgc3Byc3VyZl9vZmZz ZXQpOwogCVBPU1RJTkdfUkVBRChTUFNVUkYocGlwZSwgcGxhbmUpKTsKIH0KIApAQCAtNjEyLDcg KzYxMiw3IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCUk5 MTVfV1JJVEUoU1BSU0NBTEUocGlwZSksIHNwcnNjYWxlKTsKIAlJOTE1X1dSSVRFKFNQUkNUTChw aXBlKSwgc3ByY3RsKTsKIAlJOTE1X1dSSVRFKFNQUlNVUkYocGlwZSksCi0JCSAgIGludGVsX2Zi X2d0dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSArIHNwcnN1cmZfb2Zmc2V0KTsKKwkJICAgaW50ZWxf cGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsgc3Byc3VyZl9vZmZzZXQpOwogCVBPU1RJ TkdfUkVBRChTUFJTVVJGKHBpcGUpKTsKIH0KIApAQCAtNzM5LDcgKzczOSw3IEBAIGlsa191cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJSTkxNV9XUklURShEVlNTQ0FMRShw aXBlKSwgZHZzc2NhbGUpOwogCUk5MTVfV1JJVEUoRFZTQ05UUihwaXBlKSwgZHZzY250cik7CiAJ STkxNV9XUklURShEVlNTVVJGKHBpcGUpLAotCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCBy b3RhdGlvbikgKyBkdnNzdXJmX29mZnNldCk7CisJCSAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0 KHBsYW5lX3N0YXRlKSArIGR2c3N1cmZfb2Zmc2V0KTsKIAlQT1NUSU5HX1JFQUQoRFZTU1VSRihw aXBlKSk7CiB9CiAKLS0gCjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==