From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 11/41] drm/i915: Introduce an internal allocator for disposable private objects Date: Fri, 14 Oct 2016 13:18:03 +0100 Message-ID: <20161014121833.439-12-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-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 11BF76E098 for ; Fri, 14 Oct 2016 12:18:53 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id l131so15055109lfl.0 for ; Fri, 14 Oct 2016 05:18:52 -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 UXVpdGUgYSBmZXcgb2Ygb3VyIG9iamVjdHMgdXNlZCBmb3IgaW50ZXJuYWwgaGFyZHdhcmUgcHJv Z3JhbW1pbmcgZG8gbm90CmJlbmVmaXQgZnJvbSBiZWluZyBzd2FwcGFibGUgb3IgZnJvbSBiZWlu ZyB6ZXJvIGluaXRpYWxpc2VkLiBBcyBzdWNoCnRoZXkgZG8gbm90IGJlbmVmaXQgZnJvbSB1c2lu ZyBhIHNobWVtZnMgYmFja2luZyBzdG9yYWdlIGFuZCBzaW5jZSB0aGV5CmFyZSBpbnRlcm5hbCBh bmQgbmV2ZXIgZGlyZWN0bHkgZXhwb3NlZCB0byB0aGUgdXNlciwgd2UgZG8gbm90IG5lZWQgdG8K d29ycnkgYWJvdXQgcHJvdmlkaW5nIGEgZmlscC4gRm9yIHRoZXNlIHdlIGNhbiB1c2UgYW4KZHJt X2k5MTVfZ2VtX29iamVjdCB3cmFwcGVyIGFyb3VuZCBhIHNnX3RhYmxlIG9mIHBsYWluIHN0cnVj dCBwYWdlLiBUaGV5CmFyZSBub3Qgc3dhcCBiYWNrZWQgYW5kIG5vdCBhdXRvbWF0aWNhbGx5IHBp bm5lZC4gSWYgdGhleSBhcmUgcmVhcGVkCmJ5IHRoZSBzaHJpbmtlciwgdGhlIHBhZ2VzIGFyZSBy ZWxlYXNlZCBhbmQgdGhlIGNvbnRlbnRzIGRpc2NhcmRlZC4gRm9yCnRoZSBpbnRlcm5hbCB1c2Ug Y2FzZSwgdGhpcyBpcyBmaW5lIGFzIGZvciBleGFtcGxlLCByaW5nYnVmZmVycyBhcmUKcGlubmVk IGZyb20gYmVpbmcgd3JpdHRlbiBieSBhIHJlcXVlc3QgdG8gYmUgcmVhZCBieSB0aGUgaGFyZHdh cmUuIE9uY2UKdGhleSBhcmUgaWRsZSwgdGhleSBjYW4gYmUgZGlzY2FyZGVkIGVudGlyZWx5LiBB cyBzdWNoIHRoZXkgYXJlIGEgZ29vZAptYXRjaCBmb3IgZXhlY2xpc3QgcmluZ2J1ZmZlcnMgYW5k IGEgc21hbGwgdmFyaWV0eSBvZiBvdGhlciBpbnRlcm5hbApvYmplY3RzLgoKSW4gdGhlIGZpcnN0 IGl0ZXJhdGlvbiwgdGhpcyBpcyBsaW1pdGVkIHRvIHRoZSBzY3JhdGNoIGJhdGNoIGJ1ZmZlcnMg d2UKdXNlIChmb3IgY29tbWFuZCBwYXJzaW5nIGFuZCBzdGF0ZSBpbml0aWFsaXNhdGlvbikuCgp2 MjogQWxsb2NhdGUgcGh5c2ljYWxseSBjb250aWd1b3VzIHBhZ2VzLCB3aGVyZSBwb3NzaWJsZS4K ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICAgNSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMgICB8ICAyNyArKy0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyAgICAgfCAxNjQgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3Rh dGUuYyB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAg IHwgIDE0ICsrLQogNyBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f aW50ZXJuYWwuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggODc5MGFlNGZiMTcxLi5lZmFmMjVi OTg0YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0zNSw2ICszNSw3IEBAIGk5MTUteSArPSBp OTE1X2NtZF9wYXJzZXIubyBcCiAJICBpOTE1X2dlbV9leGVjYnVmZmVyLm8gXAogCSAgaTkxNV9n ZW1fZmVuY2UubyBcCiAJICBpOTE1X2dlbV9ndHQubyBcCisJICBpOTE1X2dlbV9pbnRlcm5hbC5v IFwKIAkgIGk5MTVfZ2VtLm8gXAogCSAgaTkxNV9nZW1fcmVuZGVyX3N0YXRlLm8gXAogCSAgaTkx NV9nZW1fcmVxdWVzdC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDRjMGM4ZWY2YzA4 NC4uMzg0NjdkZGUxZWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTM1NDAsNiArMzU0 MCwxMSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgICB1MzIgZ3R0X29mZnNldCwKIAkJCQkJ ICAgICAgIHUzMiBzaXplKTsKIAorLyogaTkxNV9nZW1faW50ZXJuYWwuYyAqLworc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJdW5zaWduZWQgaW50IHNpemUpOwor CiAvKiBpOTE1X2dlbV9zaHJpbmtlci5jICovCiB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX3Nocmlu ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICB1bnNpZ25lZCBs b25nIHRhcmdldCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Jh dGNoX3Bvb2wuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwpp bmRleCBjYjI1Y2FkMzMxOGMuLmFhNGUxZTA0M2I0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwpAQCAtOTcsOSArOTcsOSBAQCBpOTE1X2dlbV9iYXRjaF9w b29sX2dldChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCwKIAkJCXNpemVfdCBzaXpl KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBOVUxMOwotCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICp0bXAsICpuZXh0OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICp0bXA7CiAJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKLQlpbnQgbjsKKwlpbnQgbiwgcmV0 OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcG9vbC0+ZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKIApAQCAtMTEyLDE5ICsxMTIsMTIgQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQo c3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCiAJCW4gPSBBUlJBWV9TSVpFKHBvb2wt PmNhY2hlX2xpc3QpIC0gMTsKIAlsaXN0ID0gJnBvb2wtPmNhY2hlX2xpc3Rbbl07CiAKLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUodG1wLCBuZXh0LCBsaXN0LCBiYXRjaF9wb29sX2xpbmspIHsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgbGlzdCwgYmF0Y2hfcG9vbF9saW5rKSB7CiAJCS8q IFRoZSBiYXRjaGVzIGFyZSBzdHJpY3RseSBMUlUgb3JkZXJlZCAqLwogCQlpZiAoIWk5MTVfZ2Vt X2FjdGl2ZV9pc19pZGxlKCZ0bXAtPmxhc3RfcmVhZFtwb29sLT5lbmdpbmUtPmlkXSwKIAkJCQkJ ICAgICAmdG1wLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSkKIAkJCWJyZWFrOwogCi0JCS8qIFdo aWxlIHdlJ3JlIGxvb3BpbmcsIGRvIHNvbWUgY2xlYW4gdXAgKi8KLQkJaWYgKHRtcC0+bWFkdiA9 PSBfX0k5MTVfTUFEVl9QVVJHRUQpIHsKLQkJCWxpc3RfZGVsKCZ0bXAtPmJhdGNoX3Bvb2xfbGlu ayk7Ci0JCQlpOTE1X2dlbV9vYmplY3RfcHV0KHRtcCk7Ci0JCQljb250aW51ZTsKLQkJfQotCiAJ CWlmICh0bXAtPmJhc2Uuc2l6ZSA+PSBzaXplKSB7CiAJCQlvYmogPSB0bXA7CiAJCQlicmVhazsK QEAgLTEzMiwxOSArMTI1LDE1IEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1 X2dlbV9iYXRjaF9wb29sICpwb29sLAogCX0KIAogCWlmIChvYmogPT0gTlVMTCkgewotCQlpbnQg cmV0OwotCi0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJnBvb2wtPmVuZ2luZS0+aTkx NS0+ZHJtLCBzaXplKTsKKwkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChw b29sLT5lbmdpbmUtPmk5MTUsIHNpemUpOwogCQlpZiAoSVNfRVJSKG9iaikpCiAJCQlyZXR1cm4g b2JqOwotCi0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKLQkJaWYgKHJl dCkKLQkJCXJldHVybiBFUlJfUFRSKHJldCk7Ci0KLQkJb2JqLT5tYWR2ID0gSTkxNV9NQURWX0RP TlRORUVEOwogCX0KIAorCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCiAJbGlzdF9tb3ZlX3RhaWwoJm9iai0+ YmF0Y2hfcG9vbF9saW5rLCBsaXN0KTsKIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7 CiAJcmV0dXJuIG9iajsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2ludGVybmFsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjYxMDk1ZTU2ZjE2Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYwpA QCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0LTIwMTYgSW50ZWwgQ29y cG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisg KgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2RybS5o PgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKKyNkZWZpbmUgUVVJRVQgKF9fR0ZQX05PUkVUUlkg fCBfX0dGUF9OT1dBUk4pCisKK3N0YXRpYyB2b2lkIGludGVybmFsX2ZyZWVfcGFnZXMoc3RydWN0 IHNnX3RhYmxlICpzdCkKK3sKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCisJZm9yIChzZyA9 IHN0LT5zZ2w7IHNnOyBzZyA9IF9fc2dfbmV4dChzZykpCisJCV9fZnJlZV9wYWdlcyhzZ19wYWdl KHNnKSwgZ2V0X29yZGVyKHNnLT5sZW5ndGgpKTsKKworCXNnX2ZyZWVfdGFibGUoc3QpOworCWtm cmVlKHN0KTsKK30KKworc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVy bmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOworCXVuc2lnbmVkIGludCBu cGFnZXMgPSBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0 OworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJaW50IG1heF9vcmRlcjsKKwlnZnBfdCBnZnA7 CisKKwlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlmICghc3QpCisJ CXJldHVybiAtRU5PTUVNOworCisJaWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBucGFnZXMsIEdGUF9L RVJORUwpKSB7CisJCWtmcmVlKHN0KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJc2cgPSBz dC0+c2dsOworCXN0LT5uZW50cyA9IDA7CisKKwltYXhfb3JkZXIgPSBNQVhfT1JERVI7CisjaWZk ZWYgQ09ORklHX1NXSU9UTEIKKwlpZiAoc3dpb3RsYl9ucl90YmwoKSkKKwkJbWF4X29yZGVyID0g bWluKG1heF9vcmRlciwgaWxvZzIoSU9fVExCX1NFR1NJWkUpKTsKKyNlbmRpZgorCisJZ2ZwID0g R0ZQX0tFUk5FTCB8IF9fR0ZQX0hJR0hNRU0gfCBfX0dGUF9SRUNMQUlNQUJMRTsKKwlpZiAoSVNf Q1JFU1RMSU5FKGk5MTUpIHx8IElTX0JST0FEV0FURVIoaTkxNSkpIHsKKwkJLyogOTY1Z20gY2Fu bm90IHJlbG9jYXRlIG9iamVjdHMgYWJvdmUgNEdpQi4gKi8KKwkJZ2ZwICY9IH5fX0dGUF9ISUdI TUVNOworCQlnZnAgfD0gX19HRlBfRE1BMzI7CisJfQorCisJZG8geworCQlpbnQgb3JkZXIgPSBt aW4oZmxzKG5wYWdlcykgLSAxLCBtYXhfb3JkZXIpOworCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwor CQlkbyB7CisJCQlwYWdlID0gYWxsb2NfcGFnZXMoZ2ZwIHwgKG9yZGVyID8gUVVJRVQgOiAwKSwg b3JkZXIpOworCQkJaWYgKHBhZ2UpCisJCQkJYnJlYWs7CisJCQlpZiAoIW9yZGVyLS0pCisJCQkJ Z290byBlcnI7CisJCX0gd2hpbGUgKDEpOworCisJCXNnX3NldF9wYWdlKHNnLCBwYWdlLCBQQUdF X1NJWkUgPDwgb3JkZXIsIDApOworCQlzdC0+bmVudHMrKzsKKworCQlucGFnZXMgLT0gMSA8PCBv cmRlcjsKKwkJaWYgKCFucGFnZXMpIHsKKwkJCXNnX21hcmtfZW5kKHNnKTsKKwkJCWJyZWFrOwor CQl9CisKKwkJc2cgPSBfX3NnX25leHQoc2cpOworCX0gd2hpbGUgKDEpOworCW9iai0+cGFnZXMg PSBzdDsKKworCWlmIChpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qob2JqKSkgeworCQlvYmot PnBhZ2VzID0gTlVMTDsKKwkJZ290byBlcnI7CisJfQorCisJLyogTWFyayB0aGUgcGFnZXMgYXMg ZG9udG5lZWQgd2hpbHN0IHRoZXkgYXJlIHN0aWxsIHBpbm5lZC4gQXMgc29vbgorCSAqIGFzIHRo ZXkgYXJlIHVucGlubmVkIHRoZXkgYXJlIGFsbG93ZWQgdG8gYmUgcmVhcGVkIGJ5IHRoZSBzaHJp bmtlciwKKwkgKiBhbmQgdGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byByZXBvcHVsYXRlIC0gdGhl IGNvbnRlbnRzIG9mIHRoaXMKKwkgKiBvYmplY3QgYXJlIG9ubHkgdmFsaWQgd2hpbHN0IGFjdGl2 ZSBhbmQgcGlubmVkLgorCSAqLworCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKKwly ZXR1cm4gMDsKKworZXJyOgorCXNnX21hcmtfZW5kKHNnKTsKKwlpbnRlcm5hbF9mcmVlX3BhZ2Vz KHN0KTsKKwlyZXR1cm4gLUVOT01FTTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0 X3B1dF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorewor CWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7CisJaW50ZXJuYWxfZnJlZV9wYWdlcyhv YmotPnBhZ2VzKTsKKworCW9iai0+ZGlydHkgPSAwOworCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9X SUxMTkVFRDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29w cyBpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxfb3BzID0geworCS5mbGFncyA9IEk5MTVfR0VNX09C SkVDVF9IQVNfU1RSVUNUX1BBR0UsCisJLmdldF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9nZXRf cGFnZXNfaW50ZXJuYWwsCisJLnB1dF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNf aW50ZXJuYWwsCit9OworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgb2JqZWN0IHRoYXQgd3JhcHMg c29tZSBpbnRlcm5hbCBtZW1vcnkgZm9yIHByaXZhdGUgdXNlLgorICogVGhpcyBvYmplY3QgaXMg bm90IGJhY2tlZCBieSBzd2FwcGFibGUgc3RvcmFnZSwgYW5kIGFzIHN1Y2ggaXRzIGNvbnRlbnRz CisgKiBhcmUgdm9sYXRpbGUgYW5kIG9ubHkgdmFsaWQgd2hpbHN0IHBpbm5lZC4gSWYgdGhlIG9i amVjdCBpcyByZWFwZWQgYnkgdGhlCisgKiBzaHJpbmtlciwgaXRzIHBhZ2VzIGFuZCBkYXRhIHdp bGwgYmUgZGlzY2FyZGVkLiBFcXVhbGx5LCBpdCBpcyBub3QgYSBmdWxsCisgKiBHRU0gb2JqZWN0 IGFuZCBzbyBub3QgdmFsaWQgZm9yIGFjY2VzcyBmcm9tIHVzZXJzcGFjZS4gVGhpcyBtYWtlcyBp dCB1c2VmdWwKKyAqIGZvciBoYXJkd2FyZSBpbnRlcmZhY2VzIGxpa2UgcmluZ2J1ZmZlcnMgKHdo aWNoIGFyZSBwaW5uZWQgZnJvbSB0aGUgdGltZQorICogdGhlIHJlcXVlc3QgaXMgd3JpdHRlbiB0 byB0aGUgdGltZSB0aGUgaGFyZHdhcmUgc3RvcHMgYWNjZXNzaW5nIGl0KSwgYnV0CisgKiBub3Qg Zm9yIGNvbnRleHRzICh3aGljaCBuZWVkIHRvIGJlIHByZXNlcnZlZCB3aGVuIG5vdCBhY3RpdmUg Zm9yIGxhdGVyCisgKiByZXVzZSkuIE5vdGUgdGhhdCBpdCBpcyBub3QgY2xlYXJlZCB1cG9uIGFs bG9jYXRpb24uCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2k5MTVfZ2VtX29i amVjdF9jcmVhdGVfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJ dW5zaWduZWQgaW50IHNpemUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK KworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYygmaTkxNS0+ZHJtKTsKKwlpZiAoIW9iaikK KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2lu aXQoJmk5MTUtPmRybSwgJm9iai0+YmFzZSwgc2l6ZSk7CisJaTkxNV9nZW1fb2JqZWN0X2luaXQo b2JqLCAmaTkxNV9nZW1fb2JqZWN0X2ludGVybmFsX29wcyk7CisKKwlvYmotPmJhc2Uud3JpdGVf ZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKKwlvYmotPmJhc2UucmVhZF9kb21haW5zID0g STkxNV9HRU1fRE9NQUlOX0NQVTsKKwlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhpOTE1KSA/ IEk5MTVfQ0FDSEVfTExDIDogSTkxNV9DQUNIRV9OT05FOworCisJcmV0dXJuIG9iajsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKaW5kZXggZTdjM2Ri Y2M2YzgxLi4yMTdlMGI1OGI5MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlbmRlcl9zdGF0ZS5jCkBAIC0xODcsNyArMTg3LDcgQEAgaW50IGk5MTVfZ2VtX3JlbmRlcl9z dGF0ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChzby5yb2Rh dGEtPmJhdGNoX2l0ZW1zICogNCA+IDQwOTYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmcmVxLT5pOTE1LT5kcm0sIDQwOTYpOworCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwocmVxLT5pOTE1LCA0MDk2KTsKIAlpZiAoSVNf RVJSKG9iaikpCiAJCXJldHVybiBQVFJfRVJSKG9iaik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMKaW5kZXggMmRjOTQ4MTJiZWE1Li5jN2FjN2UyNmYyZGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yNjQsNyArMjY0LDcgQEAgaW50IGlu dGVsX2VuZ2luZV9jcmVhdGVfc2NyYXRjaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IGludCBzaXplKQogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oJmVuZ2lu ZS0+aTkxNS0+ZHJtLCBzaXplKTsKIAlpZiAoIW9iaikKLQkJb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOworCQlvYmogPSBpOTE1X2dlbV9vYmpl Y3RfY3JlYXRlX2ludGVybmFsKGVuZ2luZS0+aTkxNSwgc2l6ZSk7CiAJaWYgKElTX0VSUihvYmop KSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggcGFnZVxuIik7CiAJ CXJldHVybiBQVFJfRVJSKG9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKaW5kZXggZTI5ZTg0ODEzMjM0Li4yY2UyOGQ0MWY0MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTE3ODQsOSArMTc4NCwxMCBAQCBzdGF0aWMgaW50IGlu aXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdW5zaWdu ZWQgaW50IGZsYWdzOworCXZvaWQgKnZhZGRyOwogCWludCByZXQ7CiAKLQlvYmogPSBpOTE1X2dl bV9vYmplY3RfY3JlYXRlKCZlbmdpbmUtPmk5MTUtPmRybSwgNDA5Nik7CisJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChlbmdpbmUtPmk5MTUsIDQwOTYpOwogCWlmIChJU19F UlIob2JqKSkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzdGF0dXMgcGFnZVxu Iik7CiAJCXJldHVybiBQVFJfRVJSKG9iaik7CkBAIC0xODE5LDE1ICsxODIwLDIyIEBAIHN0YXRp YyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ aWYgKHJldCkKIAkJZ290byBlcnI7CiAKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KG9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIodmFkZHIpKSB7CisJCXJldCA9IFBUUl9F UlIodmFkZHIpOworCQlnb3RvIGVycl91bnBpbjsKKwl9CisKIAllbmdpbmUtPnN0YXR1c19wYWdl LnZtYSA9IHZtYTsKIAllbmdpbmUtPnN0YXR1c19wYWdlLmdndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0 X29mZnNldCh2bWEpOwotCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0KLQkJaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJZW5naW5lLT5zdGF0dXNfcGFn ZS5wYWdlX2FkZHIgPSBtZW1zZXQodmFkZHIsIDAsIDQwOTYpOwogCiAJRFJNX0RFQlVHX0RSSVZF UigiJXMgaHdzIG9mZnNldDogMHglMDh4XG4iLAogCQkJIGVuZ2luZS0+bmFtZSwgaTkxNV9nZ3R0 X29mZnNldCh2bWEpKTsKIAlyZXR1cm4gMDsKIAorZXJyX3VucGluOgorCWk5MTVfdm1hX3VucGlu KHZtYSk7CiBlcnI6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCXJldHVybiByZXQ7Ci0t IAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==