From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oded Gabbay Subject: [PATCH v2 5/9] drm/amdkfd: Add memory exception handling Date: Sun, 10 May 2015 12:28:28 +0300 Message-ID: <1431250112-28828-6-git-send-email-oded.gabbay@gmail.com> References: <1431250112-28828-1-git-send-email-oded.gabbay@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-oi0-f47.google.com (mail-oi0-f47.google.com [209.85.218.47]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D9D46E1EB for ; Sun, 10 May 2015 02:29:07 -0700 (PDT) Received: by oiko83 with SMTP id o83so86035452oik.1 for ; Sun, 10 May 2015 02:29:06 -0700 (PDT) In-Reply-To: <1431250112-28828-1-git-send-email-oded.gabbay@gmail.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 , Oded Gabbay List-Id: dri-devel@lists.freedesktop.org RnJvbTogQWxleGV5IFNraWRhbm92IDxBbGV4ZXkuU2tpZGFub3ZAYW1kLmNvbT4KClRoaXMgcGF0 Y2ggYWRkcyBQZXJpcGhlcmFsIFBhZ2UgUmVxdWVzdCAoUFBSKSBmYWlsdXJlIHByb2Nlc3NpbmcK YW5kIHJlcG9ydGluZy4KCkJhZCBhZGRyZXNzIG9yIHBvaW50ZXIgdG8gYSBzeXN0ZW0gbWVtb3J5 IGJsb2NrIHdpdGggaW5hcHByb3ByaWF0ZQpyZWFkL3dyaXRlIHBlcm1pc3Npb24gY2F1c2Ugc3Vj aCBQUFIgZmFpbHVyZSBkdXJpbmcgYSB1c2VyIHF1ZXVlCnByb2Nlc3NpbmcuIFBQUiByZXF1ZXN0 IGhhbmRsaW5nIGlzIGRvbmUgYnkgSU9NTVUgZHJpdmVyIG5vdGlmeWluZwpBTURLRkQgbW9kdWxl IG9uIFBQUiBmYWlsdXJlLgoKVGhlIHByb2Nlc3MgdHJpZ2dlcmluZyBhIFBQUiBmYWlsdXJlIHdp bGwgYmUgbm90aWZpZWQgYnkKYXBwcm9wcmlhdGUgZXZlbnQgb3IgU0lHVEVSTSBzaWduYWwgd2ls bCBiZSBzZW50IHRvIGl0LgoKU2lnbmVkLW9mZi1ieTogQWxleGV5IFNraWRhbm92IDxBbGV4ZXku U2tpZGFub3ZAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogT2RlZCBHYWJiYXkgPG9kZWQuZ2FiYmF5 QGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jIHwg IDI5ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jIHwgMTU1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZXZlbnRzLmggfCAgIDcgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcml2LmggICB8ICAgNSArLQogNCBmaWxlcyBjaGFuZ2VkLCAxODcgaW5zZXJ0aW9ucygrKSwg 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 cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jCmluZGV4IGQzNmZmYmUuLjNhNjRkZTEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZXZlbnRzLmMKQEAgLTMwLDYgKzMwLDcg QEAKICNpbmNsdWRlIDxsaW51eC9tZW1vcnkuaD4KICNpbmNsdWRlICJrZmRfcHJpdi5oIgogI2lu Y2x1ZGUgImtmZF9ldmVudHMuaCIKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KIAogLyoKICAq IEEgdGFzayBjYW4gb25seSBiZSBvbiBhIHNpbmdsZSB3YWl0X3F1ZXVlIGF0IGEgdGltZSwgYnV0 IHdlIG5lZWQgdG8gc3VwcG9ydApAQCAtNDUsNiArNDYsMTAgQEAgc3RydWN0IGtmZF9ldmVudF93 YWl0ZXIgewogCiAJLyogVHJhbnNpdGlvbnMgdG8gdHJ1ZSB3aGVuIHRoZSBldmVudCB0aGlzIGJl bG9uZ3MgdG8gaXMgc2lnbmFsZWQuICovCiAJYm9vbCBhY3RpdmF0ZWQ7CisKKwkvKiBFdmVudCAq LworCXN0cnVjdCBrZmRfZXZlbnQgKmV2ZW50OworCXVpbnQzMl90IGlucHV0X2luZGV4OwogfTsK IAogLyoKQEAgLTYwNSwxNCArNjEwLDE3IEBAIHN0YXRpYyBzdHJ1Y3Qga2ZkX2V2ZW50X3dhaXRl ciAqYWxsb2NfZXZlbnRfd2FpdGVycyh1aW50MzJfdCBudW1fZXZlbnRzKQogfQogCiBzdGF0aWMg aW50IGluaXRfZXZlbnRfd2FpdGVyKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKLQkJCQlzdHJ1Y3Qg a2ZkX2V2ZW50X3dhaXRlciAqd2FpdGVyLAotCQkJCXVpbnQzMl90IGV2ZW50X2lkKQorCQlzdHJ1 Y3Qga2ZkX2V2ZW50X3dhaXRlciAqd2FpdGVyLAorCQl1aW50MzJfdCBldmVudF9pZCwKKwkJdWlu dDMyX3QgaW5wdXRfaW5kZXgpCiB7CiAJc3RydWN0IGtmZF9ldmVudCAqZXYgPSBsb29rdXBfZXZl bnRfYnlfaWQocCwgZXZlbnRfaWQpOwogCiAJaWYgKCFldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAK Kwl3YWl0ZXItPmV2ZW50ID0gZXY7CisJd2FpdGVyLT5pbnB1dF9pbmRleCA9IGlucHV0X2luZGV4 OwogCXdhaXRlci0+YWN0aXZhdGVkID0gZXYtPnNpZ25hbGVkOwogCWV2LT5zaWduYWxlZCA9IGV2 LT5zaWduYWxlZCAmJiAhZXYtPmF1dG9fcmVzZXQ7CiAKQEAgLTYzOSw2ICs2NDcsMzggQEAgc3Rh dGljIGJvb2wgdGVzdF9ldmVudF9jb25kaXRpb24oYm9vbCBhbGwsIHVpbnQzMl90IG51bV9ldmVu dHMsCiAJcmV0dXJuIGFjdGl2YXRlZF9jb3VudCA9PSBudW1fZXZlbnRzOwogfQogCisvKgorICog Q29weSBldmVudCBzcGVjaWZpYyBkYXRhLCBpZiBkZWZpbmVkLgorICogQ3VycmVudGx5IG9ubHkg bWVtb3J5IGV4Y2VwdGlvbiBldmVudHMgaGF2ZSBhZGRpdGlvbmFsIGRhdGEgdG8gY29weSB0byB1 c2VyCisgKi8KK3N0YXRpYyBib29sIGNvcHlfc2lnbmFsZWRfZXZlbnRfZGF0YSh1aW50MzJfdCBu dW1fZXZlbnRzLAorCQlzdHJ1Y3Qga2ZkX2V2ZW50X3dhaXRlciAqZXZlbnRfd2FpdGVycywKKwkJ c3RydWN0IGtmZF9ldmVudF9kYXRhIF9fdXNlciAqZGF0YSkKK3sKKwlzdHJ1Y3Qga2ZkX2hzYV9t ZW1vcnlfZXhjZXB0aW9uX2RhdGEgKnNyYzsKKwlzdHJ1Y3Qga2ZkX2hzYV9tZW1vcnlfZXhjZXB0 aW9uX2RhdGEgX191c2VyICpkc3Q7CisJc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKndhaXRlcjsK KwlzdHJ1Y3Qga2ZkX2V2ZW50ICpldmVudDsKKwl1aW50MzJfdCBpOworCisJZm9yIChpID0gMDsg aSA8IG51bV9ldmVudHM7IGkrKykgeworCQl3YWl0ZXIgPSAmZXZlbnRfd2FpdGVyc1tpXTsKKwkJ ZXZlbnQgPSB3YWl0ZXItPmV2ZW50OworCQlpZiAod2FpdGVyLT5hY3RpdmF0ZWQgJiYgZXZlbnQt PnR5cGUgPT0gS0ZEX0VWRU5UX1RZUEVfTUVNT1JZKSB7CisJCQlkc3QgPSAmZGF0YVt3YWl0ZXIt PmlucHV0X2luZGV4XS5tZW1vcnlfZXhjZXB0aW9uX2RhdGE7CisJCQlzcmMgPSAmZXZlbnQtPm1l bW9yeV9leGNlcHRpb25fZGF0YTsKKwkJCWlmIChjb3B5X3RvX3VzZXIoZHN0LCBzcmMsCisJCQkJ c2l6ZW9mKHN0cnVjdCBrZmRfaHNhX21lbW9yeV9leGNlcHRpb25fZGF0YSkpKQorCQkJCXJldHVy biBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworCit9CisKKworCiBzdGF0aWMgbG9u ZyB1c2VyX3RpbWVvdXRfdG9famlmZmllcyh1aW50MzJfdCB1c2VyX3RpbWVvdXRfbXMpCiB7CiAJ aWYgKHVzZXJfdGltZW91dF9tcyA9PSBLRkRfRVZFTlRfVElNRU9VVF9JTU1FRElBVEUpCkBAIC02 NjgsMTAgKzcwOCwxMiBAQCBzdGF0aWMgdm9pZCBmcmVlX3dhaXRlcnModWludDMyX3QgbnVtX2V2 ZW50cywgc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKndhaXRlcnMpCiB9CiAKIGludCBrZmRfd2Fp dF9vbl9ldmVudHMoc3RydWN0IGtmZF9wcm9jZXNzICpwLAotCQkgICAgICAgdWludDMyX3QgbnVt X2V2ZW50cywgY29uc3QgdWludDMyX3QgX191c2VyICpldmVudF9pZHMsCisJCSAgICAgICB1aW50 MzJfdCBudW1fZXZlbnRzLCB2b2lkIF9fdXNlciAqZGF0YSwKIAkJICAgICAgIGJvb2wgYWxsLCB1 aW50MzJfdCB1c2VyX3RpbWVvdXRfbXMsCiAJCSAgICAgICBlbnVtIGtmZF9ldmVudF93YWl0X3Jl c3VsdCAqd2FpdF9yZXN1bHQpCiB7CisJc3RydWN0IGtmZF9ldmVudF9kYXRhIF9fdXNlciAqZXZl bnRzID0KKwkJCShzdHJ1Y3Qga2ZkX2V2ZW50X2RhdGEgX191c2VyICopIGRhdGE7CiAJdWludDMy X3QgaTsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qga2ZkX2V2ZW50X3dhaXRlciAqZXZlbnRfd2Fp dGVycyA9IE5VTEw7CkBAIC02ODYsMTMgKzcyOCwxNCBAQCBpbnQga2ZkX3dhaXRfb25fZXZlbnRz KHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2V2ZW50 czsgaSsrKSB7Ci0JCXVpbnQzMl90IGV2ZW50X2lkOworCQlzdHJ1Y3Qga2ZkX2V2ZW50X2RhdGEg ZXZlbnRfZGF0YTsKIAotCQlyZXQgPSBnZXRfdXNlcihldmVudF9pZCwgJmV2ZW50X2lkc1tpXSk7 Ci0JCWlmIChyZXQpCisJCWlmIChjb3B5X2Zyb21fdXNlcigmZXZlbnRfZGF0YSwgJmV2ZW50c1tp XSwKKwkJCQlzaXplb2Yoc3RydWN0IGtmZF9ldmVudF9kYXRhKSkpCiAJCQlnb3RvIGZhaWw7CiAK LQkJcmV0ID0gaW5pdF9ldmVudF93YWl0ZXIocCwgJmV2ZW50X3dhaXRlcnNbaV0sIGV2ZW50X2lk KTsKKwkJcmV0ID0gaW5pdF9ldmVudF93YWl0ZXIocCwgJmV2ZW50X3dhaXRlcnNbaV0sCisJCQkJ ZXZlbnRfZGF0YS5ldmVudF9pZCwgaSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAJfQpA QCAtNzE5LDcgKzc2MiwxMSBAQCBpbnQga2ZkX3dhaXRfb25fZXZlbnRzKHN0cnVjdCBrZmRfcHJv Y2VzcyAqcCwKIAkJfQogCiAJCWlmICh0ZXN0X2V2ZW50X2NvbmRpdGlvbihhbGwsIG51bV9ldmVu dHMsIGV2ZW50X3dhaXRlcnMpKSB7Ci0JCQkqd2FpdF9yZXN1bHQgPSBLRkRfV0FJVF9DT01QTEVU RTsKKwkJCWlmIChjb3B5X3NpZ25hbGVkX2V2ZW50X2RhdGEobnVtX2V2ZW50cywKKwkJCQkJZXZl bnRfd2FpdGVycywgZXZlbnRzKSkKKwkJCQkqd2FpdF9yZXN1bHQgPSBLRkRfV0FJVF9DT01QTEVU RTsKKwkJCWVsc2UKKwkJCQkqd2FpdF9yZXN1bHQgPSBLRkRfV0FJVF9FUlJPUjsKIAkJCWJyZWFr OwogCQl9CiAKQEAgLTc4NiwzICs4MzMsOTUgQEAgaW50IGtmZF9ldmVudF9tbWFwKHN0cnVjdCBr ZmRfcHJvY2VzcyAqcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJcmV0dXJuIHJlbWFw X3Bmbl9yYW5nZSh2bWEsIHZtYS0+dm1fc3RhcnQsIHBmbiwKIAkJCXZtYS0+dm1fZW5kIC0gdm1h LT52bV9zdGFydCwgdm1hLT52bV9wYWdlX3Byb3QpOwogfQorCisvKgorICogQXNzdW1lcyB0aGF0 IHAtPmV2ZW50X211dGV4IGlzIGhlbGQgYW5kIG9mIGNvdXJzZQorICogdGhhdCBwIGlzIG5vdCBn b2luZyBhd2F5IChjdXJyZW50IG9yIGxvY2tlZCkuCisgKi8KK3N0YXRpYyB2b2lkIGxvb2t1cF9l dmVudHNfYnlfdHlwZV9hbmRfc2lnbmFsKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKKwkJaW50IHR5 cGUsIHZvaWQgKmV2ZW50X2RhdGEpCit7CisJc3RydWN0IGtmZF9oc2FfbWVtb3J5X2V4Y2VwdGlv bl9kYXRhICpldl9kYXRhOworCXN0cnVjdCBrZmRfZXZlbnQgKmV2OworCWludCBia3Q7CisJYm9v bCBzZW5kX3NpZ25hbCA9IHRydWU7CisKKwlldl9kYXRhID0gKHN0cnVjdCBrZmRfaHNhX21lbW9y eV9leGNlcHRpb25fZGF0YSAqKSBldmVudF9kYXRhOworCisJaGFzaF9mb3JfZWFjaChwLT5ldmVu dHMsIGJrdCwgZXYsIGV2ZW50cykKKwkJaWYgKGV2LT50eXBlID09IHR5cGUpIHsKKwkJCXNlbmRf c2lnbmFsID0gZmFsc2U7CisJCQlkZXZfZGJnKGtmZF9kZXZpY2UsCisJCQkJCSJFdmVudCBmb3Vu ZDogaWQgJVggdHlwZSAlZCIsCisJCQkJCWV2LT5ldmVudF9pZCwgZXYtPnR5cGUpOworCQkJc2V0 X2V2ZW50KGV2KTsKKwkJCWlmIChldi0+dHlwZSA9PSBLRkRfRVZFTlRfVFlQRV9NRU1PUlkgJiYg ZXZfZGF0YSkKKwkJCQlldi0+bWVtb3J5X2V4Y2VwdGlvbl9kYXRhID0gKmV2X2RhdGE7CisJCX0K KworCS8qIFNlbmQgU0lHVEVSTSBubyBldmVudCBvZiB0eXBlICJ0eXBlIiBoYXMgYmVlbiBmb3Vu ZCovCisJaWYgKHNlbmRfc2lnbmFsKSB7CisJCWRldl93YXJuKGtmZF9kZXZpY2UsCisJCQkiU2Vu ZGluZyBTSUdURVJNIHRvIEhTQSBQcm9jZXNzIHdpdGggUElEICVkICIsCisJCQkJcC0+bGVhZF90 aHJlYWQtPnBpZCk7CisJCXNlbmRfc2lnKFNJR1RFUk0sIHAtPmxlYWRfdGhyZWFkLCAwKTsKKwl9 Cit9CisKK3ZvaWQga2ZkX3NpZ25hbF9pb21tdV9ldmVudChzdHJ1Y3Qga2ZkX2RldiAqZGV2LCB1 bnNpZ25lZCBpbnQgcGFzaWQsCisJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgYm9vbCBpc193cml0 ZV9yZXF1ZXN0ZWQsCisJCWJvb2wgaXNfZXhlY3V0ZV9yZXF1ZXN0ZWQpCit7CisJc3RydWN0IGtm ZF9oc2FfbWVtb3J5X2V4Y2VwdGlvbl9kYXRhIG1lbW9yeV9leGNlcHRpb25fZGF0YTsKKwlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKworCS8qCisJICogQmVjYXVzZSB3ZSBhcmUgY2FsbGVk IGZyb20gYXJiaXRyYXJ5IGNvbnRleHQgKHdvcmtxdWV1ZSkgYXMgb3Bwb3NlZAorCSAqIHRvIHBy b2Nlc3MgY29udGV4dCwga2ZkX3Byb2Nlc3MgY291bGQgYXR0ZW1wdCB0byBleGl0IHdoaWxlIHdl IGFyZQorCSAqIHJ1bm5pbmcgc28gdGhlIGxvb2t1cCBmdW5jdGlvbiByZXR1cm5zIGEgbG9ja2Vk IHByb2Nlc3MuCisJICovCisJc3RydWN0IGtmZF9wcm9jZXNzICpwID0ga2ZkX2xvb2t1cF9wcm9j ZXNzX2J5X3Bhc2lkKHBhc2lkKTsKKworCWlmICghcCkKKwkJcmV0dXJuOyAvKiBQcmVzdW1hYmx5 IHByb2Nlc3MgZXhpdGVkLiAqLworCisJbWVtc2V0KCZtZW1vcnlfZXhjZXB0aW9uX2RhdGEsIDAs IHNpemVvZihtZW1vcnlfZXhjZXB0aW9uX2RhdGEpKTsKKworCWRvd25fcmVhZCgmcC0+bW0tPm1t YXBfc2VtKTsKKwl2bWEgPSBmaW5kX3ZtYShwLT5tbSwgYWRkcmVzcyk7CisKKwltZW1vcnlfZXhj ZXB0aW9uX2RhdGEuZ3B1X2lkID0gZGV2LT5pZDsKKwltZW1vcnlfZXhjZXB0aW9uX2RhdGEudmEg PSBhZGRyZXNzOworCS8qIFNldCBmYWlsdXJlIHJlYXNvbiAqLworCW1lbW9yeV9leGNlcHRpb25f ZGF0YS5mYWlsdXJlLk5vdFByZXNlbnQgPSB0cnVlOworCW1lbW9yeV9leGNlcHRpb25fZGF0YS5m YWlsdXJlLk5vRXhlY3V0ZSA9IGZhbHNlOworCW1lbW9yeV9leGNlcHRpb25fZGF0YS5mYWlsdXJl LlJlYWRPbmx5ID0gZmFsc2U7CisJaWYgKHZtYSkgeworCQlpZiAodm1hLT52bV9zdGFydCA+IGFk ZHJlc3MpIHsKKwkJCW1lbW9yeV9leGNlcHRpb25fZGF0YS5mYWlsdXJlLk5vdFByZXNlbnQgPSB0 cnVlOworCQkJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmZhaWx1cmUuTm9FeGVjdXRlID0gZmFsc2U7 CisJCQltZW1vcnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5SZWFkT25seSA9IGZhbHNlOworCQl9 IGVsc2UgeworCQkJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmZhaWx1cmUuTm90UHJlc2VudCA9IGZh bHNlOworCQkJaWYgKGlzX3dyaXRlX3JlcXVlc3RlZCAmJiAhKHZtYS0+dm1fZmxhZ3MgJiBWTV9X UklURSkpCisJCQkJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmZhaWx1cmUuUmVhZE9ubHkgPSB0cnVl OworCQkJZWxzZQorCQkJCW1lbW9yeV9leGNlcHRpb25fZGF0YS5mYWlsdXJlLlJlYWRPbmx5ID0g ZmFsc2U7CisJCQlpZiAoaXNfZXhlY3V0ZV9yZXF1ZXN0ZWQgJiYgISh2bWEtPnZtX2ZsYWdzICYg Vk1fRVhFQykpCisJCQkJbWVtb3J5X2V4Y2VwdGlvbl9kYXRhLmZhaWx1cmUuTm9FeGVjdXRlID0g dHJ1ZTsKKwkJCWVsc2UKKwkJCQltZW1vcnlfZXhjZXB0aW9uX2RhdGEuZmFpbHVyZS5Ob0V4ZWN1 dGUgPSBmYWxzZTsKKwkJfQorCX0KKworCXVwX3JlYWQoJnAtPm1tLT5tbWFwX3NlbSk7CisKKwlt dXRleF9sb2NrKCZwLT5ldmVudF9tdXRleCk7CisKKwkvKiBMb29rdXAgZXZlbnRzIGJ5IHR5cGUg YW5kIHNpZ25hbCB0aGVtICovCisJbG9va3VwX2V2ZW50c19ieV90eXBlX2FuZF9zaWduYWwocCwg S0ZEX0VWRU5UX1RZUEVfTUVNT1JZLAorCQkJJm1lbW9yeV9leGNlcHRpb25fZGF0YSk7CisKKwlt dXRleF91bmxvY2soJnAtPmV2ZW50X211dGV4KTsKKwltdXRleF91bmxvY2soJnAtPm11dGV4KTsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuaAppbmRleCBkOWI1YjM4Li42 OTFjZjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZXZlbnRz LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5oCkBAIC0yOCw2 ICsyOCw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0 Lmg+CiAjaW5jbHVkZSAia2ZkX3ByaXYuaCIKKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2tmZF9pb2N0 bC5oPgogCiAjZGVmaW5lIEtGRF9FVkVOVF9JRF9OT05TSUdOQUxfTUFTSyAweDgwMDAwMDAwVQog I2RlZmluZSBLRkRfRklSU1RfTk9OU0lHTkFMX0VWRU5UX0lEIEtGRF9FVkVOVF9JRF9OT05TSUdO QUxfTUFTSwpAQCAtNjEsNiArNjIsMTEgQEAgc3RydWN0IGtmZF9ldmVudCB7CiAJc3RydWN0IHNp Z25hbF9wYWdlICpzaWduYWxfcGFnZTsKIAl1bnNpZ25lZCBpbnQgc2lnbmFsX3Nsb3RfaW5kZXg7 CiAJdWludDY0X3QgX191c2VyICp1c2VyX3NpZ25hbF9hZGRyZXNzOworCisJLyogdHlwZSBzcGVj aWZpYyBkYXRhICovCisJdW5pb24geworCQlzdHJ1Y3Qga2ZkX2hzYV9tZW1vcnlfZXhjZXB0aW9u X2RhdGEgbWVtb3J5X2V4Y2VwdGlvbl9kYXRhOworCX07CiB9OwogCiAjZGVmaW5lIEtGRF9FVkVO VF9USU1FT1VUX0lNTUVESUFURSAwCkBAIC02OSw2ICs3NSw3IEBAIHN0cnVjdCBrZmRfZXZlbnQg ewogLyogTWF0Y2hpbmcgSFNBX0VWRU5UVFlQRSAqLwogI2RlZmluZSBLRkRfRVZFTlRfVFlQRV9T SUdOQUwgMAogI2RlZmluZSBLRkRfRVZFTlRfVFlQRV9ERUJVRyA1CisjZGVmaW5lIEtGRF9FVkVO VF9UWVBFX01FTU9SWSA4CiAKIGV4dGVybiB2b2lkIGtmZF9zaWduYWxfZXZlbnRfaW50ZXJydXB0 KHVuc2lnbmVkIGludCBwYXNpZCwgdWludDMyX3QgcGFydGlhbF9pZCwKIAkJCQkJdWludDMyX3Qg dmFsaWRfaWRfYml0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfcHJpdi5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAppbmRleCAw ZmY5YTNkLi4zNTk0NTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfcHJpdi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKQEAg LTY5MywxMSArNjkzLDE0IEBAIHZvaWQga2ZkX2V2ZW50X2luaXRfcHJvY2VzcyhzdHJ1Y3Qga2Zk X3Byb2Nlc3MgKnApOwogdm9pZCBrZmRfZXZlbnRfZnJlZV9wcm9jZXNzKHN0cnVjdCBrZmRfcHJv Y2VzcyAqcCk7CiBpbnQga2ZkX2V2ZW50X21tYXAoc3RydWN0IGtmZF9wcm9jZXNzICpwcm9jZXNz LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiBpbnQga2ZkX3dhaXRfb25fZXZlbnRzKHN0 cnVjdCBrZmRfcHJvY2VzcyAqcCwKLQkJICAgICAgIHVpbnQzMl90IG51bV9ldmVudHMsIGNvbnN0 IHVpbnQzMl90IF9fdXNlciAqZXZlbnRfaWRzLAorCQkgICAgICAgdWludDMyX3QgbnVtX2V2ZW50 cywgdm9pZCBfX3VzZXIgKmRhdGEsCiAJCSAgICAgICBib29sIGFsbCwgdWludDMyX3QgdXNlcl90 aW1lb3V0X21zLAogCQkgICAgICAgZW51bSBrZmRfZXZlbnRfd2FpdF9yZXN1bHQgKndhaXRfcmVz dWx0KTsKIHZvaWQga2ZkX3NpZ25hbF9ldmVudF9pbnRlcnJ1cHQodW5zaWduZWQgaW50IHBhc2lk LCB1aW50MzJfdCBwYXJ0aWFsX2lkLAogCQkJCXVpbnQzMl90IHZhbGlkX2lkX2JpdHMpOwordm9p ZCBrZmRfc2lnbmFsX2lvbW11X2V2ZW50KHN0cnVjdCBrZmRfZGV2ICpkZXYsCisJCXVuc2lnbmVk IGludCBwYXNpZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQlib29sIGlzX3dyaXRlX3JlcXVl c3RlZCwgYm9vbCBpc19leGVjdXRlX3JlcXVlc3RlZCk7CiBpbnQga2ZkX3NldF9ldmVudChzdHJ1 Y3Qga2ZkX3Byb2Nlc3MgKnAsIHVpbnQzMl90IGV2ZW50X2lkKTsKIGludCBrZmRfcmVzZXRfZXZl bnQoc3RydWN0IGtmZF9wcm9jZXNzICpwLCB1aW50MzJfdCBldmVudF9pZCk7CiBpbnQga2ZkX2V2 ZW50X2NyZWF0ZShzdHJ1Y3QgZmlsZSAqZGV2a2ZkLCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCi0t IAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK