From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v2 02/37] drm/i915: introduce intel_memory_region Date: Thu, 27 Jun 2019 21:55:58 +0100 Message-ID: <20190627205633.1143-3-matthew.auld@intel.com> References: <20190627205633.1143-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD9436E817 for ; Thu, 27 Jun 2019 20:56:38 +0000 (UTC) In-Reply-To: <20190627205633.1143-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 U3VwcG9ydCBtZW1vcnkgcmVnaW9ucywgYXMgZGVmaW5lZCBieSBhIGdpdmVuIChzdGFydCwgZW5k KSwgYW5kIGFsbG93CmNyZWF0aW5nIEdFTSBvYmplY3RzIHdoaWNoIGFyZSBiYWNrZWQgYnkgc2Fp ZCByZWdpb24uIFRoZSBpbW1lZGlhdGUgZ29hbApoZXJlIGlzIHRvIGhhdmUgc29tZXRoaW5nIHRv IHJlcHJlc2VudCBvdXIgZGV2aWNlIG1lbW9yeSwgYnV0IGxhdGVyIG9uCndlIGFsc28gd2FudCB0 byByZXByZXNlbnQgZXZlcnkgbWVtb3J5IGRvbWFpbiB3aXRoIGEgcmVnaW9uLCBzbyBzdG9sZW4s CnNobWVtLCBhbmQgb2YgY291cnNlIGRldmljZS4gQXQgc29tZSBwb2ludCB3ZSBhcmUgcHJvYmFi bHkgZ29pbmcgdG8gd2FudAp1c2UgYSBjb21tb24gc3RydWN0IGhlcmUsIHN1Y2ggdGhhdCB3ZSBh cmUgYmV0dGVyIGFsaWduZWQgd2l0aCBzYXkgVFRNLgoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBB dWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxn dWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oICB8ICAgOSArCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvaHVnZV9wYWdlcy5jICAgfCAgODIgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9tZW1vcnlfcmVnaW9uLmMgICAgfCAyMTUgKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggICAgfCAxMDcgKysrKysrKysrCiAu Li4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCAgfCAgIDEgKwogLi4u L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgMTExICsrKysrKysr KwogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jICB8ICA1NSArKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmggIHwgIDE2ICsr CiAxMiBmaWxlcyBjaGFuZ2VkLCA2MDAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlf cmVnaW9uLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19yZWdpb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCBjYjY2Y2Yx YTVhMTAuLjI4ZmFjMTlmN2IwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTU5LDYgKzU5LDcg QEAgaTkxNS15ICs9IGk5MTVfZHJ2Lm8gXAogaTkxNS15ICs9IFwKIAlpOTE1X21lbWNweS5vIFwK IAlpOTE1X21tLm8gXAorCWludGVsX21lbW9yeV9yZWdpb24ubyBcCiAJaTkxNV9zd19mZW5jZS5v IFwKIAlpOTE1X3N5bmNtYXAubyBcCiAJaTkxNV91c2VyX2V4dGVuc2lvbnMubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCmluZGV4IDM0YjUx ZmFkMDJkZS4uOGQ3NjBlODUyYzRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCkBAIC02NCw2ICs2NCwxNSBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCB7CiAKIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMg Km9wczsKIAorCS8qKgorCSAqIE1lbW9yeSByZWdpb24gZm9yIHRoaXMgb2JqZWN0LgorCSAqLwor CXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW1vcnlfcmVnaW9uOworCS8qKgorCSAqIExp c3Qgb2YgbWVtb3J5IHJlZ2lvbiBibG9ja3MgYWxsb2NhdGVkIGZvciB0aGlzIG9iamVjdC4KKwkg Ki8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGJsb2NrczsKKwogCXN0cnVjdCB7CiAJCS8qKgogCQkgKiBA dm1hLmxvY2s6IHByb3RlY3QgdGhlIGxpc3QvdHJlZSBvZiB2bWFzCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCmluZGV4IDIxNTRjZGVlNGFiMy4u ZmQ1NDdiOThlYzY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRl c3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2h1Z2VfcGFnZXMuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAic2VsZnRlc3RzL21v Y2tfZHJtLmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5oIgorI2luY2x1 ZGUgInNlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X3Jh bmRvbS5oIgogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHBhZ2Vfc2l6ZXNbXSA9IHsKQEAg LTQ0Nyw2ICs0NDgsODYgQEAgc3RhdGljIGludCBpZ3RfbW9ja19leGhhdXN0X2RldmljZV9zdXBw b3J0ZWRfcGFnZXModm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAKKworc3RhdGljIGludCBp Z3RfbW9ja19tZW1vcnlfcmVnaW9uX2h1Z2VfcGFnZXModm9pZCAqYXJnKQoreworCXN0cnVjdCBp OTE1X3BwZ3R0ICpwcGd0dCA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHBwZ3R0LT52bS5pOTE1OworCXVuc2lnbmVkIGxvbmcgc3VwcG9ydGVkID0gSU5URUxfSU5GTyhp OTE1KS0+cGFnZV9zaXplczsKKwlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtOworCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJ aW50IGJpdDsKKwlpbnQgZXJyID0gMDsKKworCW1lbSA9IG1vY2tfcmVnaW9uX2NyZWF0ZShpOTE1 LCAwLCBTWl8yRywKKwkJCQkgSTkxNV9HVFRfUEFHRV9TSVpFXzRLLCAwKTsKKwlpZiAoSVNfRVJS KG1lbSkpIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY3JlYXRlIG1lbW9yeSByZWdpb25cbiIpOwor CQlyZXR1cm4gUFRSX0VSUihtZW0pOworCX0KKworCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmc3Vw cG9ydGVkLCBpbG9nMihJOTE1X0dUVF9NQVhfUEFHRV9TSVpFKSArIDEpIHsKKwkJdW5zaWduZWQg aW50IHBhZ2Vfc2l6ZSA9IEJJVChiaXQpOworCQlyZXNvdXJjZV9zaXplX3QgcGh5czsKKworCQlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihtZW0sIHBhZ2Vfc2l6ZSwgMCk7CisJ CWlmIChJU19FUlIob2JqKSkgeworCQkJZXJyID0gUFRSX0VSUihvYmopOworCQkJZ290byBvdXRf ZGVzdHJveV9kZXZpY2U7CisJCX0KKworCQlwcl9pbmZvKCJtZW1vcnkgcmVnaW9uIHN0YXJ0KCVw YSlcbiIsCisJCSAgICAgICAgJm9iai0+bWVtb3J5X3JlZ2lvbi0+cmVnaW9uLnN0YXJ0KTsKKwkJ cHJfaW5mbygiY3JlYXRpbmcgb2JqZWN0LCBzaXplPSV4XG4iLCBwYWdlX3NpemUpOworCisJCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0LT52bSwgTlVMTCk7CisJCWlmIChJU19F UlIodm1hKSkgeworCQkJZXJyID0gUFRSX0VSUih2bWEpOworCQkJZ290byBvdXRfcHV0OworCQl9 CisKKwkJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElOX1VTRVIpOworCQlpZiAoZXJy KQorCQkJZ290byBvdXRfY2xvc2U7CisKKwkJcGh5cyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfZG1h X2FkZHJlc3Mob2JqLCAwKTsKKwkJaWYgKCFJU19BTElHTkVEKHBoeXMsIHBhZ2Vfc2l6ZSkpIHsK KwkJCXByX2VycigibWVtb3J5IHJlZ2lvbiBtaXNhbGlnbmVkKCVwYSlcbiIsICZwaHlzKTsKKwkJ CWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF9jbG9zZTsKKwkJfQorCisJCWlmICh2bWEtPnBh Z2Vfc2l6ZXMuZ3R0ICE9IHBhZ2Vfc2l6ZSkgeworCQkJcHJfZXJyKCJwYWdlX3NpemVzLmd0dD0l dSwgZXhwZWN0ZWQ9JXVcbiIsCisJCQkgICAgICAgdm1hLT5wYWdlX3NpemVzLmd0dCwgcGFnZV9z aXplKTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF91bnBpbjsKKwkJfQorCisJCWk5 MTVfdm1hX3VucGluKHZtYSk7CisJCWk5MTVfdm1hX2Nsb3NlKHZtYSk7CisKKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChvYmopOworCX0KKworCWdvdG8gb3V0X2Rlc3Ryb3lfZGV2aWNlOworCitvdXRf dW5waW46CisJaTkxNV92bWFfdW5waW4odm1hKTsKK291dF9jbG9zZToKKwlpOTE1X3ZtYV9jbG9z ZSh2bWEpOworb3V0X3B1dDoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CitvdXRfZGVzdHJv eV9kZXZpY2U6CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1 X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOworCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOworCWludGVsX21lbW9yeV9yZWdpb25fZGVzdHJveShtZW0pOworCisJcmV0 dXJuIGVycjsKK30KKwogc3RhdGljIGludCBpZ3RfbW9ja19wcGd0dF9taXNhbGlnbmVkX2RtYSh2 b2lkICphcmcpCiB7CiAJc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0ID0gYXJnOwpAQCAtMTY3OSw2 ICsxNzYwLDcgQEAgaW50IGk5MTVfZ2VtX2h1Z2VfcGFnZV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQog ewogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CiAJCVNVQlRF U1QoaWd0X21vY2tfZXhoYXVzdF9kZXZpY2Vfc3VwcG9ydGVkX3BhZ2VzKSwKKwkJU1VCVEVTVChp Z3RfbW9ja19tZW1vcnlfcmVnaW9uX2h1Z2VfcGFnZXMpLAogCQlTVUJURVNUKGlndF9tb2NrX3Bw Z3R0X21pc2FsaWduZWRfZG1hKSwKIAkJU1VCVEVTVChpZ3RfbW9ja19wcGd0dF9odWdlX2ZpbGwp LAogCQlTVUJURVNUKGlndF9tb2NrX3BwZ3R0XzY0SyksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApp bmRleCA3ZTk4MWIwM2ZhY2UuLjk3ZDAyYjMyYTIwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CkBAIC03Nyw2ICs3Nyw3IEBACiAKICNpbmNsdWRlICJpbnRlbF9kZXZpY2VfaW5mby5oIgogI2lu Y2x1ZGUgImludGVsX3J1bnRpbWVfcG0uaCIKKyNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9u LmgiCiAjaW5jbHVkZSAiaW50ZWxfdWMuaCIKICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIKICNp bmNsdWRlICJpbnRlbF93YWtlcmVmLmgiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBiN2Yy OTBiNzdmOGYuLmRiMzc0NGIwYmM4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0xODE1 LDQgKzE4MTUsNSBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvbGQsCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCiAj aW5jbHVkZSAic2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIgogI2luY2x1ZGUgInNlbGZ0ZXN0 cy9pOTE1X2dlbS5jIgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMi CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9y ZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRjODk4NTNhNzc2OQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwpA QCAtMCwwICsxLDIxNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImlu dGVsX21lbW9yeV9yZWdpb24uaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitzdGF0aWMgdm9p ZAorbWVtb3J5X3JlZ2lvbl9mcmVlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCisJCQkgc3RydWN0IHNnX3RhYmxlICpwYWdlcykKK3sKKworCXN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICpibG9jaywgKm9uOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5tZW1vcnlf cmVnaW9uLT5tbV9sb2NrKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibG9jaywgb24s ICZvYmotPmJsb2NrcywgbGluaykgeworCQlsaXN0X2RlbF9pbml0KCZibG9jay0+bGluayk7CisJ CWk5MTVfYnVkZHlfZnJlZSgmb2JqLT5tZW1vcnlfcmVnaW9uLT5tbSwgYmxvY2spOworCX0KKwor CXNnX2ZyZWVfdGFibGUocGFnZXMpOworCWtmcmVlKHBhZ2VzKTsKK30KKwordm9pZAoraTkxNV9t ZW1vcnlfcmVnaW9uX3B1dF9wYWdlc19idWRkeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAorCQkJCSAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCit7CisJbXV0ZXhfbG9jaygmb2Jq LT5tZW1vcnlfcmVnaW9uLT5tbV9sb2NrKTsKKwltZW1vcnlfcmVnaW9uX2ZyZWVfcGFnZXMob2Jq LCBwYWdlcyk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1lbW9yeV9yZWdpb24tPm1tX2xvY2spOwor CisJb2JqLT5tbS5kaXJ0eSA9IGZhbHNlOworfQorCitpbnQKK2k5MTVfbWVtb3J5X3JlZ2lvbl9n ZXRfcGFnZXNfYnVkZHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtID0gb2JqLT5tZW1vcnlfcmVnaW9uOworCXJlc291 cmNlX3NpemVfdCBzaXplID0gb2JqLT5iYXNlLnNpemU7CisJc3RydWN0IHNnX3RhYmxlICpzdDsK KwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCXVuc2lnbmVkIGludCBzZ19wYWdlX3NpemVzOwor CXVuc2lnbmVkIGxvbmcgbl9wYWdlczsKKworCUdFTV9CVUdfT04oIUlTX0FMSUdORUQoc2l6ZSwg bWVtLT5tbS5taW5fc2l6ZSkpOworCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJm9iai0+YmxvY2tz KSk7CisKKwlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlmICghc3Qp CisJCXJldHVybiAtRU5PTUVNOworCisJbl9wYWdlcyA9IHNpemUgPj4gaWxvZzIobWVtLT5tbS5t aW5fc2l6ZSk7CisKKwlpZiAoc2dfYWxsb2NfdGFibGUoc3QsIG5fcGFnZXMsIEdGUF9LRVJORUwp KSB7CisJCWtmcmVlKHN0KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJc2cgPSBzdC0+c2ds OworCXN0LT5uZW50cyA9IDA7CisJc2dfcGFnZV9zaXplcyA9IDA7CisKKwltdXRleF9sb2NrKCZt ZW0tPm1tX2xvY2spOworCisJZG8geworCQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2s7 CisJCXVuc2lnbmVkIGludCBvcmRlcjsKKwkJdTY0IGJsb2NrX3NpemU7CisJCXU2NCBvZmZzZXQ7 CisKKwkJb3JkZXIgPSBmbHMobl9wYWdlcykgLSAxOworCQlHRU1fQlVHX09OKG9yZGVyID4gbWVt LT5tbS5tYXhfb3JkZXIpOworCisJCWRvIHsKKwkJCWJsb2NrID0gaTkxNV9idWRkeV9hbGxvYygm bWVtLT5tbSwgb3JkZXIpOworCQkJaWYgKCFJU19FUlIoYmxvY2spKQorCQkJCWJyZWFrOworCisJ CQkvKiBYWFg6IHNvbWUga2luZCBvZiBldmljdGlvbiBwYXNzLCBsb2NhbCB0byB0aGUgZGV2aWNl ICovCisJCQlpZiAoIW9yZGVyLS0pCisJCQkJZ290byBlcnJfZnJlZV9ibG9ja3M7CisJCX0gd2hp bGUgKDEpOworCisJCW5fcGFnZXMgLT0gQklUKG9yZGVyKTsKKworCQlJTklUX0xJU1RfSEVBRCgm YmxvY2stPmxpbmspOworCQlsaXN0X2FkZCgmYmxvY2stPmxpbmssICZvYmotPmJsb2Nrcyk7CisK KwkJLyoKKwkJICogVE9ETzogaXQgbWlnaHQgYmUgd29ydGggY2hlY2tpbmcgY29uc2VjdXRpdmUg YmxvY2tzIGhlcmUgYW5kCisJCSAqIGNvYWxlc2NlIGlmIHdlIGNhbi4KKwkJKi8KKwkJYmxvY2tf c2l6ZSA9IGk5MTVfYnVkZHlfYmxvY2tfc2l6ZSgmbWVtLT5tbSwgYmxvY2spOworCQlvZmZzZXQg PSBpOTE1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisKKwkJc2dfZG1hX2FkZHJlc3Moc2cp ID0gbWVtLT5yZWdpb24uc3RhcnQgKyBvZmZzZXQ7CisJCXNnX2RtYV9sZW4oc2cpID0gYmxvY2tf c2l6ZTsKKworCQlzZy0+bGVuZ3RoID0gYmxvY2tfc2l6ZTsKKwkJc2dfcGFnZV9zaXplcyB8PSBi bG9ja19zaXplOworCQlzdC0+bmVudHMrKzsKKworCQlpZiAoIW5fcGFnZXMpIHsKKwkJCXNnX21h cmtfZW5kKHNnKTsKKwkJCWJyZWFrOworCQl9CisKKwkJc2cgPSBfX3NnX25leHQoc2cpOworCX0g d2hpbGUgKDEpOworCisJbXV0ZXhfdW5sb2NrKCZtZW0tPm1tX2xvY2spOworCisJaTkxNV9zZ190 cmltKHN0KTsKKworCV9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhvYmosIHN0LCBzZ19wYWdl X3NpemVzKTsKKworCXJldHVybiAwOworCitlcnJfZnJlZV9ibG9ja3M6CisJbWVtb3J5X3JlZ2lv bl9mcmVlX3BhZ2VzKG9iaiwgc3QpOworCW11dGV4X3VubG9jaygmbWVtLT5tbV9sb2NrKTsKKwly ZXR1cm4gLUVOWElPOworfQorCitpbnQgaTkxNV9tZW1vcnlfcmVnaW9uX2luaXRfYnVkZHkoc3Ry dWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKK3sKKwlyZXR1cm4gaTkxNV9idWRkeV9pbml0 KCZtZW0tPm1tLCByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbiksCisJCQkgICAgICAgbWVtLT5t aW5fcGFnZV9zaXplKTsKK30KKwordm9pZCBpOTE1X21lbW9yeV9yZWdpb25fcmVsZWFzZV9idWRk eShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQoreworCWk5MTVfYnVkZHlfZmluaSgm bWVtLT5tbSk7Cit9CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2k5MTVfZ2VtX29i amVjdF9jcmVhdGVfcmVnaW9uKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkg ICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBmbGFncykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCisJaWYgKCFtZW0pCisJCXJl dHVybiBFUlJfUFRSKC1FTk9ERVYpOworCisJc2l6ZSA9IHJvdW5kX3VwKHNpemUsIG1lbS0+bWlu X3BhZ2Vfc2l6ZSk7CisKKwlHRU1fQlVHX09OKCFzaXplKTsKKwlHRU1fQlVHX09OKCFJU19BTElH TkVEKHNpemUsIEk5MTVfR1RUX01JTl9BTElHTk1FTlQpKTsKKworCWlmIChzaXplID4+IFBBR0Vf U0hJRlQgPiBJTlRfTUFYKQorCQlyZXR1cm4gRVJSX1BUUigtRTJCSUcpOworCisJaWYgKG92ZXJm bG93c190eXBlKHNpemUsIG9iai0+YmFzZS5zaXplKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUUyQklH KTsKKworCW9iaiA9IG1lbS0+b3BzLT5jcmVhdGVfb2JqZWN0KG1lbSwgc2l6ZSwgZmxhZ3MpOwor CWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIG9iajsKKworCUlOSVRfTElTVF9IRUFEKCZvYmot PmJsb2Nrcyk7CisJb2JqLT5tZW1vcnlfcmVnaW9uID0gbWVtOworCisJcmV0dXJuIG9iajsKK30K Kworc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKgoraW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkgICByZXNvdXJjZV9zaXplX3Qg c3RhcnQsCisJCQkgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwKKwkJCSAgIHJlc291cmNlX3NpemVf dCBtaW5fcGFnZV9zaXplLAorCQkJICAgcmVzb3VyY2Vfc2l6ZV90IGlvX3N0YXJ0LAorCQkJICAg Y29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fb3BzICpvcHMpCit7CisJc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbTsKKwlpbnQgZXJyOworCisJbWVtID0ga3phbGxvYyhzaXpl b2YoKm1lbSksIEdGUF9LRVJORUwpOworCWlmICghbWVtKQorCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKKworCW1lbS0+aTkxNSA9IGk5MTU7CisJbWVtLT5yZWdpb24gPSAoc3RydWN0IHJlc291 cmNlKURFRklORV9SRVNfTUVNKHN0YXJ0LCBzaXplKTsKKwltZW0tPmlvX3N0YXJ0ID0gaW9fc3Rh cnQ7CisJbWVtLT5taW5fcGFnZV9zaXplID0gbWluX3BhZ2Vfc2l6ZTsKKwltZW0tPm9wcyA9IG9w czsKKworCW11dGV4X2luaXQoJm1lbS0+bW1fbG9jayk7CisKKwlpZiAob3BzLT5pbml0KSB7CisJ CWVyciA9IG9wcy0+aW5pdChtZW0pOworCQlpZiAoZXJyKSB7CisJCQlrZnJlZShtZW0pOworCQkJ bWVtID0gRVJSX1BUUihlcnIpOworCQl9CisJfQorCisJcmV0dXJuIG1lbTsKK30KKwordm9pZAor aW50ZWxfbWVtb3J5X3JlZ2lvbl9kZXN0cm95KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICpt ZW0pCit7CisJaWYgKG1lbS0+b3BzLT5yZWxlYXNlKQorCQltZW0tPm9wcy0+cmVsZWFzZShtZW0p OworCisJa2ZyZWUobWVtKTsKK30KKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NF TEZURVNUKQorI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jIgorI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZDQ3MzZiZGRlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmgKQEAgLTAsMCArMSwxMDcg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19JTlRFTF9NRU1PUllf UkVHSU9OX0hfXworI2RlZmluZSBfX0lOVEVMX01FTU9SWV9SRUdJT05fSF9fCisKKyNpbmNsdWRl IDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxp bnV4L2lvLW1hcHBpbmcuaD4KKworI2luY2x1ZGUgImk5MTVfYnVkZHkuaCIKKworc3RydWN0IGRy bV9pOTE1X3ByaXZhdGU7CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdDsKK3N0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uOworc3RydWN0IHNnX3RhYmxlOworCisvKioKKyAqICBCYXNlIG1lbW9y eSB0eXBlCisgKi8KK2VudW0gaW50ZWxfbWVtb3J5X3R5cGUgeworCUlOVEVMX1NNRU0gPSAwLAor CUlOVEVMX0xNRU0sCisJSU5URUxfU1RPTEVOLAorfTsKKworZW51bSBpbnRlbF9yZWdpb25faWQg eworCUlOVEVMX01FTU9SWV9TTUVNID0gMCwKKwlJTlRFTF9NRU1PUllfTE1FTSwKKwlJTlRFTF9N RU1PUllfU1RPTEVOLAorCUlOVEVMX01FTU9SWV9VS05PV04sIC8qIFNob3VsZCBiZSBsYXN0ICov Cit9OworCisjZGVmaW5lIFJFR0lPTl9TTUVNICAgICBCSVQoSU5URUxfTUVNT1JZX1NNRU0pCisj ZGVmaW5lIFJFR0lPTl9MTUVNICAgICBCSVQoSU5URUxfTUVNT1JZX0xNRU0pCisjZGVmaW5lIFJF R0lPTl9TVE9MRU4gICBCSVQoSU5URUxfTUVNT1JZX1NUT0xFTikKKworI2RlZmluZSBJTlRFTF9N RU1PUllfVFlQRV9TSElGVCAxNgorCisjZGVmaW5lIE1FTU9SWV9UWVBFX0ZST01fUkVHSU9OKHIp IChpbG9nMihyID4+IElOVEVMX01FTU9SWV9UWVBFX1NISUZUKSkKKyNkZWZpbmUgTUVNT1JZX0lO U1RBTkNFX0ZST01fUkVHSU9OKHIpIChpbG9nMihyICYgMHhmZmZmKSkKKworLyoqCisgKiBNZW1v cnkgcmVnaW9ucyBlbmNvZGVkIGFzIHR5cGUgfCBpbnN0YW5jZQorICovCitzdGF0aWMgY29uc3Qg dTMyIGludGVsX3JlZ2lvbl9tYXBbXSA9IHsKKwlbSU5URUxfTUVNT1JZX1NNRU1dID0gQklUKElO VEVMX1NNRU0gKyBJTlRFTF9NRU1PUllfVFlQRV9TSElGVCkgfCBCSVQoMCksCisJW0lOVEVMX01F TU9SWV9MTUVNXSA9IEJJVChJTlRFTF9MTUVNICsgSU5URUxfTUVNT1JZX1RZUEVfU0hJRlQpIHwg QklUKDApLAorCVtJTlRFTF9NRU1PUllfU1RPTEVOXSA9IEJJVChJTlRFTF9TVE9MRU4gKyBJTlRF TF9NRU1PUllfVFlQRV9TSElGVCkgfCBCSVQoMCksCit9OworCitzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbl9vcHMgeworCXVuc2lnbmVkIGludCBmbGFnczsKKworCWludCAoKmluaXQpKHN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICopOworCXZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiAqKTsKKworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKKwkoKmNy ZWF0ZV9vYmplY3QpKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICosCisJCQkgcmVzb3VyY2Vf c2l6ZV90LAorCQkJIHVuc2lnbmVkIGludCk7Cit9OworCitzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisKKwljb25zdCBzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgKm9wczsKKworCXN0cnVjdCBpb19tYXBwaW5nIGlvbWFw OworCXN0cnVjdCByZXNvdXJjZSByZWdpb247CisKKwlzdHJ1Y3QgaTkxNV9idWRkeV9tbSBtbTsK KwlzdHJ1Y3QgbXV0ZXggbW1fbG9jazsKKworCXJlc291cmNlX3NpemVfdCBpb19zdGFydDsKKwly ZXNvdXJjZV9zaXplX3QgbWluX3BhZ2Vfc2l6ZTsKKworCXVuc2lnbmVkIGludCB0eXBlOworCXVu c2lnbmVkIGludCBpbnN0YW5jZTsKKwl1bnNpZ25lZCBpbnQgaWQ7Cit9OworCitpbnQgaTkxNV9t ZW1vcnlfcmVnaW9uX2luaXRfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7 Cit2b2lkIGk5MTVfbWVtb3J5X3JlZ2lvbl9yZWxlYXNlX2J1ZGR5KHN0cnVjdCBpbnRlbF9tZW1v cnlfcmVnaW9uICptZW0pOworCitpbnQgaTkxNV9tZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRk eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgaTkxNV9tZW1vcnlfcmVn aW9uX3B1dF9wYWdlc19idWRkeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJ CQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKTsKKworc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24g KgoraW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCisJCQkgICByZXNvdXJjZV9zaXplX3Qgc3RhcnQsCisJCQkgICByZXNvdXJjZV9zaXplX3Qg c2l6ZSwKKwkJCSAgIHJlc291cmNlX3NpemVfdCBtaW5fcGFnZV9zaXplLAorCQkJICAgcmVzb3Vy Y2Vfc2l6ZV90IGlvX3N0YXJ0LAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdp b25fb3BzICpvcHMpOwordm9pZAoraW50ZWxfbWVtb3J5X3JlZ2lvbl9kZXN0cm95KHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0pOworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq CitpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtLAorCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCisJCQkgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCmluZGV4IGI4ODA4NGZlMzI2OS4uYWE1YTBl N2Y1ZDllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9t b2NrX3NlbGZ0ZXN0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X21vY2tfc2VsZnRlc3RzLmgKQEAgLTI2LDMgKzI2LDQgQEAgc2VsZnRlc3QoZ3R0LCBpOTE1X2dl bV9ndHRfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChodWdlcGFnZXMsIGk5MTVfZ2VtX2h1Z2Vf cGFnZV9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGNvbnRleHRzLCBpOTE1X2dlbV9jb250ZXh0 X21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QoYnVkZHksIGk5MTVfYnVkZHlfbW9ja19zZWxmdGVz dHMpCitzZWxmdGVzdChtZW1vcnlfcmVnaW9uLCBpbnRlbF9tZW1vcnlfcmVnaW9uX21vY2tfc2Vs ZnRlc3RzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X21lbW9yeV9yZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9t ZW1vcnlfcmVnaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5j M2IxNjBjZmQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCkBAIC0wLDAgKzEsMTExIEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgorCisjaW5j bHVkZSAiLi4vaTkxNV9zZWxmdGVzdC5oIgorCisjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgi CisjaW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJtb2Nr X2RybS5oIgorCitzdGF0aWMgdm9pZCBjbG9zZV9vYmplY3RzKHN0cnVjdCBsaXN0X2hlYWQgKm9i amVjdHMpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9uOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgb24sIG9iamVjdHMsIHN0X2xpbmspIHsKKwkJaWYg KGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpCisJCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fcGFnZXMob2JqKTsKKwkJLyogTm8gcG9sbHV0aW5nIHRoZSBtZW1vcnkgcmVnaW9u IGJldHdlZW4gdGVzdHMgKi8KKwkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaiwgSTkx NV9NTV9OT1JNQUwpOworCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJCWxpc3RfZGVsKCZv YmotPnN0X2xpbmspOworCX0KK30KKworc3RhdGljIGludCBpZ3RfbW9ja19maWxsKHZvaWQgKmFy ZykKK3sKKwlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtID0gYXJnOworCXJlc291cmNl X3NpemVfdCB0b3RhbCA9IHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9uKTsKKwlyZXNvdXJjZV9z aXplX3QgcGFnZV9zaXplOworCXJlc291cmNlX3NpemVfdCByZW07CisJdW5zaWduZWQgbG9uZyBt YXhfcGFnZXM7CisJdW5zaWduZWQgbG9uZyBwYWdlX251bTsKKwlMSVNUX0hFQUQob2JqZWN0cyk7 CisJaW50IGVyciA9IDA7CisKKwlwYWdlX3NpemUgPSBtZW0tPm1tLm1pbl9zaXplOworCW1heF9w YWdlcyA9IGRpdjY0X3U2NCh0b3RhbCwgcGFnZV9zaXplKTsKKwlyZW0gPSB0b3RhbDsKKworCWZv cl9lYWNoX3ByaW1lX251bWJlcl9mcm9tKHBhZ2VfbnVtLCAxLCBtYXhfcGFnZXMpIHsKKwkJcmVz b3VyY2Vfc2l6ZV90IHNpemUgPSBwYWdlX251bSAqIHBhZ2Vfc2l6ZTsKKwkJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKKworCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3Jl Z2lvbihtZW0sIHNpemUsIDApOworCQlpZiAoSVNfRVJSKG9iaikpIHsKKwkJCWVyciA9IFBUUl9F UlIob2JqKTsKKwkJCWJyZWFrOworCQl9CisKKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9w YWdlcyhvYmopOworCQlpZiAoZXJyKSB7CisJCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJ CQlicmVhazsKKwkJfQorCisJCWxpc3RfYWRkKCZvYmotPnN0X2xpbmssICZvYmplY3RzKTsKKwkJ cmVtIC09IHNpemU7CisJfQorCisJaWYgKGVyciA9PSAtRU5PTUVNKQorCQllcnIgPSAwOworCWlm IChlcnIgPT0gLUVOWElPKSB7CisJCWlmIChwYWdlX251bSAqIHBhZ2Vfc2l6ZSA8PSByZW0pIHsK KwkJCXByX2VycigiaWd0X21vY2tfZmlsbCBmYWlsZWQsIHNwYWNlIHN0aWxsIGxlZnQgaW4gcmVn aW9uXG4iKTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCX0gZWxzZSB7CisJCQllcnIgPSAwOworCQl9 CisJfQorCisJY2xvc2Vfb2JqZWN0cygmb2JqZWN0cyk7CisKKwlyZXR1cm4gZXJyOworfQorCitp bnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQoreworCXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CisJCVNVQlRFU1QoaWd0X21vY2tf ZmlsbCksCisJfTsKKwlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1OworCWludCBlcnI7CisKKwlpOTE1ID0gbW9ja19nZW1fZGV2 aWNlKCk7CisJaWYgKCFpOTE1KQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1lbSA9IG1vY2tfcmVn aW9uX2NyZWF0ZShpOTE1LCAwLCBTWl8yRywKKwkJCQkgSTkxNV9HVFRfUEFHRV9TSVpFXzRLLCAw KTsKKwlpZiAoSVNfRVJSKG1lbSkpIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY3JlYXRlIG1lbW9y eSByZWdpb25cbiIpOworCQllcnIgPSBQVFJfRVJSKG1lbSk7CisJCWdvdG8gb3V0X3VucmVmOwor CX0KKworCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWVyciA9IGk5MTVf c3VidGVzdHModGVzdHMsIG1lbSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKworCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkxNSk7CisJaW50ZWxfbWVt b3J5X3JlZ2lvbl9kZXN0cm95KG1lbSk7CisKK291dF91bnJlZjoKKwlkcm1fZGV2X3B1dCgmaTkx NS0+ZHJtKTsKKworCXJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKaW5kZXggMjc0MTgwNWI1NmMyLi44NmY4NmMzZDM4 YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9k ZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJtb2NrX2dlbV9kZXZpY2UuaCIKICNp bmNsdWRlICJtb2NrX2d0dC5oIgogI2luY2x1ZGUgIm1vY2tfdW5jb3JlLmgiCisjaW5jbHVkZSAi bW9ja19yZWdpb24uaCIKIAogI2luY2x1ZGUgImdlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0Lmgi CiAjaW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9tb2NrX2dlbV9vYmplY3QuaCIKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5jYjk0MmE0NjFlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYwpAQCAtMCwwICsxLDU1IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIw MTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAibW9ja19yZWdpb24uaCIKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBtb2NrX3JlZ2lvbl9v Ympfb3BzID0geworCS5nZXRfcGFnZXMgPSBpOTE1X21lbW9yeV9yZWdpb25fZ2V0X3BhZ2VzX2J1 ZGR5LAorCS5wdXRfcGFnZXMgPSBpOTE1X21lbW9yeV9yZWdpb25fcHV0X3BhZ2VzX2J1ZGR5LAor fTsKKworc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK21vY2tfb2JqZWN0X2Ny ZWF0ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkgICByZXNvdXJjZV9zaXpl X3Qgc2l6ZSwKKwkJICAgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gbWVtLT5pOTE1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7CisJdW5zaWduZWQgaW50IGNhY2hlX2xldmVsOworCisJaWYgKHNpemUgPiBCSVQobWVtLT5t bS5tYXhfb3JkZXIpICogbWVtLT5tbS5taW5fc2l6ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUUyQklH KTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYygpOworCWlmICghb2JqKQorCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdCgmaTkx NS0+ZHJtLCAmb2JqLT5iYXNlLCBzaXplKTsKKwlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZt b2NrX3JlZ2lvbl9vYmpfb3BzKTsKKworCW9iai0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9N QUlOX0NQVSB8IEk5MTVfR0VNX0RPTUFJTl9HVFQ7CisKKwljYWNoZV9sZXZlbCA9IEhBU19MTEMo aTkxNSkgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKKwlpOTE1X2dlbV9vYmpl Y3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShvYmosIGNhY2hlX2xldmVsKTsKKworCXJldHVybiBvYmo7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgbW9ja19y ZWdpb25fb3BzID0geworCS5pbml0ID0gaTkxNV9tZW1vcnlfcmVnaW9uX2luaXRfYnVkZHksCisJ LnJlbGVhc2UgPSBpOTE1X21lbW9yeV9yZWdpb25fcmVsZWFzZV9idWRkeSwKKwkuY3JlYXRlX29i amVjdCA9IG1vY2tfb2JqZWN0X2NyZWF0ZSwKK307CisKK3N0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICoKK21vY2tfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK KwkJICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAorCQkgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwK KwkJICAgcmVzb3VyY2Vfc2l6ZV90IG1pbl9wYWdlX3NpemUsCisJCSAgIHJlc291cmNlX3NpemVf dCBpb19zdGFydCkKK3sKKwlyZXR1cm4gaW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoaTkxNSwg c3RhcnQsIHNpemUsIG1pbl9wYWdlX3NpemUsCisJCQkJCSAgaW9fc3RhcnQsICZtb2NrX3JlZ2lv bl9vcHMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfcmVnaW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24u aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0NjA4MDg5ZDgzMwot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3Jl Z2lvbi5oCkBAIC0wLDAgKzEsMTYgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQg Ki8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp Zm5kZWYgX19NT0NLX1JFR0lPTl9ICisjZGVmaW5lIF9fTU9DS19SRUdJT05fSAorCitzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqCittb2NrX3JlZ2lvbl9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCisJCSAgIHJlc291cmNlX3NpemVfdCBzdGFydCwKKwkJICAgcmVzb3Vy Y2Vfc2l6ZV90IHNpemUsCisJCSAgIHJlc291cmNlX3NpemVfdCBtaW5fcGFnZV9zaXplLAorCQkg ICByZXNvdXJjZV9zaXplX3QgaW9fc3RhcnQpOworCisjZW5kaWYgLyogIV9fTU9DS19SRUdJT05f SCAqLwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=