From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oded Gabbay Subject: [PATCH 5/9] drm/amdkfd: Add memory exception handling Date: Tue, 21 Apr 2015 15:47:22 +0300 Message-ID: <1429620446-28017-5-git-send-email-oded.gabbay@amd.com> References: <1429620446-28017-1-git-send-email-oded.gabbay@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0145.outbound.protection.outlook.com [157.56.111.145]) by gabe.freedesktop.org (Postfix) with ESMTP id 3830189A9A for ; Tue, 21 Apr 2015 05:48:41 -0700 (PDT) In-Reply-To: <1429620446-28017-1-git-send-email-oded.gabbay@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Alexey Skidanov List-Id: dri-devel@lists.freedesktop.org RnJvbTogQWxleGV5IFNraWRhbm92IDxBbGV4ZXkuU2tpZGFub3ZAYW1kLmNvbT4KClRoaXMgcGF0 Y2ggYWRkcyBQZXJpcGhlcmFsIFBhZ2UgUmVxdWVzdCAoUFBSKSBmYWlsdXJlIHByb2Nlc3Npbmcg YW5kIHJlcG9ydGluZy4KCkJhZCBhZGRyZXNzIG9yIHBvaW50ZXIgdG8gYSBzeXN0ZW0gbWVtb3J5 IGJsb2NrIHdpdGggaW5hcHByb3ByaWF0ZQpyZWFkL3dyaXRlIHBlcm1pc3Npb24gY2F1c2Ugc3Vj aCBQUFIgZmFpbHVyZSBkdXJpbmcgYSB1c2VyIHF1ZXVlCnByb2Nlc3NpbmcuIFBQUiByZXF1ZXN0 IGhhbmRsaW5nIGlzIGRvbmUgYnkgSU9NTVUgZHJpdmVyIG5vdGlmeWluZwpBTURLRkQgbW9kdWxl IG9uIFBQUiBmYWlsdXJlLgoKVGhlIHByb2Nlc3MgdHJpZ2dlcmluZyBhIFBQUiBmYWlsdXJlIHdp bGwgYmUgbm90aWZpZWQgYnkgYXBwcm9wcmlhdGUgZXZlbnQKb3IgU0lHVEVSTSBzaWduYWwgd2ls bCBiZSBzZW50IHRvIGl0LgoKU2lnbmVkLW9mZi1ieTogQWxleGV5IFNraWRhbm92IDxBbGV4ZXku U2tpZGFub3ZAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogT2RlZCBHYWJiYXkgPG9kZWQuZ2FiYmF5 QGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jIHwg IDI5ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jIHwgMTU0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZXZlbnRzLmggfCAgIDcgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcml2LmggICB8ICAgNSArLQogNCBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwg OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMKaW5k ZXggNGMwMzE2OS4uNTJjYWIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZp Y2UuYwpAQCAtMTgyLDYgKzE4MiwzMiBAQCBzdGF0aWMgdm9pZCBpb21tdV9wYXNpZF9zaHV0ZG93 bl9jYWxsYmFjayhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IHBhc2lkKQogCQlrZmRfdW5iaW5k X3Byb2Nlc3NfZnJvbV9kZXZpY2UoZGV2LCBwYXNpZCk7CiB9CiAKKy8qCisgKiBUaGlzIGZ1bmN0 aW9uIGNhbGxlZCBieSBJT01NVSBkcml2ZXIgb24gUFBSIGZhaWx1cmUKKyAqLworc3RhdGljIGlu dCBpb21tdV9pbnZhbGlkX3Bwcl9jYihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IHBhc2lkLAor CQl1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHUxNiBmbGFncykKK3sKKwlzdHJ1Y3Qga2ZkX2RldiAq ZGV2OworCisJZGV2X3dhcm4oa2ZkX2RldmljZSwKKwkJCSJJbnZhbGlkIFBQUiBkZXZpY2UgJXg6 JXguJXggcGFzaWQgJWQgYWRkcmVzcyAweCVsWCBmbGFncyAweCVYIiwKKwkJCVBDSV9CVVNfTlVN KHBkZXYtPmRldmZuKSwKKwkJCVBDSV9TTE9UKHBkZXYtPmRldmZuKSwKKwkJCVBDSV9GVU5DKHBk ZXYtPmRldmZuKSwKKwkJCXBhc2lkLAorCQkJYWRkcmVzcywKKwkJCWZsYWdzKTsKKworCWRldiA9 IGtmZF9kZXZpY2VfYnlfcGNpX2RldihwZGV2KTsKKwlCVUdfT04oZGV2ID09IE5VTEwpOworCisJ a2ZkX3NpZ25hbF9pb21tdV9ldmVudChkZXYsIHBhc2lkLCBhZGRyZXNzLAorCQkJZmxhZ3MgJiBQ UFJfRkFVTFRfV1JJVEUsIGZsYWdzICYgUFBSX0ZBVUxUX0VYRUMpOworCisJcmV0dXJuIEFNRF9J T01NVV9JTlZfUFJJX1JTUF9JTlZBTElEOworfQorCiBib29sIGtnZDJrZmRfZGV2aWNlX2luaXQo c3RydWN0IGtmZF9kZXYgKmtmZCwKIAkJCSBjb25zdCBzdHJ1Y3Qga2dkMmtmZF9zaGFyZWRfcmVz b3VyY2VzICpncHVfcmVzb3VyY2VzKQogewpAQCAtMjUxLDYgKzI3Nyw3IEBAIGJvb2wga2dkMmtm ZF9kZXZpY2VfaW5pdChzdHJ1Y3Qga2ZkX2RldiAqa2ZkLAogCX0KIAlhbWRfaW9tbXVfc2V0X2lu dmFsaWRhdGVfY3R4X2NiKGtmZC0+cGRldiwKIAkJCQkJCWlvbW11X3Bhc2lkX3NodXRkb3duX2Nh bGxiYWNrKTsKKwlhbWRfaW9tbXVfc2V0X2ludmFsaWRfcHByX2NiKGtmZC0+cGRldiwgaW9tbXVf aW52YWxpZF9wcHJfY2IpOwogCiAJa2ZkLT5kcW0gPSBkZXZpY2VfcXVldWVfbWFuYWdlcl9pbml0 KGtmZCk7CiAJaWYgKCFrZmQtPmRxbSkgewpAQCAtMzE2LDYgKzM0Myw3IEBAIHZvaWQga2dkMmtm ZF9zdXNwZW5kKHN0cnVjdCBrZmRfZGV2ICprZmQpCiAJaWYgKGtmZC0+aW5pdF9jb21wbGV0ZSkg ewogCQlrZmQtPmRxbS0+b3BzLnN0b3Aoa2ZkLT5kcW0pOwogCQlhbWRfaW9tbXVfc2V0X2ludmFs aWRhdGVfY3R4X2NiKGtmZC0+cGRldiwgTlVMTCk7CisJCWFtZF9pb21tdV9zZXRfaW52YWxpZF9w cHJfY2Ioa2ZkLT5wZGV2LCBOVUxMKTsKIAkJYW1kX2lvbW11X2ZyZWVfZGV2aWNlKGtmZC0+cGRl dik7CiAJfQogfQpAQCAtMzM1LDYgKzM2Myw3IEBAIGludCBrZ2Qya2ZkX3Jlc3VtZShzdHJ1Y3Qg a2ZkX2RldiAqa2ZkKQogCQkJcmV0dXJuIC1FTlhJTzsKIAkJYW1kX2lvbW11X3NldF9pbnZhbGlk YXRlX2N0eF9jYihrZmQtPnBkZXYsCiAJCQkJCQlpb21tdV9wYXNpZF9zaHV0ZG93bl9jYWxsYmFj ayk7CisJCWFtZF9pb21tdV9zZXRfaW52YWxpZF9wcHJfY2Ioa2ZkLT5wZGV2LCBpb21tdV9pbnZh bGlkX3Bwcl9jYik7CiAJCWtmZC0+ZHFtLT5vcHMuc3RhcnQoa2ZkLT5kcW0pOwogCX0KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jCmluZGV4IDk4NDI1MWQuLmFjNjBmYjIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZXZlbnRzLmMKQEAgLTMwLDYgKzMwLDcg QEAKICNpbmNsdWRlIDxsaW51eC9tZW1vcnkuaD4KICNpbmNsdWRlICJrZmRfcHJpdi5oIgogI2lu Y2x1ZGUgImtmZF9ldmVudHMuaCIKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KIAogI2RlZmlu ZSBTSUdOQUxfRVZFTlRfTElNSVQgMjU2CiAKQEAgLTQ3LDYgKzQ4LDEwIEBAIHN0cnVjdCBrZmRf ZXZlbnRfd2FpdGVyIHsKIAogCS8qIFRyYW5zaXRpb25zIHRvIHRydWUgd2hlbiB0aGUgZXZlbnQg dGhpcyBiZWxvbmdzIHRvIGlzIHNpZ25hbGVkLiAqLwogCWJvb2wgYWN0aXZhdGVkOworCisJLyog RXZlbnQgKi8KKwlzdHJ1Y3Qga2ZkX2V2ZW50ICpldmVudDsKKwl1aW50MzJfdCBpbnB1dF9pbmRl eDsKIH07CiAKIC8qCkBAIC01ODYsMTQgKzU5MSwxNyBAQCBzdGF0aWMgc3RydWN0IGtmZF9ldmVu dF93YWl0ZXIgKmFsbG9jX2V2ZW50X3dhaXRlcnModWludDMyX3QgbnVtX2V2ZW50cykKIH0KIAog c3RhdGljIGludCBpbml0X2V2ZW50X3dhaXRlcihzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCi0JCQkJ c3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKndhaXRlciwKLQkJCQl1aW50MzJfdCBldmVudF9pZCkK KwkJc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKndhaXRlciwKKwkJdWludDMyX3QgZXZlbnRfaWQs CisJCXVpbnQzMl90IGlucHV0X2luZGV4KQogewogCXN0cnVjdCBrZmRfZXZlbnQgKmV2ID0gbG9v a3VwX2V2ZW50X2J5X2lkKHAsIGV2ZW50X2lkKTsKIAogCWlmICghZXYpCiAJCXJldHVybiAtRUlO VkFMOwogCisJd2FpdGVyLT5ldmVudCA9IGV2OworCXdhaXRlci0+aW5wdXRfaW5kZXggPSBpbnB1 dF9pbmRleDsKIAl3YWl0ZXItPmFjdGl2YXRlZCA9IGV2LT5zaWduYWxlZDsKIAlldi0+c2lnbmFs ZWQgPSBldi0+c2lnbmFsZWQgJiYgIWV2LT5hdXRvX3Jlc2V0OwogCkBAIC02MjAsNiArNjI4LDM3 IEBAIHN0YXRpYyBib29sIHRlc3RfZXZlbnRfY29uZGl0aW9uKGJvb2wgYWxsLCB1aW50MzJfdCBu dW1fZXZlbnRzLAogCXJldHVybiBhY3RpdmF0ZWRfY291bnQgPT0gbnVtX2V2ZW50czsKIH0KIAor LyoKKyAqIENvcHkgZXZlbnQgc3BlY2lmaWMgZGF0YSwgaWYgZGVmaW5lZC4KKyAqIEN1cnJlbnRs eSBvbmx5IG1lbW9yeSBleGNlcHRpb24gZXZlbnRzIGhhdmUgYWRkaXRpb25hbCBkYXRhIHRvIGNv cHkgdG8gdXNlcgorICovCitzdGF0aWMgYm9vbCBjb3B5X3NpZ25hbGVkX2V2ZW50X2RhdGEodWlu dDMyX3QgbnVtX2V2ZW50cywKKwkJc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKmV2ZW50X3dhaXRl cnMsCisJCXN0cnVjdCBrZmRfZXZlbnRfZGF0YSBfX3VzZXIgKmRhdGEpCit7CisJc3RydWN0IGtm ZF9oc2FfbWVtb3J5X2V4Y2VwdGlvbl9kYXRhICpzcmMsICpkc3Q7CisJc3RydWN0IGtmZF9ldmVu dF93YWl0ZXIgKndhaXRlcjsKKwlzdHJ1Y3Qga2ZkX2V2ZW50ICpldmVudDsKKwl1aW50MzJfdCBp OworCisJZm9yIChpID0gMDsgaSA8IG51bV9ldmVudHM7IGkrKykgeworCQl3YWl0ZXIgPSAmZXZl bnRfd2FpdGVyc1tpXTsKKwkJZXZlbnQgPSB3YWl0ZXItPmV2ZW50OworCQlpZiAod2FpdGVyLT5h Y3RpdmF0ZWQgJiYgZXZlbnQtPnR5cGUgPT0gS0ZEX0VWRU5UX1RZUEVfTUVNT1JZKSB7CisJCQlk c3QgPSAmZGF0YVt3YWl0ZXItPmlucHV0X2luZGV4XS5tZW1vcnlfZXhjZXB0aW9uX2RhdGE7CisJ CQlzcmMgPSAmZXZlbnQtPm1lbW9yeV9leGNlcHRpb25fZGF0YTsKKwkJCWlmIChjb3B5X3RvX3Vz ZXIoZHN0LCBzcmMsCisJCQkJc2l6ZW9mKHN0cnVjdCBrZmRfaHNhX21lbW9yeV9leGNlcHRpb25f ZGF0YSkpKQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworCit9 CisKKworCiBzdGF0aWMgbG9uZyB1c2VyX3RpbWVvdXRfdG9famlmZmllcyh1aW50MzJfdCB1c2Vy X3RpbWVvdXRfbXMpCiB7CiAJaWYgKHVzZXJfdGltZW91dF9tcyA9PSBLRkRfRVZFTlRfVElNRU9V VF9JTU1FRElBVEUpCkBAIC02NDksMTAgKzY4OCwxMiBAQCBzdGF0aWMgdm9pZCBmcmVlX3dhaXRl cnModWludDMyX3QgbnVtX2V2ZW50cywgc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKndhaXRlcnMp CiB9CiAKIGludCBrZmRfd2FpdF9vbl9ldmVudHMoc3RydWN0IGtmZF9wcm9jZXNzICpwLAotCQkg ICAgICAgdWludDMyX3QgbnVtX2V2ZW50cywgY29uc3QgdWludDMyX3QgX191c2VyICpldmVudF9p ZHMsCisJCSAgICAgICB1aW50MzJfdCBudW1fZXZlbnRzLCB2b2lkIF9fdXNlciAqZGF0YSwKIAkJ ICAgICAgIGJvb2wgYWxsLCB1aW50MzJfdCB1c2VyX3RpbWVvdXRfbXMsCiAJCSAgICAgICBlbnVt IGtmZF9ldmVudF93YWl0X3Jlc3VsdCAqd2FpdF9yZXN1bHQpCiB7CisJc3RydWN0IGtmZF9ldmVu dF9kYXRhIF9fdXNlciAqZXZlbnRzID0KKwkJCShzdHJ1Y3Qga2ZkX2V2ZW50X2RhdGEgX191c2Vy ICopIGRhdGE7CiAJdWludDMyX3QgaTsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qga2ZkX2V2ZW50 X3dhaXRlciAqZXZlbnRfd2FpdGVycyA9IE5VTEw7CkBAIC02NjcsMTMgKzcwOCwxNCBAQCBpbnQg a2ZkX3dhaXRfb25fZXZlbnRzKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKIAl9CiAKIAlmb3IgKGkg PSAwOyBpIDwgbnVtX2V2ZW50czsgaSsrKSB7Ci0JCXVpbnQzMl90IGV2ZW50X2lkOworCQlzdHJ1 Y3Qga2ZkX2V2ZW50X2RhdGEgZXZlbnRfZGF0YTsKIAotCQlyZXQgPSBnZXRfdXNlcihldmVudF9p ZCwgJmV2ZW50X2lkc1tpXSk7Ci0JCWlmIChyZXQpCisJCWlmIChjb3B5X2Zyb21fdXNlcigmZXZl bnRfZGF0YSwgJmV2ZW50c1tpXSwKKwkJCQlzaXplb2Yoc3RydWN0IGtmZF9ldmVudF9kYXRhKSkp CiAJCQlnb3RvIGZhaWw7CiAKLQkJcmV0ID0gaW5pdF9ldmVudF93YWl0ZXIocCwgJmV2ZW50X3dh aXRlcnNbaV0sIGV2ZW50X2lkKTsKKwkJcmV0ID0gaW5pdF9ldmVudF93YWl0ZXIocCwgJmV2ZW50 X3dhaXRlcnNbaV0sCisJCQkJZXZlbnRfZGF0YS5ldmVudF9pZCwgaSk7CiAJCWlmIChyZXQpCiAJ CQlnb3RvIGZhaWw7CiAJfQpAQCAtNzAwLDcgKzc0MiwxMSBAQCBpbnQga2ZkX3dhaXRfb25fZXZl bnRzKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKIAkJfQogCiAJCWlmICh0ZXN0X2V2ZW50X2NvbmRp dGlvbihhbGwsIG51bV9ldmVudHMsIGV2ZW50X3dhaXRlcnMpKSB7Ci0JCQkqd2FpdF9yZXN1bHQg PSBLRkRfV0FJVF9DT01QTEVURTsKKwkJCWlmIChjb3B5X3NpZ25hbGVkX2V2ZW50X2RhdGEobnVt X2V2ZW50cywKKwkJCQkJZXZlbnRfd2FpdGVycywgZXZlbnRzKSkKKwkJCQkqd2FpdF9yZXN1bHQg PSBLRkRfV0FJVF9DT01QTEVURTsKKwkJCWVsc2UKKwkJCQkqd2FpdF9yZXN1bHQgPSBLRkRfV0FJ VF9FUlJPUjsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTc3MywzICs4MTksOTUgQEAgaW50IHJhZGVv bl9rZmRfZXZlbnRfbW1hcChzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCiAJcmV0dXJuIHJlbWFwX3Bm bl9yYW5nZSh2bWEsIHZtYS0+dm1fc3RhcnQsIHBmbiwgUEFHRV9TSVpFLAogCQkJCXZtYS0+dm1f cGFnZV9wcm90KTsKIH0KKworLyoKKyAqIEFzc3VtZXMgdGhhdCBwLT5ldmVudF9tdXRleCBpcyBo ZWxkIGFuZCBvZiBjb3Vyc2UKKyAqIHRoYXQgcCBpcyBub3QgZ29pbmcgYXdheSAoY3VycmVudCBv ciBsb2NrZWQpLgorICovCitzdGF0aWMgdm9pZCBsb29rdXBfZXZlbnRzX2J5X3R5cGVfYW5kX3Np Z25hbChzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCisJCWludCB0eXBlLCB2b2lkICpldmVudF9kYXRh KQoreworCXN0cnVjdCBrZmRfaHNhX21lbW9yeV9leGNlcHRpb25fZGF0YSAqZXZfZGF0YTsKKwlz dHJ1Y3Qga2ZkX2V2ZW50ICpldjsKKwlpbnQgYmt0OworCWJvb2wgc2VuZF9zaWduYWwgPSB0cnVl OworCisJZXZfZGF0YSA9IChzdHJ1Y3Qga2ZkX2hzYV9tZW1vcnlfZXhjZXB0aW9uX2RhdGEgKikg ZXZlbnRfZGF0YTsKKworCWhhc2hfZm9yX2VhY2gocC0+ZXZlbnRzLCBia3QsIGV2LCBldmVudHMp CisJCWlmIChldi0+dHlwZSA9PSB0eXBlKSB7CisJCQlzZW5kX3NpZ25hbCA9IGZhbHNlOworCQkJ ZGV2X2RiZyhrZmRfZGV2aWNlLAorCQkJCQkiRXZlbnQgZm91bmQ6IGlkICVYIHR5cGUgJWQiLAor CQkJCQlldi0+ZXZlbnRfaWQsIGV2LT50eXBlKTsKKwkJCXNldF9ldmVudChldik7CisJCQlpZiAo ZXYtPnR5cGUgPT0gS0ZEX0VWRU5UX1RZUEVfTUVNT1JZICYmIGV2X2RhdGEpCisJCQkJZXYtPm1l bW9yeV9leGNlcHRpb25fZGF0YSA9ICpldl9kYXRhOworCQl9CisKKwkvKiBTZW5kIFNJR1RFUk0g bm8gZXZlbnQgb2YgdHlwZSAidHlwZSIgaGFzIGJlZW4gZm91bmQqLworCWlmIChzZW5kX3NpZ25h bCkgeworCQlkZXZfd2FybihrZmRfZGV2aWNlLAorCQkJIlNlbmRpbmcgU0lHVEVSTSB0byBIU0Eg UHJvY2VzcyB3aXRoIFBJRCAlZCAiLAorCQkJCXAtPmxlYWRfdGhyZWFkLT5waWQpOworCQlzZW5k X3NpZyhTSUdURVJNLCBwLT5sZWFkX3RocmVhZCwgMCk7CisJfQorfQorCit2b2lkIGtmZF9zaWdu YWxfaW9tbXVfZXZlbnQoc3RydWN0IGtmZF9kZXYgKmRldiwgdW5zaWduZWQgaW50IHBhc2lkLAor CQl1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGJvb2wgaXNfd3JpdGVfcmVxdWVzdGVkLAorCQlib29s IGlzX2V4ZWN1dGVfcmVxdWVzdGVkKQoreworCXN0cnVjdCBrZmRfaHNhX21lbW9yeV9leGNlcHRp b25fZGF0YSBtZW1vcnlfZXhjZXB0aW9uX2RhdGE7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWE7CisKKwkvKgorCSAqIEJlY2F1c2Ugd2UgYXJlIGNhbGxlZCBmcm9tIGFyYml0cmFyeSBjb250 ZXh0ICh3b3JrcXVldWUpIGFzIG9wcG9zZWQKKwkgKiB0byBwcm9jZXNzIGNvbnRleHQsIGtmZF9w cm9jZXNzIGNvdWxkIGF0dGVtcHQgdG8gZXhpdCB3aGlsZSB3ZSBhcmUKKwkgKiBydW5uaW5nIHNv IHRoZSBsb29rdXAgZnVuY3Rpb24gcmV0dXJucyBhIGxvY2tlZCBwcm9jZXNzLgorCSAqLworCXN0 cnVjdCBrZmRfcHJvY2VzcyAqcCA9IGtmZF9sb29rdXBfcHJvY2Vzc19ieV9wYXNpZChwYXNpZCk7 CisKKwlpZiAoIXApCisJCXJldHVybjsgLyogUHJlc3VtYWJseSBwcm9jZXNzIGV4aXRlZC4gKi8K KworCW1lbXNldCgmbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLCAwLCBzaXplb2YobWVtb3J5X2V4Y2Vw dGlvbl9kYXRhKSk7CisKKwlkb3duX3JlYWQoJnAtPm1tLT5tbWFwX3NlbSk7CisJdm1hID0gZmlu ZF92bWEocC0+bW0sIGFkZHJlc3MpOworCisJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmdwdV9pZCA9 IGRldi0+aWQ7CisJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLnZhID0gYWRkcmVzczsKKwkvKiBTZXQg ZmFpbHVyZSByZWFzb24gKi8KKwltZW1vcnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5Ob3RQcmVz ZW50ID0gdHJ1ZTsKKwltZW1vcnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5Ob0V4ZWN1dGUgPSBm YWxzZTsKKwltZW1vcnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5SZWFkT25seSA9IGZhbHNlOwor CWlmICh2bWEpIHsKKwkJaWYgKHZtYS0+dm1fc3RhcnQgPiBhZGRyZXNzKSB7CisJCQltZW1vcnlf ZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5Ob3RQcmVzZW50ID0gdHJ1ZTsKKwkJCW1lbW9yeV9leGNl cHRpb25fZGF0YS5mYWlsdXJlLk5vRXhlY3V0ZSA9IGZhbHNlOworCQkJbWVtb3J5X2V4Y2VwdGlv bl9kYXRhLmZhaWx1cmUuUmVhZE9ubHkgPSBmYWxzZTsKKwkJfSBlbHNlIHsKKwkJCW1lbW9yeV9l eGNlcHRpb25fZGF0YS5mYWlsdXJlLk5vdFByZXNlbnQgPSBmYWxzZTsKKwkJCWlmIChpc193cml0 ZV9yZXF1ZXN0ZWQgJiYgISh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpKQorCQkJCW1lbW9yeV9l eGNlcHRpb25fZGF0YS5mYWlsdXJlLlJlYWRPbmx5ID0gdHJ1ZTsKKwkJCWVsc2UKKwkJCQltZW1v cnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5SZWFkT25seSA9IGZhbHNlOworCQkJaWYgKGlzX2V4 ZWN1dGVfcmVxdWVzdGVkICYmICEodm1hLT52bV9mbGFncyAmIFZNX0VYRUMpKQorCQkJCW1lbW9y eV9leGNlcHRpb25fZGF0YS5mYWlsdXJlLk5vRXhlY3V0ZSA9IHRydWU7CisJCQllbHNlCisJCQkJ bWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmZhaWx1cmUuTm9FeGVjdXRlID0gZmFsc2U7CisJCX0KKwl9 CisKKwl1cF9yZWFkKCZwLT5tbS0+bW1hcF9zZW0pOworCisJbXV0ZXhfbG9jaygmcC0+ZXZlbnRf bXV0ZXgpOworCisJLyogTG9va3VwIGV2ZW50cyBieSB0eXBlIGFuZCBzaWduYWwgdGhlbSAqLwor CWxvb2t1cF9ldmVudHNfYnlfdHlwZV9hbmRfc2lnbmFsKHAsIEtGRF9FVkVOVF9UWVBFX01FTU9S WSwKKwkJCSZtZW1vcnlfZXhjZXB0aW9uX2RhdGEpOworCisJbXV0ZXhfdW5sb2NrKCZwLT5ldmVu dF9tdXRleCk7CisJbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7Cit9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZXZlbnRzLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGtmZC9rZmRfZXZlbnRzLmgKaW5kZXggZDliNWIzOC4uNjkxY2Y4NSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgogI2luY2x1ZGUgImtmZF9w cml2LmgiCisjaW5jbHVkZSA8dWFwaS9saW51eC9rZmRfaW9jdGwuaD4KIAogI2RlZmluZSBLRkRf RVZFTlRfSURfTk9OU0lHTkFMX01BU0sgMHg4MDAwMDAwMFUKICNkZWZpbmUgS0ZEX0ZJUlNUX05P TlNJR05BTF9FVkVOVF9JRCBLRkRfRVZFTlRfSURfTk9OU0lHTkFMX01BU0sKQEAgLTYxLDYgKzYy LDExIEBAIHN0cnVjdCBrZmRfZXZlbnQgewogCXN0cnVjdCBzaWduYWxfcGFnZSAqc2lnbmFsX3Bh Z2U7CiAJdW5zaWduZWQgaW50IHNpZ25hbF9zbG90X2luZGV4OwogCXVpbnQ2NF90IF9fdXNlciAq dXNlcl9zaWduYWxfYWRkcmVzczsKKworCS8qIHR5cGUgc3BlY2lmaWMgZGF0YSAqLworCXVuaW9u IHsKKwkJc3RydWN0IGtmZF9oc2FfbWVtb3J5X2V4Y2VwdGlvbl9kYXRhIG1lbW9yeV9leGNlcHRp b25fZGF0YTsKKwl9OwogfTsKIAogI2RlZmluZSBLRkRfRVZFTlRfVElNRU9VVF9JTU1FRElBVEUg MApAQCAtNjksNiArNzUsNyBAQCBzdHJ1Y3Qga2ZkX2V2ZW50IHsKIC8qIE1hdGNoaW5nIEhTQV9F VkVOVFRZUEUgKi8KICNkZWZpbmUgS0ZEX0VWRU5UX1RZUEVfU0lHTkFMIDAKICNkZWZpbmUgS0ZE X0VWRU5UX1RZUEVfREVCVUcgNQorI2RlZmluZSBLRkRfRVZFTlRfVFlQRV9NRU1PUlkgOAogCiBl eHRlcm4gdm9pZCBrZmRfc2lnbmFsX2V2ZW50X2ludGVycnVwdCh1bnNpZ25lZCBpbnQgcGFzaWQs IHVpbnQzMl90IHBhcnRpYWxfaWQsCiAJCQkJCXVpbnQzMl90IHZhbGlkX2lkX2JpdHMpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKaW5kZXggN2Y2ZWE5Ni4uOGVjYzAzMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oCkBAIC02OTQsMTEgKzY5NCwxNCBAQCB2 b2lkIGtmZF9ldmVudF9mcmVlX3Byb2Nlc3Moc3RydWN0IGtmZF9wcm9jZXNzICpwKTsKIGludCBy YWRlb25fa2ZkX2V2ZW50X21tYXAoc3RydWN0IGtmZF9wcm9jZXNzICpwcm9jZXNzLAogCQkJCXN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIGludCBrZmRfd2FpdF9vbl9ldmVudHMoc3RydWN0 IGtmZF9wcm9jZXNzICpwLAotCQkgICAgICAgdWludDMyX3QgbnVtX2V2ZW50cywgY29uc3QgdWlu dDMyX3QgX191c2VyICpldmVudF9pZHMsCisJCSAgICAgICB1aW50MzJfdCBudW1fZXZlbnRzLCB2 b2lkIF9fdXNlciAqZGF0YSwKIAkJICAgICAgIGJvb2wgYWxsLCB1aW50MzJfdCB1c2VyX3RpbWVv dXRfbXMsCiAJCSAgICAgICBlbnVtIGtmZF9ldmVudF93YWl0X3Jlc3VsdCAqd2FpdF9yZXN1bHQp Owogdm9pZCBrZmRfc2lnbmFsX2V2ZW50X2ludGVycnVwdCh1bnNpZ25lZCBpbnQgcGFzaWQsIHVp bnQzMl90IHBhcnRpYWxfaWQsCiAJCQkJdWludDMyX3QgdmFsaWRfaWRfYml0cyk7Cit2b2lkIGtm ZF9zaWduYWxfaW9tbXVfZXZlbnQoc3RydWN0IGtmZF9kZXYgKmRldiwKKwkJdW5zaWduZWQgaW50 IHBhc2lkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCisJCWJvb2wgaXNfd3JpdGVfcmVxdWVzdGVk LCBib29sIGlzX2V4ZWN1dGVfcmVxdWVzdGVkKTsKIGludCBrZmRfc2V0X2V2ZW50KHN0cnVjdCBr ZmRfcHJvY2VzcyAqcCwgdWludDMyX3QgZXZlbnRfaWQpOwogaW50IGtmZF9yZXNldF9ldmVudChz dHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsIHVpbnQzMl90IGV2ZW50X2lkKTsKIGludCBrZmRfZXZlbnRf Y3JlYXRlKHN0cnVjdCBmaWxlICpkZXZrZmQsIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKLS0gCjEu OS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=