From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: [RFC PATCH v2 4/5] drm, cgroup: Add total GEM buffer allocation limit Date: Thu, 9 May 2019 17:04:09 -0400 Message-ID: <20190509210410.5471-5-Kenny.Ho@amd.com> References: <20181120185814.13362-1-Kenny.Ho@amd.com> <20190509210410.5471-1-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190509210410.5471-1-Kenny.Ho@amd.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Content-Type: text/plain; charset="us-ascii" To: y2kenny@gmail.com, Kenny.Ho@amd.com, cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, tj@kernel.org, sunnanyong@huawei.com, alexander.deucher@amd.com, brian.welty@intel.com VGhlIGRybSByZXNvdXJjZSBiZWluZyBtZWFzdXJlZCBhbmQgbGltaXRlZCBoZXJlIGlzIHRoZSBH RU0gYnVmZmVyCm9iamVjdHMuICBVc2VyIGFwcGxpY2F0aW9ucyBhbGxvY2F0ZSBhbmQgZnJlZSB0 aGVzZSBidWZmZXJzLiAgSW4KYWRkaXRpb24sIGEgcHJvY2VzcyBjYW4gYWxsb2NhdGUgYSBidWZm ZXIgYW5kIHNoYXJlIGl0IHdpdGggYW5vdGhlcgpwcm9jZXNzLiAgVGhlIGNvbnN1bWVyIG9mIGEg c2hhcmVkIGJ1ZmZlciBjYW4gYWxzbyBvdXRsaXZlIHRoZQphbGxvY2F0b3Igb2YgdGhlIGJ1ZmZl ci4KCkZvciB0aGUgcHVycG9zZSBvZiBjZ3JvdXAgYWNjb3VudGluZyBhbmQgbGltaXRpbmcsIG93 bmVyc2hpcCBvZiB0aGUKYnVmZmVyIGlzIGRlZW1lZCB0byBiZSB0aGUgY2dyb3VwIGZvciB3aGlj aCB0aGUgYWxsb2NhdGluZyBwcm9jZXNzCmJlbG9uZ3MgdG8uICBUaGVyZSBpcyBvbmUgbGltaXQg cGVyIGRybSBkZXZpY2UuCgpJbiBvcmRlciB0byBwcmV2ZW50IHRoZSBidWZmZXIgb3V0bGl2aW5n IHRoZSBjZ3JvdXAgdGhhdCBvd25zIGl0LCBhCnByb2Nlc3MgaXMgcHJldmVudGVkIGZyb20gaW1w b3J0aW5nIGJ1ZmZlcnMgdGhhdCBhcmUgbm90IG93biBieSB0aGUKcHJvY2VzcycgY2dyb3VwIG9y IHRoZSBhbmNlc3RvcnMgb2YgdGhlIHByb2Nlc3MnIGNncm91cC4KCkZvciB0aGlzIHJlc291cmNl LCB0aGUgY29udHJvbCBmaWxlcyBhcmUgcHJlZml4ZWQgd2l0aCBkcm0uYnVmZmVyLnRvdGFsLgoK VGhlcmUgYXJlIGZvdXIgY29udHJvbCBmaWxlIHR5cGVzLApzdGF0cyAocm8pIC0gZGlzcGxheSBj dXJyZW50IG1lYXN1cmVkIHZhbHVlcyBmb3IgYSByZXNvdXJjZQptYXggKHJ3KSAtIGxpbWl0cyBm b3IgYSByZXNvdXJjZQpkZWZhdWx0IChybywgcm9vdCBjZ3JvdXAgb25seSkgLSBkZWZhdWx0IHZh bHVlcyBmb3IgYSByZXNvdXJjZQpoZWxwIChybywgcm9vdCBjZ3JvdXAgb25seSkgLSBoZWxwIHN0 cmluZyBmb3IgYSByZXNvdXJjZQoKRWFjaCBmaWxlIGlzIG11bHRpLWxpbmVkIHdpdGggb25lIGVu dHJ5L2xpbmUgcGVyIGRybSBkZXZpY2UuCgpVc2FnZSBleGFtcGxlczoKLy8gc2V0IGxpbWl0IGZv ciBjYXJkMSB0byAxR0IKc2VkIC1pICcycy8uKi8xMDczNzQxODI0LycgL3N5cy9mcy9jZ3JvdXAv PGNncm91cD4vZHJtLmJ1ZmZlci50b3RhbC5tYXgKCi8vIHNldCBsaW1pdCBmb3IgY2FyZDAgdG8g NTEyTUIKc2VkIC1pICcxcy8uKi81MzY4NzA5MTIvJyAvc3lzL2ZzL2Nncm91cC88Y2dyb3VwPi9k cm0uYnVmZmVyLnRvdGFsLm1heAoKQ2hhbmdlLUlkOiBJNGMyNDlkMDZkNDVlYzcwOWQ2NDgxZDRj YmU4N2M1MTY4NTQ1YzVkMApTaWduZWQtb2ZmLWJ5OiBLZW5ueSBIbyA8S2VubnkuSG9AYW1kLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgfCAgIDQg KwogZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGRy aXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgICAgICAgICAgICB8ICAgOSArCiBpbmNsdWRl L2RybS9kcm1fY2dyb3VwLmggICAgICAgICAgICAgICAgICAgfCAgMzQgKystCiBpbmNsdWRlL2Ry bS9kcm1fZ2VtLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogaW5jbHVkZS9saW51eC9j Z3JvdXBfZHJtLmggICAgICAgICAgICAgICAgIHwgICAzICsKIGtlcm5lbC9jZ3JvdXAvZHJtLmMg ICAgICAgICAgICAgICAgICAgICAgICB8IDI4MCArKysrKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgMzQ2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCmluZGV4IDkzYjJjNWE0OGE3MS4uYjRj MDc4YjdhZDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf b2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5j CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxkcm0v YW1kZ3B1X2RybS5oPgogI2luY2x1ZGUgPGRybS9kcm1fY2FjaGUuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX2Nncm91cC5oPgogI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUgImFtZGdwdV90cmFj ZS5oIgogI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKQEAgLTQ0Niw2ICs0NDcsOSBAQCBzdGF0 aWMgaW50IGFtZGdwdV9ib19kb19jcmVhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ aWYgKCFhbWRncHVfYm9fdmFsaWRhdGVfc2l6ZShhZGV2LCBzaXplLCBicC0+ZG9tYWluKSkKIAkJ cmV0dXJuIC1FTk9NRU07CiAKKwlpZiAoIWRybWNncnBfYm9fY2FuX2FsbG9jYXRlKGN1cnJlbnQs IGFkZXYtPmRkZXYsIHNpemUpKQorCQlyZXR1cm4gLUVOT01FTTsKKwogCSpib19wdHIgPSBOVUxM OwogCiAJYWNjX3NpemUgPSB0dG1fYm9fZG1hX2FjY19zaXplKCZhZGV2LT5tbWFuLmJkZXYsIHNp emUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW0uYwppbmRleCA2YTgwZGIwNzdkYzYuLmNiZDQ5YmYzNGRjZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dl bS5jCkBAIC0zNywxMCArMzcsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgogI2lu Y2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KICNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgor I2luY2x1ZGUgPGxpbnV4L2Nncm91cF9kcm0uaD4KICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2lu Y2x1ZGUgPGRybS9kcm1fdm1hX21hbmFnZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgog I2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Nncm91cC5oPgog I2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogCiAvKiogQGZpbGUgZHJtX2dlbS5jCkBAIC0xNTQs NiArMTU2LDkgQEAgdm9pZCBkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlvYmotPmhhbmRsZV9jb3VudCA9IDA7CiAJb2JqLT5zaXplID0gc2l6ZTsK IAlkcm1fdm1hX25vZGVfcmVzZXQoJm9iai0+dm1hX25vZGUpOworCisJb2JqLT5kcm1jZ3JwID0g Z2V0X2RybWNncnAoY3VycmVudCk7CisJZHJtY2dycF9jaGdfYm9fYWxsb2Mob2JqLT5kcm1jZ3Jw LCBkZXYsIHNpemUpOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2lu aXQpOwogCkBAIC04MDQsNiArODA5LDggQEAgZHJtX2dlbV9vYmplY3RfcmVsZWFzZShzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKIAlpZiAob2JqLT5maWxwKQogCQlmcHV0KG9iai0+ZmlscCk7 CiAKKwlkcm1jZ3JwX3VuY2hnX2JvX2FsbG9jKG9iai0+ZHJtY2dycCwgb2JqLT5kZXYsIG9iai0+ c2l6ZSk7CisKIAlkcm1fZ2VtX2ZyZWVfbW1hcF9vZmZzZXQob2JqKTsKIH0KIEVYUE9SVF9TWU1C T0woZHJtX2dlbV9vYmplY3RfcmVsZWFzZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKaW5kZXggMjMxZTNmNmQ1 ZjQxLi5mYWVkNTYxMWExYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNp bmNsdWRlIDxkcm0vZHJtX3ByaW1lLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KICNpbmNs dWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY2dyb3VwLmg+CiAKICNpbmNsdWRl ICJkcm1faW50ZXJuYWwuaCIKIApAQCAtNzk0LDYgKzc5NSw3IEBAIGludCBkcm1fZ2VtX3ByaW1l X2ZkX3RvX2hhbmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogewogCXN0cnVjdCBkbWFfYnVm ICpkbWFfYnVmOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1jZ3Jw ICpkcm1jZ3JwID0gZ2V0X2RybWNncnAoY3VycmVudCk7CiAJaW50IHJldDsKIAogCWRtYV9idWYg PSBkbWFfYnVmX2dldChwcmltZV9mZCk7CkBAIC04MTgsNiArODIwLDEzIEBAIGludCBkcm1fZ2Vt X3ByaW1lX2ZkX3RvX2hhbmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlnb3RvIG91dF91 bmxvY2s7CiAJfQogCisJLyogb25seSBhbGxvdyBibyBmcm9tIHRoZSBzYW1lIGNncm91cCBvciBp dHMgYW5jZXN0b3IgdG8gYmUgaW1wb3J0ZWQgKi8KKwlpZiAoZHJtY2dycCAhPSBOVUxMICYmCisJ CQkhZHJtY2dycF9pc19zZWxmX29yX2FuY2VzdG9yKGRybWNncnAsIG9iai0+ZHJtY2dycCkpIHsK KwkJcmV0ID0gLUVBQ0NFUzsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKwogCWlmIChvYmotPmRt YV9idWYpIHsKIAkJV0FSTl9PTihvYmotPmRtYV9idWYgIT0gZG1hX2J1Zik7CiAJfSBlbHNlIHsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jZ3JvdXAuaCBiL2luY2x1ZGUvZHJtL2RybV9j Z3JvdXAuaAppbmRleCBkZGI5ZWFiNjQzNjAuLjg3MTFiN2M1ZjdiZiAxMDA2NDQKLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2Nncm91cC5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9jZ3JvdXAuaApAQCAt NCwxMiArNCwyMCBAQAogI2lmbmRlZiBfX0RSTV9DR1JPVVBfSF9fCiAjZGVmaW5lIF9fRFJNX0NH Uk9VUF9IX18KIAorI2luY2x1ZGUgPGxpbnV4L2Nncm91cF9kcm0uaD4KKwogI2lmZGVmIENPTkZJ R19DR1JPVVBfRFJNCiAKIGludCBkcm1jZ3JwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2aWNlKTsKLQogaW50IGRybWNncnBfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldmljZSk7Ci0KK2Jvb2wgZHJtY2dycF9pc19zZWxmX29yX2FuY2VzdG9yKHN0 cnVjdCBkcm1jZ3JwICpzZWxmLAorCQlzdHJ1Y3QgZHJtY2dycCAqcmVsYXRpdmUpOwordm9pZCBk cm1jZ3JwX2NoZ19ib19hbGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJc2l6ZV90IHNpemUpOwordm9pZCBkcm1jZ3JwX3VuY2hnX2JvX2FsbG9j KHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXpl X3Qgc2l6ZSk7Citib29sIGRybWNncnBfYm9fY2FuX2FsbG9jYXRlKHN0cnVjdCB0YXNrX3N0cnVj dCAqdGFzaywgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJc2l6ZV90IHNpemUpOwogI2Vsc2UK IHN0YXRpYyBpbmxpbmUgaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXZpY2UpCiB7CkBAIC0yMCw1ICsyOCwyNyBAQCBzdGF0aWMgaW5saW5lIGludCBkcm1j Z3JwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXZpY2UpCiB7CiAJcmV0 dXJuIDA7CiB9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBkcm1jZ3JwX2lzX3NlbGZfb3JfYW5jZXN0 b3Ioc3RydWN0IGRybWNncnAgKnNlbGYsCisJCXN0cnVjdCBkcm1jZ3JwICpyZWxhdGl2ZSkKK3sK KwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX2NoZ19ib19h bGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwKKwkJc3RydWN0IGRybV9kZXZpY2UgKmRldiwJ c2l6ZV90IHNpemUpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3VuY2hnX2Jv X2FsbG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLAorCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAlzaXplX3Qgc2l6ZSkKK3sKK30KKworc3RhdGljIGlubGluZSBib29sIGRybWNncnBfYm9fY2Fu X2FsbG9jYXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKKwkJc3RydWN0IGRybV9kZXZpY2Ug KmRldiwJc2l6ZV90IHNpemUpCit7CisJcmV0dXJuIHRydWU7Cit9CiAjZW5kaWYgLyogQ09ORklH X0NHUk9VUF9EUk0gKi8KICNlbmRpZiAvKiBfX0RSTV9DR1JPVVBfSF9fICovCmRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS9kcm1fZ2VtLmggYi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKaW5kZXggYzk1 NzI3NDI1Mjg0Li4wMjg1NGM2NzRiNWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW0u aAorKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKQEAgLTI3Miw2ICsyNzIsMTcgQEAgc3RydWN0 IGRybV9nZW1fb2JqZWN0IHsKIAkgKgogCSAqLwogCWNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVj dF9mdW5jcyAqZnVuY3M7CisKKwkvKioKKwkgKiBAZHJtY2dycDoKKwkgKgorCSAqIERSTSBjZ3Jv dXAgdGhpcyBHRU0gb2JqZWN0IGJlbG9uZ3MgdG8uCisgICAgICAgICAqCisgICAgICAgICAqIFRo aXMgaXMgdXNlZCB0byB0cmFjayBhbmQgbGltaXQgdGhlIGFtb3VudCBvZiBHRU0gb2JqZWN0cyBh IHVzZXIKKyAgICAgICAgICogY2FuIGFsbG9jYXRlLiAgU2luY2UgR0VNIG9iamVjdHMgY2FuIGJl IHNoYXJlZCwgdGhpcyBpcyBhbHNvIHVzZWQKKyAgICAgICAgICogdG8gZW5zdXJlIEdFTSBvYmpl Y3RzIGFyZSBvbmx5IHNoYXJlZCB3aXRoaW4gdGhlIHNhbWUgY2dyb3VwLgorCSAqLworCXN0cnVj dCBkcm1jZ3JwICpkcm1jZ3JwOwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2Nncm91cF9kcm0uaCBiL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oCmluZGV4IGQ3Y2NmNDM0 Y2E2Yi4uZmUxNGJhN2JiMWNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0u aAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaApAQCAtMTUsNiArMTUsOSBAQAogCiBz dHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgewogCS8qIGZvciBwZXIgZGV2aWNlIHN0YXRz ICovCisJczY0CQkJYm9fc3RhdHNfdG90YWxfYWxsb2NhdGVkOworCisJczY0CQkJYm9fbGltaXRz X3RvdGFsX2FsbG9jYXRlZDsKIH07CiAKIHN0cnVjdCBkcm1jZ3JwIHsKZGlmZiAtLWdpdCBhL2tl cm5lbC9jZ3JvdXAvZHJtLmMgYi9rZXJuZWwvY2dyb3VwL2RybS5jCmluZGV4IGY5ZWY0YmYwNDJk OC4uYmMzYWJmZjA5MTEzIDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwL2RybS5jCisrKyBiL2tl cm5lbC9jZ3JvdXAvZHJtLmMKQEAgLTE1LDYgKzE1LDIyIEBAIHN0YXRpYyBERUZJTkVfTVVURVgo ZHJtY2dycF9tdXRleCk7CiBzdHJ1Y3QgZHJtY2dycF9kZXZpY2UgewogCXN0cnVjdCBkcm1fZGV2 aWNlCSpkZXY7CiAJc3RydWN0IG11dGV4CQltdXRleDsKKworCXM2NAkJCWJvX2xpbWl0c190b3Rh bF9hbGxvY2F0ZWRfZGVmYXVsdDsKK307CisKKyNkZWZpbmUgRFJNQ0dfQ1RGX1BSSVZfU0laRSAz CisjZGVmaW5lIERSTUNHX0NURl9QUklWX01BU0sgR0VOTUFTSygoRFJNQ0dfQ1RGX1BSSVZfU0la RSAtIDEpLCAwKQorCitlbnVtIGRybWNncnBfcmVzX3R5cGUgeworCURSTUNHUlBfVFlQRV9CT19U T1RBTCwKK307CisKK2VudW0gZHJtY2dycF9maWxlX3R5cGUgeworCURSTUNHUlBfRlRZUEVfU1RB VFMsCisJRFJNQ0dSUF9GVFlQRV9NQVgsCisJRFJNQ0dSUF9GVFlQRV9ERUZBVUxULAorCURSTUNH UlBfRlRZUEVfSEVMUCwKIH07CiAKIC8qIGluZGV4ZWQgYnkgZHJtX21pbm9yIGZvciBhY2Nlc3Mg c3BlZWQgKi8KQEAgLTUzLDYgKzY5LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGluaXRfZHJtY2dy cF9zaW5nbGUoc3RydWN0IGRybWNncnAgKmRybWNncnAsIGludCBpKQogCX0KIAogCS8qIHNldCBk ZWZhdWx0cyBoZXJlICovCisJaWYgKGtub3duX2RybWNncnBfZGV2c1tpXSAhPSBOVUxMKSB7CisJ CWRkci0+Ym9fbGltaXRzX3RvdGFsX2FsbG9jYXRlZCA9CisJCSAga25vd25fZHJtY2dycF9kZXZz W2ldLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQ7CisJfQogCiAJcmV0dXJuIDA7 CiB9CkBAIC05OSw3ICsxMTksMTg3IEBAIGRybWNncnBfY3NzX2FsbG9jKHN0cnVjdCBjZ3JvdXBf c3Vic3lzX3N0YXRlICpwYXJlbnRfY3NzKQogCXJldHVybiAmZHJtY2dycC0+Y3NzOwogfQogCitz dGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF9wcmludF9zdGF0cyhzdHJ1Y3QgZHJtY2dycF9kZXZp Y2VfcmVzb3VyY2UgKmRkciwKKwkJc3RydWN0IHNlcV9maWxlICpzZiwgZW51bSBkcm1jZ3JwX3Jl c190eXBlIHR5cGUpCit7CisJaWYgKGRkciA9PSBOVUxMKSB7CisJCXNlcV9wdXRzKHNmLCAiXG4i KTsKKwkJcmV0dXJuOworCX0KKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgRFJNQ0dSUF9UWVBF X0JPX1RPVEFMOgorCQlzZXFfcHJpbnRmKHNmLCAiJWxsZFxuIiwgZGRyLT5ib19zdGF0c190b3Rh bF9hbGxvY2F0ZWQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlzZXFfcHV0cyhzZiwgIlxuIik7 CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBfcHJpbnRfbGlt aXRzKHN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyLAorCQlzdHJ1Y3Qgc2VxX2Zp bGUgKnNmLCBlbnVtIGRybWNncnBfcmVzX3R5cGUgdHlwZSkKK3sKKwlpZiAoZGRyID09IE5VTEwp IHsKKwkJc2VxX3B1dHMoc2YsICJcbiIpOworCQlyZXR1cm47CisJfQorCisJc3dpdGNoICh0eXBl KSB7CisJY2FzZSBEUk1DR1JQX1RZUEVfQk9fVE9UQUw6CisJCXNlcV9wcmludGYoc2YsICIlbGxk XG4iLCBkZHItPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWQpOworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlzZXFfcHV0cyhzZiwgIlxuIik7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGRybWNncnBfcHJpbnRfZGVmYXVsdChzdHJ1Y3QgZHJtY2dycF9kZXZpY2UgKmRkZXYs CisJCXN0cnVjdCBzZXFfZmlsZSAqc2YsIGVudW0gZHJtY2dycF9yZXNfdHlwZSB0eXBlKQorewor CWlmIChkZGV2ID09IE5VTEwpIHsKKwkJc2VxX3B1dHMoc2YsICJcbiIpOworCQlyZXR1cm47CisJ fQorCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBEUk1DR1JQX1RZUEVfQk9fVE9UQUw6CisJCXNl cV9wcmludGYoc2YsICIlbGxkXG4iLCBkZGV2LT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2Rl ZmF1bHQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlzZXFfcHV0cyhzZiwgIlxuIik7CisJCWJy ZWFrOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBfcHJpbnRfaGVscChpbnQg Y2FyZE51bSwgc3RydWN0IHNlcV9maWxlICpzZiwKKwkJZW51bSBkcm1jZ3JwX3Jlc190eXBlIHR5 cGUpCit7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBEUk1DR1JQX1RZUEVfQk9fVE9UQUw6CisJ CXNlcV9wcmludGYoc2YsCisJCSJUb3RhbCBhbW91bnQgb2YgYnVmZmVyIGFsbG9jYXRpb24gaW4g Ynl0ZXMgZm9yIGNhcmQlZFxuIiwKKwkJY2FyZE51bSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXNlcV9wdXRzKHNmLCAiXG4iKTsKKwkJYnJlYWs7CisJfQorfQorCitpbnQgZHJtY2dycF9ib19z aG93KHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpCit7CisJc3RydWN0IGRybWNncnAgKmRy bWNncnAgPSBjc3NfZHJtY2dycChzZXFfY3NzKHNmKSk7CisJc3RydWN0IGRybWNncnBfZGV2aWNl X3Jlc291cmNlICpkZHIgPSBOVUxMOworCWVudW0gZHJtY2dycF9maWxlX3R5cGUgZl90eXBlID0g c2VxX2NmdChzZiktPgorCQlwcml2YXRlICYgRFJNQ0dfQ1RGX1BSSVZfTUFTSzsKKwllbnVtIGRy bWNncnBfcmVzX3R5cGUgdHlwZSA9IHNlcV9jZnQoc2YpLT4KKwkJcHJpdmF0ZSA+PiBEUk1DR19D VEZfUFJJVl9TSVpFOworCXN0cnVjdCBkcm1jZ3JwX2RldmljZSAqZGRldjsKKwlpbnQgaTsKKwor CWZvciAoaSA9IDA7IGkgPD0gbWF4X21pbm9yOyBpKyspIHsKKwkJZGRyID0gZHJtY2dycC0+ZGV2 X3Jlc291cmNlc1tpXTsKKwkJZGRldiA9IGtub3duX2RybWNncnBfZGV2c1tpXTsKKworCQlzd2l0 Y2ggKGZfdHlwZSkgeworCQljYXNlIERSTUNHUlBfRlRZUEVfU1RBVFM6CisJCQlkcm1jZ3JwX3By aW50X3N0YXRzKGRkciwgc2YsIHR5cGUpOworCQkJYnJlYWs7CisJCWNhc2UgRFJNQ0dSUF9GVFlQ RV9NQVg6CisJCQlkcm1jZ3JwX3ByaW50X2xpbWl0cyhkZHIsIHNmLCB0eXBlKTsKKwkJCWJyZWFr OworCQljYXNlIERSTUNHUlBfRlRZUEVfREVGQVVMVDoKKwkJCWRybWNncnBfcHJpbnRfZGVmYXVs dChkZGV2LCBzZiwgdHlwZSk7CisJCQlicmVhazsKKwkJY2FzZSBEUk1DR1JQX0ZUWVBFX0hFTFA6 CisJCQlkcm1jZ3JwX3ByaW50X2hlbHAoaSwgc2YsIHR5cGUpOworCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQlzZXFfcHV0cyhzZiwgIlxuIik7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVy biAwOworfQorCitzc2l6ZV90IGRybWNncnBfYm9fbGltaXRfd3JpdGUoc3RydWN0IGtlcm5mc19v cGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsCisJCXNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpCit7 CisJc3RydWN0IGRybWNncnAgKmRybWNncnAgPSBjc3NfZHJtY2dycChvZl9jc3Mob2YpKTsKKwll bnVtIGRybWNncnBfcmVzX3R5cGUgdHlwZSA9IG9mX2NmdChvZiktPnByaXZhdGUgPj4gRFJNQ0df Q1RGX1BSSVZfU0laRTsKKwljaGFyICpjZnRfbmFtZSA9IG9mX2NmdChvZiktPm5hbWU7CisJY2hh ciAqbGltaXRzID0gc3Ryc3RyaXAoYnVmKTsKKwlzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3Vy Y2UgKmRkcjsKKwljaGFyICpzdmFsOworCXM2NCB2YWw7CisJaW50IGkgPSAwOworCWludCByYzsK KworCXdoaWxlIChpIDw9IG1heF9taW5vciAmJiBsaW1pdHMgIT0gTlVMTCkgeworCQlzdmFsID0g IHN0cnNlcCgmbGltaXRzLCAiXG4iKTsKKwkJcmMgPSBrc3RydG9sbChzdmFsLCAwLCAmdmFsKTsK KworCQlpZiAocmMpIHsKKwkJCXByX2VycigiZHJtY2dycDogJXM6IG1pbm9yICVkLCBlcnIgJWQu ICIsCisJCQkJY2Z0X25hbWUsIGksIHJjKTsKKwkJCXByX2NvbnRfY2dyb3VwX25hbWUoZHJtY2dy cC0+Y3NzLmNncm91cCk7CisJCQlwcl9jb250KCJcbiIpOworCQl9IGVsc2UgeworCQkJZGRyID0g ZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tpXTsKKwkJCXN3aXRjaCAodHlwZSkgeworCQkJY2FzZSBE Uk1DR1JQX1RZUEVfQk9fVE9UQUw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICh2YWwgPCAwKSBjb250aW51ZTsKKwkJCQlkZHItPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWQg PSB2YWw7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQorCQl9CisK KwkJaSsrOworCX0KKworCWlmIChpIDw9IG1heF9taW5vcikgeworCQlwcl9lcnIoImRybWNncnA6 ICVzOiBsZXNzIGVudHJpZXMgdGhhbiAjIG9mIGRybSBkZXZpY2VzLiAiLAorCQkJCWNmdF9uYW1l KTsKKwkJcHJfY29udF9jZ3JvdXBfbmFtZShkcm1jZ3JwLT5jc3MuY2dyb3VwKTsKKwkJcHJfY29u dCgiXG4iKTsKKwl9CisKKwlyZXR1cm4gbmJ5dGVzOworfQorCiBzdHJ1Y3QgY2Z0eXBlIGZpbGVz W10gPSB7CisJeworCQkubmFtZSA9ICJidWZmZXIudG90YWwuc3RhdHMiLAorCQkuc2VxX3Nob3cg PSBkcm1jZ3JwX2JvX3Nob3csCisJCS5wcml2YXRlID0gKERSTUNHUlBfVFlQRV9CT19UT1RBTCA8 PCBEUk1DR19DVEZfUFJJVl9TSVpFKSB8CisJCQlEUk1DR1JQX0ZUWVBFX1NUQVRTLAorCX0sCisJ eworCQkubmFtZSA9ICJidWZmZXIudG90YWwuZGVmYXVsdCIsCisJCS5zZXFfc2hvdyA9IGRybWNn cnBfYm9fc2hvdywKKwkJLmZsYWdzID0gQ0ZUWVBFX09OTFlfT05fUk9PVCwKKwkJLnByaXZhdGUg PSAoRFJNQ0dSUF9UWVBFX0JPX1RPVEFMIDw8IERSTUNHX0NURl9QUklWX1NJWkUpIHwKKwkJCURS TUNHUlBfRlRZUEVfREVGQVVMVCwKKwl9LAorCXsKKwkJLm5hbWUgPSAiYnVmZmVyLnRvdGFsLmhl bHAiLAorCQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCisJCS5mbGFncyA9IENGVFlQRV9P TkxZX09OX1JPT1QsCisJCS5wcml2YXRlID0gKERSTUNHUlBfVFlQRV9CT19UT1RBTCA8PCBEUk1D R19DVEZfUFJJVl9TSVpFKSB8CisJCQlEUk1DR1JQX0ZUWVBFX0hFTFAsCisJfSwKKwl7CisJCS5u YW1lID0gImJ1ZmZlci50b3RhbC5tYXgiLAorCQkud3JpdGUgPSBkcm1jZ3JwX2JvX2xpbWl0X3dy aXRlLAorCQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCisJCS5wcml2YXRlID0gKERSTUNH UlBfVFlQRV9CT19UT1RBTCA8PCBEUk1DR19DVEZfUFJJVl9TSVpFKSB8CisJCQlEUk1DR1JQX0ZU WVBFX01BWCwKKwl9LAogCXsgfQkvKiB0ZXJtaW5hdGUgKi8KIH07CiAKQEAgLTEyMiw2ICszMjIs OCBAQCBpbnQgZHJtY2dycF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAkJcmV0dXJuIC1FTk9NRU07CiAKIAlkZGV2LT5kZXYgPSBkZXY7CisJZGRldi0+Ym9fbGltaXRz X3RvdGFsX2FsbG9jYXRlZF9kZWZhdWx0ID0gUzY0X01BWDsKKwogCW11dGV4X2luaXQoJmRkZXYt Pm11dGV4KTsKIAogCW11dGV4X2xvY2soJmRybWNncnBfbXV0ZXgpOwpAQCAtMTU2LDMgKzM1OCw4 MSBAQCBpbnQgZHJtY2dycF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChkcm1jZ3JwX3VucmVnaXN0ZXJfZGV2aWNl KTsKKworYm9vbCBkcm1jZ3JwX2lzX3NlbGZfb3JfYW5jZXN0b3Ioc3RydWN0IGRybWNncnAgKnNl bGYsIHN0cnVjdCBkcm1jZ3JwICpyZWxhdGl2ZSkKK3sKKwlmb3IgKDsgc2VsZiAhPSBOVUxMOyBz ZWxmID0gcGFyZW50X2RybWNncnAoc2VsZikpCisJCWlmIChzZWxmID09IHJlbGF0aXZlKQorCQkJ cmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CitFWFBPUlRfU1lNQk9MKGRybWNncnBf aXNfc2VsZl9vcl9hbmNlc3Rvcik7CisKK2Jvb2wgZHJtY2dycF9ib19jYW5fYWxsb2NhdGUoc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXplX3Qg c2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCA9IGdldF9kcm1jZ3JwKHRhc2spOwor CXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyOworCXN0cnVjdCBkcm1jZ3JwX2Rl dmljZV9yZXNvdXJjZSAqZDsKKwlpbnQgZGV2SWR4ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsKKwli b29sIHJlc3VsdCA9IHRydWU7CisJczY0IGRlbHRhID0gMDsKKworCWlmIChkcm1jZ3JwID09IE5V TEwgfHwgZHJtY2dycCA9PSByb290X2RybWNncnApCisJCXJldHVybiB0cnVlOworCisJZGRyID0g ZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdOworCW11dGV4X2xvY2soJmtub3duX2RybWNn cnBfZGV2c1tkZXZJZHhdLT5tdXRleCk7CisJZm9yICggOyBkcm1jZ3JwICE9IHJvb3RfZHJtY2dy cDsgZHJtY2dycCA9IHBhcmVudF9kcm1jZ3JwKGRybWNncnApKSB7CisJCWQgPSBkcm1jZ3JwLT5k ZXZfcmVzb3VyY2VzW2RldklkeF07CisJCWRlbHRhID0gZC0+Ym9fbGltaXRzX3RvdGFsX2FsbG9j YXRlZCAtCisJCQkJZC0+Ym9fc3RhdHNfdG90YWxfYWxsb2NhdGVkOworCisJCWlmIChkZWx0YSA8 PSAwIHx8IHNpemUgPiBkZWx0YSkgeworCQkJcmVzdWx0ID0gZmFsc2U7CisJCQlicmVhazsKKwkJ fQorCX0KKwltdXRleF91bmxvY2soJmtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT5tdXRleCk7 CisKKwlyZXR1cm4gcmVzdWx0OworfQorRVhQT1JUX1NZTUJPTChkcm1jZ3JwX2JvX2Nhbl9hbGxv Y2F0ZSk7CisKK3ZvaWQgZHJtY2dycF9jaGdfYm9fYWxsb2Moc3RydWN0IGRybWNncnAgKmRybWNn cnAsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCXNpemVfdCBzaXplKQoreworCXN0cnVjdCBk cm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyOworCWludCBkZXZJZHggPSBkZXYtPnByaW1hcnkt PmluZGV4OworCisJaWYgKGRybWNncnAgPT0gTlVMTCB8fCBrbm93bl9kcm1jZ3JwX2RldnNbZGV2 SWR4XSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwltdXRleF9sb2NrKCZrbm93bl9kcm1jZ3JwX2Rl dnNbZGV2SWR4XS0+bXV0ZXgpOworCWZvciAoIDsgZHJtY2dycCAhPSBOVUxMOyBkcm1jZ3JwID0g cGFyZW50X2RybWNncnAoZHJtY2dycCkpIHsKKwkJZGRyID0gZHJtY2dycC0+ZGV2X3Jlc291cmNl c1tkZXZJZHhdOworCisJCWRkci0+Ym9fc3RhdHNfdG90YWxfYWxsb2NhdGVkICs9IChzNjQpc2l6 ZTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZrbm93bl9kcm1jZ3JwX2RldnNbZGV2SWR4XS0+bXV0ZXgp OworfQorRVhQT1JUX1NZTUJPTChkcm1jZ3JwX2NoZ19ib19hbGxvYyk7CisKK3ZvaWQgZHJtY2dy cF91bmNoZ19ib19hbGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKKwkJc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291 cmNlICpkZHI7CisJaW50IGRldklkeCA9IGRldi0+cHJpbWFyeS0+aW5kZXg7CisKKwlpZiAoZHJt Y2dycCA9PSBOVUxMIHx8IGtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdID09IE5VTEwpCisJCXJl dHVybjsKKworCWRkciA9IGRybWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XTsKKwltdXRleF9s b2NrKCZrbm93bl9kcm1jZ3JwX2RldnNbZGV2SWR4XS0+bXV0ZXgpOworCWZvciAoIDsgZHJtY2dy cCAhPSBOVUxMOyBkcm1jZ3JwID0gcGFyZW50X2RybWNncnAoZHJtY2dycCkpCisJCWRybWNncnAt PmRldl9yZXNvdXJjZXNbZGV2SWR4XS0+Ym9fc3RhdHNfdG90YWxfYWxsb2NhdGVkCisJCQktPSAo czY0KXNpemU7CisJbXV0ZXhfdW5sb2NrKCZrbm93bl9kcm1jZ3JwX2RldnNbZGV2SWR4XS0+bXV0 ZXgpOworfQorRVhQT1JUX1NZTUJPTChkcm1jZ3JwX3VuY2hnX2JvX2FsbG9jKTsKLS0gCjIuMjEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs