From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 36/38] drm/i915: Track pinned vma inside guc Date: Fri, 3 Jun 2016 17:55:51 +0100 Message-ID: <1464972953-2726-37-git-send-email-chris@chris-wilson.co.uk> References: <1464972953-2726-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 6EDA56EE8B for ; Fri, 3 Jun 2016 16:56:34 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id a136so737818wme.0 for ; Fri, 03 Jun 2016 09:56:34 -0700 (PDT) In-Reply-To: <1464972953-2726-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 List-Id: intel-gfx@lists.freedesktop.org U2luY2UgdGhlIGd1YyBhbGxvY2F0ZXMgYW5kIHBpbnMgYW5kIG9iamVjdCBpbnRvIHRoZSBHR1RU IGZvciBpdHMgdXNhZ2UsCml0IGlzIG1vcmUgbmF0dXJhbCB0byB1c2UgdGhhdCBwaW5uZWQgVk1B IGFzIG91ciByZXNvdXJjZSBjb29raWUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYyAgICAgICAgfCAgMTAgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMgfCAxMzEgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgOSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgICA3ICstCiA0IGZpbGVzIGNoYW5nZWQs IDczIGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKaW5kZXggOTE1NDkxOWZkZDU2Li40ODVmYzIzODkzZDYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNjAxLDE1ICsyNjAxLDE1IEBAIHN0YXRpYyBpbnQgaTkx NV9ndWNfbG9nX2R1bXAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBk cm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbm9kZS0+bWlub3ItPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2dfb2Jq ID0gZGV2X3ByaXYtPmd1Yy5sb2dfb2JqOwotCXUzMiAqbG9nOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CiAJaW50IGkgPSAwLCBwZzsKIAotCWlmICghbG9nX29iaikKKwlpZiAo ZGV2X3ByaXYtPmd1Yy5sb2cgPT0gTlVMTCkKIAkJcmV0dXJuIDA7CiAKLQlmb3IgKHBnID0gMDsg cGcgPCBsb2dfb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7IHBnKyspIHsKLQkJbG9nID0ga21h cF9hdG9taWMoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGxvZ19vYmosIHBnKSk7CisJb2JqID0g ZGV2X3ByaXYtPmd1Yy5sb2ctPm9iajsKKwlmb3IgKHBnID0gMDsgcGcgPCBvYmotPmJhc2Uuc2l6 ZSAvIFBBR0VfU0laRTsgcGcrKykgeworCQl1MzIgKmxvZyA9IGttYXBfYXRvbWljKGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZShvYmosIHBnKSk7CiAKIAkJZm9yIChpID0gMDsgaSA8IFBBR0VfU0la RSAvIHNpemVvZih1MzIpOyBpICs9IDQpCiAJCQlzZXFfcHJpbnRmKG0sICIweCUwOHggMHglMDh4 IDB4JTA4eCAweCUwOHhcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKaW5kZXggNjNlZjM0Yzc4NDk0Li4xYzkyYzRjNmIwZTEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTM1Nyw4ICszNTcsOCBAQCBzdGF0aWMg dm9pZCBndWNfaW5pdF9wcm9jX2Rlc2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLAogc3RhdGljIHZv aWQgZ3VjX2luaXRfY3R4X2Rlc2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJICAgICAgc3Ry dWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpjbGllbnRfb2JqID0gY2xpZW50LT5jbGllbnRfb2JqOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmNsaWVudF9vYmogPSBjbGllbnQtPmNsaWVudC0+b2JqOwogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gY2xp ZW50LT5vd25lcjsKIAlzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzYyBkZXNjOwpAQCAtNDEyLDcgKzQx Miw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywKIAkgKiBUaGUgZG9vcmJlbGwsIHByb2Nlc3MgZGVzY3JpcHRvciwgYW5kIHdvcmtxdWV1ZSBh cmUgYWxsIHBhcnRzCiAJICogb2YgdGhlIGNsaWVudCBvYmplY3QsIHdoaWNoIHRoZSBHdUMgd2ls bCByZWZlcmVuY2UgdmlhIHRoZSBHR1RUCiAJICovCi0JZ2Z4X2FkZHIgPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQoY2xpZW50X29iaik7CisJZ2Z4X2FkZHIgPSBjbGllbnQtPmNsaWVudC0+bm9k ZS5zdGFydDsKIAlkZXNjLmRiX3RyaWdnZXJfcGh5ID0gc2dfZG1hX2FkZHJlc3MoY2xpZW50X29i ai0+cGFnZXMtPnNnbCkgKwogCQkJCWNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0OwogCWRlc2MuZGJf dHJpZ2dlcl9jcHUgPSAodWludHB0cl90KWNsaWVudC0+Y2xpZW50X2Jhc2UgKwpAQCAtNDI5LDcg KzQyOSw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywKIAlkZXNjLmRlc2NfcHJpdmF0ZSA9ICh1aW50cHRyX3QpY2xpZW50OwogCiAJLyogUG9v bCBjb250ZXh0IGlzIHBpbm5lZCBhbHJlYWR5ICovCi0Jc2cgPSBndWMtPmN0eF9wb29sX29iai0+ cGFnZXM7CisJc2cgPSBndWMtPmN0eF9wb29sLT5vYmotPnBhZ2VzOwogCXNnX3Bjb3B5X2Zyb21f YnVmZmVyKHNnLT5zZ2wsIHNnLT5uZW50cywgJmRlc2MsIHNpemVvZihkZXNjKSwKIAkJCSAgICAg c2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwogfQpAQCAtNDQyLDcgKzQ0Miw3IEBA IHN0YXRpYyB2b2lkIGd1Y19maW5pX2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAog CW1lbXNldCgmZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTsKIAotCXNnID0gZ3VjLT5jdHhfcG9vbF9v YmotPnBhZ2VzOworCXNnID0gZ3VjLT5jdHhfcG9vbC0+b2JqLT5wYWdlczsKIAlzZ19wY29weV9m cm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZkZXNjLCBzaXplb2YoZGVzYyksCiAJCQkg ICAgIHNpemVvZihkZXNjKSAqIGNsaWVudC0+Y3R4X2luZGV4KTsKIH0KQEAgLTUyNCw3ICs1MjQs NyBAQCBzdGF0aWMgdm9pZCBndWNfYWRkX3dvcmtxdWV1ZV9pdGVtKHN0cnVjdCBpOTE1X2d1Y19j bGllbnQgKmdjLAogCS8qIFdRIHN0YXJ0cyBmcm9tIHRoZSBwYWdlIGFmdGVyIGRvb3JiZWxsIC8g cHJvY2Vzc19kZXNjICovCiAJd3FfcGFnZSA9ICh3cV9vZmYgKyBHVUNfREJfU0laRSkgPj4gUEFH RV9TSElGVDsKIAl3cV9vZmYgJj0gUEFHRV9TSVpFIC0gMTsKLQliYXNlID0ga21hcF9hdG9taWMo aTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGdjLT5jbGllbnRfb2JqLCB3cV9wYWdlKSk7CisJYmFz ZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShnYy0+Y2xpZW50LT5vYmos IHdxX3BhZ2UpKTsKIAl3cWkgPSAoc3RydWN0IGd1Y193cV9pdGVtICopKChjaGFyICopYmFzZSAr IHdxX29mZik7CiAKIAkvKiBOb3cgZmlsbCBpbiB0aGUgNC13b3JkIHdvcmsgcXVldWUgaXRlbSAq LwpAQCAtNTg4LDggKzU4OCw4IEBAIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcnEpCiAgKi8KIAogLyoqCi0gKiBnZW1fYWxsb2NhdGVfZ3VjX29iaigp IC0gQWxsb2NhdGUgZ2VtIG9iamVjdCBmb3IgR3VDIHVzYWdlCi0gKiBAZGV2Oglkcm0gZGV2aWNl CisgKiBndWNfYWxsb2NhdGVfdm1hKCkgLSBBbGxvY2F0ZSBnZW0gb2JqZWN0IGZvciBHdUMgdXNh Z2UKKyAqIEBndWM6CXRoZSBndWMKICAqIEBzaXplOglzaXplIG9mIG9iamVjdAogICoKICAqIFRo aXMgaXMgYSB3cmFwcGVyIHRvIGNyZWF0ZSBhIGdlbSBvYmouIEluIG9yZGVyIHRvIHVzZSBpdCBp bnNpZGUgR3VDLCB0aGUKQEAgLTU5OCw0NiArNTk4LDQwIEBAIHZvaWQgaTkxNV9ndWNfc3VibWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAgKgogICogUmV0dXJuOglBIGRybV9p OTE1X2dlbV9vYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIE5VTEwuCiAgKi8KLXN0YXRp YyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZ2VtX2FsbG9jYXRlX2d1Y19vYmooc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKLQkJCQkJCQl1MzIgc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKmd1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSkKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgcmV0OwogCi0Jb2JqID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZShkZXYsIHNpemUpOworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGUoZGV2X3ByaXYtPmRldiwgc2l6ZSk7CiAJaWYgKElTX0VSUihvYmopKQotCQlyZXR1cm4g TlVMTDsKKwkJcmV0dXJuIEVSUl9DQVNUKG9iaik7CiAKLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlcyhvYmopKSB7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVM TCwgMCwgUEFHRV9TSVpFLAorCQkJCSAgICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01f VE9QKTsKKwlpZiAocmV0KSB7CiAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQkJcmV0dXJu IE5VTEw7Ci0JfQotCi0JaWYgKGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAs IFBBR0VfU0laRSwKLQkJCQkgICAgIFBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApKSB7 Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBF UlJfUFRSKHJldCk7CiAJfQogCiAJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFr ZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAqLwogCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBH RU44X0dUQ1JfSU5WQUxJREFURSk7CiAKLQlyZXR1cm4gb2JqOworCXJldHVybiBpOTE1X2dlbV9v YmpfdG9fZ2d0dChvYmopOwogfQogCiAvKioKLSAqIGdlbV9yZWxlYXNlX2d1Y19vYmooKSAtIFJl bGVhc2UgZ2VtIG9iamVjdCBhbGxvY2F0ZWQgZm9yIEd1QyB1c2FnZQotICogQG9iajoJZ2VtIG9i aiB0byBiZSByZWxlYXNlZAorICogZ3VjX3JlbGVhc2Vfdm1hKCkgLSBSZWxlYXNlIGdlbSBvYmpl Y3QgYWxsb2NhdGVkIGZvciBHdUMgdXNhZ2UKKyAqIEB2bWE6CWdlbSBvYmogdG8gYmUgcmVsZWFz ZWQKICAqLwotc3RhdGljIHZvaWQgZ2VtX3JlbGVhc2VfZ3VjX29iaihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgZ3VjX3JlbGVhc2Vfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewotCWlmICghb2JqKQorCWlmICh2bWEgPT0gTlVMTCkKIAkJcmV0dXJuOwog Ci0JaWYgKGk5MTVfZ2VtX29ial9pc19waW5uZWQob2JqKSkKLQkJaTkxNV9nZW1fb2JqZWN0X2dn dHRfdW5waW4ob2JqKTsKLQotCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwlpOTE1X3ZtYV91 bnBpbih2bWEpOworCWk5MTVfZ2VtX29iamVjdF9wdXQodm1hLT5vYmopOwogfQogCiBzdGF0aWMg dm9pZCBndWNfY2xpZW50X2ZyZWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTY3MSw3ICs2 NjUsNyBAQCBzdGF0aWMgdm9pZCBndWNfY2xpZW50X2ZyZWUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJa3VubWFwKGttYXBfdG9fcGFnZShjbGllbnQtPmNsaWVudF9iYXNlKSk7CiAJfQogCi0J Z2VtX3JlbGVhc2VfZ3VjX29iaihjbGllbnQtPmNsaWVudF9vYmopOworCWd1Y19yZWxlYXNlX3Zt YShjbGllbnQtPmNsaWVudCk7CiAKIAlpZiAoY2xpZW50LT5jdHhfaW5kZXggIT0gR1VDX0lOVkFM SURfQ1RYX0lEKSB7CiAJCWd1Y19maW5pX2N0eF9kZXNjKGd1YywgY2xpZW50KTsKQEAgLTcwMCw3 ICs2OTQsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxv YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVu dDsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwotCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKIAljbGllbnQg PSBremFsbG9jKHNpemVvZigqY2xpZW50KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjbGllbnQpCkBA IC03MTksMTMgKzcxMywxMyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3VjX2Ns aWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAogCS8qIFRoZSBmaXJzdCBw YWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4gKi8K LQlvYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihkZXYsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJ WkUpOwotCWlmICghb2JqKQorCXZtYSA9IGd1Y19hbGxvY2F0ZV92bWEoZ3VjLCBHVUNfREJfU0la RSArIEdVQ19XUV9TSVpFKTsKKwlpZiAoSVNfRVJSKHZtYSkpCiAJCWdvdG8gZXJyOwogCiAJLyog V2UnbGwga2VlcCBqdXN0IHRoZSBmaXJzdCAoZG9vcmJlbGwvcHJvYykgcGFnZSBwZXJtYW5lbnRs eSBrbWFwJ2QuICovCi0JY2xpZW50LT5jbGllbnRfb2JqID0gb2JqOwotCWNsaWVudC0+Y2xpZW50 X2Jhc2UgPSBrbWFwKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShvYmosIDApKTsKKwljbGllbnQt PmNsaWVudCA9IHZtYTsKKwljbGllbnQtPmNsaWVudF9iYXNlID0ga21hcChpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2Uodm1hLT5vYmosIDApKTsKIAljbGllbnQtPndxX29mZnNldCA9IEdVQ19EQl9T SVpFOwogCWNsaWVudC0+d3Ffc2l6ZSA9IEdVQ19XUV9TSVpFOwogCkBAIC03NjksOCArNzYzLDcg QEAgZXJyOgogCiBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUo Z3VjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogCXVpbnQzMl90IHNpemUsIGZsYWdzOwog CkBAIC03ODYsMTYgKzc3OSwxNiBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiAJCUdVQ19MT0dfSVNSX1BBR0VTICsgMSArCiAJCUdVQ19MT0dfQ1JB U0hfUEFHRVMgKyAxKSA8PCBQQUdFX1NISUZUOwogCi0Jb2JqID0gZ3VjLT5sb2dfb2JqOwotCWlm ICghb2JqKSB7Ci0JCW9iaiA9IGdlbV9hbGxvY2F0ZV9ndWNfb2JqKGRldl9wcml2LT5kZXYsIHNp emUpOwotCQlpZiAoIW9iaikgeworCXZtYSA9IGd1Yy0+bG9nOworCWlmICh2bWEgPT0gTlVMTCkg eworCQl2bWEgPSBndWNfYWxsb2NhdGVfdm1hKGd1Yywgc2l6ZSk7CisJCWlmIChJU19FUlIodm1h KSkgewogCQkJLyogbG9nZ2luZyB3aWxsIGJlIG9mZiAqLwogCQkJaTkxNS5ndWNfbG9nX2xldmVs ID0gLTE7CiAJCQlyZXR1cm47CiAJCX0KIAotCQlndWMtPmxvZ19vYmogPSBvYmo7CisJCWd1Yy0+ bG9nID0gdm1hOwogCX0KIAogCS8qIGVhY2ggYWxsb2NhdGVkIHVuaXQgaXMgYSBwYWdlICovCkBA IC04MDQsNyArNzk3LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3RydWN0IGludGVs X2d1YyAqZ3VjKQogCQkoR1VDX0xPR19JU1JfUEFHRVMgPDwgR1VDX0xPR19JU1JfU0hJRlQpIHwK IAkJKEdVQ19MT0dfQ1JBU0hfUEFHRVMgPDwgR1VDX0xPR19DUkFTSF9TSElGVCk7CiAKLQlvZmZz ZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSA+PiBQQUdFX1NISUZUOyAvKiBpbiBw YWdlcyAqLworCW9mZnNldCA9IHZtYS0+bm9kZS5zdGFydCA+PiBQQUdFX1NISUZUOyAvKiBpbiBw YWdlcyAqLwogCWd1Yy0+bG9nX2ZsYWdzID0gKG9mZnNldCA8PCBHVUNfTE9HX0JVRl9BRERSX1NI SUZUKSB8IGZsYWdzOwogfQogCkBAIC04MzMsNyArODI2LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9n dWNfcG9saWNpZXMoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXMpCiBzdGF0aWMgdm9pZCBn dWNfY3JlYXRlX2FkcyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXN0cnVjdCBndWNfYWRz ICphZHM7CiAJc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXM7CiAJc3RydWN0IGd1Y19tbWlv X3JlZ19zdGF0ZSAqcmVnX3N0YXRlOwpAQCAtODQ2LDE2ICs4MzksMTYgQEAgc3RhdGljIHZvaWQg Z3VjX2NyZWF0ZV9hZHMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCQkJc2l6ZW9mKHN0cnVjdCBn dWNfbW1pb19yZWdfc3RhdGUpICsKIAkJCUdVQ19TM19TQVZFX1NQQUNFX1BBR0VTICogUEFHRV9T SVpFOwogCi0Jb2JqID0gZ3VjLT5hZHNfb2JqOwotCWlmICghb2JqKSB7Ci0JCW9iaiA9IGdlbV9h bGxvY2F0ZV9ndWNfb2JqKGRldl9wcml2LT5kZXYsIFBBR0VfQUxJR04oc2l6ZSkpOwotCQlpZiAo IW9iaikKKwl2bWEgPSBndWMtPmFkczsKKwlpZiAodm1hID09IE5VTEwpIHsKKwkJdm1hID0gZ3Vj X2FsbG9jYXRlX3ZtYShndWMsIFBBR0VfQUxJR04oc2l6ZSkpOworCQlpZiAoSVNfRVJSKHZtYSkp CiAJCQlyZXR1cm47CiAKLQkJZ3VjLT5hZHNfb2JqID0gb2JqOworCQlndWMtPmFkcyA9IHZtYTsK IAl9CiAKLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgMCk7CisJcGFnZSA9 IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZSh2bWEtPm9iaiwgMCk7CiAJYWRzID0ga21hcChwYWdl KTsKIAogCS8qCkBAIC04NzUsOCArODY4LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9hZHMo c3RydWN0IGludGVsX2d1YyAqZ3VjKQogCXBvbGljaWVzID0gKHZvaWQgKilhZHMgKyBzaXplb2Yo c3RydWN0IGd1Y19hZHMpOwogCWluaXRfZ3VjX3BvbGljaWVzKHBvbGljaWVzKTsKIAotCWFkcy0+ c2NoZWR1bGVyX3BvbGljaWVzID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgKwotCQkJ c2l6ZW9mKHN0cnVjdCBndWNfYWRzKTsKKwlhZHMtPnNjaGVkdWxlcl9wb2xpY2llcyA9IHZtYS0+ bm9kZS5zdGFydCArIHNpemVvZihzdHJ1Y3QgZ3VjX2Fkcyk7CiAKIAkvKiBNTUlPIHJlZyBzdGF0 ZSAqLwogCXJlZ19zdGF0ZSA9ICh2b2lkICopcG9saWNpZXMgKyBzaXplb2Yoc3RydWN0IGd1Y19w b2xpY2llcyk7CkBAIC05MDQsMjIgKzg5NiwyMiBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2Fk cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAgKi8KIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWNvbnN0IHNpemVfdCBjdHhzaXplID0gc2l6 ZW9mKHN0cnVjdCBndWNfY29udGV4dF9kZXNjKTsKLQljb25zdCBzaXplX3QgcG9vbHNpemUgPSBH VUNfTUFYX0dQVV9DT05URVhUUyAqIGN0eHNpemU7Ci0JY29uc3Qgc2l6ZV90IGdlbXNpemUgPSBy b3VuZF91cChwb29sc2l6ZSwgUEFHRV9TSVpFKTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm ZGV2X3ByaXYtPmd1YzsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdG9faTkxNShkZXYpLT5n dWM7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdTMyIHNpemU7CiAKIAlpZiAoIWk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKQogCQlyZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCiAKLQlp ZiAoZ3VjLT5jdHhfcG9vbF9vYmopCisJaWYgKGd1Yy0+Y3R4X3Bvb2wpCiAJCXJldHVybiAwOyAv KiBhbHJlYWR5IGFsbG9jYXRlZCAqLwogCi0JZ3VjLT5jdHhfcG9vbF9vYmogPSBnZW1fYWxsb2Nh dGVfZ3VjX29iaihkZXZfcHJpdi0+ZGV2LCBnZW1zaXplKTsKLQlpZiAoIWd1Yy0+Y3R4X3Bvb2xf b2JqKQotCQlyZXR1cm4gLUVOT01FTTsKKwlzaXplID0gUEFHRV9BTElHTihHVUNfTUFYX0dQVV9D T05URVhUUypzaXplb2Yoc3RydWN0IGd1Y19jb250ZXh0X2Rlc2MpKTsKKwl2bWEgPSBndWNfYWxs b2NhdGVfdm1hKGd1Yywgc2l6ZSk7CisJaWYgKElTX0VSUih2bWEpKQorCQlyZXR1cm4gUFRSX0VS Uih2bWEpOwogCisJZ3VjLT5jdHhfcG9vbCAgPSB2bWE7CiAJaWRhX2luaXQoJmd1Yy0+Y3R4X2lk cyk7CiAKIAlndWNfY3JlYXRlX2xvZyhndWMpOwpAQCAtOTYyLDE5ICs5NTQsMTggQEAgdm9pZCBp OTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogdm9p ZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOworCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9ICZ0b19pOTE1KGRldiktPmd1YzsKIAotCWdlbV9yZWxlYXNlX2d1Y19vYmooZGV2X3By aXYtPmd1Yy5hZHNfb2JqKTsKLQlndWMtPmFkc19vYmogPSBOVUxMOworCWd1Y19yZWxlYXNlX3Zt YShndWMtPmFkcyk7CisJZ3VjLT5hZHMgPSBOVUxMOwogCi0JZ2VtX3JlbGVhc2VfZ3VjX29iaihk ZXZfcHJpdi0+Z3VjLmxvZ19vYmopOwotCWd1Yy0+bG9nX29iaiA9IE5VTEw7CisJZ3VjX3JlbGVh c2Vfdm1hKGd1Yy0+bG9nKTsKKwlndWMtPmxvZyA9IE5VTEw7CiAKLQlpZiAoZ3VjLT5jdHhfcG9v bF9vYmopCisJaWYgKGd1Yy0+Y3R4X3Bvb2wpCiAJCWlkYV9kZXN0cm95KCZndWMtPmN0eF9pZHMp OwotCWdlbV9yZWxlYXNlX2d1Y19vYmooZ3VjLT5jdHhfcG9vbF9vYmopOwotCWd1Yy0+Y3R4X3Bv b2xfb2JqID0gTlVMTDsKKwlndWNfcmVsZWFzZV92bWEoZ3VjLT5jdHhfcG9vbCk7CisJZ3VjLT5j dHhfcG9vbCA9IE5VTEw7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCA3 ZjkwNjMzODUyNTguLjNiNjU1MDBkNDUwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAg LTYyLDcgKzYyLDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0OwogICogICByZXRjb2Rl OiBlcnJubyBmcm9tIGxhc3QgZ3VjX3N1Ym1pdCgpCiAgKi8KIHN0cnVjdCBpOTE1X2d1Y19jbGll bnQgewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjbGllbnRfb2JqOworCXN0cnVjdCBp OTE1X3ZtYSAqY2xpZW50OwogCXZvaWQgKmNsaWVudF9iYXNlOwkJLyogZmlyc3QgcGFnZSAob25s eSkgb2YgYWJvdmUJKi8KIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqb3duZXI7CiAJc3RydWN0 IGludGVsX2d1YyAqZ3VjOwpAQCAtMTI0LDExICsxMjQsMTAgQEAgc3RydWN0IGludGVsX2d1Y19m dyB7CiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsKIAl1 aW50MzJfdCBsb2dfZmxhZ3M7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvZ19vYmo7 CisJc3RydWN0IGk5MTVfdm1hICpsb2c7CiAKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq YWRzX29iajsKLQotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfcG9vbF9vYmo7CisJ c3RydWN0IGk5MTVfdm1hICphZHM7CisJc3RydWN0IGk5MTVfdm1hICpjdHhfcG9vbDsKIAlzdHJ1 Y3QgaWRhIGN0eF9pZHM7CiAKIAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpleGVjYnVmX2NsaWVu dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwppbmRleCBiZTkzYjQ1ODk2 OGEuLjFlY2Y4OGZkMGIxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIu YwpAQCAtMTc5LDE2ICsxNzksMTUgQEAgc3RhdGljIHZvaWQgc2V0X2d1Y19pbml0X3BhcmFtcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlpOTE1Lmd1Y19sb2dfbGV2ZWwg PDwgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlQ7CiAJfQogCi0JaWYgKGd1Yy0+YWRzX29iaikgewot CQl1MzIgYWRzID0gKHUzMilpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZ3VjLT5hZHNfb2JqKQot CQkJCT4+IFBBR0VfU0hJRlQ7CisJaWYgKGd1Yy0+YWRzKSB7CisJCXUzMiBhZHMgPSAodTMyKWd1 Yy0+YWRzLT5ub2RlLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7CiAJCXBhcmFtc1tHVUNfQ1RMX0RFQlVH XSB8PSBhZHMgPDwgR1VDX0FEU19BRERSX1NISUZUOwogCQlwYXJhbXNbR1VDX0NUTF9ERUJVR10g fD0gR1VDX0FEU19FTkFCTEVEOwogCX0KIAogCS8qIElmIEd1QyBzdWJtaXNzaW9uIGlzIGVuYWJs ZWQsIHNldCB1cCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgaGVyZSAqLwogCWlmIChpOTE1LmVuYWJs ZV9ndWNfc3VibWlzc2lvbikgewotCQl1MzIgcGdzID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0 KGRldl9wcml2LT5ndWMuY3R4X3Bvb2xfb2JqKTsKKwkJdTMyIHBncyA9IGRldl9wcml2LT5ndWMu Y3R4X3Bvb2wtPm5vZGUuc3RhcnQ7CiAJCXUzMiBjdHhfaW5fMTYgPSBHVUNfTUFYX0dQVV9DT05U RVhUUyAvIDE2OwogCiAJCXBncyA+Pj0gUEFHRV9TSElGVDsKLS0gCjIuOC4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK