From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v2 1/7] drm/i915: support creating LMEM objects Date: Mon, 21 Oct 2019 20:27:41 +0100 Message-ID: <20191021192747.24804-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 31DFB6E0C0 for ; Mon, 21 Oct 2019 19:27:51 +0000 (UTC) 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 V2UgY3VycmVudGx5IGRlZmluZSBMTUVNLCBvciBsb2NhbCBtZW1vcnksIGFzIGp1c3QgYW5vdGhl ciBtZW1vcnkKcmVnaW9uLCBsaWtlIHN5c3RlbSBtZW1vcnkgb3Igc3RvbGVuLCB3aGljaCB3ZSBj YW4gZXhwb3NlIHRvIHVzZXJzcGFjZQphbmQgY2FuIGJlIG1hcHBlZCB0byB0aGUgQ1BVIHZpYSBz b21lIEJBUi4KClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVs LmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNv bT4KQ2M6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmphbnVsZ3VlQGxpbnV4LmludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgMiAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5jICAgICAgfCA1NiArKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5o ICAgICAgfCAyOSArKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgICAgfCAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fbG1l bS5jICAgICAgfCAxNiArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9s bWVtLmggICAgICB8IDExICsrKysKIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3Nl bGZ0ZXN0cy5oICB8ICAxICsKIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3Jl Z2lvbi5jICB8IDQwICsrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fbG1lbS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2xtZW0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JlZ2lvbl9sbWVtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yZWdpb25fbG1lbS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCBhMTZhMmRhZWY5 NzcuLmFiYWJhNmVjZmJhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTExOSw2ICsxMTksNyBA QCBnZW0teSArPSBcCiAJZ2VtL2k5MTVfZ2VtX2ludGVybmFsLm8gXAogCWdlbS9pOTE1X2dlbV9v YmplY3QubyBcCiAJZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQubyBcCisJZ2VtL2k5MTVfZ2VtX2xt ZW0ubyBcCiAJZ2VtL2k5MTVfZ2VtX21tYW4ubyBcCiAJZ2VtL2k5MTVfZ2VtX3BhZ2VzLm8gXAog CWdlbS9pOTE1X2dlbV9waHlzLm8gXApAQCAtMTQ3LDYgKzE0OCw3IEBAIGk5MTUteSArPSBcCiAJ ICBpOTE1X3NjaGVkdWxlci5vIFwKIAkgIGk5MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaTkxNV92 bWEubyBcCisJICBpbnRlbF9yZWdpb25fbG1lbS5vIFwKIAkgIGludGVsX3dvcGNtLm8KIAogIyBn ZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNTE2OGFiOWZhNGNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0uYwpAQCAtMCwwICsxLDU2IEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiaW50ZWxfbWVtb3J5X3JlZ2lvbi5oIgorI2luY2x1 ZGUgImdlbS9pOTE1X2dlbV9yZWdpb24uaCIKKyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fbG1lbS5o IgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKK2NvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcyBpOTE1X2dlbV9sbWVtX29ial9vcHMgPSB7CisJLmdldF9wYWdlcyA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZXNfYnVkZHksCisJLnB1dF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9w dXRfcGFnZXNfYnVkZHksCisJLnJlbGVhc2UgPSBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tZW1v cnlfcmVnaW9uLAorfTsKKworYm9vbCBpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVybiBvYmotPm9wcyA9PSAmaTkxNV9nZW1f bG1lbV9vYmpfb3BzOworfQorCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dl bV9vYmplY3RfY3JlYXRlX2xtZW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkg ICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCisJCQkgICAgdW5zaWduZWQgaW50IGZsYWdzKQorewor CXJldHVybiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihpOTE1LT5tbS5yZWdpb25zW0lO VEVMX1JFR0lPTl9MTUVNXSwKKwkJCQkJICAgICBzaXplLCBmbGFncyk7Cit9CisKKyBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqCitfX2k5MTVfZ2VtX2xtZW1fb2JqZWN0X2NyZWF0ZShzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNp emUsCisJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBtZW0tPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKKworCWlmIChzaXplID4gQklUKG1lbS0+bW0ubWF4X29yZGVyKSAqIG1lbS0+bW0uY2h1bmtf c2l6ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUUyQklHKTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVj dF9hbGxvYygpOworCWlmICghb2JqKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWRy bV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdCgmaTkxNS0+ZHJtLCAmb2JqLT5iYXNlLCBzaXplKTsK KwlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9sbWVtX29ial9vcHMpOworCisJ b2JqLT5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fV0MgfCBJOTE1X0dFTV9ET01BSU5f R1RUOworCisJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NB Q0hFX05PTkUpOworCisJaTkxNV9nZW1fb2JqZWN0X2luaXRfbWVtb3J5X3JlZ2lvbihvYmosIG1l bSwgZmxhZ3MpOworCisJcmV0dXJuIG9iajsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fbG1lbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmMz ZjE1NTgwZmUzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2xtZW0uaApAQCAtMCwwICsxLDI5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAq LworCisjaWZuZGVmIF9fSTkxNV9HRU1fTE1FTV9ICisjZGVmaW5lIF9fSTkxNV9HRU1fTE1FTV9I CisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCitzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsK K3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Oworc3RydWN0IGludGVsX21lbW9yeV9yZWdpb247 CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1f bG1lbV9vYmpfb3BzOworCitib29sIGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitp OTE1X2dlbV9vYmplY3RfY3JlYXRlX2xtZW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CisJCQkgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCisJCQkgICAgdW5zaWduZWQgaW50IGZsYWdz KTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgorX19pOTE1X2dlbV9sbWVtX29iamVj dF9jcmVhdGUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKKwkJCSAgICAgIHJlc291 cmNlX3NpemVfdCBzaXplLAorCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKKworI2VuZGlm IC8qICFfX0k5MTVfR0VNX0xNRU1fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODg4 MmMwOTA4YzNiLi43OWE4N2U3MDY0MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTAx LDYgKzEwMSw4IEBACiAjaW5jbHVkZSAiaTkxNV92bWEuaCIKICNpbmNsdWRlICJpOTE1X2lycS5o IgogCisjaW5jbHVkZSAiaW50ZWxfcmVnaW9uX2xtZW0uaCIKKwogI2luY2x1ZGUgImludGVsX2d2 dC5oIgogCiAvKiBHZW5lcmFsIGN1c3RvbWl6YXRpb246CkBAIC0xNzgxLDYgKzE3ODMsNyBAQCBJ U19TVUJQTEFURk9STShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKICNkZWZp bmUgSEFTX0lQQyhkZXZfcHJpdikJCSAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmRpc3BsYXkuaGFz X2lwYykKIAogI2RlZmluZSBIQVNfUkVHSU9OKGk5MTUsIGkpIChJTlRFTF9JTkZPKGk5MTUpLT5t ZW1vcnlfcmVnaW9ucyAmIChpKSkKKyNkZWZpbmUgSEFTX0xNRU0oaTkxNSkgSEFTX1JFR0lPTihp OTE1LCBSRUdJT05fTE1FTSkKIAogI2RlZmluZSBIQVNfR1RfVUMoZGV2X3ByaXYpCShJTlRFTF9J TkZPKGRldl9wcml2KS0+aGFzX2d0X3VjKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yZWdpb25fbG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVn aW9uX2xtZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE5OTUz MjA1NmUxYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jl Z2lvbl9sbWVtLmMKQEAgLTAsMCArMSwxNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKwor I2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfbWVtb3J5X3JlZ2lvbi5oIgor I2luY2x1ZGUgImdlbS9pOTE1X2dlbV9sbWVtLmgiCisjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3Jl Z2lvbi5oIgorI2luY2x1ZGUgImludGVsX3JlZ2lvbl9sbWVtLmgiCisKK2NvbnN0IHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uX29wcyBpbnRlbF9yZWdpb25fbG1lbV9vcHMgPSB7CisJLmluaXQg PSBpbnRlbF9tZW1vcnlfcmVnaW9uX2luaXRfYnVkZHksCisJLnJlbGVhc2UgPSBpbnRlbF9tZW1v cnlfcmVnaW9uX3JlbGVhc2VfYnVkZHksCisJLmNyZWF0ZV9vYmplY3QgPSBfX2k5MTVfZ2VtX2xt ZW1fb2JqZWN0X2NyZWF0ZSwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yZWdpb25fbG1lbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xt ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVkMmEzYmFiNjQ0 MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9s bWVtLmgKQEAgLTAsMCArMSwxMSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAq LworLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lm bmRlZiBfX0lOVEVMX1JFR0lPTl9MTUVNX0gKKyNkZWZpbmUgX19JTlRFTF9SRUdJT05fTE1FTV9I CisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgaW50ZWxfcmVn aW9uX2xtZW1fb3BzOworCisjZW5kaWYgLyogIV9fSU5URUxfUkVHSU9OX0xNRU1fSCAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVz dHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3Rz LmgKaW5kZXggNmRhZjY1OTllYzc5Li41NzRlODY0YWI4YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaApAQCAtMzIsNiAr MzIsNyBAQCBzZWxmdGVzdChnZW1fY29udGV4dHMsIGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxm dGVzdHMpCiBzZWxmdGVzdChibHQsIGk5MTVfZ2VtX29iamVjdF9ibHRfbGl2ZV9zZWxmdGVzdHMp CiBzZWxmdGVzdChjbGllbnQsIGk5MTVfZ2VtX2NsaWVudF9ibHRfbGl2ZV9zZWxmdGVzdHMpCiBz ZWxmdGVzdChyZXNldCwgaW50ZWxfcmVzZXRfbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChtZW1v cnlfcmVnaW9uLCBpbnRlbF9tZW1vcnlfcmVnaW9uX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3Qo aGFuZ2NoZWNrLCBpbnRlbF9oYW5nY2hlY2tfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChleGVj bGlzdHMsIGludGVsX2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGd1YywgaW50 ZWxfZ3VjX2xpdmVfc2VsZnRlc3QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwppbmRleCA1NjA5MWU3ZTU5OWUuLjYxN2EzNWNm YWMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21l bW9yeV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jCkBAIC0xMSw4ICsxMSwxMCBAQAogI2luY2x1ZGUgIm1vY2tfZ2VtX2Rl dmljZS5oIgogI2luY2x1ZGUgIm1vY2tfcmVnaW9uLmgiCiAKKyNpbmNsdWRlICJnZW0vaTkxNV9n ZW1fbG1lbS5oIgogI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9yZWdpb24uaCIKICNpbmNsdWRlICJn ZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAj aW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCiAKIHN0YXRpYyB2b2lkIGNsb3NlX29i amVjdHMoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKQEAgLTI1Miw2ICsyNTQsMjcg QEAgc3RhdGljIGludCBpZ3RfbW9ja19jb250aWd1b3VzKHZvaWQgKmFyZykKIAlyZXR1cm4gZXJy OwogfQogCitzdGF0aWMgaW50IGlndF9sbWVtX2NyZWF0ZSh2b2lkICphcmcpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKKwlpbnQgZXJyID0gMDsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf bG1lbShpOTE1LCBQQUdFX1NJWkUsIDApOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBU Ul9FUlIob2JqKTsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlp ZiAoZXJyKQorCQlnb3RvIG91dF9wdXQ7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo b2JqKTsKK291dF9wdXQ6CisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJcmV0dXJuIGVy cjsKK30KKwogaW50IGludGVsX21lbW9yeV9yZWdpb25fbW9ja19zZWxmdGVzdHModm9pZCkKIHsK IAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewpAQCAtMjgwLDMg KzMwMywyMCBAQCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQog CWRybV9kZXZfcHV0KCZpOTE1LT5kcm0pOwogCXJldHVybiBlcnI7CiB9CisKK2ludCBpbnRlbF9t ZW1vcnlfcmVnaW9uX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CisJCVNV QlRFU1QoaWd0X2xtZW1fY3JlYXRlKSwKKwl9OworCisJaWYgKCFIQVNfTE1FTShpOTE1KSkgewor CQlwcl9pbmZvKCJkZXZpY2UgbGFja3MgTE1FTSBzdXBwb3J0LCBza2lwcGluZ1xuIik7CisJCXJl dHVybiAwOworCX0KKworCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoJmk5MTUtPmd0KSkKKwkJcmV0 dXJuIDA7CisKKwlyZXR1cm4gaTkxNV9saXZlX3N1YnRlc3RzKHRlc3RzLCBpOTE1KTsKK30KLS0g CjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4