From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: =?utf-8?q?=5BPATCH_24/24=5D_drm/i915=3A_Introduce_map?= =?utf-8?q?ping_of_user_pages_into_video_memory_=28userptr=29_ioctl?= Date: Thu, 30 Aug 2012 16:31:19 +0100 Message-ID: <1346340679-7699-25-git-send-email-chris@chris-wilson.co.uk> References: <1346340679-7699-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 fireflyinternet.com (smtp.fireflyinternet.com [109.228.6.236]) by gabe.freedesktop.org (Postfix) with ESMTP id C952BA08F0 for ; Thu, 30 Aug 2012 08:34:00 -0700 (PDT) In-Reply-To: <1346340679-7699-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QnkgZXhwb3J0aW5nIHRoZSBhYmlsaXR5IHRvIG1hcCB1c2VyIGFkZHJlc3MgYW5kIGluc2VydGlu ZyBQVEVzCnJlcHJlc2VudGluZyB0aGVpciBiYWNraW5nIHBhZ2VzIGludG8gdGhlIEdUVCwgd2Ug Y2FuIGV4cGxvaXQgVU1BIGluIG9yZGVyCnRvIHV0aWxpemUgbm9ybWFsIGFwcGxpY2F0aW9uIGRh dGEgYXMgYSB0ZXh0dXJlIHNvdXJjZSBvciBldmVuIGFzIGEKcmVuZGVyIHRhcmdldCAoZGVwZW5k aW5nIHVwb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgY2hpcHNldCkuIFRoaXMgaGFzCmEgbnVt YmVyIG9mIHVzZXMsIHdpdGggemVyby1jb3B5IGRvd25sb2FkcyB0byB0aGUgR1BVIGFuZCBlZmZp Y2llbnQKcmVhZGJhY2sgbWFraW5nIHRoZSBpbnRlcm1peGVkIHN0cmVhbWluZyBvZiBDUFUgYW5k IEdQVSBvcGVyYXRpb25zCmZhaXJseSBlZmZpY2llbnQuIFRoaXMgYWJpbGl0eSBoYXMgbWFueSB3 aWRlc3ByZWFkIGltcGxpY2F0aW9ucyBmcm9tCmZhc3RlciByZW5kZXJpbmcgb2YgcGFydGlhbCBz b2Z0d2FyZSBmYWxsYmFja3MgKHh0ZXJtISkgdG8gZmFzdGVyCnBpcGVsaW5pbmcgb2YgdGV4dHVy ZSBkYXRhIChzdWNoIGFzIHBpeGVsIGJ1ZmZlciBvYmplY3RzIGluIEdMKS4KClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYyAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgfCAgIDE0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgIHwgICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNl cnB0ci5jIHwgIDIwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2Ry bS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKwogNiBmaWxlcyBjaGFuZ2Vk LCAyNDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CmluZGV4IDBmMmM1NDkuLjc1NGQ2NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xNCw2ICsx NCw3IEBAIGk5MTUteSA6PSBpOTE1X2Rydi5vIGk5MTVfZG1hLm8gaTkxNV9pcnEubyBcCiAJICBp OTE1X2dlbV9ndHQubyBcCiAJICBpOTE1X2dlbV9zdG9sZW4ubyBcCiAJICBpOTE1X2dlbV90aWxp bmcubyBcCisJICBpOTE1X2dlbV91c2VycHRyLm8gXAogCSAgaTkxNV9zeXNmcy5vIFwKIAkgIGk5 MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaW50ZWxfZGlzcGxheS5vIFwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jCmluZGV4IGYyZTM0MzkuLjgzN2ZjNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpA QCAtMTg4Myw2ICsxODgzLDcgQEAgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10g PSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIGk5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX2lvY3RsLCBEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUZfRFJW KEk5MTVfR0VNX0NPTlRFWFRfREVTVFJPWSwgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3Rs LCBEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfUkVHX1JFQUQsIGk5MTVf cmVnX3JlYWRfaW9jdGwsIERSTV9VTkxPQ0tFRCksCisJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9H RU1fVVNFUlBUUiwgaTkxNV9nZW1fdXNlcnB0cl9pb2N0bCwgRFJNX01BU1RFUnxEUk1fVU5MT0NL RUQpLAogfTsKIAogaW50IGk5MTVfbWF4X2lvY3RsID0gRFJNX0FSUkFZX1NJWkUoaTkxNV9pb2N0 bHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZWM4YzBmYy4uMTQ2N2NjMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMDUwLDYgKzEwNTAsMTggQEAgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgewogCWF0b21pY190IHBlbmRpbmdfZmxpcDsKIH07CiAKK3N0cnVjdCBpOTE1 X2dlbV91c2VycHRyX29iamVjdCB7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgZ2VtOwor CXVpbnRwdHJfdCB1c2VyX3B0cjsKKwlzaXplX3QgdXNlcl9zaXplOworCWludCByZWFkX29ubHk7 Cit9OworCit1bmlvbiBkcm1faTkxNV9nZW1fb2JqZWN0cyB7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgYmFzZTsKKwlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0cl9vYmplY3QgdXNlcnB0cjsK K307CisKIGlubGluZSBzdGF0aWMgYm9vbCBpOTE1X2dlbV9vYmplY3RfaXNfcHJpbWUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlyZXR1cm4gb2JqLT5iYXNlLmltcG9ydF9h dHRhY2ggIT0gTlVMTDsKQEAgLTEzMDgsNiArMTMyMCw4IEBAIGludCBpOTE1X2dlbV9lbnRlcnZ0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBpbnQgaTkxNV9nZW1fbGVhdmV2dF9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYpOworaW50IGk5MTVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKKwkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiBpbnQgaTkxNV9n ZW1fc2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50IGk5MTVfZ2VtX2dldF90aWxpbmcoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4 IDcwZjZjNTMuLjY5OTcyZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjU1Niw5ICsy NTU2LDkgQEAgaTkxNV9nZW1fb2JqZWN0X3VuYmluZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogCS8qIEF2b2lkIGFuIHVubmVjZXNzYXJ5IGNhbGwgdG8gdW5iaW5kIG9uIHJlYmlu ZC4gKi8KIAlvYmotPm1hcF9hbmRfZmVuY2VhYmxlID0gdHJ1ZTsKIAorCW9iai0+Z3R0X29mZnNl dCAtPSBvYmotPmd0dF9zcGFjZS0+c3RhcnQ7CiAJZHJtX21tX3B1dF9ibG9jayhvYmotPmd0dF9z cGFjZSk7CiAJb2JqLT5ndHRfc3BhY2UgPSBOVUxMOwotCW9iai0+Z3R0X29mZnNldCA9IDA7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTMwNzQsNyArMzA3NCw3IEBAIGk5MTVfZ2VtX29iamVjdF9iaW5k X3RvX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWxpc3RfbW92ZV90YWls KCZvYmotPmd0dF9saXN0LCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOwogCWxpc3RfYWRkX3Rh aWwoJm9iai0+bW1fbGlzdCwgJmRldl9wcml2LT5tbS5pbmFjdGl2ZV9saXN0KTsKIAotCW9iai0+ Z3R0X29mZnNldCA9IG9iai0+Z3R0X3NwYWNlLT5zdGFydDsKKwlvYmotPmd0dF9vZmZzZXQgKz0g b2JqLT5ndHRfc3BhY2UtPnN0YXJ0OwogCiAJZmVuY2VhYmxlID0KIAkJb2JqLT5ndHRfc3BhY2Ut PnNpemUgPT0gZmVuY2Vfc2l6ZSAmJgpAQCAtNDI1Myw3ICs0MjUzLDcgQEAgaTkxNV9nZW1fbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJZGV2X3ByaXYtPnNsYWIgPQogCQlrbWVtX2Nh Y2hlX2NyZWF0ZSgiaTkxNV9nZW1fb2JqZWN0IiwKLQkJCQkgIHNpemVvZihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCksIDAsCisJCQkJICBzaXplb2YodW5pb24gZHJtX2k5MTVfZ2VtX29iamVj dHMpLCAwLAogCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOLAogCQkJCSAgTlVMTCk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44NjA0ZGFkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdXNlcnB0ci5jCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJ TiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJkcm1QLmgiCisjaW5jbHVkZSAi ZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2lu Y2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNpbmNsdWRlIDxs aW51eC9zd2FwLmg+CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0cl9vYmplY3QgKnRv X3VzZXJwdHJfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJcmV0 dXJuIGNvbnRhaW5lcl9vZihvYmosIHN0cnVjdCBpOTE1X2dlbV91c2VycHRyX29iamVjdCwgZ2Vt KTsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0cl9vYmpl Y3QgKnZtYXAgPSB0b191c2VycHRyX29iamVjdChvYmopOworCWludCBudW1fcGFnZXMgPSBvYmot PmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCXN0cnVjdCBzZ190YWJsZSAqc3Q7CisJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsKKwlzdHJ1Y3QgcGFnZSAqKnB2ZWM7CisJaW50IG4sIHBpbm5lZCwg cmV0OworCisJaWYgKCFhY2Nlc3Nfb2sodm1hcC0+cmVhZF9vbmx5ID8gVkVSSUZZX1JFQUQgOiBW RVJJRllfV1JJVEUsCisJCSAgICAgICAoY2hhciBfX3VzZXIgKil2bWFwLT51c2VyX3B0ciwgdm1h cC0+dXNlcl9zaXplKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwkvKiBJZiB1c2Vyc3BhY2Ugc2hv dWxkIGVuZ2luZWVyIHRoYXQgdGhlc2UgcGFnZXMgYXJlIHJlcGxhY2VkIGluCisJICogdGhlIHZt YSBiZXR3ZWVuIHVzIGJpbmRpbmcgdGhpcyBwYWdlIGludG8gdGhlIEdUVCBhbmQgY29tcGxldGlv bgorCSAqIG9mIHJlbmRlcmluZy4uLiBUaGVpciBsb3NzLiBJZiB0aGV5IGNoYW5nZSB0aGUgbWFw cGluZyBvZiB0aGVpcgorCSAqIHBhZ2VzIHRoZXkgbmVlZCB0byBjcmVhdGUgYSBuZXcgYm8gdG8g cG9pbnQgdG8gdGhlIG5ldyB2bWEuCisJICoKKwkgKiBIb3dldmVyLCB0aGF0IHN0aWxsIGxlYXZl cyBvcGVuIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgdm1hCisJICogYmVpbmcgY29waWVkIHVwb24g Zm9yay4gV2hpY2ggZmFsbHMgdW5kZXIgdGhlIHNhbWUgdXNlcnNwYWNlCisJICogc3luY2hyb25p c2F0aW9uIGlzc3VlIGFzIGEgcmVndWxhciBibywgZXhjZXB0IHRoYXQgdGhpcyB0aW1lCisJICog dGhlIHByb2Nlc3MgbWF5IG5vdCBiZSBleHBlY3RpbmcgdGhhdCBhIHBhcnRpY3VsYXIgcGllY2Ug b2YKKwkgKiBtZW1vcnkgaXMgdGllZCB0byB0aGUgR1BVLgorCSAqLworCisJcHZlYyA9IGttYWxs b2MobnVtX3BhZ2VzKnNpemVvZihzdHJ1Y3QgcGFnZSAqKSwKKwkJICAgICAgIEdGUF9LRVJORUwg fCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9OT1JFVFJZKTsKKwlpZiAocHZlYyA9PSBOVUxMKSB7CisJ CXB2ZWMgPSBkcm1fbWFsbG9jX2FiKG51bV9wYWdlcywgc2l6ZW9mKHN0cnVjdCBwYWdlICopKTsK KwkJaWYgKHB2ZWMgPT0gTlVMTCkKKwkJCXJldHVybiAtRU5PTUVNOworCX0KKworCXBpbm5lZCA9 IF9fZ2V0X3VzZXJfcGFnZXNfZmFzdCh2bWFwLT51c2VyX3B0ciwgbnVtX3BhZ2VzLAorCQkJCSAg ICAgICAhdm1hcC0+cmVhZF9vbmx5LCBwdmVjKTsKKwlpZiAocGlubmVkIDwgbnVtX3BhZ2VzKSB7 CisJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gY3VycmVudC0+bW07CisKKwkJbXV0ZXhfdW5sb2Nr KCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlkb3duX3JlYWQoJm1tLT5tbWFwX3Nl bSk7CisJCXJldCA9IGdldF91c2VyX3BhZ2VzKGN1cnJlbnQsIG1tLAorCQkJCSAgICAgdm1hcC0+ dXNlcl9wdHIgKyAocGlubmVkIDw8IFBBR0VfU0hJRlQpLAorCQkJCSAgICAgbnVtX3BhZ2VzIC0g cGlubmVkLAorCQkJCSAgICAgIXZtYXAtPnJlYWRfb25seSwgMCwKKwkJCQkgICAgIHB2ZWMgKyBw aW5uZWQsCisJCQkJICAgICBOVUxMKTsKKwkJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJbXV0 ZXhfbG9jaygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwkJaWYgKHJldCA+IDApCisJ CQlwaW5uZWQgKz0gcmV0OworCisJCWlmIChvYmotPnBhZ2VzIHx8IHBpbm5lZCA8IG51bV9wYWdl cykgeworCQkJcmV0ID0gb2JqLT5wYWdlcyA/IDAgOiAtRUZBVUxUOworCQkJZ290byBjbGVhbnVw X3Bpbm5lZDsKKwkJfQorCX0KKworCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5F TCk7CisJaWYgKHN0ID09IE5VTEwpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBjbGVhbnVw X3Bpbm5lZDsKKwl9CisKKwlpZiAoc2dfYWxsb2NfdGFibGUoc3QsIG51bV9wYWdlcywgR0ZQX0tF Uk5FTCkpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBjbGVhbnVwX3N0OworCX0KKworCWZv cl9lYWNoX3NnKHN0LT5zZ2wsIHNnLCBudW1fcGFnZXMsIG4pCisJCXNnX3NldF9wYWdlKHNnLCBw dmVjW25dLCBQQUdFX1NJWkUsIDApOworCWRybV9mcmVlX2xhcmdlKHB2ZWMpOworCisJb2JqLT5w YWdlcyA9IHN0OworCXJldHVybiAwOworCitjbGVhbnVwX3N0OgorCWtmcmVlKHN0KTsKK2NsZWFu dXBfcGlubmVkOgorCXJlbGVhc2VfcGFnZXMocHZlYywgcGlubmVkLCAwKTsKKwlkcm1fZnJlZV9s YXJnZShwdmVjKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAoraTkxNV9nZW1fdXNl cnB0cl9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnOworCWludCBpOworCisJaWYgKG9iai0+bWFkdiAhPSBJOTE1X01B RFZfV0lMTE5FRUQpCisJCW9iai0+ZGlydHkgPSAwOworCisJZm9yX2VhY2hfc2cob2JqLT5wYWdl cy0+c2dsLCBzZywgb2JqLT5wYWdlcy0+bmVudHMsIGkpIHsKKwkJc3RydWN0IHBhZ2UgKnBhZ2Ug PSBzZ19wYWdlKHNnKTsKKworCQlpZiAob2JqLT5kaXJ0eSkKKwkJCXNldF9wYWdlX2RpcnR5KHBh Z2UpOworCisJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKKwkJcGFnZV9jYWNoZV9yZWxlYXNl KHBhZ2UpOworCX0KKwlvYmotPmRpcnR5ID0gMDsKKworCXNnX2ZyZWVfdGFibGUob2JqLT5wYWdl cyk7CisJa2ZyZWUob2JqLT5wYWdlcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fdXNlcnB0cl9vcHMgPSB7CisJLmdldF9wYWdlcyA9 IGk5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzLAorCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV91c2Vy cHRyX3B1dF9wYWdlcywKK307CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBtbSBvYmplY3QgdGhh dCB3cmFwcyBzb21lIHVzZXIgbWVtb3J5LgorICovCitpbnQKK2k5MTVfZ2VtX3VzZXJwdHJfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpm aWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV91c2VycHRyICphcmdzID0gZGF0YTsKKwlzdHJ1 Y3QgaTkxNV9nZW1fdXNlcnB0cl9vYmplY3QgKm9iajsKKwlsb2ZmX3QgZmlyc3RfZGF0YV9wYWdl LCBsYXN0X2RhdGFfcGFnZTsKKwlpbnQgbnVtX3BhZ2VzOworCWludCByZXQ7CisJdTMyIGhhbmRs ZTsKKworCWZpcnN0X2RhdGFfcGFnZSA9IGFyZ3MtPnVzZXJfcHRyIC8gUEFHRV9TSVpFOworCWxh c3RfZGF0YV9wYWdlID0gKGFyZ3MtPnVzZXJfcHRyICsgYXJncy0+dXNlcl9zaXplIC0gMSkgLyBQ QUdFX1NJWkU7CisJbnVtX3BhZ2VzID0gbGFzdF9kYXRhX3BhZ2UgLSBmaXJzdF9kYXRhX3BhZ2Ug KyAxOworCWlmIChudW1fcGFnZXMgKiBQQUdFX1NJWkUgPiBkZXZfcHJpdi0+bW0uZ3R0X3RvdGFs KQorCQlyZXR1cm4gLUUyQklHOworCisJcmV0ID0gZmF1bHRfaW5fbXVsdGlwYWdlc19yZWFkYWJs ZSgoY2hhciBfX3VzZXIgKikodWludHB0cl90KWFyZ3MtPnVzZXJfcHRyLAorCQkJCQkgICBhcmdz LT51c2VyX3NpemUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBBbGxvY2F0ZSB0 aGUgbmV3IG9iamVjdCAqLworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYyhkZXYpOworCWlm IChvYmogPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoZHJtX2dlbV9wcml2YXRl X29iamVjdF9pbml0KGRldiwgJm9iai0+Z2VtLmJhc2UsCisJCQkJCW51bV9wYWdlcyAqIFBBR0Vf U0laRSkpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUoJm9iai0+Z2VtKTsKKwkJcmV0dXJuIC1F Tk9NRU07CisJfQorCisJaTkxNV9nZW1fb2JqZWN0X2luaXQoJm9iai0+Z2VtLCAmaTkxNV9nZW1f dXNlcnB0cl9vcHMpOworCW9iai0+Z2VtLmNhY2hlX2xldmVsID0gSTkxNV9DQUNIRV9MTENfTUxD OworCisJb2JqLT5nZW0uZ3R0X29mZnNldCA9IG9mZnNldF9pbl9wYWdlKGFyZ3MtPnVzZXJfcHRy KTsKKwlvYmotPnVzZXJfcHRyID0gYXJncy0+dXNlcl9wdHI7CisJb2JqLT51c2VyX3NpemUgPSBh cmdzLT51c2VyX3NpemU7CisJb2JqLT5yZWFkX29ubHkgPSBhcmdzLT5mbGFncyAmIEk5MTVfVVNF UlBUUl9SRUFEX09OTFk7CisKKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJm9i ai0+Z2VtLmJhc2UsICZoYW5kbGUpOworCWlmIChyZXQpIHsKKwkJZHJtX2dlbV9vYmplY3RfcmVs ZWFzZSgmb2JqLT5nZW0uYmFzZSk7CisJCWRldl9wcml2LT5tbS5vYmplY3RfY291bnQtLTsKKwkJ ZGV2X3ByaXYtPm1tLm9iamVjdF9tZW1vcnkgLT0gb2JqLT5nZW0uYmFzZS5zaXplOworCQlpOTE1 X2dlbV9vYmplY3RfZnJlZSgmb2JqLT5nZW0pOworCQlyZXR1cm4gcmV0OworCX0KKworCS8qIGRy b3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCisJZHJt X2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+Z2VtLmJhc2UpOworCisJYXJncy0+aGFuZGxl ID0gaGFuZGxlOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkxNV9k cm0uaCBiL2luY2x1ZGUvZHJtL2k5MTVfZHJtLmgKaW5kZXggMDVlMjRkMy4uMGEwYjg4MSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL2RybS9pOTE1X2Ry bS5oCkBAIC0yMDYsNiArMjA2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsK ICNkZWZpbmUgRFJNX0k5MTVfR0VNX1NFVF9DQUNIRUlORwkweDJmCiAjZGVmaW5lIERSTV9JOTE1 X0dFTV9HRVRfQ0FDSEVJTkcJMHgzMAogI2RlZmluZSBEUk1fSTkxNV9SRUdfUkVBRAkJMHgzMQor I2RlZmluZSBEUk1fSTkxNV9HRU1fVVNFUlBUUgkJMHgzMgogCiAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1f aTkxNV9pbml0X3QpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0ZMVVNICQlEUk1fSU8gKCBEUk1f Q09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxVU0gpCkBAIC0yNTUsNiArMjU2LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NP TlRFWFRfQ1JFQVRFCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NP TlRFWFRfQ1JFQVRFLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlKQogI2RlZmlu ZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZCURSTV9JT1cgKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfZGVzdHJveSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUkVHX1JFQUQJCQlEUk1f SU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1JFR19SRUFELCBzdHJ1Y3QgZHJtX2k5 MTVfcmVnX3JlYWQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VU0VSUFRSCQkJRFJNX0lP V1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVVNFUlBUUiwgc3RydWN0IGRybV9p OTE1X2dlbV91c2VycHRyKQogCiAvKiBBbGxvdyBkcml2ZXJzIHRvIHN1Ym1pdCBiYXRjaGJ1ZmZl cnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcKICAqIG9uIHRoZSBzZWN1cml0eSBtZWNo YW5pc21zIHByb3ZpZGVkIGJ5IGhhcmR3YXJlLgpAQCAtNDc0LDYgKzQ3NiwxOSBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXBfZ3R0IHsKIAlfX3U2NCBvZmZzZXQ7CiB9OwogCitzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3VzZXJwdHIgeworCV9fdTY0IHVzZXJfcHRyOworCV9fdTMyIHVzZXJfc2l6ZTsK KwlfX3UzMiBmbGFnczsKKyNkZWZpbmUgSTkxNV9VU0VSUFRSX1JFQURfT05MWSAweDEKKwkvKioK KwkgKiBSZXR1cm5lZCBoYW5kbGUgZm9yIHRoZSBvYmplY3QuCisJICoKKwkgKiBPYmplY3QgaGFu ZGxlcyBhcmUgbm9uemVyby4KKwkgKi8KKwlfX3UzMiBoYW5kbGU7Cit9OworCiBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3NldF9kb21haW4gewogCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgKi8KIAlf X3UzMiBoYW5kbGU7Ci0tIAoxLjcuMTAuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK