From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 02/41] drm/i915: Use RPM as the barrier for controlling user mmap access Date: Fri, 14 Oct 2016 13:17:54 +0100 Message-ID: <20161014121833.439-3-chris@chris-wilson.co.uk> References: <20161014121833.439-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-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id A447C6E05A for ; Fri, 14 Oct 2016 12:18:43 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id x79so17979714lff.2 for ; Fri, 14 Oct 2016 05:18:43 -0700 (PDT) In-Reply-To: <20161014121833.439-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 V2UgY2FuIHJlbW92ZSB0aGUgZmFsc2UgY291cGxpbmcgYmV0d2VlbiBSUE0gYW5kIHN0cnVjdCBt dXRleCBieSB0aGUKb2JzZXJ2YXRpb24gdGhhdCB3ZSBjYW4gdXNlIHRoZSBSUE0gd2FrZXJlZiBh cyB0aGUgYmFycmllciBhcm91bmQgdXNlcgptbWFwIGFjY2Vzcy4gVGhhdCBpcyBhcyB3ZSB0ZWFy IGRvd24gdGhlIHVzZXIncyBQVEUgYXRvbWljYWxseSBmcm9tCndpdGhpbiBycG0gc3VzcGVuZCBh bmQgdGhlbiB0byBmYXVsdCBpbiBuZXcgUFRFIHJlcXVpcmVzIHRoZSBycG0Kd2FrZXJlZiwgbWVh bnMgdGhhdCBubyB1c2VyIGFjY2VzcyBpcyBwb3NzaWJsZSB0aHJvdWdoIHRob3NlIFBURSB3aXRo b3V0ClJQTSBiZWluZyBhd2FrZS4gSGF2aW5nIG1hZGUgdGhhdCBvYnNlcnZhdGlvbiwgd2UgY2Fu IHRoZW4gcmVtb3ZlIHRoZQpwcmVzdW1wdGlvbiBvZiBoYXZpbmcgdG8gdGFrZSBycG0gb3V0c2lk ZSBvZiBzdHJ1Y3RfbXV0ZXggYW5kIHNvIGFsbG93CmZpbmUgZ3JhaW5lZCBhY3F1aXNpdGlvbiBv ZiBhIHdha2VyZWYgYXJvdW5kIGh3IGFjY2VzcyByYXRoZXIgdGhhbgpoYXZpbmcgdG8gcmVtZW1i ZXIgdG8gYWNxdWlyZSB0aGUgd2FrZXJlZiBlYXJseSBvbi4KCnYyOiBSZWppZyBwbGFjZW1lbnQg b2YgdGhlIG5ldyBpbnRlbF9ydW50aW1lX3BtX2dldCgpIHRvIGJlIGFzIHRpZ2h0CmFzIHBvc3Np YmxlIGFyb3VuZCB0aGUgR1RUIHByZWFkL3B3cml0ZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtA aW50ZWwuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICB8IDM3ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgfCAxOSAtLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgIHwgNDIgKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgfCAxNyArKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMgfCAgNCAtLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDY4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYzFlM2Jk Nzg1YjcxLi5hMzc3ZjFlNTk5ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBA IC0xMzk2LDE0ICsxMzk2LDkgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogc3RhdGljIGludCBpcm9ubGFrZV9kcnBjX2lu Zm8oc3RydWN0IHNlcV9maWxlICptKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gJmRldl9wcml2LT5kcm07CiAJdTMyIHJndm1vZGVjdGwsIHJzdGRieWN0bDsKIAl1MTYgY3Jz dGFuZHZpZDsKLQlpbnQgcmV0OwogCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZk ZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKIAlpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAlyZ3Ztb2RlY3RsID0gSTkxNV9SRUFEKE1FTU1PREVD VEwpOwpAQCAtMTQxMSw3ICsxNDA2LDYgQEAgc3RhdGljIGludCBpcm9ubGFrZV9kcnBjX2luZm8o c3RydWN0IHNlcV9maWxlICptKQogCWNyc3RhbmR2aWQgPSBJOTE1X1JFQUQxNihDUlNUQU5EVklE KTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKIAogCXNlcV9wcmludGYobSwgIkhEIGJvb3N0OiAlc1xuIiwgeWVz bm8ocmd2bW9kZWN0bCAmIE1FTU1PREVfQk9PU1RfRU4pKTsKIAlzZXFfcHJpbnRmKG0sICJCb29z dCBmcmVxOiAlZFxuIiwKQEAgLTIwOTEsMTIgKzIwODUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAq c3dpenpsZV9zdHJpbmcodW5zaWduZWQgc3dpenpsZSkKIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxl X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Ci0JaW50IHJldDsKIAotCXJldCA9IG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7CiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJc2VxX3By aW50ZihtLCAiYml0NiBzd2l6emxlIGZvciBYLXRpbGluZyA9ICVzXG4iLApAQCAtMjEzNiw3ICsy MTI1LDYgQEAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCiAJCXNlcV9wdXRzKG0sICJMLXNoYXBlZCBtZW1vcnkgZGV0ZWN0ZWRcbiIp OwogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNTQyLDExICsyNTMwLDIyIEBA IHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpCiAJCWVuYWJsZWQgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpICYgRURQX1BTUl9FTkFC TEU7CiAJZWxzZSB7CiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKKwkJCWVudW0g dHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9CisJCQkJaW50ZWxfcGlwZV90b19jcHVfdHJhbnNj b2RlcihkZXZfcHJpdiwgcGlwZSk7CisJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IHBvd2VyX2RvbWFpbjsKKworCQkJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1RSQU5TQ09E RVIoY3B1X3RyYW5zY29kZXIpOworCQkJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9l bmFibGVkKGRldl9wcml2LAorCQkJCQkJCQlwb3dlcl9kb21haW4pKQorCQkJCWNvbnRpbnVlOwor CiAJCQlzdGF0W3BpcGVdID0gSTkxNV9SRUFEKFZMVl9QU1JTVEFUKHBpcGUpKSAmCiAJCQkJVkxW X0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOwogCQkJaWYgKChzdGF0W3BpcGVdID09IFZMVl9FRFBf UFNSX0FDVElWRV9OT1JGQl9VUCkgfHwKIAkJCSAgICAoc3RhdFtwaXBlXSA9PSBWTFZfRURQX1BT Ul9BQ1RJVkVfU0ZfVVBEQVRFKSkKIAkJCQllbmFibGVkID0gdHJ1ZTsKKworCQkJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7CiAJCX0KIAl9CiAKQEAgLTMw OTQsNiArMzA5Myw4IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKKwlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CisKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKIAkJc3RydWN0 IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7CiAJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7CkBAIC0zMjEzLDYgKzMyMTQsOCBAQCBzdGF0aWMgaW50 IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNl cV9wdXRzKG0sICJcbiIpOwogCX0KIAorCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK KwogCXJldHVybiAwOwogfQogCkBAIC00Nzk5LDEzICs0ODAyLDkgQEAgaTkxNV93ZWRnZWRfc2V0 KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiAJaWYgKGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoJmRldl9w cml2LT5ncHVfZXJyb3IpKQogCQlyZXR1cm4gLUVBR0FJTjsKIAotCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKLQogCWk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2LCB2YWwsCiAJCQkg ICJNYW51YWxseSBzZXR0aW5nIHdlZGdlZCB0byAlbGx1IiwgdmFsKTsKIAotCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKLQogCXJldHVybiAwOwogfQogCkBAIC01MDQwLDIyICs1MDM5 LDE2IEBAIHN0YXRpYyBpbnQKIGk5MTVfY2FjaGVfc2hhcmluZ19nZXQodm9pZCAqZGF0YSwgdTY0 ICp2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJdTMyIHNucGNyOwotCWlu dCByZXQ7CiAKIAlpZiAoIShJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSkp CiAJCXJldHVybiAtRU5PREVWOwogCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZk ZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKIAlpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAlzbnBjciA9IEk5MTVfUkVBRChHRU42X01CQ1VOSVRf U05QQ1IpOwogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJKnZhbCA9IChzbnBjciAmIEdFTjZfTUJDX1NOUENS X01BU0spID4+IEdFTjZfTUJDX1NOUENSX1NISUZUOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpp bmRleCAxZmRkYzJjY2FkYTIuLjljZjMwODY0YjU2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CkBAIC0yMjk3LDI0ICsyMjk3LDYgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQo c3RydWN0IGRldmljZSAqa2RldikKIAogCURSTV9ERUJVR19LTVMoIlN1c3BlbmRpbmcgZGV2aWNl XG4iKTsKIAotCS8qCi0JICogV2UgY291bGQgZGVhZGxvY2sgaGVyZSBpbiBjYXNlIGFub3RoZXIg dGhyZWFkIGhvbGRpbmcgc3RydWN0X211dGV4Ci0JICogY2FsbHMgUlBNIHN1c3BlbmQgY29uY3Vy cmVudGx5LCBzaW5jZSB0aGUgUlBNIHN1c3BlbmQgd2lsbCB3YWl0Ci0JICogZmlyc3QgZm9yIHRo aXMgUlBNIHN1c3BlbmQgdG8gZmluaXNoLiBJbiB0aGlzIGNhc2UgdGhlIGNvbmN1cnJlbnQKLQkg KiBSUE0gcmVzdW1lIHdpbGwgYmUgZm9sbG93ZWQgYnkgaXRzIFJQTSBzdXNwZW5kIGNvdW50ZXJw YXJ0LiBTdGlsbAotCSAqIGZvciBjb25zaXN0ZW5jeSByZXR1cm4gLUVBR0FJTiwgd2hpY2ggd2ls bCByZXNjaGVkdWxlIHRoaXMgc3VzcGVuZC4KLQkgKi8KLQlpZiAoIW11dGV4X3RyeWxvY2soJmRl di0+c3RydWN0X211dGV4KSkgewotCQlEUk1fREVCVUdfS01TKCJkZXZpY2UgbG9jayBjb250ZW50 aW9uLCBkZWZmZXJpbmcgc3VzcGVuZFxuIik7Ci0JCS8qCi0JCSAqIEJ1bXAgdGhlIGV4cGlyYXRp b24gdGltZXN0YW1wLCBvdGhlcndpc2UgdGhlIHN1c3BlbmQgd29uJ3QKLQkJICogYmUgcmVzY2hl ZHVsZWQuCi0JCSAqLwotCQlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGtkZXYpOwotCi0JCXJl dHVybiAtRUFHQUlOOwotCX0KLQogCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJp dik7CiAKIAkvKgpAQCAtMjMyMiw3ICsyMzA0LDYgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1l X3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKIAkgKiBhbiBSUE0gcmVmZXJlbmNlLgogCSAq LwogCWk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKGRldl9wcml2KTsKLQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKIAogCWludGVsX2d1Y19zdXNwZW5kKGRldik7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IDZkYTk1MTRjZWVmYS4uYjFkODVmYjdiMWU1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTgyNiw2ICs4MjYsNyBAQCBpOTE1X2dlbV9ndHRfcHJlYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl1aW50NjRfdCBvZmZzZXQ7CiAJaW50IHJldDsKIAor CWludGVsX3J1bnRpbWVfcG1fZ2V0KHRvX2k5MTUoZGV2KSk7CiAJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwgUElOX01BUFBBQkxFKTsKIAlpZiAoIUlTX0VS Uih2bWEpKSB7CiAJCW5vZGUuc3RhcnQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7CkBAIC05MjYs NiArOTI3LDcgQEAgb3V0X3VucGluOgogCQlpOTE1X3ZtYV91bnBpbih2bWEpOwogCX0KIG91dDoK KwlpbnRlbF9ydW50aW1lX3BtX3B1dCh0b19pOTE1KGRldikpOwogCXJldHVybiByZXQ7CiB9CiAK QEAgLTEwNjAsMTIgKzEwNjIsOSBAQCBpOTE1X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFkKGRldiwg b2JqLCBhcmdzLCBmaWxlKTsKIAogCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVj dHMgKi8KLQlpZiAocmV0ID09IC1FRkFVTFQgfHwgcmV0ID09IC1FTk9ERVYpIHsKLQkJaW50ZWxf cnVudGltZV9wbV9nZXQodG9faTkxNShkZXYpKTsKKwlpZiAocmV0ID09IC1FRkFVTFQgfHwgcmV0 ID09IC1FTk9ERVYpCiAJCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVhZChkZXYsIG9iaiwgYXJncy0+ c2l6ZSwKIAkJCQkJYXJncy0+b2Zmc2V0LCBhcmdzLT5kYXRhX3B0cik7Ci0JCWludGVsX3J1bnRp bWVfcG1fcHV0KHRvX2k5MTUoZGV2KSk7Ci0JfQogCiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop OwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMTEyNiw2ICsxMTI1LDcg QEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSkKIAkJcmV0dXJuIC1FRkFVTFQ7 CiAKKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAl2bWEgPSBpOTE1X2dlbV9vYmplY3Rf Z2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLAogCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfCBQSU5f Tk9OQkxPQ0spOwogCWlmICghSVNfRVJSKHZtYSkpIHsKQEAgLTEyMzQsNiArMTIzNCw3IEBAIG91 dF91bnBpbjoKIAkJaTkxNV92bWFfdW5waW4odm1hKTsKIAl9CiBvdXQ6CisJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTQ2NiwxMiArMTQ2NywxMiBA QCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkgKiBwZXJzcGVjdGl2ZSwgcmVxdWlyaW5nIG1hbnVhbCBkZXRpbGluZyBieSB0aGUgY2xp ZW50LgogCSAqLwogCWlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopIHx8 Ci0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKLQkJcmV0ID0gaTkxNV9nZW1f Z3R0X3B3cml0ZV9mYXN0KGRldl9wcml2LCBvYmosIGFyZ3MsIGZpbGUpOworCSAgICBjcHVfd3Jp dGVfbmVlZHNfY2xmbHVzaChvYmopKQogCQkvKiBOb3RlIHRoYXQgdGhlIGd0dCBwYXRocyBtaWdo dCBmYWlsIHdpdGggbm9uLXBhZ2UtYmFja2VkIHVzZXIKIAkJICogcG9pbnRlcnMgKGUuZy4gZ3R0 IG1hcHBpbmdzIHdoZW4gbW92aW5nIGRhdGEgYmV0d2VlbgotCQkgKiB0ZXh0dXJlcykuIEZhbGxi YWNrIHRvIHRoZSBzaG1lbSBwYXRoIGluIHRoYXQgY2FzZS4gKi8KLQl9CisJCSAqIHRleHR1cmVz KS4gRmFsbGJhY2sgdG8gdGhlIHNobWVtIHBhdGggaW4gdGhhdCBjYXNlLgorCQkgKi8KKwkJcmV0 ID0gaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KGRldl9wcml2LCBvYmosIGFyZ3MsIGZpbGUpOwog CiAJaWYgKHJldCA9PSAtRUZBVUxUIHx8IHJldCA9PSAtRU5PU1BDKSB7CiAJCWlmIChvYmotPnBo eXNfaGFuZGxlKQpAQCAtMTg0MCw2ICsxODQxLDcgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqYXJlYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCWdvdG8gZXJy X3VucGluOwogCiAJLyogTWFyayBhcyBiZWluZyBtbWFwcGVkIGludG8gdXNlcnNwYWNlIGZvciBs YXRlciByZXZvY2F0aW9uICovCisJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsK IAlzcGluX2xvY2soJmRldl9wcml2LT5tbS51c2VyZmF1bHRfbG9jayk7CiAJaWYgKGxpc3RfZW1w dHkoJm9iai0+dXNlcmZhdWx0X2xpbmspKQogCQlsaXN0X2FkZCgmb2JqLT51c2VyZmF1bHRfbGlu aywgJmRldl9wcml2LT5tbS51c2VyZmF1bHRfbGlzdCk7CkBAIC0xOTI1LDggKzE5MjcsMTMgQEAg aTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJ LyogU2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHVzZXIgR1RUIGFjY2VzcyBhbmQgb3VyIGNvZGUgZGVw ZW5kcyB1cG9uCiAJICogcmV2b2tpbmcgdGhlIENQVSdzIFBURSB3aGlsc3QgdGhlIG11dGV4IGlz IGhlbGQuIFRoZSBuZXh0IHVzZXIKIAkgKiBwYWdlZmF1bHQgdGhlbiBoYXMgdG8gd2FpdCB1bnRp bCB3ZSByZWxlYXNlIHRoZSBtdXRleC4KKwkgKgorCSAqIE5vdGUgdGhhdCBSUE0gY29tcGxpY2F0 ZXMgc29tZXdoYXQgYnkgYWRkaW5nIGFuIGFkZGl0aW9uYWwKKwkgKiByZXF1aXJlbWVudCB0aGF0 IG9wZXJhdGlvbnMgdG8gdGhlIEdHVFQgYmUgbWFkZSBob2xkaW5nIHRoZSBSUE0KKwkgKiB3YWtl cmVmLgogCSAqLwogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCiAJc3Bpbl9sb2NrKCZpOTE1LT5tbS51 c2VyZmF1bHRfbG9jayk7CiAJaWYgKCFsaXN0X2VtcHR5KCZvYmotPnVzZXJmYXVsdF9saW5rKSkg ewpAQCAtMTkzNSw3ICsxOTQyLDcgQEAgaTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJfQogCXNwaW5fdW5sb2NrKCZpOTE1LT5tbS51c2VyZmF1 bHRfbG9jayk7CiAJaWYgKCF6YXApCi0JCXJldHVybjsKKwkJZ290byBvdXQ7CiAKIAlkcm1fdm1h X25vZGVfdW5tYXAoJm9iai0+YmFzZS52bWFfbm9kZSwKIAkJCSAgIG9iai0+YmFzZS5kZXYtPmFu b25faW5vZGUtPmlfbWFwcGluZyk7CkBAIC0xOTQ4LDYgKzE5NTUsOSBAQCBpOTE1X2dlbV9yZWxl YXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiBtZW1vcnkgd3Jp dGVzIGJlZm9yZSB0b3VjaGluZyByZWdpc3RlcnMgLyBHU00uCiAJICovCiAJd21iKCk7CisKK291 dDoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKIH0KIAogdm9pZApAQCAtMzQ3Niw3ICsz NDg2LDcgQEAgaW50IGk5MTVfZ2VtX2dldF9jYWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiBpbnQgaTkxNV9nZW1fc2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwogCXN0 cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyAqYXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKIAllbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWw7CkBAIC0zNDkz LDIzICszNTAzLDIxIEBAIGludCBpOTE1X2dlbV9zZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgKiBjYWNoZWxpbmUsIHdoZXJlYXMgbm9ybWFs bHkgc3VjaCBjYWNoZWxpbmVzIHdvdWxkIGdldAogCQkgKiBpbnZhbGlkYXRlZC4KIAkJICovCi0J CWlmICghSEFTX0xMQyhkZXYpICYmICFIQVNfU05PT1AoZGV2KSkKKwkJaWYgKCFIQVNfTExDKGk5 MTUpICYmICFIQVNfU05PT1AoaTkxNSkpCiAJCQlyZXR1cm4gLUVOT0RFVjsKIAogCQlsZXZlbCA9 IEk5MTVfQ0FDSEVfTExDOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ0FDSElOR19ESVNQTEFZOgot CQlsZXZlbCA9IEhBU19XVChkZXZfcHJpdikgPyBJOTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNIRV9O T05FOworCQlsZXZlbCA9IEhBU19XVChpOTE1KSA/IEk5MTVfQ0FDSEVfV1QgOiBJOTE1X0NBQ0hF X05PTkU7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKLQogCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19p bnRlcnJ1cHRpYmxlKGRldik7CiAJaWYgKHJldCkKLQkJZ290byBycG1fcHV0OworCQlyZXR1cm4g cmV0OwogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUp OwogCWlmICghb2JqKSB7CkBAIC0zNTE4LDEzICszNTI2LDkgQEAgaW50IGk5MTVfZ2VtX3NldF9j YWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJfQogCiAJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIGxldmVsKTsKLQogCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIHVubG9jazoKIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKLXJwbV9wdXQ6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwot CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAw NjJmYjBhZDc1ZGEuLjMzMDM2MzU5YzE3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKQEAgLTI2NjcsNiArMjY2Nyw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKIAkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJ CQkgdTMyIGZsYWdzKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkx NSh2bWEtPnZtLT5kZXYpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEt Pm9iajsKIAl1MzIgcHRlX2ZsYWdzID0gMDsKIAlpbnQgcmV0OwpAQCAtMjY3OSw4ICsyNjgwLDEw IEBAIHN0YXRpYyBpbnQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAlpZiAo b2JqLT5ndF9ybykKIAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7CiAKKwlpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKIAl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEt PnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQsCiAJCQkJY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7CisJ aW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CiAKIAkvKgogCSAqIFdpdGhvdXQgYWxpYXNpbmcg UFBHVFQgdGhlcmUncyBubyBkaWZmZXJlbmNlIGJldHdlZW4KQEAgLTI2OTYsNiArMjY5OSw3IEBA IHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAog CQkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJCQkJIHUzMiBmbGFncykK IHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUodm1hLT52bS0+ZGV2 KTsKIAl1MzIgcHRlX2ZsYWdzOwogCWludCByZXQ7CiAKQEAgLTI3MTAsMTQgKzI3MTQsMTUgQEAg c3RhdGljIGludCBhbGlhc2luZ19ndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAK IAogCWlmIChmbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSB7CisJCWludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwogCQl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLAogCQkJCQl2 bWEtPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQsCiAJCQkJCWNhY2hlX2xldmVsLCBwdGVfZmxhZ3Mp OworCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKIAl9CiAKIAlpZiAoZmxhZ3MgJiBJOTE1 X1ZNQV9MT0NBTF9CSU5EKSB7Ci0JCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPQotCQkJ dG9faTkxNSh2bWEtPnZtLT5kZXYpLT5tbS5hbGlhc2luZ19wcGd0dDsKKwkJc3RydWN0IGk5MTVf aHdfcHBndHQgKmFwcGd0dCA9IGk5MTUtPm1tLmFsaWFzaW5nX3BwZ3R0OwogCQlhcHBndHQtPmJh c2UuaW5zZXJ0X2VudHJpZXMoJmFwcGd0dC0+YmFzZSwKIAkJCQkJICAgIHZtYS0+cGFnZXMsIHZt YS0+bm9kZS5zdGFydCwKIAkJCQkJICAgIGNhY2hlX2xldmVsLCBwdGVfZmxhZ3MpOwpAQCAtMjcy OCwxMiArMjczMywxNiBAQCBzdGF0aWMgaW50IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKIAogc3RhdGljIHZvaWQgZ2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPSB0b19pOTE1KHZt YS0+dm0tPmRldiktPm1tLmFsaWFzaW5nX3BwZ3R0OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNSh2bWEtPnZtLT5kZXYpOworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICph cHBndHQgPSBpOTE1LT5tbS5hbGlhc2luZ19wcGd0dDsKIAljb25zdCB1NjQgc2l6ZSA9IG1pbih2 bWEtPnNpemUsIHZtYS0+bm9kZS5zaXplKTsKIAotCWlmICh2bWEtPmZsYWdzICYgSTkxNV9WTUFf R0xPQkFMX0JJTkQpCisJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgewor CQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAkJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1h LT52bSwKIAkJCQkgICAgIHZtYS0+bm9kZS5zdGFydCwgc2l6ZSk7CisJCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUpOworCX0KIAogCWlmICh2bWEtPmZsYWdzICYgSTkxNV9WTUFfTE9DQUxfQklO RCAmJiBhcHBndHQpCiAJCWFwcGd0dC0+YmFzZS5jbGVhcl9yYW5nZSgmYXBwZ3R0LT5iYXNlLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwppbmRleCBjMjFiYzAwNjhkMjAuLjcx ZjgwZDJhNDg3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGls aW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAgLTIw NSw4ICsyMDUsNiBAQCBpOTE1X2dlbV9zZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKLQogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpZiAo b2JqLT5waW5fZGlzcGxheSB8fCBvYmotPmZyYW1lYnVmZmVyX3JlZmVyZW5jZXMpIHsKIAkJZXJy ID0gLUVCVVNZOwpAQCAtMzAyLDggKzMwMCw2IEBAIGVycjoKIAlpOTE1X2dlbV9vYmplY3RfcHV0 KG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKLQlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdik7Ci0KIAlyZXR1cm4gZXJyOwogfQogCi0tIAoyLjkuMwoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==