From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [RFC PATCH 16/42] drm/i915: support basic object migration Date: Thu, 14 Feb 2019 14:57:14 +0000 Message-ID: <20190214145740.14521-17-matthew.auld@intel.com> References: <20190214145740.14521-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3F3D36E91C for ; Thu, 14 Feb 2019 14:58:03 +0000 (UTC) In-Reply-To: <20190214145740.14521-1-matthew.auld@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 V2UgYXJlIGdvaW5nIHdhbnQgdG8gYWJsZSB0byBtb3ZlIG9iamVjdHMgYmV0d2VlbiBkaWZmZXJl bnQgcmVnaW9ucwpsaWtlIHN5c3RlbSBtZW1vcnkgYW5kIGxvY2FsIG1lbW9yeS4gSW4gdGhlIGZ1 dHVyZSBldmVyeXRoaW5nIHNob3VsZApiZSBqdXN0IGFub3RoZXIgcmVnaW9uLgoKU2lnbmVkLW9m Zi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBBYmRpZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+CkNjOiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBBYmRp ZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8IDEyMSArKysrKysrKysrKysr KysrKwogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgMTI3 ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNTMgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGI5ZDAxY2FhMzQzMC4uYmRmODVlOTAxMjY4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI4MjIsNiArMjgyMiwxMSBAQCBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX2Zyb21fZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiB2b2lkIGk5MTVfZ2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwg c3RydWN0IGRybV9maWxlICpmaWxlKTsKIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCitpbnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfbW92 ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK2ludCBpOTE1X2dlbV9vYmplY3Rf bWlncmF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpOwor CiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlpZiAoIWF0b21pY19yZWFkKCZpOTE1LT5tbS5m cmVlX2NvdW50KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDUwMTcxNGZiZjkyZi4uMzM2 OTliM2RjMzk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQ2MjYsNiArNDYyNiwxMjcg QEAgaW50IGk5MTVfZ2VtX29iamVjdF9jbGVhcl9ibHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIAlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2ZpbGxfYmx0KGN0eCwgb2JqLCAwKTsKIH0K IAoraW50IGk5MTVfZ2VtX29iamVjdF9wcmVwYXJlX21vdmUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKK3sKKwlpbnQgZXJyOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKKworCWlmIChvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURW X1dJTExORUVEKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChpOTE1X2dlbV9vYmplY3RfbmVl ZHNfYml0MTdfc3dpenpsZShvYmopKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChhdG9taWNf cmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQpID4gb2JqLT5iaW5kX2NvdW50KQorCQlyZXR1 cm4gLUVCVVNZOworCisJaWYgKG9iai0+cGluX2dsb2JhbCkKKwkJcmV0dXJuIC1FQlVTWTsKKwor CWk5MTVfZ2VtX3JlbGVhc2VfbW1hcChvYmopOworCisJR0VNX0JVR19PTihvYmotPm1tLm1hcHBp bmcpOworCUdFTV9CVUdfT04ob2JqLT5iYXNlLmZpbHAgJiYgbWFwcGluZ19tYXBwZWQob2JqLT5i YXNlLmZpbHAtPmZfbWFwcGluZykpOworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2Jq LAorCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKKwkJCQkgICBJOTE1X1dBSVRfTE9D S0VEIHwKKwkJCQkgICBJOTE1X1dBSVRfQUxMLAorCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VU KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF91 bmJpbmQob2JqKTsKK30KKworaW50IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCisJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKKwkJCSAgICBlbnVtIGludGVsX3JlZ2lvbl9pZCBpZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKmRvbm9yOworCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW07CisJ aW50IGVyciA9IDA7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKworCUdFTV9CVUdfT04oaWQgPj0gSU5URUxfTUVNT1JZX1VLTk9XTik7CisJR0VNX0JV R19PTihvYmotPm1lbW9yeV9yZWdpb24tPmlkID09IGlkKTsKKwlHRU1fQlVHX09OKG9iai0+bW0u bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpOworCisJbWVtID0gaTkxNS0+cmVnaW9uc1tpZF07 CisKKwlkb25vciA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfcmVnaW9uKG1lbSwgb2JqLT5iYXNl LnNpemUsIDApOworCWlmIChJU19FUlIoZG9ub3IpKQorCQlyZXR1cm4gUFRSX0VSUihkb25vcik7 CisKKwkvKiBDb3B5IGJhY2tpbmctcGFnZXMgaWYgd2UgaGF2ZSB0byAqLworCWlmIChpOTE1X2dl bV9vYmplY3RfaGFzX3BhZ2VzKG9iaikpIHsKKwkJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKKwor CQllcnIgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJCWlmIChlcnIpCisJCQln b3RvIGVycl9wdXRfZG9ub3I7CisKKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NvcHlfYmx0KGN0 eCwgb2JqLCBkb25vcik7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9wdXRfZG9ub3I7CisKKwkJ aTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7CisKKwkJaTkxNV9nZW1fb2JqZWN0X3VuYmluZChk b25vcik7CisJCWVyciA9IGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKTsKKwkJaWYgKGVycikK KwkJCWdvdG8gZXJyX3B1dF9kb25vcjsKKworCQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwor CisJCXBhZ2VzID0gZmV0Y2hfYW5kX3plcm8oJm9iai0+bW0ucGFnZXMpOworCQlvYmotPm9wcy0+ cHV0X3BhZ2VzKG9iaiwgcGFnZXMpOworCisJCW9iai0+bW0ucGFnZXMgPSBfX2k5MTVfZ2VtX29i amVjdF91bnNldF9wYWdlcyhkb25vcik7CisJCW1lbWNweSgmb2JqLT5tbS5wYWdlX3NpemVzLCAm ZG9ub3ItPm1tLnBhZ2Vfc2l6ZXMsCisJCSAgICAgICBzaXplb2Yoc3RydWN0IGk5MTVfcGFnZV9z aXplcykpOworCisJCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9zID0gb2JqLT5tbS5wYWdlcy0+c2ds OworCQlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7CisJCV9faTkxNV9nZW1fb2JqZWN0X3Jl c2V0X3BhZ2VfaXRlcihvYmopOworCisJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKKwl9 CisKKwlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCisJCW9iai0+b3BzLT5yZWxlYXNlKG9iaik7CisK KwkvKiBXZSBuZWVkIHN0aWxsIG5lZWQgYSBsaXR0bGUgc3BlY2lhbCBjYXNpbmcgZm9yIHNobWVt ICovCisJaWYgKG9iai0+YmFzZS5maWxwKQorCQlmcHV0KGZldGNoX2FuZF96ZXJvKCZvYmotPmJh c2UuZmlscCkpOworCWVsc2UKKwkJb2JqLT5iYXNlLmZpbHAgPSBmZXRjaF9hbmRfemVybygmZG9u b3ItPmJhc2UuZmlscCk7CisKKwlvYmotPmJhc2Uuc2l6ZSA9IGRvbm9yLT5iYXNlLnNpemU7CisJ b2JqLT5tZW1vcnlfcmVnaW9uID0gbWVtOworCW9iai0+ZmxhZ3MgPSBkb25vci0+ZmxhZ3M7CisJ b2JqLT5vcHMgPSBkb25vci0+b3BzOworCisJbGlzdF9yZXBsYWNlX2luaXQoJmRvbm9yLT5ibG9j a3MsICZvYmotPmJsb2Nrcyk7CisKKwltdXRleF9sb2NrKCZtZW0tPm9ial9sb2NrKTsKKwlsaXN0 X2FkZCgmb2JqLT5yZWdpb25fbGluaywgJm1lbS0+b2JqZWN0cyk7CisJbXV0ZXhfdW5sb2NrKCZt ZW0tPm9ial9sb2NrKTsKKworCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhk b25vcikpOworCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMoZG9u b3IpKTsKKworZXJyX3B1dF9kb25vcjoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KGRvbm9yKTsKKwlp ZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkKKwkJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX3BhZ2VzKG9iaik7CisKKwlyZXR1cm4gZXJyOworfQorCiBzdGF0aWMgdm9pZCBf X2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJ CQkgICAgc3RydWN0IGxsaXN0X25vZGUgKmZyZWVkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXggMjEwZWM2ZmVj MTlhLi4yYzA3ZDhkMjE5ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwpAQCAtNTc5LDYgKzU3OSw1NyBAQCBzdGF0aWMg aW50IGlndF9sbWVtX2NyZWF0ZSh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGlj IGludCBpZ3Rfc21lbV9jcmVhdGVfbWlncmF0ZSh2b2lkICphcmcpCit7CisJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCWludCBlcnIg PSAwOworCisJLyogU3dpdGNoIG9iamVjdCBiYWNraW5nLXN0b3JlIG9uIGNyZWF0ZSAqLworCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfbG1lbShpOTE1LCBQQUdFX1NJWkUsIDApOworCWlm IChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKKwllcnIgPSBpOTE1X2dlbV9v YmplY3RfbWlncmF0ZShjdHgsIG9iaiwgSU5URUxfTUVNT1JZX1NNRU0pOworCWlmIChlcnIpCisJ CWdvdG8gb3V0X3B1dDsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsK KwlpZiAoZXJyKQorCQlnb3RvIG91dF9wdXQ7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFn ZXMob2JqKTsKK291dF9wdXQ6CisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJcmV0dXJu IGVycjsKK30KKworc3RhdGljIGludCBpZ3RfbG1lbV9jcmVhdGVfbWlncmF0ZSh2b2lkICphcmcp Cit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOworCWludCBlcnIgPSAwOworCisJLyogU3dpdGNoIG9iamVjdCBiYWNraW5nLXN0b3Jl IG9uIGNyZWF0ZSAqLworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoaTkxNSwgUEFHRV9T SVpFKTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBQVFJfRVJSKG9iaik7CisJZXJyID0g aTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUoY3R4LCBvYmosIElOVEVMX01FTU9SWV9MTUVNKTsKKwlp ZiAoZXJyKQorCQlnb3RvIG91dF9wdXQ7CisKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKG9iaik7CisJaWYgKGVycikKKwkJZ290byBvdXRfcHV0OworCisJaTkxNV9nZW1fb2JqZWN0 X3VucGluX3BhZ2VzKG9iaik7CitvdXRfcHV0OgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsK KworCXJldHVybiBlcnI7Cit9CiBzdGF0aWMgaW50IGlndF9sbWVtX3dyaXRlX2dwdSh2b2lkICph cmcpCiB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKQEAgLTYwOCw2ICs2 NTksNzkgQEAgc3RhdGljIGludCBpZ3RfbG1lbV93cml0ZV9ncHUodm9pZCAqYXJnKQogCXJldHVy biBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgaWd0X2xtZW1fcGFnZXNfbWlncmF0ZSh2b2lkICphcmcp Cit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOworCWludCBlcnI7CisJaW50IGk7CisKKwkvKiBGcm9tIExNRU0gdG8gc2htZW0gYW5k IGJhY2sgYWdhaW4gKi8KKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfbG1lbShpOTE1 LCBTWl8yTSwgMCk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gUFRSX0VSUihvYmopOwor CisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NsZWFyX2JsdChjdHgsIG9iaik7CisJaWYgKGVycikK KwkJZ290byBvdXRfcHV0OworCisJZm9yIChpID0gMTsgaSA8PSA0OyArK2kpIHsKKwkJZXJyID0g aTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfbW92ZShvYmopOworCQlpZiAoZXJyKQorCQkJZ290byBv dXRfcHV0OworCisJCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmopKSB7CisJCQllcnIg PSBpOTE1X2dlbV9vYmplY3RfbWlncmF0ZShjdHgsIG9iaiwgSU5URUxfTUVNT1JZX1NNRU0pOwor CQkJaWYgKGVycikKKwkJCQlnb3RvIG91dF9wdXQ7CisKKwkJCWlmIChpOTE1X2dlbV9vYmplY3Rf aXNfbG1lbShvYmopKSB7CisJCQkJcHJfZXJyKCJvYmplY3Qgc3RpbGwgYmFja2VkIGJ5IGxtZW1c biIpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQl9CisKKwkJCWlmICghbGlzdF9lbXB0eSgmb2Jq LT5ibG9ja3MpKSB7CisJCQkJcHJfZXJyKCJvYmplY3QgbGVha2luZyBtZW1vcnkgcmVnaW9uXG4i KTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJfQorCisJCQlpZiAoIWk5MTVfZ2VtX29iamVjdF9o YXNfc3RydWN0X3BhZ2Uob2JqKSkgeworCQkJCXByX2Vycigib2JqZWN0IG5vdCBiYWNrZWQgYnkg c3RydWN0IHBhZ2VcbiIpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQl9CisKKwkJfSBlbHNlIHsK KwkJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlKGN0eCwgb2JqLCBJTlRFTF9NRU1PUllf TE1FTSk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gb3V0X3B1dDsKKworCQkJaWYgKGk5MTVfZ2Vt X29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkgeworCQkJCXByX2Vycigib2JqZWN0IHN0aWxs IGJhY2tlZCBieSBzdHJ1Y3QgcGFnZVxuIik7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCX0KKwor CQkJaWYgKCFpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmopKSB7CisJCQkJcHJfZXJyKCJvYmpl Y3Qgbm90IGJhY2tlZCBieSBsbWVtXG4iKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJfQorCQl9 CisKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9maWxs X2JsdChjdHgsIG9iaiwgMHhkZWFkYmVhZik7CisJCWlmIChlcnIpCisJCQlicmVhazsKKwl9CisK K291dF9wdXQ6CisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJcmV0dXJuIGVycjsKK30K KwogaW50IGludGVsX21lbW9yeV9yZWdpb25fbW9ja19zZWxmdGVzdHModm9pZCkKIHsKIAlzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewpAQCAtNjQ5LDcgKzc3Mywx MCBAQCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0 ZXN0c1tdID0gewogCQlTVUJURVNUKGlndF9sbWVtX2NyZWF0ZSksCisJCVNVQlRFU1QoaWd0X3Nt ZW1fY3JlYXRlX21pZ3JhdGUpLAorCQlTVUJURVNUKGlndF9sbWVtX2NyZWF0ZV9taWdyYXRlKSwK IAkJU1VCVEVTVChpZ3RfbG1lbV93cml0ZV9ncHUpLAorCQlTVUJURVNUKGlndF9sbWVtX3BhZ2Vz X21pZ3JhdGUpLAogCX07CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGU7Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==