From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: [RFC PATCH v3 04/11] drm, cgroup: Add total GEM buffer allocation limit Date: Wed, 26 Jun 2019 11:05:15 -0400 Message-ID: <20190626150522.11618-5-Kenny.Ho@amd.com> References: <20190626150522.11618-1-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190626150522.11618-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, cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, tj@kernel.org, alexander.deucher@amd.com, christian.koenig@amd.com, joseph.greathouse@amd.com, jsparks@cray.com, lkaplan@cray.com Cc: Kenny Ho VGhlIGRybSByZXNvdXJjZSBiZWluZyBtZWFzdXJlZCBhbmQgbGltaXRlZCBoZXJlIGlzIHRoZSBH RU0gYnVmZmVyCm9iamVjdHMuICBVc2VyIGFwcGxpY2F0aW9ucyBhbGxvY2F0ZSBhbmQgZnJlZSB0 aGVzZSBidWZmZXJzLiAgSW4KYWRkaXRpb24sIGEgcHJvY2VzcyBjYW4gYWxsb2NhdGUgYSBidWZm ZXIgYW5kIHNoYXJlIGl0IHdpdGggYW5vdGhlcgpwcm9jZXNzLiAgVGhlIGNvbnN1bWVyIG9mIGEg c2hhcmVkIGJ1ZmZlciBjYW4gYWxzbyBvdXRsaXZlIHRoZQphbGxvY2F0b3Igb2YgdGhlIGJ1ZmZl ci4KCkZvciB0aGUgcHVycG9zZSBvZiBjZ3JvdXAgYWNjb3VudGluZyBhbmQgbGltaXRpbmcsIG93 bmVyc2hpcCBvZiB0aGUKYnVmZmVyIGlzIGRlZW1lZCB0byBiZSB0aGUgY2dyb3VwIGZvciB3aGlj aCB0aGUgYWxsb2NhdGluZyBwcm9jZXNzCmJlbG9uZ3MgdG8uICBUaGVyZSBpcyBvbmUgY2dyb3Vw IGxpbWl0IHBlciBkcm0gZGV2aWNlLgoKSW4gb3JkZXIgdG8gcHJldmVudCB0aGUgYnVmZmVyIG91 dGxpdmluZyB0aGUgY2dyb3VwIHRoYXQgb3ducyBpdCwgYQpwcm9jZXNzIGlzIHByZXZlbnRlZCBm cm9tIGltcG9ydGluZyBidWZmZXJzIHRoYXQgYXJlIG5vdCBvd24gYnkgdGhlCnByb2Nlc3MnIGNn cm91cCBvciB0aGUgYW5jZXN0b3JzIG9mIHRoZSBwcm9jZXNzJyBjZ3JvdXAuICBJbiBvdGhlcgp3 b3JkcywgaW4gb3JkZXIgZm9yIGEgYnVmZmVyIHRvIGJlIHNoYXJlZCBiZXR3ZWVuIHR3byBjZ3Jv dXBzLCB0aGUKYnVmZmVyIG11c3QgYmUgY3JlYXRlZCBieSB0aGUgY29tbW9uIGFuY2VzdG9ycyBv ZiB0aGUgY2dyb3Vwcy4KCmRybS5idWZmZXIuc3RhdHMKICAgICAgICBBIHJlYWQtb25seSBmbGF0 LWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9uIGFsbCBjZ3JvdXBzLiAgRWFjaAogICAgICAgIGVu dHJ5IGlzIGtleWVkIGJ5IHRoZSBkcm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuCgogICAgICAgIFRv dGFsIEdFTSBidWZmZXIgYWxsb2NhdGlvbiBpbiBieXRlcy4KCmRybS5idWZmZXIuZGVmYXVsdAog ICAgICAgIEEgcmVhZC1vbmx5IGZsYXQta2V5ZWQgZmlsZSB3aGljaCBleGlzdHMgb24gdGhlIHJv b3QgY2dyb3VwLgogICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2Un cyBtYWpvcjptaW5vci4KCiAgICAgICAgRGVmYXVsdCBsaW1pdHMgb24gdGhlIHRvdGFsIEdFTSBi dWZmZXIgYWxsb2NhdGlvbiBpbiBieXRlcy4KCmRybS5idWZmZXIubWF4CiAgICAgICAgQSByZWFk LXdyaXRlIGZsYXQta2V5ZWQgZmlsZSB3aGljaCBleGlzdHMgb24gYWxsIGNncm91cHMuICBFYWNo CiAgICAgICAgZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2UncyBtYWpvcjptaW5vci4K CiAgICAgICAgUGVyIGRldmljZSBsaW1pdHMgb24gdGhlIHRvdGFsIEdFTSBidWZmZXIgYWxsb2Nh dGlvbiBpbiBieXRlLgogICAgICAgIFRoaXMgaXMgYSBoYXJkIGxpbWl0LiAgQXR0ZW1wdHMgaW4g YWxsb2NhdGluZyBiZXlvbmQgdGhlIGNncm91cAogICAgICAgIGxpbWl0IHdpbGwgcmVzdWx0IGlu IEVOT01FTS4gIFNob3J0aGFuZCB1bmRlcnN0b29kIGJ5IG1lbXBhcnNlCiAgICAgICAgKHN1Y2gg YXMgaywgbSwgZykgY2FuIGJlIHVzZWQuCgogICAgICAgIFNldCBhbGxvY2F0aW9uIGxpbWl0IGZv ciAvZGV2L2RyaS9jYXJkMSB0byAxR0IKICAgICAgICBlY2hvICIyMjY6MSAxZyIgPiBkcm0uYnVm ZmVyLnRvdGFsLm1heAoKICAgICAgICBTZXQgYWxsb2NhdGlvbiBsaW1pdCBmb3IgL2Rldi9kcmkv Y2FyZDAgdG8gNTEyTUIKICAgICAgICBlY2hvICIyMjY6MCA1MTJtIiA+IGRybS5idWZmZXIudG90 YWwubWF4CgpDaGFuZ2UtSWQ6IEk0YzI0OWQwNmQ0NWVjNzA5ZDY0ODFkNGNiZTg3YzUxNjg1NDVj NWQwClNpZ25lZC1vZmYtYnk6IEtlbm55IEhvIDxLZW5ueS5Ib0BhbWQuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyB8ICAgNCArCiBkcml2ZXJzL2dw dS9kcm0vZHJtX2dlbS5jICAgICAgICAgICAgICAgICAgfCAgIDggKwogZHJpdmVycy9ncHUvZHJt L2RybV9wcmltZS5jICAgICAgICAgICAgICAgIHwgICA5ICsKIGluY2x1ZGUvZHJtL2RybV9jZ3Jv dXAuaCAgICAgICAgICAgICAgICAgICB8ICAzNCArKy0KIGluY2x1ZGUvZHJtL2RybV9nZW0uaCAg ICAgICAgICAgICAgICAgICAgICB8ICAxMSArCiBpbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaCAg ICAgICAgICAgICAgICAgfCAgIDIgKwoga2VybmVsL2Nncm91cC9kcm0uYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAz ODcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmMKaW5kZXggOTNiMmM1YTQ4YTcxLi5iNGMwNzhiN2FkNjMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKQEAgLTM0LDYgKzM0 LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9jYWNoZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fY2dyb3VwLmg+ CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3RyYWNlLmgiCiAjaW5jbHVk ZSAiYW1kZ3B1X2FtZGtmZC5oIgpAQCAtNDQ2LDYgKzQ0Nyw5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2JvX2RvX2NyZWF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIWFtZGdwdV9i b192YWxpZGF0ZV9zaXplKGFkZXYsIHNpemUsIGJwLT5kb21haW4pKQogCQlyZXR1cm4gLUVOT01F TTsKIAorCWlmICghZHJtY2dycF9ib19jYW5fYWxsb2NhdGUoY3VycmVudCwgYWRldi0+ZGRldiwg c2l6ZSkpCisJCXJldHVybiAtRU5PTUVNOworCiAJKmJvX3B0ciA9IE5VTEw7CiAKIAlhY2Nfc2l6 ZSA9IHR0bV9ib19kbWFfYWNjX3NpemUoJmFkZXYtPm1tYW4uYmRldiwgc2l6ZSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5j CmluZGV4IDZhODBkYjA3N2RjNi4uZTIwYzEwMzRiZjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKQEAgLTM3LDEw ICszNywxMiBAQAogI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgv ZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4L21lbV9lbmNyeXB0Lmg+CisjaW5jbHVkZSA8bGlu dXgvY2dyb3VwX2RybS5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV92bWFfbWFuYWdlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9wcmludC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY2dyb3VwLmg+CiAjaW5jbHVkZSAiZHJt X2ludGVybmFsLmgiCiAKIC8qKiBAZmlsZSBkcm1fZ2VtLmMKQEAgLTE1NCw2ICsxNTYsOSBAQCB2 b2lkIGRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CW9iai0+aGFuZGxlX2NvdW50ID0gMDsKIAlvYmotPnNpemUgPSBzaXplOwogCWRybV92bWFfbm9k ZV9yZXNldCgmb2JqLT52bWFfbm9kZSk7CisKKwlvYmotPmRybWNncnAgPSBnZXRfZHJtY2dycChj dXJyZW50KTsKKwlkcm1jZ3JwX2NoZ19ib19hbGxvYyhvYmotPmRybWNncnAsIGRldiwgc2l6ZSk7 CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdCk7CiAKQEAgLTgw NCw2ICs4MDksOSBAQCBkcm1fZ2VtX29iamVjdF9yZWxlYXNlKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKQogCWlmIChvYmotPmZpbHApCiAJCWZwdXQob2JqLT5maWxwKTsKIAorCWRybWNncnBf dW5jaGdfYm9fYWxsb2Mob2JqLT5kcm1jZ3JwLCBvYmotPmRldiwgb2JqLT5zaXplKTsKKwlwdXRf ZHJtY2dycChvYmotPmRybWNncnApOworCiAJZHJtX2dlbV9mcmVlX21tYXBfb2Zmc2V0KG9iaik7 CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X3JlbGVhc2UpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5j CmluZGV4IDIzMWUzZjZkNWY0MS4uZWViNjEyMTE2ODEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3ByaW1lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCkBAIC0z Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9wcmltZS5oPgogI2luY2x1ZGUgPGRybS9k cm1fZ2VtLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Nncm91 cC5oPgogCiAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCiAKQEAgLTc5NCw2ICs3OTUsNyBAQCBp bnQgZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHsK IAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZjsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsK KwlzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCA9IGRybWNncnBfZnJvbShjdXJyZW50KTsKIAlpbnQg cmV0OwogCiAJZG1hX2J1ZiA9IGRtYV9idWZfZ2V0KHByaW1lX2ZkKTsKQEAgLTgxOCw2ICs4MjAs MTMgQEAgaW50IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKKwkvKiBvbmx5IGFsbG93IGJvIGZyb20gdGhl IHNhbWUgY2dyb3VwIG9yIGl0cyBhbmNlc3RvciB0byBiZSBpbXBvcnRlZCAqLworCWlmIChkcm1j Z3JwICE9IE5VTEwgJiYKKwkJCSFkcm1jZ3JwX2lzX3NlbGZfb3JfYW5jZXN0b3IoZHJtY2dycCwg b2JqLT5kcm1jZ3JwKSkgeworCQlyZXQgPSAtRUFDQ0VTOworCQlnb3RvIG91dF91bmxvY2s7CisJ fQorCiAJaWYgKG9iai0+ZG1hX2J1ZikgewogCQlXQVJOX09OKG9iai0+ZG1hX2J1ZiAhPSBkbWFf YnVmKTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oIGIv aW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCmluZGV4IGRkYjllYWI2NDM2MC4uODcxMWI3YzVmN2Jm IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY2dyb3VwLmgKKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2Nncm91cC5oCkBAIC00LDEyICs0LDIwIEBACiAjaWZuZGVmIF9fRFJNX0NHUk9VUF9IX18K ICNkZWZpbmUgX19EUk1fQ0dST1VQX0hfXwogCisjaW5jbHVkZSA8bGludXgvY2dyb3VwX2RybS5o PgorCiAjaWZkZWYgQ09ORklHX0NHUk9VUF9EUk0KIAogaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2 aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXZpY2UpOwotCiBpbnQgZHJtY2dycF91bnJlZ2lzdGVy X2RldmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2aWNlKTsKLQorYm9vbCBkcm1jZ3JwX2lzX3Nl bGZfb3JfYW5jZXN0b3Ioc3RydWN0IGRybWNncnAgKnNlbGYsCisJCXN0cnVjdCBkcm1jZ3JwICpy ZWxhdGl2ZSk7Cit2b2lkIGRybWNncnBfY2hnX2JvX2FsbG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1j Z3JwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXplX3Qgc2l6ZSk7Cit2b2lkIGRybWNn cnBfdW5jaGdfYm9fYWxsb2Moc3RydWN0IGRybWNncnAgKmRybWNncnAsIHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCXNpemVfdCBzaXplKTsKK2Jvb2wgZHJtY2dycF9ib19jYW5fYWxsb2NhdGUo c3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXpl X3Qgc2l6ZSk7CiAjZWxzZQogc3RhdGljIGlubGluZSBpbnQgZHJtY2dycF9yZWdpc3Rlcl9kZXZp Y2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldmljZSkKIHsKQEAgLTIwLDUgKzI4LDI3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGRybWNncnBfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldmljZSkKIHsKIAlyZXR1cm4gMDsKIH0KKworc3RhdGljIGlubGluZSBib29sIGRybWNncnBf aXNfc2VsZl9vcl9hbmNlc3RvcihzdHJ1Y3QgZHJtY2dycCAqc2VsZiwKKwkJc3RydWN0IGRybWNn cnAgKnJlbGF0aXZlKQoreworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSB2b2lk IGRybWNncnBfY2hnX2JvX2FsbG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLAorCQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAlzaXplX3Qgc2l6ZSkKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lk IGRybWNncnBfdW5jaGdfYm9fYWxsb2Moc3RydWN0IGRybWNncnAgKmRybWNncnAsCisJCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCXNpemVfdCBzaXplKQoreworfQorCitzdGF0aWMgaW5saW5lIGJv b2wgZHJtY2dycF9ib19jYW5fYWxsb2NhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAorCQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAlzaXplX3Qgc2l6ZSkKK3sKKwlyZXR1cm4gdHJ1ZTsKK30K ICNlbmRpZiAvKiBDT05GSUdfQ0dST1VQX0RSTSAqLwogI2VuZGlmIC8qIF9fRFJNX0NHUk9VUF9I X18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9nZW0uaCBiL2luY2x1ZGUvZHJtL2Ry bV9nZW0uaAppbmRleCBjOTU3Mjc0MjUyODQuLjA5ZDFjNjlhM2YwYyAxMDA2NDQKLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2dlbS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9nZW0uaApAQCAtMjcyLDYg KzI3MiwxNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgewogCSAqCiAJICovCiAJY29uc3Qgc3Ry dWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzICpmdW5jczsKKworCS8qKgorCSAqIEBkcm1jZ3JwOgor CSAqCisJICogRFJNIGNncm91cCB0aGlzIEdFTSBvYmplY3QgYmVsb25ncyB0by4KKwkgKgorCSAq IFRoaXMgaXMgdXNlZCB0byB0cmFjayBhbmQgbGltaXQgdGhlIGFtb3VudCBvZiBHRU0gb2JqZWN0 cyBhIHVzZXIKKwkgKiBjYW4gYWxsb2NhdGUuICBTaW5jZSBHRU0gb2JqZWN0cyBjYW4gYmUgc2hh cmVkLCB0aGlzIGlzIGFsc28gdXNlZAorCSAqIHRvIGVuc3VyZSBHRU0gb2JqZWN0cyBhcmUgb25s eSBzaGFyZWQgd2l0aGluIHRoZSBzYW1lIGNncm91cC4KKwkgKi8KKwlzdHJ1Y3QgZHJtY2dycCAq ZHJtY2dycDsKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJt LmggYi9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaAppbmRleCAyNzQ5N2Y3ODZjOTMuLmVmYTAx OTY2NmYxYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJtLmgKKysrIGIvaW5j bHVkZS9saW51eC9jZ3JvdXBfZHJtLmgKQEAgLTE1LDYgKzE1LDggQEAKIAogc3RydWN0IGRybWNn cnBfZGV2aWNlX3Jlc291cmNlIHsKIAkvKiBmb3IgcGVyIGRldmljZSBzdGF0cyAqLworCXM2NAkJ CWJvX3N0YXRzX3RvdGFsX2FsbG9jYXRlZDsKKwlzNjQJCQlib19saW1pdHNfdG90YWxfYWxsb2Nh dGVkOwogfTsKIAogc3RydWN0IGRybWNncnAgewpkaWZmIC0tZ2l0IGEva2VybmVsL2Nncm91cC9k cm0uYyBiL2tlcm5lbC9jZ3JvdXAvZHJtLmMKaW5kZXggN2RhNmUwZDkzOTkxLi5jZmMxZmU3NGRj YTMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9jZ3JvdXAvZHJtLmMKKysrIGIva2VybmVsL2Nncm91cC9k cm0uYwpAQCAtOSw2ICs5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9jZ3JvdXBfZHJtLmg+CiAjaW5j bHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX2lvY3RsLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jZ3JvdXAuaD4KIAogc3Rh dGljIERFRklORV9NVVRFWChkcm1jZ3JwX211dGV4KTsKQEAgLTE2LDYgKzE3LDI2IEBAIHN0YXRp YyBERUZJTkVfTVVURVgoZHJtY2dycF9tdXRleCk7CiBzdHJ1Y3QgZHJtY2dycF9kZXZpY2Ugewog CXN0cnVjdCBkcm1fZGV2aWNlCSpkZXY7CiAJc3RydWN0IG11dGV4CQltdXRleDsKKworCXM2NAkJ CWJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdDsKK307CisKKyNkZWZpbmUgRFJNQ0df Q1RGX1BSSVZfU0laRSAzCisjZGVmaW5lIERSTUNHX0NURl9QUklWX01BU0sgR0VOTUFTSygoRFJN Q0dfQ1RGX1BSSVZfU0laRSAtIDEpLCAwKQorI2RlZmluZSBEUk1DR19DVEZfUFJJVihyZXNfdHlw ZSwgZl90eXBlKSAgKChyZXNfdHlwZSkgPDxcCisJCURSTUNHX0NURl9QUklWX1NJWkUgfCAoZl90 eXBlKSkKKyNkZWZpbmUgRFJNQ0dfQ1RGX1BSSVYyUkVTVFlQRShwcml2KSAoKHByaXYpID4+IERS TUNHX0NURl9QUklWX1NJWkUpCisjZGVmaW5lIERSTUNHX0NURl9QUklWMkZUWVBFKHByaXYpICgo cHJpdikgJiBEUk1DR19DVEZfUFJJVl9NQVNLKQorCisKK2VudW0gZHJtY2dycF9yZXNfdHlwZSB7 CisJRFJNQ0dSUF9UWVBFX0JPX1RPVEFMLAorfTsKKworZW51bSBkcm1jZ3JwX2ZpbGVfdHlwZSB7 CisJRFJNQ0dSUF9GVFlQRV9TVEFUUywKKwlEUk1DR1JQX0ZUWVBFX0xJTUlULAorCURSTUNHUlBf RlRZUEVfREVGQVVMVCwKIH07CiAKIC8qIGluZGV4ZWQgYnkgZHJtX21pbm9yIGZvciBhY2Nlc3Mg c3BlZWQgKi8KQEAgLTU0LDYgKzc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGluaXRfZHJtY2dy cF9zaW5nbGUoc3RydWN0IGRybWNncnAgKmRybWNncnAsIGludCBtaW5vcikKIAl9CiAKIAkvKiBz ZXQgZGVmYXVsdHMgaGVyZSAqLworCWlmIChrbm93bl9kcm1jZ3JwX2RldnNbbWlub3JdICE9IE5V TEwpIHsKKwkJZGRyLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkID0KKwkJICBrbm93bl9kcm1j Z3JwX2RldnNbbWlub3JdLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQ7CisJfQog CiAJcmV0dXJuIDA7CiB9CkBAIC0xMDAsNyArMTI1LDIyNSBAQCBkcm1jZ3JwX2Nzc19hbGxvYyhz dHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcykKIAlyZXR1cm4gJmRybWNncnAt PmNzczsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBfcHJpbnRfc3RhdHMoc3RydWN0 IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIsCisJCXN0cnVjdCBzZXFfZmlsZSAqc2YsIGVu dW0gZHJtY2dycF9yZXNfdHlwZSB0eXBlKQoreworCWlmIChkZHIgPT0gTlVMTCkgeworCQlzZXFf cHV0cyhzZiwgIlxuIik7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNl IERSTUNHUlBfVFlQRV9CT19UT1RBTDoKKwkJc2VxX3ByaW50ZihzZiwgIiVsbGRcbiIsIGRkci0+ Ym9fc3RhdHNfdG90YWxfYWxsb2NhdGVkKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJc2VxX3B1 dHMoc2YsICJcbiIpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1j Z3JwX3ByaW50X2xpbWl0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkciwKKwkJ c3RydWN0IHNlcV9maWxlICpzZiwgZW51bSBkcm1jZ3JwX3Jlc190eXBlIHR5cGUpCit7CisJaWYg KGRkciA9PSBOVUxMKSB7CisJCXNlcV9wdXRzKHNmLCAiXG4iKTsKKwkJcmV0dXJuOworCX0KKwor CXN3aXRjaCAodHlwZSkgeworCWNhc2UgRFJNQ0dSUF9UWVBFX0JPX1RPVEFMOgorCQlzZXFfcHJp bnRmKHNmLCAiJWxsZFxuIiwgZGRyLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkKTsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJc2VxX3B1dHMoc2YsICJcbiIpOworCQlicmVhazsKKwl9Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50X2RlZmF1bHQoc3RydWN0IGRybWNncnBf ZGV2aWNlICpkZGV2LAorCQlzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBlbnVtIGRybWNncnBfcmVzX3R5 cGUgdHlwZSkKK3sKKwlpZiAoZGRldiA9PSBOVUxMKSB7CisJCXNlcV9wdXRzKHNmLCAiXG4iKTsK KwkJcmV0dXJuOworCX0KKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgRFJNQ0dSUF9UWVBFX0JP X1RPVEFMOgorCQlzZXFfcHJpbnRmKHNmLCAiJWxsZFxuIiwKKwkJCQlkZGV2LT5ib19saW1pdHNf dG90YWxfYWxsb2NhdGVkX2RlZmF1bHQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlzZXFfcHV0 cyhzZiwgIlxuIik7CisJCWJyZWFrOworCX0KK30KKworaW50IGRybWNncnBfYm9fc2hvdyhzdHJ1 Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KQoreworCXN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwID0g Y3NzX2RybWNncnAoc2VxX2NzcyhzZikpOworCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJj ZSAqZGRyID0gTlVMTDsKKwllbnVtIGRybWNncnBfZmlsZV90eXBlIGZfdHlwZSA9CisJCURSTUNH X0NURl9QUklWMkZUWVBFKHNlcV9jZnQoc2YpLT5wcml2YXRlKTsKKwllbnVtIGRybWNncnBfcmVz X3R5cGUgdHlwZSA9CisJCURSTUNHX0NURl9QUklWMlJFU1RZUEUoc2VxX2NmdChzZiktPnByaXZh dGUpOworCXN0cnVjdCBkcm1jZ3JwX2RldmljZSAqZGRldjsKKwlpbnQgaTsKKworCWZvciAoaSA9 IDA7IGkgPD0gbWF4X21pbm9yOyBpKyspIHsKKwkJZGRyID0gZHJtY2dycC0+ZGV2X3Jlc291cmNl c1tpXTsKKwkJZGRldiA9IGtub3duX2RybWNncnBfZGV2c1tpXTsKKworCQlzZXFfcHJpbnRmKHNm LCAiJWQ6JWQgIiwgRFJNX01BSk9SLCBpKTsKKworCQlzd2l0Y2ggKGZfdHlwZSkgeworCQljYXNl IERSTUNHUlBfRlRZUEVfU1RBVFM6CisJCQlkcm1jZ3JwX3ByaW50X3N0YXRzKGRkciwgc2YsIHR5 cGUpOworCQkJYnJlYWs7CisJCWNhc2UgRFJNQ0dSUF9GVFlQRV9MSU1JVDoKKwkJCWRybWNncnBf cHJpbnRfbGltaXRzKGRkciwgc2YsIHR5cGUpOworCQkJYnJlYWs7CisJCWNhc2UgRFJNQ0dSUF9G VFlQRV9ERUZBVUxUOgorCQkJZHJtY2dycF9wcmludF9kZWZhdWx0KGRkZXYsIHNmLCB0eXBlKTsK KwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJc2VxX3B1dHMoc2YsICJcbiIpOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBf cHJfY2Z0X2Vycihjb25zdCBzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwKKwkJY29uc3QgY2hhciAq Y2Z0X25hbWUsIGludCBtaW5vcikKK3sKKwlwcl9lcnIoImRybWNncnA6IGVycm9yIHBhcnNpbmcg JXMsIG1pbm9yICVkICIsCisJCQljZnRfbmFtZSwgbWlub3IpOworCXByX2NvbnRfY2dyb3VwX25h bWUoZHJtY2dycC0+Y3NzLmNncm91cCk7CisJcHJfY29udCgiXG4iKTsKK30KKworc3RhdGljIGlu bGluZSBpbnQgZHJtY2dycF9wcm9jZXNzX2xpbWl0X3ZhbChjaGFyICpzdmFsLCBib29sIGlzX21l bSwKKwkJCXM2NCBkZWZfdmFsLCBzNjQgbWF4X3ZhbCwgczY0ICpyZXRfdmFsKQoreworCWludCBy YyA9IHN0cmNtcCgibWF4Iiwgc3ZhbCk7CisKKworCWlmICghcmMpCisJCSpyZXRfdmFsID0gbWF4 X3ZhbDsKKwllbHNlIHsKKwkJcmMgPSBzdHJjbXAoImRlZmF1bHQiLCBzdmFsKTsKKworCQlpZiAo IXJjKQorCQkJKnJldF92YWwgPSBkZWZfdmFsOworCX0KKworCWlmIChyYykgeworCQlpZiAoaXNf bWVtKSB7CisJCQkqcmV0X3ZhbCA9IG1lbXBhcnNlKHN2YWwsIE5VTEwpOworCQkJcmMgPSAwOwor CQl9IGVsc2UgeworCQkJcmMgPSBrc3RydG9sbChzdmFsLCAwLCByZXRfdmFsKTsKKwkJfQorCX0K KworCWlmICgqcmV0X3ZhbCA+IG1heF92YWwpCisJCSpyZXRfdmFsID0gbWF4X3ZhbDsKKworCXJl dHVybiByYzsKK30KKworc3NpemVfdCBkcm1jZ3JwX2JvX2xpbWl0X3dyaXRlKHN0cnVjdCBrZXJu ZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLAorCQlzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2Zm KQoreworCXN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwID0gY3NzX2RybWNncnAob2ZfY3NzKG9mKSk7 CisJc3RydWN0IGRybWNncnAgKnBhcmVudCA9IHBhcmVudF9kcm1jZ3JwKGRybWNncnApOworCWVu dW0gZHJtY2dycF9yZXNfdHlwZSB0eXBlID0KKwkJRFJNQ0dfQ1RGX1BSSVYyUkVTVFlQRShvZl9j ZnQob2YpLT5wcml2YXRlKTsKKwljaGFyICpjZnRfbmFtZSA9IG9mX2NmdChvZiktPm5hbWU7CisJ Y2hhciAqbGltaXRzID0gc3Ryc3RyaXAoYnVmKTsKKwlzdHJ1Y3QgZHJtY2dycF9kZXZpY2UgKmRk ZXY7CisJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHI7CisJY2hhciAqbGluZTsK KwljaGFyIHNhdHRyWzI1Nl07CisJczY0IHZhbDsKKwlzNjQgcF9tYXg7CisJaW50IHJjOworCWlu dCBtaW5vcjsKKworCXdoaWxlIChsaW1pdHMgIT0gTlVMTCkgeworCQlsaW5lID0gIHN0cnNlcCgm bGltaXRzLCAiXG4iKTsKKworCQlpZiAoc3NjYW5mKGxpbmUsCisJCQlfX3N0cmluZ2lmeShEUk1f TUFKT1IpIjoldSAlMjU1W15cdFxuXSIsCisJCQkJCQkJJm1pbm9yLCBzYXR0cikgIT0gMikgewor CQkJcHJfZXJyKCJkcm1jZ3JwOiBlcnJvciBwYXJzaW5nICVzICIsIGNmdF9uYW1lKTsKKwkJCXBy X2NvbnRfY2dyb3VwX25hbWUoZHJtY2dycC0+Y3NzLmNncm91cCk7CisJCQlwcl9jb250KCJcbiIp OworCisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChtaW5vciA8IDAgfHwgbWlub3IgPiBtYXhf bWlub3IpIHsKKwkJCXByX2VycigiZHJtY2dycDogaW52YWxpZCBtaW5vciAlZCBmb3IgJXMgIiwK KwkJCQkJbWlub3IsIGNmdF9uYW1lKTsKKwkJCXByX2NvbnRfY2dyb3VwX25hbWUoZHJtY2dycC0+ Y3NzLmNncm91cCk7CisJCQlwcl9jb250KCJcbiIpOworCisJCQljb250aW51ZTsKKwkJfQorCisJ CWRkciA9IGRybWNncnAtPmRldl9yZXNvdXJjZXNbbWlub3JdOworCQlkZGV2ID0ga25vd25fZHJt Y2dycF9kZXZzW21pbm9yXTsKKwkJc3dpdGNoICh0eXBlKSB7CisJCWNhc2UgRFJNQ0dSUF9UWVBF X0JPX1RPVEFMOgorCQkJcF9tYXggPSBwYXJlbnQgPT0gTlVMTCA/IFM2NF9NQVggOgorCQkJCXBh cmVudC0+ZGV2X3Jlc291cmNlc1ttaW5vcl0tPgorCQkJCWJvX2xpbWl0c190b3RhbF9hbGxvY2F0 ZWQ7CisKKwkJCXJjID0gZHJtY2dycF9wcm9jZXNzX2xpbWl0X3ZhbChzYXR0ciwgdHJ1ZSwKKwkJ CQlkZGV2LT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQsCisJCQkJcF9tYXgsCisJ CQkJJnZhbCk7CisKKwkJCWlmIChyYyB8fCB2YWwgPCAwKSB7CisJCQkJZHJtY2dycF9wcl9jZnRf ZXJyKGRybWNncnAsIGNmdF9uYW1lLCBtaW5vcik7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJ CWRkci0+Ym9fbGltaXRzX3RvdGFsX2FsbG9jYXRlZCA9IHZhbDsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gbmJ5dGVzOworfQorCiBzdHJ1Y3Qg Y2Z0eXBlIGZpbGVzW10gPSB7CisJeworCQkubmFtZSA9ICJidWZmZXIudG90YWwuc3RhdHMiLAor CQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCisJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BS SVYoRFJNQ0dSUF9UWVBFX0JPX1RPVEFMLAorCQkJCQkJRFJNQ0dSUF9GVFlQRV9TVEFUUyksCisJ fSwKKwl7CisJCS5uYW1lID0gImJ1ZmZlci50b3RhbC5kZWZhdWx0IiwKKwkJLnNlcV9zaG93ID0g ZHJtY2dycF9ib19zaG93LAorCQkuZmxhZ3MgPSBDRlRZUEVfT05MWV9PTl9ST09ULAorCQkucHJp dmF0ZSA9IERSTUNHX0NURl9QUklWKERSTUNHUlBfVFlQRV9CT19UT1RBTCwKKwkJCQkJCURSTUNH UlBfRlRZUEVfREVGQVVMVCksCisJfSwKKwl7CisJCS5uYW1lID0gImJ1ZmZlci50b3RhbC5tYXgi LAorCQkud3JpdGUgPSBkcm1jZ3JwX2JvX2xpbWl0X3dyaXRlLAorCQkuc2VxX3Nob3cgPSBkcm1j Z3JwX2JvX3Nob3csCisJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJNQ0dSUF9UWVBFX0JP X1RPVEFMLAorCQkJCQkJRFJNQ0dSUF9GVFlQRV9MSU1JVCksCisJfSwKIAl7IH0JLyogdGVybWlu YXRlICovCiB9OwogCkBAIC0xMjEsNiArMzY0LDggQEAgaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2 aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJZGRldi0+ ZGV2ID0gZGV2OworCWRkZXYtPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdCA9IFM2 NF9NQVg7CisKIAltdXRleF9pbml0KCZkZGV2LT5tdXRleCk7CiAKIAltdXRleF9sb2NrKCZkcm1j Z3JwX211dGV4KTsKQEAgLTE1NiwzICs0MDEsNzkgQEAgaW50IGRybWNncnBfdW5yZWdpc3Rlcl9k ZXZpY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1C T0woZHJtY2dycF91bnJlZ2lzdGVyX2RldmljZSk7CisKK2Jvb2wgZHJtY2dycF9pc19zZWxmX29y X2FuY2VzdG9yKHN0cnVjdCBkcm1jZ3JwICpzZWxmLCBzdHJ1Y3QgZHJtY2dycCAqcmVsYXRpdmUp Cit7CisJZm9yICg7IHNlbGYgIT0gTlVMTDsgc2VsZiA9IHBhcmVudF9kcm1jZ3JwKHNlbGYpKQor CQlpZiAoc2VsZiA9PSByZWxhdGl2ZSkKKwkJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNl OworfQorRVhQT1JUX1NZTUJPTChkcm1jZ3JwX2lzX3NlbGZfb3JfYW5jZXN0b3IpOworCitib29s IGRybWNncnBfYm9fY2FuX2FsbG9jYXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGRybWNncnAgKmRy bWNncnAgPSBkcm1jZ3JwX2Zyb20odGFzayk7CisJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291 cmNlICpkZHI7CisJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkOworCWludCBkZXZJ ZHggPSBkZXYtPnByaW1hcnktPmluZGV4OworCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKKwlzNjQgZGVs dGEgPSAwOworCisJaWYgKGRybWNncnAgPT0gTlVMTCB8fCBkcm1jZ3JwID09IHJvb3RfZHJtY2dy cCkKKwkJcmV0dXJuIHRydWU7CisKKwlkZHIgPSBkcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2Rldklk eF07CisJbXV0ZXhfbG9jaygma25vd25fZHJtY2dycF9kZXZzW2RldklkeF0tPm11dGV4KTsKKwlm b3IgKCA7IGRybWNncnAgIT0gcm9vdF9kcm1jZ3JwOyBkcm1jZ3JwID0gcGFyZW50X2RybWNncnAo ZHJtY2dycCkpIHsKKwkJZCA9IGRybWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XTsKKwkJZGVs dGEgPSBkLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkIC0KKwkJCQlkLT5ib19zdGF0c190b3Rh bF9hbGxvY2F0ZWQ7CisKKwkJaWYgKGRlbHRhIDw9IDAgfHwgc2l6ZSA+IGRlbHRhKSB7CisJCQly ZXN1bHQgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisJfQorCW11dGV4X3VubG9jaygma25vd25f ZHJtY2dycF9kZXZzW2RldklkeF0tPm11dGV4KTsKKworCXJldHVybiByZXN1bHQ7Cit9CitFWFBP UlRfU1lNQk9MKGRybWNncnBfYm9fY2FuX2FsbG9jYXRlKTsKKwordm9pZCBkcm1jZ3JwX2NoZ19i b19hbGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwK KwkJc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHI7 CisJaW50IGRldklkeCA9IGRldi0+cHJpbWFyeS0+aW5kZXg7CisKKwlpZiAoZHJtY2dycCA9PSBO VUxMIHx8IGtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdID09IE5VTEwpCisJCXJldHVybjsKKwor CW11dGV4X2xvY2soJmtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT5tdXRleCk7CisJZm9yICgg OyBkcm1jZ3JwICE9IE5VTEw7IGRybWNncnAgPSBwYXJlbnRfZHJtY2dycChkcm1jZ3JwKSkgewor CQlkZHIgPSBkcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2RldklkeF07CisKKwkJZGRyLT5ib19zdGF0 c190b3RhbF9hbGxvY2F0ZWQgKz0gKHM2NClzaXplOworCX0KKwltdXRleF91bmxvY2soJmtub3du X2RybWNncnBfZGV2c1tkZXZJZHhdLT5tdXRleCk7Cit9CitFWFBPUlRfU1lNQk9MKGRybWNncnBf Y2hnX2JvX2FsbG9jKTsKKwordm9pZCBkcm1jZ3JwX3VuY2hnX2JvX2FsbG9jKHN0cnVjdCBkcm1j Z3JwICpkcm1jZ3JwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXplX3Qgc2l6ZSkKK3sK KwlpbnQgZGV2SWR4ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsKKworCWlmIChkcm1jZ3JwID09IE5V TEwgfHwga25vd25fZHJtY2dycF9kZXZzW2RldklkeF0gPT0gTlVMTCkKKwkJcmV0dXJuOworCisJ bXV0ZXhfbG9jaygma25vd25fZHJtY2dycF9kZXZzW2RldklkeF0tPm11dGV4KTsKKwlmb3IgKCA7 IGRybWNncnAgIT0gTlVMTDsgZHJtY2dycCA9IHBhcmVudF9kcm1jZ3JwKGRybWNncnApKQorCQlk cm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2RldklkeF0tPmJvX3N0YXRzX3RvdGFsX2FsbG9jYXRlZAor CQkJLT0gKHM2NClzaXplOworCW11dGV4X3VubG9jaygma25vd25fZHJtY2dycF9kZXZzW2Rldklk eF0tPm11dGV4KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtY2dycF91bmNoZ19ib19hbGxvYyk7Ci0t IAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==