From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: [PATCH 1/4] drm/amdgpu: Add KFD VRAM limit checking Date: Wed, 21 Nov 2018 03:07:26 +0000 Message-ID: <1542769636-2976-2-git-send-email-Felix.Kuehling@amd.com> References: <1542769636-2976-1-git-send-email-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1542769636-2976-1-git-send-email-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" Cc: "Kuehling, Felix" V2UgZG9uJ3Qgd2FudCBLRkQgcHJvY2Vzc2VzIGV2aWN0aW5nIGVhY2ggb3RoZXIgb3ZlciBWUkFN IHVzYWdlLgpUaGVyZWZvcmUgcHJldmVudCBvdmVyY29tbWl0dGluZyBWUkFNIGFtb25nIEtGRCBh cHBsaWNhdGlvbnMgd2l0aAphIHBlci1HUFUgbGltaXQuIEFsc28gbGVhdmUgZW5vdWdoIHJvb20g Zm9yIHBhZ2UgdGFibGVzIG9uIHRvcApvZiB0aGUgYXBwbGljYXRpb24gbWVtb3J5IHVzYWdlLgoK U2lnbmVkLW9mZi1ieTogRmVsaXggS3VlaGxpbmcgPEZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+ClJl dmlld2VkLWJ5OiBFcmljIEh1YW5nIDxKaW5IdWlFcmljLkh1YW5nQGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAgICAgICAgICAgIHwgIDcgKy0tCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMgICAgICAgfCA1MiArKysr KysrKysrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtm ZC5oICAgICAgIHwgIDggKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ft ZGtmZF9ncHV2bS5jIHwgNjAgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFu Z2VkLCA3NSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdS5oCmluZGV4IDJjODA0NTMuLjQwZTA4NGE5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHUuaApAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgImFtZGdwdV9qb2IuaCIK ICNpbmNsdWRlICJhbWRncHVfYm9fbGlzdC5oIgogI2luY2x1ZGUgImFtZGdwdV9nZW0uaCIKKyNp bmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCiAKICNkZWZpbmUgTUFYX0dQVV9JTlNUQU5DRQkJMTYK IApAQCAtOTc5LDYgKzk4MCw5IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNlIHsKIAkvKiBHRFMgKi8K IAlzdHJ1Y3QgYW1kZ3B1X2dkcwkJZ2RzOwogCisJLyogS0ZEICovCisJc3RydWN0IGFtZGdwdV9r ZmRfZGV2CQlrZmQ7CisKIAkvKiBkaXNwbGF5IHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSAqLwogCXN0 cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyIGRtOwogCkBAIC05OTIsOSArOTk2LDYgQEAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgewogCWF0b21pYzY0X3QgdmlzaWJsZV9waW5fc2l6ZTsKIAlhdG9t aWM2NF90IGdhcnRfcGluX3NpemU7CiAKLQkvKiBhbWRrZmQgaW50ZXJmYWNlICovCi0Jc3RydWN0 IGtmZF9kZXYgICAgICAgICAgKmtmZDsKLQogCS8qIHNvYzE1IHJlZ2lzdGVyIG9mZnNldCBiYXNl ZCBvbiBpcCwgaW5zdGFuY2UgYW5kICBzZWdtZW50ICovCiAJdWludDMyX3QgCQkqcmVnX29mZnNl dFtNQVhfSFdJUF1bSFdJUF9NQVhfSU5TVEFOQ0VdOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYW1ka2ZkLmMKaW5kZXggMWMxZmVkNi4uMjc0MDk5YSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYwpAQCAtMzEsMTAgKzMxLDIwIEBAIGNv bnN0IHN0cnVjdCBrZ2Qya2ZkX2NhbGxzICprZ2Qya2ZkOwogCiBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgaW50IGNvbXB1dGVfdm1pZF9iaXRtYXAgPSAweEZGMDA7CiAKKy8qIFRvdGFsIG1lbW9yeSBz aXplIGluIHN5c3RlbSBtZW1vcnkgYW5kIGFsbCBHUFUgVlJBTS4gVXNlZCB0bworICogZXN0aW1h dGUgd29yc3QgY2FzZSBhbW91bnQgb2YgbWVtb3J5IHRvIHJlc2VydmUgZm9yIHBhZ2UgdGFibGVz CisgKi8KK3VpbnQ2NF90IGFtZGdwdV9hbWRrZmRfdG90YWxfbWVtX3NpemU7CisKIGludCBhbWRn cHVfYW1ka2ZkX2luaXQodm9pZCkKIHsKKwlzdHJ1Y3Qgc3lzaW5mbyBzaTsKIAlpbnQgcmV0Owog CisJc2lfbWVtaW5mbygmc2kpOworCWFtZGdwdV9hbWRrZmRfdG90YWxfbWVtX3NpemUgPSBzaS50 b3RhbHJhbSAtIHNpLnRvdGFsaGlnaDsKKwlhbWRncHVfYW1ka2ZkX3RvdGFsX21lbV9zaXplICo9 IHNpLm1lbV91bml0OworCiAjaWZkZWYgQ09ORklHX0hTQV9BTUQKIAlyZXQgPSBrZ2Qya2ZkX2lu aXQoS0ZEX0lOVEVSRkFDRV9WRVJTSU9OLCAma2dkMmtmZCk7CiAJaWYgKHJldCkKQEAgLTg3LDgg Kzk3LDExIEBAIHZvaWQgYW1kZ3B1X2FtZGtmZF9kZXZpY2VfcHJvYmUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJCXJldHVybjsKIAl9CiAKLQlhZGV2LT5rZmQgPSBrZ2Qya2ZkLT5wcm9i ZSgoc3RydWN0IGtnZF9kZXYgKilhZGV2LAotCQkJCSAgIGFkZXYtPnBkZXYsIGtmZDJrZ2QpOwor CWFkZXYtPmtmZC5kZXYgPSBrZ2Qya2ZkLT5wcm9iZSgoc3RydWN0IGtnZF9kZXYgKilhZGV2LAor CQkJCSAgICAgICBhZGV2LT5wZGV2LCBrZmQya2dkKTsKKworCWlmIChhZGV2LT5rZmQuZGV2KQor CQlhbWRncHVfYW1ka2ZkX3RvdGFsX21lbV9zaXplICs9IGFkZXYtPmdtYy5yZWFsX3ZyYW1fc2l6 ZTsKIH0KIAogLyoqCkBAIC0xMjgsNyArMTQxLDggQEAgdm9pZCBhbWRncHVfYW1ka2ZkX2Rldmlj ZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWludCBpLCBuOwogCWludCBs YXN0X3ZhbGlkX2JpdDsKLQlpZiAoYWRldi0+a2ZkKSB7CisKKwlpZiAoYWRldi0+a2ZkLmRldikg ewogCQlzdHJ1Y3Qga2dkMmtmZF9zaGFyZWRfcmVzb3VyY2VzIGdwdV9yZXNvdXJjZXMgPSB7CiAJ CQkuY29tcHV0ZV92bWlkX2JpdG1hcCA9IGNvbXB1dGVfdm1pZF9iaXRtYXAsCiAJCQkubnVtX3Bp cGVfcGVyX21lYyA9IGFkZXYtPmdmeC5tZWMubnVtX3BpcGVfcGVyX21lYywKQEAgLTE2Nyw3ICsx ODEsNyBAQCB2b2lkIGFtZGdwdV9hbWRrZmRfZGV2aWNlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9vcmJlbGxfc3RhcnRfb2Zmc2V0KTsKIAog CQlpZiAoYWRldi0+YXNpY190eXBlIDwgQ0hJUF9WRUdBMTApIHsKLQkJCWtnZDJrZmQtPmRldmlj ZV9pbml0KGFkZXYtPmtmZCwgJmdwdV9yZXNvdXJjZXMpOworCQkJa2dkMmtmZC0+ZGV2aWNlX2lu aXQoYWRldi0+a2ZkLmRldiwgJmdwdV9yZXNvdXJjZXMpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAg LTIwNywzNyArMjIxLDM3IEBAIHZvaWQgYW1kZ3B1X2FtZGtmZF9kZXZpY2VfaW5pdChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAkJZ3B1X3Jlc291cmNlcy5yZXNlcnZlZF9kb29yYmVsbF9t YXNrID0gMHgxZTA7CiAJCWdwdV9yZXNvdXJjZXMucmVzZXJ2ZWRfZG9vcmJlbGxfdmFsICA9IDB4 MGUwOwogCi0JCWtnZDJrZmQtPmRldmljZV9pbml0KGFkZXYtPmtmZCwgJmdwdV9yZXNvdXJjZXMp OworCQlrZ2Qya2ZkLT5kZXZpY2VfaW5pdChhZGV2LT5rZmQuZGV2LCAmZ3B1X3Jlc291cmNlcyk7 CiAJfQogfQogCiB2b2lkIGFtZGdwdV9hbWRrZmRfZGV2aWNlX2Zpbmkoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7Ci0JaWYgKGFkZXYtPmtmZCkgewotCQlrZ2Qya2ZkLT5kZXZpY2VfZXhp dChhZGV2LT5rZmQpOwotCQlhZGV2LT5rZmQgPSBOVUxMOworCWlmIChhZGV2LT5rZmQuZGV2KSB7 CisJCWtnZDJrZmQtPmRldmljZV9leGl0KGFkZXYtPmtmZC5kZXYpOworCQlhZGV2LT5rZmQuZGV2 ID0gTlVMTDsKIAl9CiB9CiAKIHZvaWQgYW1kZ3B1X2FtZGtmZF9pbnRlcnJ1cHQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCWNvbnN0IHZvaWQgKmloX3JpbmdfZW50cnkpCiB7Ci0JaWYg KGFkZXYtPmtmZCkKLQkJa2dkMmtmZC0+aW50ZXJydXB0KGFkZXYtPmtmZCwgaWhfcmluZ19lbnRy eSk7CisJaWYgKGFkZXYtPmtmZC5kZXYpCisJCWtnZDJrZmQtPmludGVycnVwdChhZGV2LT5rZmQu ZGV2LCBpaF9yaW5nX2VudHJ5KTsKIH0KIAogdm9pZCBhbWRncHVfYW1ka2ZkX3N1c3BlbmQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7Ci0JaWYgKGFkZXYtPmtmZCkKLQkJa2dkMmtmZC0+ c3VzcGVuZChhZGV2LT5rZmQpOworCWlmIChhZGV2LT5rZmQuZGV2KQorCQlrZ2Qya2ZkLT5zdXNw ZW5kKGFkZXYtPmtmZC5kZXYpOwogfQogCiBpbnQgYW1kZ3B1X2FtZGtmZF9yZXN1bWUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHIgPSAwOwogCi0JaWYgKGFkZXYtPmtmZCkK LQkJciA9IGtnZDJrZmQtPnJlc3VtZShhZGV2LT5rZmQpOworCWlmIChhZGV2LT5rZmQuZGV2KQor CQlyID0ga2dkMmtmZC0+cmVzdW1lKGFkZXYtPmtmZC5kZXYpOwogCiAJcmV0dXJuIHI7CiB9CkBA IC0yNDYsOCArMjYwLDggQEAgaW50IGFtZGdwdV9hbWRrZmRfcHJlX3Jlc2V0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCWludCByID0gMDsKIAotCWlmIChhZGV2LT5rZmQpCi0JCXIg PSBrZ2Qya2ZkLT5wcmVfcmVzZXQoYWRldi0+a2ZkKTsKKwlpZiAoYWRldi0+a2ZkLmRldikKKwkJ ciA9IGtnZDJrZmQtPnByZV9yZXNldChhZGV2LT5rZmQuZGV2KTsKIAogCXJldHVybiByOwogfQpA QCAtMjU2LDggKzI3MCw4IEBAIGludCBhbWRncHVfYW1ka2ZkX3Bvc3RfcmVzZXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHIgPSAwOwogCi0JaWYgKGFkZXYtPmtmZCkKLQkJ ciA9IGtnZDJrZmQtPnBvc3RfcmVzZXQoYWRldi0+a2ZkKTsKKwlpZiAoYWRldi0+a2ZkLmRldikK KwkJciA9IGtnZDJrZmQtPnBvc3RfcmVzZXQoYWRldi0+a2ZkLmRldik7CiAKIAlyZXR1cm4gcjsK IH0KQEAgLTUxMiw3ICs1MjYsNyBAQCB2b2lkIGFtZGdwdV9hbWRrZmRfc2V0X2NvbXB1dGVfaWRs ZShzdHJ1Y3Qga2dkX2RldiAqa2dkLCBib29sIGlkbGUpCiAKIGJvb2wgYW1kZ3B1X2FtZGtmZF9p c19rZmRfdm1pZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIHZtaWQpCiB7Ci0JaWYg KGFkZXYtPmtmZCkgeworCWlmIChhZGV2LT5rZmQuZGV2KSB7CiAJCWlmICgoMSA8PCB2bWlkKSAm IGNvbXB1dGVfdm1pZF9iaXRtYXApCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmggYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmgKaW5kZXggYmNmNTg3Yi4uNGQ3NjZjYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaApAQCAtMzUsNiArMzUs NyBAQAogI2luY2x1ZGUgImFtZGdwdV92bS5oIgogCiBleHRlcm4gY29uc3Qgc3RydWN0IGtnZDJr ZmRfY2FsbHMgKmtnZDJrZmQ7CitleHRlcm4gdWludDY0X3QgYW1kZ3B1X2FtZGtmZF90b3RhbF9t ZW1fc2l6ZTsKIAogc3RydWN0IGFtZGdwdV9kZXZpY2U7CiAKQEAgLTc3LDYgKzc4LDExIEBAIHN0 cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlIHsKIAljaGFyIHRpbWVsaW5lX25hbWVbVEFTS19DT01N X0xFTl07CiB9OwogCitzdHJ1Y3QgYW1kZ3B1X2tmZF9kZXYgeworCXN0cnVjdCBrZmRfZGV2ICpk ZXY7CisJdWludDY0X3QgdnJhbV91c2VkOworfTsKKwogc3RydWN0IGFtZGdwdV9hbWRrZmRfZmVu Y2UgKmFtZGdwdV9hbWRrZmRfZmVuY2VfY3JlYXRlKHU2NCBjb250ZXh0LAogCQkJCQkJICAgICAg IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKIGJvb2wgYW1ka2ZkX2ZlbmNlX2NoZWNrX21tKHN0cnVj dCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKQEAgLTE5Niw2ICsyMDIsNiBA QCBpbnQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9nZXRfdm1fZmF1bHRfaW5mbyhzdHJ1Y3Qga2dkX2Rl diAqa2dkLAogCQkJCQkgICAgICBzdHJ1Y3Qga2ZkX3ZtX2ZhdWx0X2luZm8gKmluZm8pOwogCiB2 b2lkIGFtZGdwdV9hbWRrZmRfZ3B1dm1faW5pdF9tZW1fbGltaXRzKHZvaWQpOwotdm9pZCBhbWRn cHVfYW1ka2ZkX3VucmVzZXJ2ZV9zeXN0ZW1fbWVtb3J5X2xpbWl0KHN0cnVjdCBhbWRncHVfYm8g KmJvKTsKK3ZvaWQgYW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtb3J5X2xpbWl0KHN0cnVjdCBh bWRncHVfYm8gKmJvKTsKIAogI2VuZGlmIC8qIEFNREdQVV9BTURLRkRfSF9JTkNMVURFRCAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2 bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jCmlu ZGV4IGYzMTI5YjkuLmZjYTg3ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKQEAgLTExMCwxNyArMTEwLDE3IEBAIHZvaWQgYW1kZ3B1 X2FtZGtmZF9ncHV2bV9pbml0X21lbV9saW1pdHModm9pZCkKIAkJKGtmZF9tZW1fbGltaXQubWF4 X3R0bV9tZW1fbGltaXQgPj4gMjApKTsKIH0KIAotc3RhdGljIGludCBhbWRncHVfYW1ka2ZkX3Jl c2VydmVfc3lzdGVtX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKK3N0YXRp YyBpbnQgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJdWludDY0X3Qgc2l6ZSwgdTMyIGRvbWFpbiwgYm9vbCBzZykKIHsKLQlzaXpl X3QgYWNjX3NpemUsIHN5c3RlbV9tZW1fbmVlZGVkLCB0dG1fbWVtX25lZWRlZDsKKwlzaXplX3Qg YWNjX3NpemUsIHN5c3RlbV9tZW1fbmVlZGVkLCB0dG1fbWVtX25lZWRlZCwgdnJhbV9uZWVkZWQ7 CisJdWludDY0X3QgcmVzZXJ2ZWRfZm9yX3B0ID0gYW1kZ3B1X2FtZGtmZF90b3RhbF9tZW1fc2l6 ZSA+PiA5OwogCWludCByZXQgPSAwOwogCiAJYWNjX3NpemUgPSB0dG1fYm9fZG1hX2FjY19zaXpl KCZhZGV2LT5tbWFuLmJkZXYsIHNpemUsCiAJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgYW1kZ3B1 X2JvKSk7CiAKLQlzcGluX2xvY2soJmtmZF9tZW1fbGltaXQubWVtX2xpbWl0X2xvY2spOwotCisJ dnJhbV9uZWVkZWQgPSAwOwogCWlmIChkb21haW4gPT0gQU1ER1BVX0dFTV9ET01BSU5fR1RUKSB7 CiAJCS8qIFRUTSBHVFQgbWVtb3J5ICovCiAJCXN5c3RlbV9tZW1fbmVlZGVkID0gYWNjX3NpemUg KyBzaXplOwpAQCAtMTMzLDIzICsxMzMsMzAgQEAgc3RhdGljIGludCBhbWRncHVfYW1ka2ZkX3Jl c2VydmVfc3lzdGVtX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJLyog VlJBTSBhbmQgU0cgKi8KIAkJc3lzdGVtX21lbV9uZWVkZWQgPSBhY2Nfc2l6ZTsKIAkJdHRtX21l bV9uZWVkZWQgPSBhY2Nfc2l6ZTsKKwkJaWYgKGRvbWFpbiA9PSBBTURHUFVfR0VNX0RPTUFJTl9W UkFNKQorCQkJdnJhbV9uZWVkZWQgPSBzaXplOwogCX0KIAorCXNwaW5fbG9jaygma2ZkX21lbV9s aW1pdC5tZW1fbGltaXRfbG9jayk7CisKIAlpZiAoKGtmZF9tZW1fbGltaXQuc3lzdGVtX21lbV91 c2VkICsgc3lzdGVtX21lbV9uZWVkZWQgPgotCQlrZmRfbWVtX2xpbWl0Lm1heF9zeXN0ZW1fbWVt X2xpbWl0KSB8fAotCQkoa2ZkX21lbV9saW1pdC50dG1fbWVtX3VzZWQgKyB0dG1fbWVtX25lZWRl ZCA+Ci0JCWtmZF9tZW1fbGltaXQubWF4X3R0bV9tZW1fbGltaXQpKQorCSAgICAga2ZkX21lbV9s aW1pdC5tYXhfc3lzdGVtX21lbV9saW1pdCkgfHwKKwkgICAgKGtmZF9tZW1fbGltaXQudHRtX21l bV91c2VkICsgdHRtX21lbV9uZWVkZWQgPgorCSAgICAga2ZkX21lbV9saW1pdC5tYXhfdHRtX21l bV9saW1pdCkgfHwKKwkgICAgKGFkZXYtPmtmZC52cmFtX3VzZWQgKyB2cmFtX25lZWRlZCA+CisJ ICAgICBhZGV2LT5nbWMucmVhbF92cmFtX3NpemUgLSByZXNlcnZlZF9mb3JfcHQpKSB7CiAJCXJl dCA9IC1FTk9NRU07Ci0JZWxzZSB7CisJfSBlbHNlIHsKIAkJa2ZkX21lbV9saW1pdC5zeXN0ZW1f bWVtX3VzZWQgKz0gc3lzdGVtX21lbV9uZWVkZWQ7CiAJCWtmZF9tZW1fbGltaXQudHRtX21lbV91 c2VkICs9IHR0bV9tZW1fbmVlZGVkOworCQlhZGV2LT5rZmQudnJhbV91c2VkICs9IHZyYW1fbmVl ZGVkOwogCX0KIAogCXNwaW5fdW5sb2NrKCZrZmRfbWVtX2xpbWl0Lm1lbV9saW1pdF9sb2NrKTsK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCB1bnJlc2VydmVfc3lzdGVtX21lbV9saW1p dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKK3N0YXRpYyB2b2lkIHVucmVzZXJ2ZV9tZW1f bGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCXVpbnQ2NF90IHNpemUsIHUzMiBk b21haW4sIGJvb2wgc2cpCiB7CiAJc2l6ZV90IGFjY19zaXplOwpAQCAtMTY3LDYgKzE3NCwxMSBA QCBzdGF0aWMgdm9pZCB1bnJlc2VydmVfc3lzdGVtX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAl9IGVsc2UgewogCQlrZmRfbWVtX2xpbWl0LnN5c3RlbV9tZW1fdXNlZCAt PSBhY2Nfc2l6ZTsKIAkJa2ZkX21lbV9saW1pdC50dG1fbWVtX3VzZWQgLT0gYWNjX3NpemU7CisJ CWlmIChkb21haW4gPT0gQU1ER1BVX0dFTV9ET01BSU5fVlJBTSkgeworCQkJYWRldi0+a2ZkLnZy YW1fdXNlZCAtPSBzaXplOworCQkJV0FSTl9PTkNFKGFkZXYtPmtmZC52cmFtX3VzZWQgPCAwLAor CQkJCSAgImtmZCBWUkFNIG1lbW9yeSBhY2NvdW50aW5nIHVuYmFsYW5jZWQiKTsKKwkJfQogCX0K IAlXQVJOX09OQ0Uoa2ZkX21lbV9saW1pdC5zeXN0ZW1fbWVtX3VzZWQgPCAwLAogCQkgICJrZmQg c3lzdGVtIG1lbW9yeSBhY2NvdW50aW5nIHVuYmFsYW5jZWQiKTsKQEAgLTE3NiwyOSArMTg4LDE4 IEBAIHN0YXRpYyB2b2lkIHVucmVzZXJ2ZV9zeXN0ZW1fbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCXNwaW5fdW5sb2NrKCZrZmRfbWVtX2xpbWl0Lm1lbV9saW1pdF9sb2Nr KTsKIH0KIAotdm9pZCBhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9zeXN0ZW1fbWVtb3J5X2xpbWl0 KHN0cnVjdCBhbWRncHVfYm8gKmJvKQordm9pZCBhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1v cnlfbGltaXQoc3RydWN0IGFtZGdwdV9ibyAqYm8pCiB7Ci0Jc3Bpbl9sb2NrKCZrZmRfbWVtX2xp bWl0Lm1lbV9saW1pdF9sb2NrKTsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdw dV90dG1fYWRldihiby0+dGJvLmJkZXYpOworCXUzMiBkb21haW4gPSBiby0+cHJlZmVycmVkX2Rv bWFpbnM7CisJYm9vbCBzZyA9IChiby0+cHJlZmVycmVkX2RvbWFpbnMgPT0gQU1ER1BVX0dFTV9E T01BSU5fQ1BVKTsKIAogCWlmIChiby0+ZmxhZ3MgJiBBTURHUFVfQU1ES0ZEX1VTRVJQVFJfQk8p IHsKLQkJa2ZkX21lbV9saW1pdC5zeXN0ZW1fbWVtX3VzZWQgLT0KLQkJCShiby0+dGJvLmFjY19z aXplICsgYW1kZ3B1X2JvX3NpemUoYm8pKTsKLQkJa2ZkX21lbV9saW1pdC50dG1fbWVtX3VzZWQg LT0gYm8tPnRiby5hY2Nfc2l6ZTsKLQl9IGVsc2UgaWYgKGJvLT5wcmVmZXJyZWRfZG9tYWlucyA9 PSBBTURHUFVfR0VNX0RPTUFJTl9HVFQpIHsKLQkJa2ZkX21lbV9saW1pdC5zeXN0ZW1fbWVtX3Vz ZWQgLT0KLQkJCShiby0+dGJvLmFjY19zaXplICsgYW1kZ3B1X2JvX3NpemUoYm8pKTsKLQkJa2Zk X21lbV9saW1pdC50dG1fbWVtX3VzZWQgLT0KLQkJCShiby0+dGJvLmFjY19zaXplICsgYW1kZ3B1 X2JvX3NpemUoYm8pKTsKLQl9IGVsc2UgewotCQlrZmRfbWVtX2xpbWl0LnN5c3RlbV9tZW1fdXNl ZCAtPSBiby0+dGJvLmFjY19zaXplOwotCQlrZmRfbWVtX2xpbWl0LnR0bV9tZW1fdXNlZCAtPSBi by0+dGJvLmFjY19zaXplOworCQlkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJTl9DUFU7CisJCXNn ID0gZmFsc2U7CiAJfQotCVdBUk5fT05DRShrZmRfbWVtX2xpbWl0LnN5c3RlbV9tZW1fdXNlZCA8 IDAsCi0JCSAgImtmZCBzeXN0ZW0gbWVtb3J5IGFjY291bnRpbmcgdW5iYWxhbmNlZCIpOwotCVdB Uk5fT05DRShrZmRfbWVtX2xpbWl0LnR0bV9tZW1fdXNlZCA8IDAsCi0JCSAgImtmZCBUVE0gbWVt b3J5IGFjY291bnRpbmcgdW5iYWxhbmNlZCIpOwogCi0Jc3Bpbl91bmxvY2soJmtmZF9tZW1fbGlt aXQubWVtX2xpbWl0X2xvY2spOworCXVucmVzZXJ2ZV9tZW1fbGltaXQoYWRldiwgYW1kZ3B1X2Jv X3NpemUoYm8pLCBkb21haW4sIHNnKTsKIH0KIAogCkBAIC0xMjM1LDggKzEyMzYsNyBAQCBpbnQg YW1kZ3B1X2FtZGtmZF9ncHV2bV9hbGxvY19tZW1vcnlfb2ZfZ3B1KAogCiAJYW1kZ3B1X3N5bmNf Y3JlYXRlKCYoKm1lbSktPnN5bmMpOwogCi0JcmV0ID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX3N5 c3RlbV9tZW1fbGltaXQoYWRldiwgc2l6ZSwKLQkJCQkJCSAgICAgYWxsb2NfZG9tYWluLCBmYWxz ZSk7CisJcmV0ID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChhZGV2LCBzaXplLCBh bGxvY19kb21haW4sIGZhbHNlKTsKIAlpZiAocmV0KSB7CiAJCXByX2RlYnVnKCJJbnN1ZmZpY2ll bnQgc3lzdGVtIG1lbW9yeVxuIik7CiAJCWdvdG8gZXJyX3Jlc2VydmVfbGltaXQ7CkBAIC0xMjg5 LDcgKzEyODksNyBAQCBpbnQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9hbGxvY19tZW1vcnlfb2ZfZ3B1 KAogCS8qIERvbid0IHVucmVzZXJ2ZSBzeXN0ZW0gbWVtIGxpbWl0IHR3aWNlICovCiAJZ290byBl cnJfcmVzZXJ2ZV9saW1pdDsKIGVycl9ib19jcmVhdGU6Ci0JdW5yZXNlcnZlX3N5c3RlbV9tZW1f bGltaXQoYWRldiwgc2l6ZSwgYWxsb2NfZG9tYWluLCBmYWxzZSk7CisJdW5yZXNlcnZlX21lbV9s aW1pdChhZGV2LCBzaXplLCBhbGxvY19kb21haW4sIGZhbHNlKTsKIGVycl9yZXNlcnZlX2xpbWl0 OgogCW11dGV4X2Rlc3Ryb3koJigqbWVtKS0+bG9jayk7CiAJa2ZyZWUoKm1lbSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKaW5kZXggOTA0MDE0ZC4uMjcyNjc3 MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwpAQCAtODEs NyArODEsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfYm9fZGVzdHJveShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKnRibykKIAkJYW1kZ3B1X2JvX3N1YnRyYWN0X3Bpbl9zaXplKGJvKTsKIAogCWlm IChiby0+a2ZkX2JvKQotCQlhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9zeXN0ZW1fbWVtb3J5X2xp bWl0KGJvKTsKKwkJYW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtb3J5X2xpbWl0KGJvKTsKIAog CWFtZGdwdV9ib19rdW5tYXAoYm8pOwogCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4Cg==