From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v3 34/37] drm/i915: support basic object migration Date: Fri, 9 Aug 2019 23:26:40 +0100 Message-ID: <20190809222643.23142-35-matthew.auld@intel.com> References: <20190809222643.23142-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809222643.23142-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 Cc: dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2UgYXJlIGdvaW5nIHdhbnQgdG8gYWJsZSB0byBtb3ZlIG9iamVjdHMgYmV0d2VlbiBkaWZmZXJl bnQgcmVnaW9ucwpsaWtlIHN5c3RlbSBtZW1vcnkgYW5kIGxvY2FsIG1lbW9yeS4gSW4gdGhlIGZ1 dHVyZSBldmVyeXRoaW5nIHNob3VsZApiZSBqdXN0IGFub3RoZXIgcmVnaW9uLgoKU2lnbmVkLW9m Zi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBBYmRpZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IENRIFRhbmcgPGNxLnRhbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogQWJkaWVsIEphbnVsZ3VlIDxh YmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3QuYyAgICB8IDE0MCArKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCAgICB8ICAgOCArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMuYyAgICAgfCAgIDIgKy0KIC4uLi9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jICB8IDEyOSArKysrKysrKysrKysr KysrCiA0IGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IDI0ZjczN2Iw MGU4NC4uNTk4MmFlYWFhMmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X29iamVjdC5jCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiaTkxNV9nZW1fY2xmbHVzaC5o IgogI2luY2x1ZGUgImk5MTVfZ2VtX2NvbnRleHQuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9vYmpl Y3QuaCIKKyNpbmNsdWRlICJpOTE1X2dlbV9vYmplY3RfYmx0LmgiCisjaW5jbHVkZSAiaTkxNV9n ZW1fcmVnaW9uLmgiCiAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCiAjaW5jbHVkZSAiaTkxNV90 cmFjZS5oIgogCkBAIC0xNzAsNiArMTcyLDE0NCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2Zy ZWVfb2JqZWN0X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiAJYXRvbWljX2RlYygmaTkxNS0+ bW0uZnJlZV9jb3VudCk7CiB9CiAKKworaW50IGk5MTVfZ2VtX29iamVjdF9wcmVwYXJlX21vdmUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKyAgICAgICBpbnQgZXJyOworCisg ICAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsK KworICAgICAgIGlmIChvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKQorICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0X25l ZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkKKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgICAgaWYgKGF0b21pY19yZWFkKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkgPgorICAg ICAgICAgICBhdG9taWNfcmVhZCgmb2JqLT5iaW5kX2NvdW50KSkKKyAgICAgICAgICAgICAgIHJl dHVybiAtRUJVU1k7CisKKyAgICAgICBpZiAob2JqLT5waW5fZ2xvYmFsKQorICAgICAgICAgICAg ICAgcmV0dXJuIC1FQlVTWTsKKworICAgICAgIGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAo b2JqKTsKKworICAgICAgIEdFTV9CVUdfT04ob2JqLT5tbS5tYXBwaW5nKTsKKyAgICAgICBHRU1f QlVHX09OKG9iai0+YmFzZS5maWxwICYmIG1hcHBpbmdfbWFwcGVkKG9iai0+YmFzZS5maWxwLT5m X21hcHBpbmcpKTsKKworICAgICAgIGVyciA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9XQUlUX0xPQ0tFRCB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9XQUlUX0FMTCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisgICAgICAg aWYgKGVycikKKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisKKyAgICAgICByZXR1cm4gaTkx NV9nZW1fb2JqZWN0X3VuYmluZChvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSTkxNV9HRU1fT0JKRUNUX1VOQklORF9BQ1RJVkUpOworfQorCitpbnQgaTkxNV9nZW1f b2JqZWN0X21pZ3JhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgICBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgZW51bSBpbnRlbF9yZWdpb25faWQgaWQp Cit7CisgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+ YmFzZS5kZXYpOworICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpkb25vcjsKKyAg ICAgICBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtOworICAgICAgIHN0cnVjdCBzZ190 YWJsZSAqcGFnZXMgPSBOVUxMOworICAgICAgIHVuc2lnbmVkIGludCBwYWdlX3NpemVzOworICAg ICAgIGludCBlcnIgPSAwOworCisgICAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisKKyAgICAgICBHRU1fQlVHX09OKGlkID49IElOVEVMX01FTU9SWV9V S05PV04pOworICAgICAgIEdFTV9CVUdfT04ob2JqLT5tbS5yZWdpb24tPmlkID09IGlkKTsKKyAg ICAgICBHRU1fQlVHX09OKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpOworCisg ICAgICAgbWVtID0gaTkxNS0+cmVnaW9uc1tpZF07CisKKyAgICAgICBkb25vciA9IGk5MTVfZ2Vt X29iamVjdF9jcmVhdGVfcmVnaW9uKG1lbSwgb2JqLT5iYXNlLnNpemUsIDApOworICAgICAgIGlm IChJU19FUlIoZG9ub3IpKQorICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZG9ub3IpOwor CisgICAgICAgLyogQ29weSBiYWNraW5nLXBhZ2VzIGlmIHdlIGhhdmUgdG8gKi8KKyAgICAgICBp ZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmopKSB7CisgICAgICAgICAgICAgICBlcnIg PSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisgICAgICAgICAgICAgICBpZiAoZXJy KQorICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9wdXRfZG9ub3I7CisKKyAgICAgICAg ICAgICAgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9jb3B5X2JsdChvYmosIGRvbm9yLCBjZSk7Cisg ICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9w dXRfZG9ub3I7CisKKyAgICAgICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9sb2NrKGRvbm9yKTsK KyAgICAgICAgICAgICAgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihk b25vciwgZmFsc2UpOworICAgICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhkb25v cik7CisgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycl9wdXRfZG9ub3I7CisKKyAgICAgICAgICAgICAgIGk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5 MTUpOworCisgICAgICAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKGRvbm9yLCAwKTsK KyAgICAgICAgICAgICAgIGVyciA9IGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqLCAwKTsKKyAg ICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3B1 dF9kb25vcjsKKworICAgICAgICAgICAgICAgbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsKKwor ICAgICAgICAgICAgICAgcGFnZXMgPSBfX2k5MTVfZ2VtX29iamVjdF91bnNldF9wYWdlcyhvYmop OworICAgICAgICAgICAgICAgb2JqLT5vcHMtPnB1dF9wYWdlcyhvYmosIHBhZ2VzKTsKKworICAg ICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOworCisgICAgICAgICAgICAg ICBwYWdlX3NpemVzID0gZG9ub3ItPm1tLnBhZ2Vfc2l6ZXMucGh5czsKKyAgICAgICAgICAgICAg IHBhZ2VzID0gX19pOTE1X2dlbV9vYmplY3RfdW5zZXRfcGFnZXMoZG9ub3IpOworICAgICAgIH0K KworICAgICAgIGlmIChvYmotPm9wcy0+cmVsZWFzZSkKKyAgICAgICAgICAgICAgIG9iai0+b3Bz LT5yZWxlYXNlKG9iaik7CisKKyAgICAgICBtdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOworCisg ICAgICAgLyogV2UgbmVlZCBzdGlsbCBuZWVkIGEgbGl0dGxlIHNwZWNpYWwgY2FzaW5nIGZvciBz aG1lbSAqLworICAgICAgIGlmIChvYmotPmJhc2UuZmlscCkKKyAgICAgICAgICAgICAgIGZwdXQo ZmV0Y2hfYW5kX3plcm8oJm9iai0+YmFzZS5maWxwKSk7CisgICAgICAgZWxzZSBpZiAoZG9ub3It PmJhc2UuZmlscCkgeworICAgICAgICAgICAgICAgYXRvbWljX2xvbmdfaW5jKCZkb25vci0+YmFz ZS5maWxwLT5mX2NvdW50KTsKKyAgICAgICAgICAgICAgIG9iai0+YmFzZS5maWxwID0gZG9ub3It PmJhc2UuZmlscDsKKyAgICAgICB9CisKKyAgICAgICBvYmotPmJhc2Uuc2l6ZSA9IGRvbm9yLT5i YXNlLnNpemU7CisgICAgICAgb2JqLT5tbS5yZWdpb24gPSBtZW07CisgICAgICAgb2JqLT5mbGFn cyA9IGRvbm9yLT5mbGFnczsKKyAgICAgICBvYmotPm9wcyA9IGRvbm9yLT5vcHM7CisgICAgICAg b2JqLT5jYWNoZV9sZXZlbCA9IGRvbm9yLT5jYWNoZV9sZXZlbDsKKyAgICAgICBvYmotPmNhY2hl X2NvaGVyZW50ID0gZG9ub3ItPmNhY2hlX2NvaGVyZW50OworICAgICAgIG9iai0+Y2FjaGVfZGly dHkgPSBkb25vci0+Y2FjaGVfZGlydHk7CisKKyAgICAgICBsaXN0X3JlcGxhY2VfaW5pdCgmZG9u b3ItPm1tLmJsb2NrcywgJm9iai0+bW0uYmxvY2tzKTsKKworICAgICAgIG11dGV4X2xvY2soJm1l bS0+b2JqX2xvY2spOworICAgICAgIGxpc3RfYWRkKCZvYmotPm1tLnJlZ2lvbl9saW5rLCAmbWVt LT5vYmplY3RzKTsKKyAgICAgICBtdXRleF91bmxvY2soJm1lbS0+b2JqX2xvY2spOworCisgICAg ICAgLyogc2V0IHBhZ2VzIGFmdGVyIG1pZ3JhdGVkICovCisgICAgICAgaWYgKHBhZ2VzKQorICAg ICAgICAgICAgICAgX19pOTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsIHBhZ2Vf c2l6ZXMpOworCisgICAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOworCisgICAgICAg R0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3RfaGFzX3BhZ2VzKGRvbm9yKSk7CisgICAgICAgR0VN X0JVR19PTihpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhkb25vcikpOworCitlcnJf cHV0X2Rvbm9yOgorICAgICAgIGk5MTVfZ2VtX29iamVjdF9wdXQoZG9ub3IpOworICAgICAgIGlm IChpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKQorICAgICAgICAgICAgICAg aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisKKyAgICAgICByZXR1cm4gZXJyOwor fQorCiBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKIAkJCQkgICAgc3RydWN0IGxsaXN0X25vZGUgKmZyZWVkKQogewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IGZkNThiOWFlYTE4 MC4uNjYwODgwYTcxNTU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5oCkBAIC00MCw4ICs0MCwxNiBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBhbGlnbik7CiB2b2lkIGk5MTVf Z2VtX2Nsb3NlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3RydWN0IGRybV9m aWxlICpmaWxlKTsKIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopOwogCitlbnVtIGludGVsX3JlZ2lvbl9pZDsKK2ludCBpOTE1X2dlbV9vYmplY3Rf cHJlcGFyZV9tb3ZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOworaW50IGk5MTVf Z2VtX29iamVjdF9taWdyYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkg ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJICAgIGVudW0gaW50ZWxfcmVnaW9uX2lk IGlkKTsKKwogdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwogCit2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3BhZ2VfaXRl cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKKwogc3RydWN0IHNnX3RhYmxlICoK IF9faTkxNV9nZW1fb2JqZWN0X3Vuc2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOwogdm9pZCBpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fcGFnZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5j CmluZGV4IDBiNzM4NjBkZWFmOC4uOWUwYTdhZjZmYTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fcGFnZXMuYwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgaTkxNV9nZW1f b2JqZWN0X3dyaXRlYmFjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQlvYmot Pm9wcy0+d3JpdGViYWNrKG9iaik7CiB9CiAKLXN0YXRpYyB2b2lkIF9faTkxNV9nZW1fb2JqZWN0 X3Jlc2V0X3BhZ2VfaXRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQordm9pZCBf X2k5MTVfZ2VtX29iamVjdF9yZXNldF9wYWdlX2l0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKIAlzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIGl0ZXI7CiAJdm9pZCBfX3JjdSAq KnNsb3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21l bW9yeV9yZWdpb24uYwppbmRleCA0MTIzZTgxYTJiZGEuLjJiNjJlMzM2MWE1ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5j CkBAIC01MDAsNiArNTAwLDU5IEBAIHN0YXRpYyBpbnQgaWd0X2xtZW1fY3JlYXRlKHZvaWQgKmFy ZykKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGlndF9zbWVtX2NyZWF0ZV9taWdyYXRl KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBpOTE1LT5lbmdpbmVbQkNTMF0tPmtlcm5lbF9jb250 ZXh0OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IGVycjsKKworCS8q IFN3aXRjaCBvYmplY3QgYmFja2luZy1zdG9yZSBvbiBjcmVhdGUgKi8KKwlvYmogPSBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX2xtZW0oaTkxNSwgUEFHRV9TSVpFLCAwKTsKKwlpZiAoSVNfRVJSKG9i aikpCisJCXJldHVybiBQVFJfRVJSKG9iaik7CisKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfbWln cmF0ZShvYmosIGNlLCBJTlRFTF9NRU1PUllfU01FTSk7CisJaWYgKGVycikKKwkJZ290byBvdXRf cHV0OworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCWlmIChlcnIp CisJCWdvdG8gb3V0X3B1dDsKKworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwor b3V0X3B1dDoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgaW50IGlndF9sbWVtX2NyZWF0ZV9taWdyYXRlKHZvaWQgKmFyZykKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UgPSBpOTE1LT5lbmdpbmVbQkNTMF0tPmtlcm5lbF9jb250ZXh0OworCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IGVycjsKKworCS8qIFN3aXRjaCBvYmplY3QgYmFja2lu Zy1zdG9yZSBvbiBjcmVhdGUgKi8KKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVt KGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gUFRSX0VSUihv YmopOworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUob2JqLCBjZSwgSU5URUxfTUVN T1JZX0xNRU0pOworCWlmIChlcnIpCisJCWdvdG8gb3V0X3B1dDsKKworCWVyciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dF9wdXQ7CisKKwlp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKK291dF9wdXQ6CisJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOworCisJcmV0dXJuIGVycjsKK30KIHN0YXRpYyBpbnQgaWd0X2xtZW1fd3Jp dGVfZ3B1KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFy ZzsKQEAgLTYyNiw2ICs2NzksNzkgQEAgc3RhdGljIGludCBpZ3RfbG1lbV93cml0ZV9jcHUodm9p ZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgaWd0X2xtZW1fcGFnZXNfbWln cmF0ZSh2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gaTkxNS0+ZW5naW5lW0JDUzBdLT5rZXJuZWxf Y29udGV4dDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCUlHVF9USU1FT1VU KGVuZF90aW1lKTsKKwlJOTE1X1JORF9TVEFURShwcm5nKTsKKwl1MzIgc3o7CisJaW50IGVycjsK KworCXN6ID0gcm91bmRfdXAocHJhbmRvbV91MzJfc3RhdGUoJnBybmcpICUgU1pfMzJNLCBQQUdF X1NJWkUpOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9sbWVtKGk5MTUsIHN6LCAw KTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBQVFJfRVJSKG9iaik7CisKKwllcnIgPSBp OTE1X2dlbV9vYmplY3RfZmlsbF9ibHQob2JqLCBjZSwgMCk7CisJaWYgKGVycikKKwkJZ290byBv dXRfcHV0OworCisJZG8geworCQllcnIgPSBpOTE1X2dlbV9vYmplY3RfcHJlcGFyZV9tb3ZlKG9i aik7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dF9wdXQ7CisKKwkJaWYgKGk5MTVfZ2VtX29iamVj dF9pc19sbWVtKG9iaikpIHsKKwkJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlKG9iaiwg Y2UsIElOVEVMX01FTU9SWV9TTUVNKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXRfcHV0Owor CisJCQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2xtZW0ob2JqKSkgeworCQkJCXByX2Vycigib2Jq ZWN0IHN0aWxsIGJhY2tlZCBieSBsbWVtXG4iKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJfQor CisJCQlpZiAoIWxpc3RfZW1wdHkoJm9iai0+bW0uYmxvY2tzKSkgeworCQkJCXByX2Vycigib2Jq ZWN0IGxlYWtpbmcgbWVtb3J5IHJlZ2lvblxuIik7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCX0K KworCQkJaWYgKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpIHsKKwkJCQlw cl9lcnIoIm9iamVjdCBub3QgYmFja2VkIGJ5IHN0cnVjdCBwYWdlXG4iKTsKKwkJCQllcnIgPSAt RUlOVkFMOworCQkJfQorCisJCX0gZWxzZSB7CisJCQllcnIgPSBpOTE1X2dlbV9vYmplY3RfbWln cmF0ZShvYmosIGNlLCBJTlRFTF9NRU1PUllfTE1FTSk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8g b3V0X3B1dDsKKworCQkJaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkg eworCQkJCXByX2Vycigib2JqZWN0IHN0aWxsIGJhY2tlZCBieSBzdHJ1Y3QgcGFnZVxuIik7CisJ CQkJZXJyID0gLUVJTlZBTDsKKwkJCX0KKworCQkJaWYgKCFpOTE1X2dlbV9vYmplY3RfaXNfbG1l bShvYmopKSB7CisJCQkJcHJfZXJyKCJvYmplY3Qgbm90IGJhY2tlZCBieSBsbWVtXG4iKTsKKwkJ CQllcnIgPSAtRUlOVkFMOworCQkJfQorCQl9CisKKwkJaWYgKCFlcnIpCisJCQllcnIgPSBpOTE1 X2dlbV9vYmplY3RfZmlsbF9ibHQob2JqLCBjZSwgMHhkZWFkYmVhZik7CisJCWlmIChlcnIpCisJ CQlicmVhazsKKwl9IHdoaWxlICghX19pZ3RfdGltZW91dChlbmRfdGltZSwgTlVMTCkpOworCitv dXRfcHV0OgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKworCXJldHVybiBlcnI7Cit9CisK IGludCBpbnRlbF9tZW1vcnlfcmVnaW9uX21vY2tfc2VsZnRlc3RzKHZvaWQpCiB7CiAJc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKQEAgLTY2OSw2ICs3OTUsOSBA QCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAkJU1VCVEVTVChpZ3RfbG1lbV9jcmVhdGUpLAogCQlTVUJURVNUKGln dF9sbWVtX3dyaXRlX2NwdSksCiAJCVNVQlRFU1QoaWd0X2xtZW1fd3JpdGVfZ3B1KSwKKwkJU1VC VEVTVChpZ3Rfc21lbV9jcmVhdGVfbWlncmF0ZSksCisJCVNVQlRFU1QoaWd0X2xtZW1fY3JlYXRl X21pZ3JhdGUpLAorCQlTVUJURVNUKGlndF9sbWVtX3BhZ2VzX21pZ3JhdGUpLAogCX07CiAJaW50 IGVycjsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=