From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Introduce an internal allocator for disposable private objects Date: Sat, 8 Oct 2016 09:34:40 +0100 Message-ID: <20161008083440.25083-1-chris@chris-wilson.co.uk> References: <5c234e90-abfd-301b-5743-2116b15d67c9@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id E45AE6E3E7 for ; Sat, 8 Oct 2016 08:34:46 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id i130so6156008wmg.0 for ; Sat, 08 Oct 2016 01:34:46 -0700 (PDT) In-Reply-To: <5c234e90-abfd-301b-5743-2116b15d67c9@linux.intel.com> 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 L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMgICB8ICAyOCArKy0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyAgICAgfCAxNjIgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3Rh dGUuYyB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAg IHwgIDE0ICsrLQogNyBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f aW50ZXJuYWwuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggYTk5OGMyYmNlNzBhLi5iOTRhOTBm MzRkMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0zNSw2ICszNSw3IEBAIGk5MTUteSArPSBp OTE1X2NtZF9wYXJzZXIubyBcCiAJICBpOTE1X2dlbV9leGVjYnVmZmVyLm8gXAogCSAgaTkxNV9n ZW1fZmVuY2UubyBcCiAJICBpOTE1X2dlbV9ndHQubyBcCisJICBpOTE1X2dlbV9pbnRlcm5hbC5v IFwKIAkgIGk5MTVfZ2VtLm8gXAogCSAgaTkxNV9nZW1fcmVuZGVyX3N0YXRlLm8gXAogCSAgaTkx NV9nZW1fcmVxdWVzdC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGZlZTVjYzkyZTJm Mi4uYmFkOTdmMWU1MjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTM1MzgsNiArMzUz OCwxMSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgICB1MzIgZ3R0X29mZnNldCwKIAkJCQkJ ICAgICAgIHUzMiBzaXplKTsKIAorLyogaTkxNV9nZW1faW50ZXJuYWwuYyAqLworc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXVuc2lnbmVkIGludCBzaXplKTsKKwogLyogaTkxNV9n ZW1fc2hyaW5rZXIuYyAqLwogdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgdW5zaWduZWQgbG9uZyB0YXJnZXQs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKaW5kZXggY2IyNWNh ZDMzMThjLi4zOTM0YzkxMDNjZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2JhdGNoX3Bvb2wuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9i YXRjaF9wb29sLmMKQEAgLTk3LDkgKzk3LDkgQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3Ry dWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCiAJCQlzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqdG1wLCAqbmV4dDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdG1wOwog CXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7Ci0JaW50IG47CisJaW50IG4sIHJldDsKIAogCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJnBvb2wtPmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAK QEAgLTExMiwxOSArMTEyLDEyIEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1 X2dlbV9iYXRjaF9wb29sICpwb29sLAogCQluID0gQVJSQVlfU0laRShwb29sLT5jYWNoZV9saXN0 KSAtIDE7CiAJbGlzdCA9ICZwb29sLT5jYWNoZV9saXN0W25dOwogCi0JbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKHRtcCwgbmV4dCwgbGlzdCwgYmF0Y2hfcG9vbF9saW5rKSB7CisJbGlzdF9mb3Jf ZWFjaF9lbnRyeSh0bXAsIGxpc3QsIGJhdGNoX3Bvb2xfbGluaykgewogCQkvKiBUaGUgYmF0Y2hl cyBhcmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQgKi8KIAkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNf aWRsZSgmdG1wLT5sYXN0X3JlYWRbcG9vbC0+ZW5naW5lLT5pZF0sCiAJCQkJCSAgICAgJnRtcC0+ YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpCiAJCQlicmVhazsKIAotCQkvKiBXaGlsZSB3ZSdyZSBs b29waW5nLCBkbyBzb21lIGNsZWFuIHVwICovCi0JCWlmICh0bXAtPm1hZHYgPT0gX19JOTE1X01B RFZfUFVSR0VEKSB7Ci0JCQlsaXN0X2RlbCgmdG1wLT5iYXRjaF9wb29sX2xpbmspOwotCQkJaTkx NV9nZW1fb2JqZWN0X3B1dCh0bXApOwotCQkJY29udGludWU7Ci0JCX0KLQogCQlpZiAodG1wLT5i YXNlLnNpemUgPj0gc2l6ZSkgewogCQkJb2JqID0gdG1wOwogCQkJYnJlYWs7CkBAIC0xMzIsMTkg KzEyNSwxNiBAQCBpOTE1X2dlbV9iYXRjaF9wb29sX2dldChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hf cG9vbCAqcG9vbCwKIAl9CiAKIAlpZiAob2JqID09IE5VTEwpIHsKLQkJaW50IHJldDsKLQotCQlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKCZwb29sLT5lbmdpbmUtPmk5MTUtPmRybSwgc2l6 ZSk7CisJCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoJnBvb2wtPmVuZ2lu ZS0+aTkxNS0+ZHJtLAorCQkJCQkJICAgICAgc2l6ZSk7CiAJCWlmIChJU19FUlIob2JqKSkKIAkJ CXJldHVybiBvYmo7Ci0KLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOwot CQlpZiAocmV0KQotCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQotCQlvYmotPm1hZHYgPSBJOTE1 X01BRFZfRE9OVE5FRUQ7CiAJfQogCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhv YmopOworCWlmIChyZXQpCisJCXJldHVybiBFUlJfUFRSKHJldCk7CisKIAlsaXN0X21vdmVfdGFp bCgmb2JqLT5iYXRjaF9wb29sX2xpbmssIGxpc3QpOwogCWk5MTVfZ2VtX29iamVjdF9waW5fcGFn ZXMob2JqKTsKIAlyZXR1cm4gb2JqOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1faW50ZXJuYWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVy bmFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNTViOTIzMmI4 ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRl cm5hbC5jCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxNiBJ bnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZU V0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2k5 MTVfZHJtLmg+CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKworI2RlZmluZSBRVUlFVCAoX19HRlBf Tk9SRVRSWSB8IF9fR0ZQX05PV0FSTikKKworc3RhdGljIHZvaWQgaW50ZXJuYWxfZnJlZV9wYWdl cyhzdHJ1Y3Qgc2dfdGFibGUgKnN0KQoreworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisKKwlm b3IgKHNnID0gc3QtPnNnbDsgc2c7IHNnID0gX19zZ19uZXh0KHNnKSkKKwkJX19mcmVlX3BhZ2Vz KHNnX3BhZ2Uoc2cpLCBnZXRfb3JkZXIoc2ctPmxlbmd0aCkpOworCisJc2dfZnJlZV90YWJsZShz dCk7CisJa2ZyZWUoc3QpOworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwl1bnNpZ25l ZCBpbnQgbnBhZ2VzID0gb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7CisJc3RydWN0IHNnX3Rh YmxlICpzdDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCWludCBtYXhfb3JkZXI7CisJZ2Zw X3QgZ2ZwOworCisJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXN0KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChzZ19hbGxvY190YWJsZShzdCwgbnBhZ2Vz LCBHRlBfS0VSTkVMKSkgeworCQlrZnJlZShzdCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwor CXNnID0gc3QtPnNnbDsKKwlzdC0+bmVudHMgPSAwOworCisJbWF4X29yZGVyID0gTUFYX09SREVS OworI2lmZGVmIENPTkZJR19TV0lPVExCCisJaWYgKHN3aW90bGJfbnJfdGJsKCkpCisJCW1heF9v cmRlciA9IG1pbihtYXhfb3JkZXIsIGlsb2cyKElPX1RMQl9TRUdTSVpFKSk7CisjZW5kaWYKKwor CWdmcCA9IEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNIHwgX19HRlBfUkVDTEFJTUFCTEU7CisJ aWYgKElTX0NSRVNUTElORShvYmotPmJhc2UuZGV2KSB8fCBJU19CUk9BRFdBVEVSKG9iai0+YmFz ZS5kZXYpKSB7CisJCS8qIDk2NWdtIGNhbm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIu ICovCisJCWdmcCAmPSB+X19HRlBfSElHSE1FTTsKKwkJZ2ZwIHw9IF9fR0ZQX0RNQTMyOworCX0K KworCWRvIHsKKwkJaW50IG9yZGVyID0gbWluKGZscyhucGFnZXMpIC0gMSwgbWF4X29yZGVyKTsK KwkJc3RydWN0IHBhZ2UgKnBhZ2U7CisKKwkJZG8geworCQkJcGFnZSA9IGFsbG9jX3BhZ2VzKGdm cCB8IChvcmRlciA/IFFVSUVUIDogMCksIG9yZGVyKTsKKwkJCWlmIChwYWdlKQorCQkJCWJyZWFr OworCQkJaWYgKCFvcmRlci0tKQorCQkJCWdvdG8gZXJyOworCQl9IHdoaWxlICgxKTsKKworCQlz Z19zZXRfcGFnZShzZywgcGFnZSwgUEFHRV9TSVpFIDw8IG9yZGVyLCAwKTsKKwkJc3QtPm5lbnRz Kys7CisKKwkJbnBhZ2VzIC09IDEgPDwgb3JkZXI7CisJCWlmICghbnBhZ2VzKSB7CisJCQlzZ19t YXJrX2VuZChzZyk7CisJCQlicmVhazsKKwkJfQorCisJCXNnID0gX19zZ19uZXh0KHNnKTsKKwl9 IHdoaWxlICgxKTsKKwlvYmotPnBhZ2VzID0gc3Q7CisKKwlpZiAoaTkxNV9nZW1fZ3R0X3ByZXBh cmVfb2JqZWN0KG9iaikpIHsKKwkJb2JqLT5wYWdlcyA9IE5VTEw7CisJCWdvdG8gZXJyOworCX0K KworCS8qIE1hcmsgdGhlIHBhZ2VzIGFzIGRvbnRuZWVkIHdoaWxzdCB0aGV5IGFyZSBzdGlsbCBw aW5uZWQuIEFzIHNvb24KKwkgKiBhcyB0aGV5IGFyZSB1bnBpbm5lZCB0aGV5IGFyZSBhbGxvd2Vk IHRvIGJlIHJlYXBlZCBieSB0aGUgc2hyaW5rZXIsCisJICogYW5kIHRoZSBjYWxsZXIgaXMgZXhw ZWN0ZWQgdG8gcmVwb3B1bGF0ZSAtIHRoZSBjb250ZW50cyBvZiB0aGlzCisJICogb2JqZWN0IGFy ZSBvbmx5IHZhbGlkIHdoaWxzdCBhY3RpdmUgYW5kIHBpbm5lZC4KKwkgKi8KKwlvYmotPm1hZHYg PSBJOTE1X01BRFZfRE9OVE5FRUQ7CisJcmV0dXJuIDA7CisKK2VycjoKKwlzZ19tYXJrX2VuZChz Zyk7CisJaW50ZXJuYWxfZnJlZV9wYWdlcyhzdCk7CisJcmV0dXJuIC1FTk9NRU07Cit9CisKK3N0 YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpbnRlcm5hbF9mcmVlX3BhZ2VzKG9iai0+cGFnZXMp OworCisJb2JqLT5kaXJ0eSA9IDA7CisJb2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVEOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2Vt X29iamVjdF9pbnRlcm5hbF9vcHMgPSB7CisJLmZsYWdzID0gSTkxNV9HRU1fT0JKRUNUX0hBU19T VFJVQ1RfUEFHRSwKKwkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19pbnRl cm5hbCwKKwkucHV0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19pbnRlcm5hbCwK K307CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBvYmplY3QgdGhhdCB3cmFwcyBzb21lIGludGVy bmFsIG1lbW9yeSBmb3IgcHJpdmF0ZSB1c2UuCisgKiBUaGlzIG9iamVjdCBpcyBub3QgYmFja2Vk IGJ5IHN3YXBwYWJsZSBzdG9yYWdlLCBhbmQgYXMgc3VjaCBpdHMgY29udGVudHMKKyAqIGFyZSB2 b2xhdGlsZSBhbmQgb25seSB2YWxpZCB3aGlsc3QgcGlubmVkLiBJZiB0aGUgb2JqZWN0IGlzIHJl YXBlZCBieSB0aGUKKyAqIHNocmlua2VyLCBpdHMgcGFnZXMgYW5kIGRhdGEgd2lsbCBiZSBkaXNj YXJkZWQuIEVxdWFsbHksIGl0IGlzIG5vdCBhIGZ1bGwKKyAqIEdFTSBvYmplY3QgYW5kIHNvIG5v dCB2YWxpZCBmb3IgYWNjZXNzIGZyb20gdXNlcnNwYWNlLiBUaGlzIG1ha2VzIGl0IHVzZWZ1bAor ICogZm9yIGhhcmR3YXJlIGludGVyZmFjZXMgbGlrZSByaW5nYnVmZmVycyAod2hpY2ggYXJlIHBp bm5lZCBmcm9tIHRoZSB0aW1lCisgKiB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvIHRoZSB0aW1l IHRoZSBoYXJkd2FyZSBzdG9wcyBhY2Nlc3NpbmcgaXQpLCBidXQKKyAqIG5vdCBmb3IgY29udGV4 dHMgKHdoaWNoIG5lZWQgdG8gYmUgcHJlc2VydmVkIHdoZW4gbm90IGFjdGl2ZSBmb3IgbGF0ZXIK KyAqIHJldXNlKS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBjbGVhcmVkIHVwb24gYWxsb2NhdGlvbi4K KyAqLworc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9pbnRlcm5hbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXVuc2lnbmVkIGludCBzaXpl KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisKKwlvYmogPSBpOTE1X2dl bV9vYmplY3RfYWxsb2MoZGV2KTsKKwlpZiAoIW9iaikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisKKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzaXpl KTsKKwlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxf b3BzKTsKKworCW9iai0+YmFzZS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwor CW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVOworCW9iai0+Y2Fj aGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9O RTsKKworCXJldHVybiBvYmo7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5jCmluZGV4IDA5Y2Y0ODc0YzQ1Zi4uYzAwOWVlMWMyN2ZkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwpAQCAtMTg3LDcgKzE4Nyw3 IEBAIGludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIAlpZiAoc28ucm9kYXRhLT5iYXRjaF9pdGVtcyAqIDQgPiA0MDk2KQogCQly ZXR1cm4gLUVJTlZBTDsKIAotCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJnJlcS0+aTkx NS0+ZHJtLCA0MDk2KTsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKCZy ZXEtPmk5MTUtPmRybSwgNDA5Nik7CiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gUFRSX0VS UihvYmopOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDQ4MDU4 NGMwOTMwNi4uOTk3MzdiODQyZDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIGludCBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKIAogCW9iaiA9IGk5MTVf Z2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7CiAJaWYg KCFvYmopCi0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJmVuZ2luZS0+aTkxNS0+ZHJt LCBzaXplKTsKKwkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbCgmZW5naW5l LT5pOTE1LT5kcm0sIHNpemUpOwogCWlmIChJU19FUlIob2JqKSkgewogCQlEUk1fRVJST1IoIkZh aWxlZCB0byBhbGxvY2F0ZSBzY3JhdGNoIHBhZ2VcbiIpOwogCQlyZXR1cm4gUFRSX0VSUihvYmop OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGYzZGZiN2NhNjI1 ZC4uYjVkOWMwM2Y4NGNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j CkBAIC0xNzgzLDkgKzE3ODMsMTAgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXVuc2lnbmVkIGludCBmbGFnczsKKwl2b2lk ICp2YWRkcjsKIAlpbnQgcmV0OwogCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZW5n aW5lLT5pOTE1LT5kcm0sIDQwOTYpOworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoJmVuZ2luZS0+aTkxNS0+ZHJtLCA0MDk2KTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc3RhdHVzIHBhZ2VcbiIpOwogCQlyZXR1cm4g UFRSX0VSUihvYmopOwpAQCAtMTgxOCwxNSArMTgxOSwyMiBAQCBzdGF0aWMgaW50IGluaXRfc3Rh dHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChyZXQpCiAJCWdv dG8gZXJyOwogCisJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQ X1dCKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKKwkJ Z290byBlcnJfdW5waW47CisJfQorCiAJZW5naW5lLT5zdGF0dXNfcGFnZS52bWEgPSB2bWE7CiAJ ZW5naW5lLT5zdGF0dXNfcGFnZS5nZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsK LQllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9Ci0JCWk5MTVfZ2VtX29iamVjdF9waW5f bWFwKG9iaiwgSTkxNV9NQVBfV0IpOworCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0g bWVtc2V0KHZhZGRyLCAwLCA0MDk2KTsKIAogCURSTV9ERUJVR19EUklWRVIoIiVzIGh3cyBvZmZz ZXQ6IDB4JTA4eFxuIiwKIAkJCSBlbmdpbmUtPm5hbWUsIGk5MTVfZ2d0dF9vZmZzZXQodm1hKSk7 CiAJcmV0dXJuIDA7CiAKK2Vycl91bnBpbjoKKwlpOTE1X3ZtYV91bnBpbih2bWEpOwogZXJyOgog CWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIAlyZXR1cm4gcmV0OwotLSAKMi45LjMKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=