From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: [RFC PATCH v3 10/11] drm, cgroup: Add soft VRAM limit Date: Wed, 26 Jun 2019 11:05:21 -0400 Message-ID: <20190626150522.11618-11-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 VGhlIGRybSByZXNvdXJjZSBiZWluZyBsaW1pdGVkIGlzIHRoZSBUVE0gKFRyYW5zbGF0aW9uIFRh YmxlIE1hbmFnZXIpCmJ1ZmZlcnMuICBUVE0gbWFuYWdlcyBkaWZmZXJlbnQgdHlwZXMgb2YgbWVt b3J5IHRoYXQgYSBHUFUgbWlnaHQgYWNjZXNzLgpUaGVzZSBtZW1vcnkgdHlwZXMgaW5jbHVkZSBk ZWRpY2F0ZWQgVmlkZW8gUkFNIChWUkFNKSBhbmQgaG9zdC9zeXN0ZW0KbWVtb3J5IGFjY2Vzc2li bGUgdGhyb3VnaCBJT01NVSAoR0FSVC9HVFQpLiAgVFRNIGlzIGN1cnJlbnRseSB1c2VkIGJ5Cm11 bHRpcGxlIGRybSBkcml2ZXJzIChhbWQsIGFzdCwgYm9jaHMsIGNpcnJ1cywgaGlzaWxpY29uLCBt YWdhMjAwLApub3V2ZWF1LCBxeGwsIHZpcnRpbywgdm13Z2Z4LikKClRUTSBidWZmZXJzIGJlbG9u Z2luZyB0byBkcm0gY2dyb3VwcyB1bmRlciBtZW1vcnkgcHJlc3N1cmUgd2lsbCBiZQpzZWxlY3Rl ZCB0byBiZSBldmljdGVkIGZpcnN0LgoKZHJtLm1lbW9yeS5oaWdoCiAgICAgICAgQSByZWFkLXdy aXRlIG5lc3RlZC1rZXllZCBmaWxlIHdoaWNoIGV4aXN0cyBvbiBhbGwgY2dyb3Vwcy4KICAgICAg ICBFYWNoIGVudHJ5IGlzIGtleWVkIGJ5IHRoZSBkcm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuICBU aGUKICAgICAgICBmb2xsb3dpbmcgbmVzdGVkIGtleXMgYXJlIGRlZmluZWQuCgogICAgICAgICAg PT09PSAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogICAgICAgICAgdnJhbSAgICAgICAgIFZpZGVvIFJBTSBzb2Z0IGxpbWl0IGZvciBhIGRybSBk ZXZpY2UgaW4gYnl0ZQogICAgICAgICAgPT09PSAgICAgICAgID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICBSZWFkaW5nIHJldHVybnMgdGhlIGZv bGxvd2luZzo6CgogICAgICAgIDIyNjowIHZyYW09MAogICAgICAgIDIyNjoxIHZyYW09MTc3Njg0 NDgKICAgICAgICAyMjY6MiB2cmFtPTE3NzY4NDQ4Cgpkcm0ubWVtb3J5LmRlZmF1bHQKICAgICAg ICBBIHJlYWQtb25seSBuZXN0ZWQta2V5ZWQgZmlsZSB3aGljaCBleGlzdHMgb24gdGhlIHJvb3Qg Y2dyb3VwLgogICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2UncyBt YWpvcjptaW5vci4gIFRoZQogICAgICAgIGZvbGxvd2luZyBuZXN0ZWQga2V5cyBhcmUgZGVmaW5l ZC4KCiAgICAgICAgICA9PT09ICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogICAgICAgICAgdnJhbSAgICAgICAgIFZpZGVvIFJBTSBkZWZhdWx0IGxpbWl0IGluIGJ5dGUK ICAgICAgICAgID09PT0gICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgog ICAgICAgIFJlYWRpbmcgcmV0dXJucyB0aGUgZm9sbG93aW5nOjoKCiAgICAgICAgMjI2OjAgdnJh bT0wCiAgICAgICAgMjI2OjEgdnJhbT0xNzc2ODQ0OAogICAgICAgIDIyNjoyIHZyYW09MTc3Njg0 NDgKCkNoYW5nZS1JZDogSTc5ODhlMjhhNDUzYjUzMTQwYjQwYTI4YzE3NjIzOWFjYmM4MWQ0OTEK U2lnbmVkLW9mZi1ieTogS2VubnkgSG8gPEtlbm55LkhvQGFtZC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL3R0bS90dG1fYm8uYyB8ICAgNyArKwogaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oICAg ICB8ICAxNSArKysrCiBpbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaCAgIHwgICAyICsKIGtlcm5l bC9jZ3JvdXAvZHJtLmMgICAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f Ym8uYwppbmRleCBmMDZjMmI5ZDhhNGEuLjc5YzUzMGY0YTE5OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3R0bS90dG1fYm8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5j CkBAIC04MDYsMTIgKzgwNiwxOSBAQCBzdGF0aWMgaW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3Ry dWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCiAJc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICpt YW4gPSAmYmRldi0+bWFuW21lbV90eXBlXTsKIAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJv ID0gTlVMTDsKIAlib29sIGxvY2tlZCA9IGZhbHNlOworICAgICAgICBib29sIGNoZWNrX2RybWNn cnA7CiAJdW5zaWduZWQgaTsKIAlpbnQgcmV0OwogCisJY2hlY2tfZHJtY2dycCA9IGRybWNncnBf bWVtX3ByZXNzdXJlX3NjYW4oYmRldiwgbWVtX3R5cGUpOworCiAJc3Bpbl9sb2NrKCZnbG9iLT5s cnVfbG9jayk7CiAJZm9yIChpID0gMDsgaSA8IFRUTV9NQVhfQk9fUFJJT1JJVFk7ICsraSkgewog CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmbWFuLT5scnVbaV0sIGxydSkgeworCQkJaWYgKGNo ZWNrX2RybWNncnAgJiYKKwkJCQkhZHJtY2dycF9tZW1fc2hvdWxkX2V2aWN0KGJvLCBtZW1fdHlw ZSkpCisJCQkJY29udGludWU7CisKIAkJCWlmICghdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dh YmxlKGJvLCBjdHgsICZsb2NrZWQpKQogCQkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fY2dyb3VwLmggYi9pbmNsdWRlL2RybS9kcm1fY2dyb3VwLmgKaW5kZXggOWIx ZGJkNmE0ZWNhLi4zNjBjMWU2YzgwOWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jZ3Jv dXAuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY2dyb3VwLmgKQEAgLTYsNiArNiw3IEBACiAKICNp bmNsdWRlIDxsaW51eC9jZ3JvdXBfZHJtLmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fYXBp Lmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CiAKICNpZmRlZiBDT05GSUdf Q0dST1VQX0RSTQogCkBAIC0yNSw2ICsyNiw4IEBAIHZvaWQgZHJtY2dycF9tZW1fdHJhY2tfbW92 ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKm9sZF9ibywgYm9vbCBldmljdCwKIAkJc3RydWN0 IHR0bV9tZW1fcmVnICpuZXdfbWVtKTsKIHVuc2lnbmVkIGludCBkcm1jZ3JwX2dldF9tZW1fYndf cGVyaW9kX2luX3VzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKTsKIGJvb2wgZHJtY2dy cF9tZW1fY2FuX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pOworYm9vbCBkcm1j Z3JwX21lbV9wcmVzc3VyZV9zY2FuKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1bnNpZ25l ZCB0eXBlKTsKK2Jvb2wgZHJtY2dycF9tZW1fc2hvdWxkX2V2aWN0KHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqdGJvLCB1bnNpZ25lZCB0eXBlKTsKIAogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50 IGRybWNncnBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXZpY2UpCkBAIC04 Miw1ICs4NSwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZHJtY2dycF9tZW1fY2FuX21vdmUoc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pCiB7CiAJcmV0dXJuIHRydWU7CiB9CisKK3N0YXRp YyBpbmxpbmUgYm9vbCBkcm1jZ3JwX21lbV9wcmVzc3VyZV9zY2FuKHN0cnVjdCB0dG1fYm9fZGV2 aWNlICpiZGV2LAorCQl1bnNpZ25lZCB0eXBlKQoreworCXJldHVybiBmYWxzZTsKK30KKworc3Rh dGljIGlubGluZSBib29sIGRybWNncnBfbWVtX3Nob3VsZF9ldmljdChzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKnRibywKKwkJdW5zaWduZWQgdHlwZSkKK3sKKwlyZXR1cm4gdHJ1ZTsKK30KICNl bmRpZiAvKiBDT05GSUdfQ0dST1VQX0RSTSAqLwogI2VuZGlmIC8qIF9fRFJNX0NHUk9VUF9IX18g Ki8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oIGIvaW5jbHVkZS9saW51 eC9jZ3JvdXBfZHJtLmgKaW5kZXggOTQ4MjhkYTIxMDRhLi41MmVmMDJlYWFjNzAgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oCisrKyBiL2luY2x1ZGUvbGludXgvY2dyb3Vw X2RybS5oCkBAIC0zNSw2ICszNSw4IEBAIHN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSB7 CiAKIAlzNjQJCQltZW1fc3RhdHNbVFRNX1BMX1BSSVYrMV07CiAJczY0CQkJbWVtX3BlYWtzW1RU TV9QTF9QUklWKzFdOworCXM2NAkJCW1lbV9oaWdoc1tUVE1fUExfUFJJVisxXTsKKwlib29sCQkJ bWVtX3ByZXNzdXJlW1RUTV9QTF9QUklWKzFdOwogCXM2NAkJCW1lbV9zdGF0c19ldmljdDsKIAog CXM2NAkJCW1lbV9id19zdGF0c19sYXN0X3VwZGF0ZV91czsKZGlmZiAtLWdpdCBhL2tlcm5lbC9j Z3JvdXAvZHJtLmMgYi9rZXJuZWwvY2dyb3VwL2RybS5jCmluZGV4IGJiYzY2MTIyMDBhNC4uMWNl MTNkYjM2Y2U5IDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwL2RybS5jCisrKyBiL2tlcm5lbC9j Z3JvdXAvZHJtLmMKQEAgLTI5LDYgKzI5LDggQEAgc3RydWN0IGRybWNncnBfZGV2aWNlIHsKIAog CXM2NAkJCW1lbV9id19ieXRlc19pbl9wZXJpb2RfZGVmYXVsdDsKIAlzNjQJCQltZW1fYndfYXZn X2J5dGVzX3Blcl91c19kZWZhdWx0OworCisJczY0CQkJbWVtX2hpZ2hzX2RlZmF1bHRbVFRNX1BM X1BSSVYrMV07CiB9OwogCiAjZGVmaW5lIERSTUNHX0NURl9QUklWX1NJWkUgMwpAQCAtMTE0LDYg KzExNiw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGluaXRfZHJtY2dycF9zaW5nbGUoc3RydWN0IGRy bWNncnAgKmRybWNncnAsIGludCBtaW5vcikKIAogCS8qIHNldCBkZWZhdWx0cyBoZXJlICovCiAJ aWYgKGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0gIT0gTlVMTCkgeworCQlpbnQgaTsKKwogCQlk ZHItPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWQgPQogCQkgIGtub3duX2RybWNncnBfZGV2c1tt aW5vcl0tPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdDsKIApAQCAtMTI1LDYgKzEy OSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBpbml0X2RybWNncnBfc2luZ2xlKHN0cnVjdCBkcm1j Z3JwICpkcm1jZ3JwLCBpbnQgbWlub3IpCiAKIAkJZGRyLT5tZW1fYndfbGltaXRzX2F2Z19ieXRl c19wZXJfdXMgPQogCQkgIGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0tPm1lbV9id19hdmdfYnl0 ZXNfcGVyX3VzX2RlZmF1bHQ7CisKKwkJZm9yIChpID0gMDsgaSA8PSBUVE1fUExfUFJJVjsgaSsr KSB7CisJCQlkZHItPm1lbV9oaWdoc1tpXSA9CisJCQlrbm93bl9kcm1jZ3JwX2RldnNbbWlub3Jd LT5tZW1faGlnaHNfZGVmYXVsdFtpXTsKKwkJfQogCX0KIAogCXJldHVybiAwOwpAQCAtMjc0LDYg KzI4MywxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF9wcmludF9saW1pdHMoc3RydWN0 IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIsCiAJY2FzZSBEUk1DR1JQX1RZUEVfQk9fUEVB SzoKIAkJc2VxX3ByaW50ZihzZiwgIiV6dVxuIiwgZGRyLT5ib19saW1pdHNfcGVha19hbGxvY2F0 ZWQpOwogCQlicmVhazsKKwljYXNlIERSTUNHUlBfVFlQRV9NRU06CisJCXNlcV9wcmludGYoc2Ys ICIlcz0lbGxkXG4iLAorCQkJCXR0bV9wbGFjZW1lbnRfbmFtZXNbVFRNX1BMX1ZSQU1dLAorCQkJ CWRkci0+bWVtX2hpZ2hzW1RUTV9QTF9WUkFNXSk7CisJCWJyZWFrOwogCWNhc2UgRFJNQ0dSUF9U WVBFX0JBTkRXSURUSF9QRVJJT0RfQlVSU1Q6CiAJCXNlcV9wcmludGYoc2YsICIlbGxkXG4iLAog CQkJa25vd25fZHJtY2dycF9kZXZzW21pbm9yXS0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXMp OwpAQCAtMzA4LDYgKzMyMiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF9wcmludF9k ZWZhdWx0KHN0cnVjdCBkcm1jZ3JwX2RldmljZSAqZGRldiwKIAkJc2VxX3ByaW50ZihzZiwgIiV6 dVxuIiwKIAkJCQlkZGV2LT5ib19saW1pdHNfcGVha19hbGxvY2F0ZWRfZGVmYXVsdCk7CiAJCWJy ZWFrOworCWNhc2UgRFJNQ0dSUF9UWVBFX01FTToKKwkJc2VxX3ByaW50ZihzZiwgIiVzPSVsbGRc biIsCisJCQkJdHRtX3BsYWNlbWVudF9uYW1lc1tUVE1fUExfVlJBTV0sCisJCQkJZGRldi0+bWVt X2hpZ2hzX2RlZmF1bHRbVFRNX1BMX1ZSQU1dKTsKKwkJYnJlYWs7CiAJY2FzZSBEUk1DR1JQX1RZ UEVfQkFORFdJRFRIX1BFUklPRF9CVVJTVDoKIAkJc2VxX3ByaW50ZihzZiwgIiVsbGRcbiIsCiAJ CQkJZGRldi0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXNfZGVmYXVsdCk7CkBAIC01NTIsNiAr NTcxLDM4IEBAIHNzaXplX3QgZHJtY2dycF9ib19saW1pdF93cml0ZShzdHJ1Y3Qga2VybmZzX29w ZW5fZmlsZSAqb2YsIGNoYXIgKmJ1ZiwKIAkJCQl9CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBE Uk1DR1JQX1RZUEVfTUVNOgorCQkJbmVzdGVkID0gc3Ryc3RyaXAoc2F0dHIpOworCisJCQl3aGls ZSAobmVzdGVkICE9IE5VTEwpIHsKKwkJCQlhdHRyID0gc3Ryc2VwKCZuZXN0ZWQsICIgIik7CisK KwkJCQlpZiAoc3NjYW5mKGF0dHIsICJ2cmFtPSVzIiwKKwkJCQkJIHN2YWwpID09IDEpIHsKKwkJ CQkJcF9tYXggPSBwYXJlbnQgPT0gTlVMTCA/IFM2NF9NQVggOgorCQkJCQkJcGFyZW50LT4KKwkJ CQkJCWRldl9yZXNvdXJjZXNbbWlub3JdLT4KKwkJCQkJCW1lbV9oaWdoc1tUVE1fUExfVlJBTV07 CisKKwkJCQkJcmMgPSBkcm1jZ3JwX3Byb2Nlc3NfbGltaXRfdmFsKHN2YWwsCisJCQkJCQl0cnVl LAorCQkJCQkJZGRldi0+CisJCQkJCQltZW1faGlnaHNfZGVmYXVsdFtUVE1fUExfVlJBTV0sCisJ CQkJCQlwX21heCwKKwkJCQkJCSZ2YWwpOworCisJCQkJCWlmIChyYyB8fCB2YWwgPCAwKSB7CisJ CQkJCQlkcm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dycCwKKwkJCQkJCQkJY2Z0X25hbWUsCisJCQkJ CQkJCW1pbm9yKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisKKwkJCQkJZGRyLT5tZW1faGln aHNbVFRNX1BMX1ZSQU1dPXZhbDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAkJfQpAQCAtNjI0LDYgKzY3NSwyMCBAQCBzdHJ1 Y3QgY2Z0eXBlIGZpbGVzW10gPSB7CiAJCS5zZXFfc2hvdyA9IGRybWNncnBfYm9fc2hvdywKIAkJ LnByaXZhdGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfTUVNX1BFQUssCiAJCQkJCQlE Uk1DR1JQX0ZUWVBFX1NUQVRTKSwKKyAgICAgICAgfSwKKwl7CisJCS5uYW1lID0gIm1lbW9yeS5k ZWZhdWx0IiwKKwkJLnNlcV9zaG93ID0gZHJtY2dycF9ib19zaG93LAorCQkuZmxhZ3MgPSBDRlRZ UEVfT05MWV9PTl9ST09ULAorCQkucHJpdmF0ZSA9IERSTUNHX0NURl9QUklWKERSTUNHUlBfVFlQ RV9NRU0sCisJCQkJCQlEUk1DR1JQX0ZUWVBFX0RFRkFVTFQpLAorCX0sCisJeworCQkubmFtZSA9 ICJtZW1vcnkuaGlnaCIsCisJCS53cml0ZSA9IGRybWNncnBfYm9fbGltaXRfd3JpdGUsCisJCS5z ZXFfc2hvdyA9IGRybWNncnBfYm9fc2hvdywKKwkJLnByaXZhdGUgPSBEUk1DR19DVEZfUFJJVihE Uk1DR1JQX1RZUEVfTUVNLAorCQkJCQkJRFJNQ0dSUF9GVFlQRV9MSU1JVCksCiAJfSwKIAl7CiAJ CS5uYW1lID0gImJ1cnN0X2J3X3BlcmlvZF9pbl91cyIsCkBAIC02NzQsNiArNzM5LDcgQEAgc3Ry dWN0IGNncm91cF9zdWJzeXMgZHJtX2NncnBfc3Vic3lzID0gewogaW50IGRybWNncnBfcmVnaXN0 ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybWNncnBfZGV2 aWNlICpkZGV2OworCWludCBpOwogCiAJZGRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1j Z3JwX2RldmljZSksIEdGUF9LRVJORUwpOwogCWlmICghZGRldikKQEAgLTY4Nyw2ICs3NTMsMTAg QEAgaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ ZGRldi0+bWVtX2J3X2J5dGVzX2luX3BlcmlvZF9kZWZhdWx0ID0gUzY0X01BWDsKIAlkZGV2LT5t ZW1fYndfYXZnX2J5dGVzX3Blcl91c19kZWZhdWx0ID0gNjU1MzY7CiAKKwlmb3IgKGkgPSAwOyBp IDw9IFRUTV9QTF9QUklWOyBpKyspIHsKKwkJZGRldi0+bWVtX2hpZ2hzX2RlZmF1bHRbaV0gPSBT NjRfTUFYOworCX0KKwogCW11dGV4X2luaXQoJmRkZXYtPm11dGV4KTsKIAogCW11dGV4X2xvY2so JmRybWNncnBfbXV0ZXgpOwpAQCAtOTkxLDMgKzEwNjEsNzggQEAgYm9vbCBkcm1jZ3JwX21lbV9j YW5fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykKIAlyZXR1cm4gcmVzdWx0Owog fQogRVhQT1JUX1NZTUJPTChkcm1jZ3JwX21lbV9jYW5fbW92ZSk7CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBkcm1jZ3JwX21lbV9zZXRfcHJlc3N1cmUoc3RydWN0IGRybWNncnAgKmRybWNncnAsCisJ CWludCBkZXZJZHgsIHVuc2lnbmVkIG1lbV90eXBlLCBib29sIHByZXNzdXJlX3ZhbCkKK3sKKwlz dHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkcjsKKwlzdHJ1Y3QgY2dyb3VwX3N1YnN5 c19zdGF0ZSAqcG9zOworCXN0cnVjdCBkcm1jZ3JwICpub2RlOworCisJY3NzX2Zvcl9lYWNoX2Rl c2NlbmRhbnRfcHJlKHBvcywgJmRybWNncnAtPmNzcykgeworCQlub2RlID0gY3NzX2RybWNncnAo cG9zKTsKKwkJZGRyID0gbm9kZS0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdOworCQlkZHItPm1lbV9w cmVzc3VyZVttZW1fdHlwZV0gPSBwcmVzc3VyZV92YWw7CisJfQorfQorCitzdGF0aWMgaW5saW5l IGJvb2wgZHJtY2dycF9tZW1fY2hlY2soc3RydWN0IGRybWNncnAgKmRybWNncnAsIGludCBkZXZJ ZHgsCisJCXVuc2lnbmVkIG1lbV90eXBlKQoreworCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNv dXJjZSAqZGRyID0gZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdOworCisJLyogYWxyZWFk eSB1bmRlciBwcmVzc3VyZSwgbm8gbmVlZCB0byBjaGVjayBhbmQgc2V0ICovCisJaWYgKGRkci0+ bWVtX3ByZXNzdXJlW21lbV90eXBlXSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoZGRyLT5tZW1f c3RhdHNbbWVtX3R5cGVdID49IGRkci0+bWVtX2hpZ2hzW21lbV90eXBlXSkgeworCQlkcm1jZ3Jw X21lbV9zZXRfcHJlc3N1cmUoZHJtY2dycCwgZGV2SWR4LCBtZW1fdHlwZSwgdHJ1ZSk7CisJCXJl dHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworYm9vbCBkcm1jZ3JwX21lbV9w cmVzc3VyZV9zY2FuKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1bnNpZ25lZCB0eXBlKQor eworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBiZGV2LT5kZGV2OworCXN0cnVjdCBjZ3JvdXBf c3Vic3lzX3N0YXRlICpwb3M7CisJc3RydWN0IGRybWNncnAgKm5vZGU7CisJaW50IGRldklkeDsK Kwlib29sIHJlc3VsdCA9IGZhbHNlOworCisJLy9UT0RPIHJlcGxhY2Ugd2l0aCBCVUdfT04KKwlp ZiAoZGV2ID09IE5VTEwgfHwgdHlwZSAhPSBUVE1fUExfVlJBTSkgLyogb25seSB2cmFtIGxpbWl0 IGZvciBub3cgKi8KKwkJcmV0dXJuIGZhbHNlOworCisJZGV2SWR4ID0gZGV2LT5wcmltYXJ5LT5p bmRleDsKKworCXR5cGUgPSB0eXBlID4gVFRNX1BMX1BSSVYgPyBUVE1fUExfUFJJViA6IHR5cGU7 CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJZHJtY2dycF9tZW1fc2V0X3ByZXNzdXJlKHJvb3RfZHJt Y2dycCwgZGV2SWR4LCB0eXBlLCBmYWxzZSk7CisKKwljc3NfZm9yX2VhY2hfZGVzY2VuZGFudF9w cmUocG9zLCAmcm9vdF9kcm1jZ3JwLT5jc3MpIHsKKwkJbm9kZSA9IGNzc19kcm1jZ3JwKHBvcyk7 CisJCXJlc3VsdCB8PSBkcm1jZ3JwX21lbV9jaGVjayhub2RlLCBkZXZJZHgsIHR5cGUpOworCX0K KwlyY3VfcmVhZF91bmxvY2soKTsKKworCXJldHVybiByZXN1bHQ7Cit9CitFWFBPUlRfU1lNQk9M KGRybWNncnBfbWVtX3ByZXNzdXJlX3NjYW4pOworCitib29sIGRybWNncnBfbWVtX3Nob3VsZF9l dmljdChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibywgdW5zaWduZWQgdHlwZSkKK3sKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdGJvLT5iZGV2LT5kZGV2OworCWludCBkZXZJZHg7CisK KwkvL1RPRE8gcmVwbGFjZSB3aXRoIEJVR19PTgorCWlmIChkZXYgPT0gTlVMTCkKKwkJcmV0dXJu IHRydWU7CisKKwlkZXZJZHggPSBkZXYtPnByaW1hcnktPmluZGV4OworCisJcmV0dXJuIHRiby0+ ZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdLT5tZW1fcHJlc3N1cmVbdHlwZV07Cit9CitF WFBPUlRfU1lNQk9MKGRybWNncnBfbWVtX3Nob3VsZF9ldmljdCk7Ci0tIAoyLjIxLjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==