From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 15/33] drm/i915: Track pinned vma inside guc Date: Sun, 7 Aug 2016 15:45:23 +0100 Message-ID: <1470581141-14432-16-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-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-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C2FA6E2F6 for ; Sun, 7 Aug 2016 14:46:07 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id x83so11038716wma.3 for ; Sun, 07 Aug 2016 07:46:06 -0700 (PDT) In-Reply-To: <1470581141-14432-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 IDc3IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKaW5kZXggYjQxYzA1NzY3ZGVmLi5lMmE5ZmMzNTNlZjMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNTI0LDE1ICsyNTI0LDE1IEBAIHN0YXRpYyBpbnQgaTkx NV9ndWNfbG9nX2R1bXAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBk cm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbm9kZS0+bWlub3ItPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvZ19vYmogPSBk ZXZfcHJpdi0+Z3VjLmxvZ19vYmo7Ci0JdTMyICpsb2c7CisJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iajsKIAlpbnQgaSA9IDAsIHBnOwogCi0JaWYgKCFsb2dfb2JqKQorCWlmICghZGV2 X3ByaXYtPmd1Yy5sb2cpCiAJCXJldHVybiAwOwogCi0JZm9yIChwZyA9IDA7IHBnIDwgbG9nX29i ai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFOyBwZysrKSB7Ci0JCWxvZyA9IGttYXBfYXRvbWljKGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZShsb2dfb2JqLCBwZykpOworCW9iaiA9IGRldl9wcml2LT5n dWMubG9nLT5vYmo7CisJZm9yIChwZyA9IDA7IHBnIDwgb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJ WkU7IHBnKyspIHsKKwkJdTMyICpsb2cgPSBrbWFwX2F0b21pYyhpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2Uob2JqLCBwZykpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBQQUdFX1NJWkUgLyBzaXplb2Yo dTMyKTsgaSArPSA0KQogCQkJc2VxX3ByaW50ZihtLCAiMHglMDh4IDB4JTA4eCAweCUwOHggMHgl MDh4XG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4 IDAzYTVjZWYzNTNlYi4uZjU2ZDY4MTczYWU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGludCBndWNfdXBk YXRlX2Rvb3JiZWxsX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAkJCQkgIHN0cnVjdCBpOTE1 X2d1Y19jbGllbnQgKmNsaWVudCwKIAkJCQkgIHUxNiBuZXdfaWQpCiB7Ci0Jc3RydWN0IHNnX3Rh YmxlICpzZyA9IGd1Yy0+Y3R4X3Bvb2xfb2JqLT5wYWdlczsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNn ID0gZ3VjLT5jdHhfcG9vbC0+b2JqLT5wYWdlczsKIAl2b2lkICpkb29yYmVsbF9iaXRtYXAgPSBn dWMtPmRvb3JiZWxsX2JpdG1hcDsKIAlzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxs OwogCXN0cnVjdCBndWNfY29udGV4dF9kZXNjIGRlc2M7CkBAIC0zMjUsOCArMzI1LDggQEAgc3Rh dGljIHZvaWQgZ3VjX2luaXRfcHJvY19kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIHN0YXRp YyB2b2lkIGd1Y19pbml0X2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAkJCSAgICAg IHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqY2xpZW50X29iaiA9IGNsaWVudC0+Y2xpZW50X29iajsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOworCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpjbGllbnRfb2JqID0gY2xpZW50LT5jbGllbnQtPm9iajsKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9 IGNsaWVudC0+b3duZXI7CiAJc3RydWN0IGd1Y19jb250ZXh0X2Rlc2MgZGVzYzsKQEAgLTM4MCw3 ICszODAsNyBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCiAJICogVGhlIGRvb3JiZWxsLCBwcm9jZXNzIGRlc2NyaXB0b3IsIGFuZCB3b3JrcXVl dWUgYXJlIGFsbCBwYXJ0cwogCSAqIG9mIHRoZSBjbGllbnQgb2JqZWN0LCB3aGljaCB0aGUgR3VD IHdpbGwgcmVmZXJlbmNlIHZpYSB0aGUgR0dUVAogCSAqLwotCWdmeF9hZGRyID0gaTkxNV9nZW1f b2JqX2dndHRfb2Zmc2V0KGNsaWVudF9vYmopOworCWdmeF9hZGRyID0gY2xpZW50LT5jbGllbnQt Pm5vZGUuc3RhcnQ7CiAJZGVzYy5kYl90cmlnZ2VyX3BoeSA9IHNnX2RtYV9hZGRyZXNzKGNsaWVu dF9vYmotPnBhZ2VzLT5zZ2wpICsKIAkJCQljbGllbnQtPmRvb3JiZWxsX29mZnNldDsKIAlkZXNj LmRiX3RyaWdnZXJfY3B1ID0gKHVpbnRwdHJfdCljbGllbnQtPmNsaWVudF9iYXNlICsKQEAgLTM5 Nyw3ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsCiAJZGVzYy5kZXNjX3ByaXZhdGUgPSAodWludHB0cl90KWNsaWVudDsKIAogCS8q IFBvb2wgY29udGV4dCBpcyBwaW5uZWQgYWxyZWFkeSAqLwotCXNnID0gZ3VjLT5jdHhfcG9vbF9v YmotPnBhZ2VzOworCXNnID0gZ3VjLT5jdHhfcG9vbC0+b2JqLT5wYWdlczsKIAlzZ19wY29weV9m cm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZkZXNjLCBzaXplb2YoZGVzYyksCiAJCQkg ICAgIHNpemVvZihkZXNjKSAqIGNsaWVudC0+Y3R4X2luZGV4KTsKIH0KQEAgLTQxMCw3ICs0MTAs NyBAQCBzdGF0aWMgdm9pZCBndWNfZmluaV9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs CiAKIAltZW1zZXQoJmRlc2MsIDAsIHNpemVvZihkZXNjKSk7CiAKLQlzZyA9IGd1Yy0+Y3R4X3Bv b2xfb2JqLT5wYWdlczsKKwlzZyA9IGd1Yy0+Y3R4X3Bvb2wtPm9iai0+cGFnZXM7CiAJc2dfcGNv cHlfZnJvbV9idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCAmZGVzYywgc2l6ZW9mKGRlc2MpLAog CQkJICAgICBzaXplb2YoZGVzYykgKiBjbGllbnQtPmN0eF9pbmRleCk7CiB9CkBAIC00OTIsNyAr NDkyLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF93b3JrcXVldWVfaXRlbShzdHJ1Y3QgaTkxNV9n dWNfY2xpZW50ICpnYywKIAkvKiBXUSBzdGFydHMgZnJvbSB0aGUgcGFnZSBhZnRlciBkb29yYmVs bCAvIHByb2Nlc3NfZGVzYyAqLwogCXdxX3BhZ2UgPSAod3Ffb2ZmICsgR1VDX0RCX1NJWkUpID4+ IFBBR0VfU0hJRlQ7CiAJd3Ffb2ZmICY9IFBBR0VfU0laRSAtIDE7Ci0JYmFzZSA9IGttYXBfYXRv bWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShnYy0+Y2xpZW50X29iaiwgd3FfcGFnZSkpOwor CWJhc2UgPSBrbWFwX2F0b21pYyhpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoZ2MtPmNsaWVudC0+ b2JqLCB3cV9wYWdlKSk7CiAJd3FpID0gKHN0cnVjdCBndWNfd3FfaXRlbSAqKSgoY2hhciAqKWJh c2UgKyB3cV9vZmYpOwogCiAJLyogTm93IGZpbGwgaW4gdGhlIDQtd29yZCB3b3JrIHF1ZXVlIGl0 ZW0gKi8KQEAgLTYxMSw4ICs2MTEsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2d1Y19zdWJtaXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKICAqLwogCiAvKioKLSAqIGdlbV9hbGxvY2F0 ZV9ndWNfb2JqKCkgLSBBbGxvY2F0ZSBnZW0gb2JqZWN0IGZvciBHdUMgdXNhZ2UKLSAqIEBkZXZf cHJpdjoJZHJpdmVyIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKKyAqIGd1Y19hbGxvY2F0ZV92bWEo KSAtIEFsbG9jYXRlIGEgR0dUVCBWTUEgZm9yIEd1QyB1c2FnZQorICogQGd1YzoJdGhlIGd1Ywog ICogQHNpemU6CXNpemUgb2Ygb2JqZWN0CiAgKgogICogVGhpcyBpcyBhIHdyYXBwZXIgdG8gY3Jl YXRlIGEgZ2VtIG9iai4gSW4gb3JkZXIgdG8gdXNlIGl0IGluc2lkZSBHdUMsIHRoZQpAQCAtNjIx LDQ1ICs2MjEsNDkgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcnEpCiAgKgogICogUmV0dXJuOglBIGRybV9pOTE1X2dlbV9vYmplY3Qg aWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIE5VTEwuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqCi1nZW1fYWxsb2NhdGVfZ3VjX29iaihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHUzMiBzaXplKQorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZ3VjX2Fs bG9jYXRlX3ZtYShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBzaXplKQogeworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlpbnQgcmV0 OwogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZGV2X3ByaXYtPmRybSwgc2l6ZSk7 CiAJaWYgKElTX0VSUihvYmopKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIEVSUl9DQVNUKG9i aik7CiAKLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopKSB7Ci0JCWk5MTVfZ2Vt X29iamVjdF9wdXQob2JqKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQorCXZtYSA9IGk5MTVfdm1hX2Ny ZWF0ZShvYmosICZkZXZfcHJpdi0+Z2d0dC5iYXNlLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkp CisJCWdvdG8gZXJyOwogCi0JaWYgKGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIFBBR0VfU0laRSwKLQkJCQkgICAgIFBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1Ap KSB7Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQkJcmV0dXJuIE5VTEw7CisJcmV0ID0g aTkxNV92bWFfcGluKHZtYSwgMCwgUEFHRV9TSVpFLAorCQkJICAgUElOX0dMT0JBTCB8IFBJTl9P RkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOworCWlmIChyZXQpIHsKKwkJdm1hID0gRVJSX1BU UihyZXQpOworCQlnb3RvIGVycjsKIAl9CiAKIAkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0 IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCiAJSTkxNV9XUklURShHRU44 X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKIAotCXJldHVybiBvYmo7CisJcmV0dXJuIHZt YTsKKworZXJyOgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwlyZXR1cm4gdm1hOwogfQog CiAvKioKLSAqIGdlbV9yZWxlYXNlX2d1Y19vYmooKSAtIFJlbGVhc2UgZ2VtIG9iamVjdCBhbGxv Y2F0ZWQgZm9yIEd1QyB1c2FnZQotICogQG9iajoJZ2VtIG9iaiB0byBiZSByZWxlYXNlZAorICog Z3VjX3JlbGVhc2Vfdm1hKCkgLSBSZWxlYXNlIGdlbSBvYmplY3QgYWxsb2NhdGVkIGZvciBHdUMg dXNhZ2UKKyAqIEB2bWE6CWdlbSBvYmogdG8gYmUgcmVsZWFzZWQKICAqLwotc3RhdGljIHZvaWQg Z2VtX3JlbGVhc2VfZ3VjX29iaihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3Rh dGljIHZvaWQgZ3VjX3JlbGVhc2Vfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCWlmICgh b2JqKQorCWlmICghdm1hKQogCQlyZXR1cm47CiAKLQlpZiAoaTkxNV9nZW1fb2JqX2lzX3Bpbm5l ZChvYmopKQotCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOwotCi0JaTkxNV9nZW1f b2JqZWN0X3B1dChvYmopOworCWk5MTVfdm1hX3VucGluKHZtYSk7CisJaTkxNV9nZW1fb2JqZWN0 X3B1dCh2bWEtPm9iaik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC02ODYsNyArNjkwLDcgQEAgZ3Vj X2NsaWVudF9mcmVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJa3VubWFw KGttYXBfdG9fcGFnZShjbGllbnQtPmNsaWVudF9iYXNlKSk7CiAJfQogCi0JZ2VtX3JlbGVhc2Vf Z3VjX29iaihjbGllbnQtPmNsaWVudF9vYmopOworCWd1Y19yZWxlYXNlX3ZtYShjbGllbnQtPmNs aWVudCk7CiAKIAlpZiAoY2xpZW50LT5jdHhfaW5kZXggIT0gR1VDX0lOVkFMSURfQ1RYX0lEKSB7 CiAJCWd1Y19maW5pX2N0eF9kZXNjKGd1YywgY2xpZW50KTsKQEAgLTc1Nyw3ICs3NjEsNyBAQCBn dWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAlz dHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0g JmRldl9wcml2LT5ndWM7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKIAl1aW50MTZfdCBkYl9pZDsKIAogCWNsaWVudCA9IGt6YWxsb2Mo c2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVMKTsKQEAgLTc3NywxMyArNzgxLDEzIEBAIGd1Y19j bGllbnRfYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAogCS8q IFRoZSBmaXJzdCBwYWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2Vz IGFyZSB3cS4gKi8KLQlvYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihkZXZfcHJpdiwgR1VDX0RC X1NJWkUgKyBHVUNfV1FfU0laRSk7Ci0JaWYgKCFvYmopCisJdm1hID0gZ3VjX2FsbG9jYXRlX3Zt YShndWMsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOworCWlmIChJU19FUlIodm1hKSkKIAkJ Z290byBlcnI7CiAKIAkvKiBXZSdsbCBrZWVwIGp1c3QgdGhlIGZpcnN0IChkb29yYmVsbC9wcm9j KSBwYWdlIHBlcm1hbmVudGx5IGttYXAnZC4gKi8KLQljbGllbnQtPmNsaWVudF9vYmogPSBvYmo7 Ci0JY2xpZW50LT5jbGllbnRfYmFzZSA9IGttYXAoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9i aiwgMCkpOworCWNsaWVudC0+Y2xpZW50ID0gdm1hOworCWNsaWVudC0+Y2xpZW50X2Jhc2UgPSBr bWFwKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZSh2bWEtPm9iaiwgMCkpOwogCWNsaWVudC0+d3Ff b2Zmc2V0ID0gR1VDX0RCX1NJWkU7CiAJY2xpZW50LT53cV9zaXplID0gR1VDX1dRX1NJWkU7CiAK QEAgLTgyNSw4ICs4MjksNyBAQCBlcnI6CiAKIHN0YXRpYyB2b2lkIGd1Y19jcmVhdGVfbG9nKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBndWNfdG9faTkxNShndWMpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJdWludDMy X3Qgc2l6ZSwgZmxhZ3M7CiAKQEAgLTg0MiwxNiArODQ1LDE2IEBAIHN0YXRpYyB2b2lkIGd1Y19j cmVhdGVfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJR1VDX0xPR19JU1JfUEFHRVMgKyAx ICsKIAkJR1VDX0xPR19DUkFTSF9QQUdFUyArIDEpIDw8IFBBR0VfU0hJRlQ7CiAKLQlvYmogPSBn dWMtPmxvZ19vYmo7Ci0JaWYgKCFvYmopIHsKLQkJb2JqID0gZ2VtX2FsbG9jYXRlX2d1Y19vYmoo ZGV2X3ByaXYsIHNpemUpOwotCQlpZiAoIW9iaikgeworCXZtYSA9IGd1Yy0+bG9nOworCWlmICgh dm1hKSB7CisJCXZtYSA9IGd1Y19hbGxvY2F0ZV92bWEoZ3VjLCBzaXplKTsKKwkJaWYgKElTX0VS Uih2bWEpKSB7CiAJCQkvKiBsb2dnaW5nIHdpbGwgYmUgb2ZmICovCiAJCQlpOTE1Lmd1Y19sb2df bGV2ZWwgPSAtMTsKIAkJCXJldHVybjsKIAkJfQogCi0JCWd1Yy0+bG9nX29iaiA9IG9iajsKKwkJ Z3VjLT5sb2cgPSB2bWE7CiAJfQogCiAJLyogZWFjaCBhbGxvY2F0ZWQgdW5pdCBpcyBhIHBhZ2Ug Ki8KQEAgLTg2MCw3ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2xvZyhzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiAJCShHVUNfTE9HX0lTUl9QQUdFUyA8PCBHVUNfTE9HX0lTUl9TSElG VCkgfAogCQkoR1VDX0xPR19DUkFTSF9QQUdFUyA8PCBHVUNfTE9HX0NSQVNIX1NISUZUKTsKIAot CW9mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopID4+IFBBR0VfU0hJRlQ7IC8q IGluIHBhZ2VzICovCisJb2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7IC8q IGluIHBhZ2VzICovCiAJZ3VjLT5sb2dfZmxhZ3MgPSAob2Zmc2V0IDw8IEdVQ19MT0dfQlVGX0FE RFJfU0hJRlQpIHwgZmxhZ3M7CiB9CiAKQEAgLTg4OSw3ICs4OTIsNyBAQCBzdGF0aWMgdm9pZCBp bml0X2d1Y19wb2xpY2llcyhzdHJ1Y3QgZ3VjX3BvbGljaWVzICpwb2xpY2llcykKIHN0YXRpYyB2 b2lkIGd1Y19jcmVhdGVfYWRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJc3RydWN0IGd1 Y19hZHMgKmFkczsKIAlzdHJ1Y3QgZ3VjX3BvbGljaWVzICpwb2xpY2llczsKIAlzdHJ1Y3QgZ3Vj X21taW9fcmVnX3N0YXRlICpyZWdfc3RhdGU7CkBAIC05MDIsMTYgKzkwNSwxNiBAQCBzdGF0aWMg dm9pZCBndWNfY3JlYXRlX2FkcyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJCQlzaXplb2Yoc3Ry dWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSkgKwogCQkJR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMgKiBQ QUdFX1NJWkU7CiAKLQlvYmogPSBndWMtPmFkc19vYmo7Ci0JaWYgKCFvYmopIHsKLQkJb2JqID0g Z2VtX2FsbG9jYXRlX2d1Y19vYmooZGV2X3ByaXYsIFBBR0VfQUxJR04oc2l6ZSkpOwotCQlpZiAo IW9iaikKKwl2bWEgPSBndWMtPmFkczsKKwlpZiAoIXZtYSkgeworCQl2bWEgPSBndWNfYWxsb2Nh dGVfdm1hKGd1YywgUEFHRV9BTElHTihzaXplKSk7CisJCWlmIChJU19FUlIodm1hKSkKIAkJCXJl dHVybjsKIAotCQlndWMtPmFkc19vYmogPSBvYmo7CisJCWd1Yy0+YWRzID0gdm1hOwogCX0KIAot CXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2Uob2JqLCAwKTsKKwlwYWdlID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKHZtYS0+b2JqLCAwKTsKIAlhZHMgPSBrbWFwKHBhZ2UpOwogCiAJ LyoKQEAgLTkzMSw4ICs5MzQsNyBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2FkcyhzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiAJcG9saWNpZXMgPSAodm9pZCAqKWFkcyArIHNpemVvZihzdHJ1Y3Qg Z3VjX2Fkcyk7CiAJaW5pdF9ndWNfcG9saWNpZXMocG9saWNpZXMpOwogCi0JYWRzLT5zY2hlZHVs ZXJfcG9saWNpZXMgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArCi0JCQlzaXplb2Yo c3RydWN0IGd1Y19hZHMpOworCWFkcy0+c2NoZWR1bGVyX3BvbGljaWVzID0gdm1hLT5ub2RlLnN0 YXJ0ICsgc2l6ZW9mKHN0cnVjdCBndWNfYWRzKTsKIAogCS8qIE1NSU8gcmVnIHN0YXRlICovCiAJ cmVnX3N0YXRlID0gKHZvaWQgKilwb2xpY2llcyArIHNpemVvZihzdHJ1Y3QgZ3VjX3BvbGljaWVz KTsKQEAgLTk2MCwxMCArOTYyLDkgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9hZHMoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogICovCiBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQljb25zdCBzaXplX3QgY3R4c2l6ZSA9 IHNpemVvZihzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzYyk7Ci0JY29uc3Qgc2l6ZV90IHBvb2xzaXpl ID0gR1VDX01BWF9HUFVfQ09OVEVYVFMgKiBjdHhzaXplOwotCWNvbnN0IHNpemVfdCBnZW1zaXpl ID0gcm91bmRfdXAocG9vbHNpemUsIFBBR0VfU0laRSk7CiAJc3RydWN0IGludGVsX2d1YyAqZ3Vj ID0gJmRldl9wcml2LT5ndWM7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdTMyIHNpemU7CiAK IAkvKiBXaXBlIGJpdG1hcCAmIGRlbGV0ZSBjbGllbnQgaW4gY2FzZSBvZiByZWluaXRpYWxpc2F0 aW9uICovCiAJYml0bWFwX2NsZWFyKGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCAwLCBHVUNfTUFYX0RP T1JCRUxMUyk7CkBAIC05NzIsMTMgKzk3MywxNSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIWk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uKQogCQlyZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCiAKLQlpZiAo Z3VjLT5jdHhfcG9vbF9vYmopCisJaWYgKGd1Yy0+Y3R4X3Bvb2wpCiAJCXJldHVybiAwOyAvKiBh bHJlYWR5IGFsbG9jYXRlZCAqLwogCi0JZ3VjLT5jdHhfcG9vbF9vYmogPSBnZW1fYWxsb2NhdGVf Z3VjX29iaihkZXZfcHJpdiwgZ2Vtc2l6ZSk7Ci0JaWYgKCFndWMtPmN0eF9wb29sX29iaikKLQkJ cmV0dXJuIC1FTk9NRU07CisJc2l6ZSA9IFBBR0VfQUxJR04oR1VDX01BWF9HUFVfQ09OVEVYVFMq c2l6ZW9mKHN0cnVjdCBndWNfY29udGV4dF9kZXNjKSk7CisJdm1hID0gZ3VjX2FsbG9jYXRlX3Zt YShndWMsIHNpemUpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsK IAorCWd1Yy0+Y3R4X3Bvb2wgPSB2bWE7CiAJaWRhX2luaXQoJmd1Yy0+Y3R4X2lkcyk7CiAJZ3Vj X2NyZWF0ZV9sb2coZ3VjKTsKIAlndWNfY3JlYXRlX2FkcyhndWMpOwpAQCAtMTAzMCwxNiArMTAz MywxMiBAQCB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5n dWM7CiAKLQlnZW1fcmVsZWFzZV9ndWNfb2JqKGRldl9wcml2LT5ndWMuYWRzX29iaik7Ci0JZ3Vj LT5hZHNfb2JqID0gTlVMTDsKLQotCWdlbV9yZWxlYXNlX2d1Y19vYmooZGV2X3ByaXYtPmd1Yy5s b2dfb2JqKTsKLQlndWMtPmxvZ19vYmogPSBOVUxMOworCWd1Y19yZWxlYXNlX3ZtYShudWxsaWZ5 KCZndWMtPmFkcykpOworCWd1Y19yZWxlYXNlX3ZtYShudWxsaWZ5KCZndWMtPmxvZykpOwogCi0J aWYgKGd1Yy0+Y3R4X3Bvb2xfb2JqKQorCWlmIChndWMtPmN0eF9wb29sKQogCQlpZGFfZGVzdHJv eSgmZ3VjLT5jdHhfaWRzKTsKLQlnZW1fcmVsZWFzZV9ndWNfb2JqKGd1Yy0+Y3R4X3Bvb2xfb2Jq KTsKLQlndWMtPmN0eF9wb29sX29iaiA9IE5VTEw7CisJZ3VjX3JlbGVhc2Vfdm1hKG51bGxpZnko Jmd1Yy0+Y3R4X3Bvb2wpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCmluZGV4 IDYyM2NmMjZjZDc4NC4uYThkYTU2M2NhZGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApA QCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Q7CiAgKiAgIHJldGNv ZGU6IGVycm5vIGZyb20gbGFzdCBndWNfc3VibWl0KCkKICAqLwogc3RydWN0IGk5MTVfZ3VjX2Ns aWVudCB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmNsaWVudF9vYmo7CisJc3RydWN0 IGk5MTVfdm1hICpjbGllbnQ7CiAJdm9pZCAqY2xpZW50X2Jhc2U7CQkvKiBmaXJzdCBwYWdlIChv bmx5KSBvZiBhYm92ZQkqLwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpvd25lcjsKIAlzdHJ1 Y3QgaW50ZWxfZ3VjICpndWM7CkBAIC0xMjUsMTEgKzEyNSwxMCBAQCBzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3IHsKIHN0cnVjdCBpbnRlbF9ndWMgewogCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3Owog CXVpbnQzMl90IGxvZ19mbGFnczsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbG9nX29i ajsKKwlzdHJ1Y3QgaTkxNV92bWEgKmxvZzsKIAotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICphZHNfb2JqOwotCi0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9wb29sX29iajsK KwlzdHJ1Y3QgaTkxNV92bWEgKmFkczsKKwlzdHJ1Y3QgaTkxNV92bWEgKmN0eF9wb29sOwogCXN0 cnVjdCBpZGEgY3R4X2lkczsKIAogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmV4ZWNidWZfY2xp ZW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCmluZGV4IDM3NjNlMzBj YzE2NS4uNThlZjQ0MThhMmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jCkBAIC0xODEsMTYgKzE4MSwxNSBAQCBzdGF0aWMgdm9pZCBzZXRfZ3VjX2luaXRfcGFyYW1z KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCWk5MTUuZ3VjX2xvZ19sZXZl bCA8PCBHVUNfTE9HX1ZFUkJPU0lUWV9TSElGVDsKIAl9CiAKLQlpZiAoZ3VjLT5hZHNfb2JqKSB7 Ci0JCXUzMiBhZHMgPSAodTMyKWk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChndWMtPmFkc19vYmop Ci0JCQkJPj4gUEFHRV9TSElGVDsKKwlpZiAoZ3VjLT5hZHMpIHsKKwkJdTMyIGFkcyA9ICh1MzIp Z3VjLT5hZHMtPm5vZGUuc3RhcnQgPj4gUEFHRV9TSElGVDsKIAkJcGFyYW1zW0dVQ19DVExfREVC VUddIHw9IGFkcyA8PCBHVUNfQURTX0FERFJfU0hJRlQ7CiAJCXBhcmFtc1tHVUNfQ1RMX0RFQlVH XSB8PSBHVUNfQURTX0VOQUJMRUQ7CiAJfQogCiAJLyogSWYgR3VDIHN1Ym1pc3Npb24gaXMgZW5h YmxlZCwgc2V0IHVwIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBoZXJlICovCiAJaWYgKGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKSB7Ci0JCXUzMiBwZ3MgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQoZGV2X3ByaXYtPmd1Yy5jdHhfcG9vbF9vYmopOworCQl1MzIgcGdzID0gZGV2X3ByaXYtPmd1 Yy5jdHhfcG9vbC0+bm9kZS5zdGFydDsKIAkJdTMyIGN0eF9pbl8xNiA9IEdVQ19NQVhfR1BVX0NP TlRFWFRTIC8gMTY7CiAKIAkJcGdzID4+PSBQQUdFX1NISUZUOwotLSAKMi44LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=