From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Welty Subject: [RFC PATCH 3/5] memcg: Add per-device support to memory cgroup subsystem Date: Wed, 1 May 2019 10:04:36 -0400 Message-ID: <20190501140438.9506-4-brian.welty@intel.com> References: <20190501140438.9506-1-brian.welty@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190501140438.9506-1-brian.welty@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: cgroups@vger.kernel.org, Tejun Heo , Li Zefan , Johannes Weiner , linux-mm@kvack.org, Michal Hocko , Vladimir Davydov , dri-devel@lists.freedesktop.org, David Airlie , Daniel Vetter , intel-gfx@lists.freedesktop.org, Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , =?UTF-8?q?Christian=20K=C3=B6nig?= , Alex Deucher , ChunMing Zhou , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= List-Id: intel-gfx@lists.freedesktop.org SGVyZSB3ZSB1cGRhdGUgbWVtb3J5IGNncm91cCB0byBlbmFibGUgdGhlIG5ld2x5IGludHJvZHVj ZWQgcGVyLWRldmljZQpmcmFtZXdvcmsuICBBcyBtZW50aW9uZWQgaW4gdGhlIHByaW9yIHBhdGNo LCB0aGUgaW50ZW50IGhlcmUgaXMgdG8gYWxsb3cKZHJpdmVycyB0byBoYXZlIHRoZWlyIG93biBw cml2YXRlIGNncm91cCBjb250cm9scyAoc3VjaCBhcyBtZW1vcnkgbGltaXQpCnRvIGJlIGFwcGxp ZWQgdG8gZGV2aWNlIHJlc291cmNlcyBpbnN0ZWFkIG9mIGhvc3Qgc3lzdGVtIHJlc291cmNlcy4K CkluIHN1bW1hcnksIHRvIGVuYWJsZSBkZXZpY2UgcmVnaXN0cmF0aW9uIGZvciBtZW1vcnkgY2dy b3VwIHN1YnN5c3RlbToKICAqICBzZXQgLmFsbG93X2RldmljZXMgdG8gdHJ1ZQogICogIGFkZCBu ZXcgZXhwb3J0ZWQgZGV2aWNlIHJlZ2lzdGVyIGFuZCBkZXZpY2UgdW5yZWdpc3RlciBmdW5jdGlv bnMKICAgICB0byByZWdpc3RlciBhIGRldmljZSB3aXRoIHRoZSBjZ3JvdXAgc3Vic3lzdGVtCiAg KiAgaW1wbGVtZW50IHRoZSAuZGV2aWNlX2Nzc19hbGxvYyBjYWxsYmFjayB0byBjcmVhdGUgZGV2 aWNlCiAgICAgc3BlY2lmaWMgY2dyb3Vwc19zdWJzeXNfc3RhdGUgd2l0aGluIGEgY2dyb3VwCgpB cyBjZ3JvdXAgaXMgY3JlYXRlZCBhbmQgZm9yIGN1cnJlbnQgcmVnaXN0ZXJlZCBkZXZpY2VzLCBv bmUgd2lsbCBzZWUgaW4KdGhlIGNncm91cCBmaWxlc3lzdGVtIHRoZXNlIGFkZGl0aW9uYWwgZmls ZXM6CiAgbW91bnQvPGNncm91cF9uYW1lPi9tZW1vcnkuZGV2aWNlcy88ZGV2X25hbWU+LzxtZW1f Y2dycCBhdHRyaWJ1dGVzPgoKUmVnaXN0cmF0aW9uIG9mIGEgbmV3IGRldmljZSBpcyBwZXJmb3Jt ZWQgaW4gZGV2aWNlIGRyaXZlcnMgdXNpbmcgbmV3Cm1lbV9jZ3JvdXBfZGV2aWNlX3JlZ2lzdGVy KCkuIFRoaXMgd2lsbCBjcmVhdGUgYWJvdmUgZmlsZXMgaW4gZXhpc3RpbmcKY2dyb3Vwcy4KCkFu ZCBmb3IgcnVudGltZSBjaGFyZ2luZyB0byB0aGUgY2dyb3VwLCB3ZSBhZGQgdGhlIGZvbGxvd2lu ZzoKICAqICBhZGQgbmV3IHJvdXRpbmUgdG8gbG9va3VwIHRoZSBkZXZpY2Utc3BlY2lmaWMgY2dy b3VwX3N1YnN5c19zdGF0ZQogICAgIHdoaWNoIGlzIHdpdGhpbiB0aGUgdGFzaydzIGNncm91cCAo bWVtX2Nncm91cF9kZXZpY2VfZnJvbV90YXNrKQogICogIGFkZCBuZXcgZnVuY3Rpb25zIGZvciBk ZXZpY2Ugc3BlY2lmaWMgJ2RpcmVjdCcgY2hhcmdpbmcKClRoZSBsYXN0IHBvaW50IGFib3ZlIGlu dm9sdmVzIGFkZGluZyBuZXcgbWVtX2Nncm91cF90cnlfY2hhcmdlX2RpcmVjdAphbmQgbWVtX2Nn cm91cF91bmNoYXJnZV9kaXJlY3QgZnVuY3Rpb25zLiAgVGhlICdkaXJlY3QnIG5hbWUgaXMgdG8g c2F5CnRoYXQgd2UgYXJlIGNoYXJnaW5nIHRoZSBzcGVjaWZpZWQgY2dyb3VwIHN0YXRlIGRpcmVj dGx5IGFuZCBub3QgdXNpbmcKYW55IGFzc29jaWF0ZWQgcGFnZSBvciBtbV9zdHJ1Y3QuICBXZSBh cmUgY2FsbGVkIHdpdGhpbiBkZXZpY2Ugc3BlY2lmaWMKbWVtb3J5IG1hbmFnZW1lbnQgcm91dGlu ZXMsIHdoZXJlIHRoZSBkZXZpY2UgZHJpdmVyIHdpbGwgdHJhY2sgd2hpY2gKY2dyb3VwIHRvIGNo YXJnZSB3aXRoaW4gaXRzIG93biBwcml2YXRlIGRhdGEgc3RydWN0dXJlcy4KCldpdGggdGhpcyBp bml0aWFsIHN1Ym1pc3Npb24sIHN1cHBvcnQgZm9yIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjaGFy Z2luZwppcyBmdW5jdGlvbmFsLiAgTmVzdGVkIGNncm91cHMgd2lsbCBjb3JyZWN0bHkgbWFpbnRh aW4gdGhlIHBhcmVudCBmb3IKZGV2aWNlLXNwZWNpZmljIHN0YXRlIGFzIHdlbGwsIHN1Y2ggdGhh dCBoaWVyYXJjaGlhbCBjaGFyZ2luZyB0byBkZXZpY2UKZmlsZXMgaXMgc3VwcG9ydGVkLgoKQ2M6 IGNncm91cHNAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1tbUBrdmFjay5vcmcKQ2M6IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3Bl ckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEJyaWFuIFdlbHR5IDxicmlhbi53ZWx0eUBpbnRl bC5jb20+Ci0tLQogaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmggfCAgMTAgKysKIG1tL21lbWNv bnRyb2wuYyAgICAgICAgICAgIHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTc4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51 eC9tZW1jb250cm9sLmgKaW5kZXggZGJiNjExODM3MGMxLi43MTE2NjliNjEzZGMgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oCisrKyBiL2luY2x1ZGUvbGludXgvbWVtY29u dHJvbC5oCkBAIC0zNDgsNiArMzQ4LDExIEBAIHZvaWQgbWVtX2Nncm91cF9jYW5jZWxfY2hhcmdl KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAJCWJvb2wgY29t cG91bmQpOwogdm9pZCBtZW1fY2dyb3VwX3VuY2hhcmdlKHN0cnVjdCBwYWdlICpwYWdlKTsKIHZv aWQgbWVtX2Nncm91cF91bmNoYXJnZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VfbGlzdCk7 CisvKiBkaXJlY3QgY2hhcmdpbmcgdG8gbWVtX2Nncm91cCBpcyBwcmltYXJpbHkgZm9yIGRldmlj ZSBkcml2ZXIgdXNhZ2UgKi8KK2ludCBtZW1fY2dyb3VwX3RyeV9jaGFyZ2VfZGlyZWN0KHN0cnVj dCBtZW1fY2dyb3VwICptZW1jZywKKwkJCQkgdW5zaWduZWQgbG9uZyBucl9wYWdlcyk7Cit2b2lk IG1lbV9jZ3JvdXBfdW5jaGFyZ2VfZGlyZWN0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywKKwkJ CQl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTsKIAogdm9pZCBtZW1fY2dyb3VwX21pZ3JhdGUoc3Ry dWN0IHBhZ2UgKm9sZHBhZ2UsIHN0cnVjdCBwYWdlICpuZXdwYWdlKTsKIApAQCAtMzk1LDYgKzQw MCwxMSBAQCBzdHJ1Y3QgbHJ1dmVjICptZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKHN0cnVjdCBwYWdl ICosIHN0cnVjdCBwZ2xpc3RfZGF0YSAqKTsKIGJvb2wgdGFza19pbl9tZW1fY2dyb3VwKHN0cnVj dCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTsKIHN0cnVjdCBt ZW1fY2dyb3VwICptZW1fY2dyb3VwX2Zyb21fdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwog CitzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtX2Nncm91cF9kZXZpY2VfZnJvbV90YXNrKHVuc2lnbmVk IGxvbmcgaWQsCisJCQkJCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOworaW50IG1lbV9j Z3JvdXBfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAq ZGV2X2lkKTsKK3ZvaWQgbWVtX2Nncm91cF9kZXZpY2VfdW5yZWdpc3Rlcih1bnNpZ25lZCBsb25n IGRldl9pZCk7CisKIHN0cnVjdCBtZW1fY2dyb3VwICpnZXRfbWVtX2Nncm91cF9mcm9tX21tKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKIAogc3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3Vw X2Zyb21fcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9s LmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggODFhMGQzOTE0ZWM5Li4yYzg0MDdhZWQwZjUgMTAw NjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wuYworKysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTgyMyw2 ICs4MjMsNDcgQEAgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfZnJvbV90YXNrKHN0cnVj dCB0YXNrX3N0cnVjdCAqcCkKIH0KIEVYUE9SVF9TWU1CT0wobWVtX2Nncm91cF9mcm9tX3Rhc2sp OwogCitpbnQgbWVtX2Nncm91cF9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCB1 bnNpZ25lZCBsb25nICpkZXZfaWQpCit7CisJcmV0dXJuIGNncm91cF9kZXZpY2VfcmVnaXN0ZXIo Jm1lbW9yeV9jZ3JwX3N1YnN5cywgZGV2LCBkZXZfaWQpOworfQorRVhQT1JUX1NZTUJPTChtZW1f Y2dyb3VwX2RldmljZV9yZWdpc3Rlcik7CisKK3ZvaWQgbWVtX2Nncm91cF9kZXZpY2VfdW5yZWdp c3Rlcih1bnNpZ25lZCBsb25nIGRldl9pZCkKK3sKKwljZ3JvdXBfZGV2aWNlX3VucmVnaXN0ZXIo Jm1lbW9yeV9jZ3JwX3N1YnN5cywgZGV2X2lkKTsKK30KK0VYUE9SVF9TWU1CT0wobWVtX2Nncm91 cF9kZXZpY2VfdW5yZWdpc3Rlcik7CisKKy8qKgorICogbWVtX2Nncm91cF9kZXZpY2VfZnJvbV90 YXNrOiBMb29rdXAgZGV2aWNlLXNwZWNpZmljIG1lbWNnCisgKiBAaWQ6IGRldmljZS1zcGVjaWZp YyBpZCByZXR1cm5lZCBmcm9tIG1lbV9jZ3JvdXBfZGV2aWNlX3JlZ2lzdGVyCisgKiBAcDogdGFz ayB0byBsb29rdXAgdGhlIG1lbWNnCisgKgorICogRmlyc3QgdXNlIG1lbV9jZ3JvdXBfZnJvbV90 YXNrIHRvIGxvb2t1cCBhbmQgb2J0YWluIGEgcmVmZXJlbmNlIG9uCisgKiB0aGUgbWVtY2cgYXNz b2NpYXRlZCB3aXRoIHRoaXMgdGFzayBAcC4gIFdpdGhpbiB0aGlzIG1lbWNnLCBmaW5kIHRoZQor ICogZGV2aWNlLXNwZWNpZmljIG9uZSBhc3NvY2lhdGVkIHdpdGggQGlkLgorICogSG93ZXZlciBp ZiBtZW1fY2dyb3VwIGlzIGRpc2FibGVkLCBOVUxMIGlzIHJldHVybmVkLgorICovCitzdHJ1Y3Qg bWVtX2Nncm91cCAqbWVtX2Nncm91cF9kZXZpY2VfZnJvbV90YXNrKHVuc2lnbmVkIGxvbmcgaWQs CisJCQkJCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCit7CisJc3RydWN0IG1lbV9jZ3Jv dXAgKm1lbWNnOworCXN0cnVjdCBtZW1fY2dyb3VwICpkZXZfbWVtY2cgPSBOVUxMOworCisJaWYg KG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyY3VfcmVhZF9sb2Nr KCk7CisJbWVtY2cgID0gbWVtX2Nncm91cF9mcm9tX3Rhc2socCk7CisJaWYgKG1lbWNnKQorCQlk ZXZfbWVtY2cgPSBpZHJfZmluZCgmbWVtY2ctPmNzcy5kZXZpY2VfY3NzX2lkciwgaWQpOworCXJj dV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIGRldl9tZW1jZzsKK30KK0VYUE9SVF9TWU1CT0wo bWVtX2Nncm91cF9kZXZpY2VfZnJvbV90YXNrKTsKKwogLyoqCiAgKiBnZXRfbWVtX2Nncm91cF9m cm9tX21tOiBPYnRhaW4gYSByZWZlcmVuY2Ugb24gZ2l2ZW4gbW1fc3RydWN0J3MgbWVtY2cuCiAg KiBAbW06IG1tIGZyb20gd2hpY2ggbWVtY2cgc2hvdWxkIGJlIGV4dHJhY3RlZC4gSXQgY2FuIGJl IE5VTEwuCkBAIC0yMTc5LDEzICsyMjIwLDMxIEBAIHZvaWQgbWVtX2Nncm91cF9oYW5kbGVfb3Zl cl9oaWdoKHZvaWQpCiAJY3VycmVudC0+bWVtY2dfbnJfcGFnZXNfb3Zlcl9oaWdoID0gMDsKIH0K IAorc3RhdGljIGJvb2wgX190cnlfY2hhcmdlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5z aWduZWQgaW50IG5yX3BhZ2VzLAorCQkJIHN0cnVjdCBtZW1fY2dyb3VwICoqbWVtX292ZXJfbGlt aXQpCit7CisJc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcjsKKworCWlmICghZG9fbWVtc3df YWNjb3VudCgpIHx8CisJICAgIHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKCZtZW1jZy0+bWVtc3cs IG5yX3BhZ2VzLCAmY291bnRlcikpIHsKKwkJaWYgKHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKCZt ZW1jZy0+bWVtb3J5LCBucl9wYWdlcywgJmNvdW50ZXIpKQorCQkJcmV0dXJuIHRydWU7CisJCWlm IChkb19tZW1zd19hY2NvdW50KCkpCisJCQlwYWdlX2NvdW50ZXJfdW5jaGFyZ2UoJm1lbWNnLT5t ZW1zdywgbnJfcGFnZXMpOworCQkqbWVtX292ZXJfbGltaXQgPSBtZW1fY2dyb3VwX2Zyb21fY291 bnRlcihjb3VudGVyLCBtZW1vcnkpOworCX0gZWxzZSB7CisJCSptZW1fb3Zlcl9saW1pdCA9IG1l bV9jZ3JvdXBfZnJvbV9jb3VudGVyKGNvdW50ZXIsIG1lbXN3KTsKKwl9CisKKwlyZXR1cm4gZmFs c2U7Cit9CisKIHN0YXRpYyBpbnQgdHJ5X2NoYXJnZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cs IGdmcF90IGdmcF9tYXNrLAogCQkgICAgICB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCiB7CiAJdW5z aWduZWQgaW50IGJhdGNoID0gbWF4KE1FTUNHX0NIQVJHRV9CQVRDSCwgbnJfcGFnZXMpOwogCWlu dCBucl9yZXRyaWVzID0gTUVNX0NHUk9VUF9SRUNMQUlNX1JFVFJJRVM7CiAJc3RydWN0IG1lbV9j Z3JvdXAgKm1lbV9vdmVyX2xpbWl0OwotCXN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXI7CiAJ dW5zaWduZWQgbG9uZyBucl9yZWNsYWltZWQ7CiAJYm9vbCBtYXlfc3dhcCA9IHRydWU7CiAJYm9v bCBkcmFpbmVkID0gZmFsc2U7CkBAIC0yMTk4LDE3ICsyMjU3LDEwIEBAIHN0YXRpYyBpbnQgdHJ5 X2NoYXJnZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGdmcF90IGdmcF9tYXNrLAogCWlmIChj b25zdW1lX3N0b2NrKG1lbWNnLCBucl9wYWdlcykpCiAJCXJldHVybiAwOwogCi0JaWYgKCFkb19t ZW1zd19hY2NvdW50KCkgfHwKLQkgICAgcGFnZV9jb3VudGVyX3RyeV9jaGFyZ2UoJm1lbWNnLT5t ZW1zdywgYmF0Y2gsICZjb3VudGVyKSkgewotCQlpZiAocGFnZV9jb3VudGVyX3RyeV9jaGFyZ2Uo Jm1lbWNnLT5tZW1vcnksIGJhdGNoLCAmY291bnRlcikpCi0JCQlnb3RvIGRvbmVfcmVzdG9jazsK LQkJaWYgKGRvX21lbXN3X2FjY291bnQoKSkKLQkJCXBhZ2VfY291bnRlcl91bmNoYXJnZSgmbWVt Y2ctPm1lbXN3LCBiYXRjaCk7Ci0JCW1lbV9vdmVyX2xpbWl0ID0gbWVtX2Nncm91cF9mcm9tX2Nv dW50ZXIoY291bnRlciwgbWVtb3J5KTsKLQl9IGVsc2UgewotCQltZW1fb3Zlcl9saW1pdCA9IG1l bV9jZ3JvdXBfZnJvbV9jb3VudGVyKGNvdW50ZXIsIG1lbXN3KTsKLQkJbWF5X3N3YXAgPSBmYWxz ZTsKLQl9CisJaWYgKF9fdHJ5X2NoYXJnZShtZW1jZywgYmF0Y2gsICZtZW1fb3Zlcl9saW1pdCkp CisJCWdvdG8gZG9uZV9yZXN0b2NrOworCWVsc2UKKwkJbWF5X3N3YXAgPSAhZG9fbWVtc3dfYWNj b3VudCgpOwogCiAJaWYgKGJhdGNoID4gbnJfcGFnZXMpIHsKIAkJYmF0Y2ggPSBucl9wYWdlczsK QEAgLTI4OTIsNiArMjk0NCw5IEBAIHN0YXRpYyBpbnQgbWVtX2Nncm91cF9mb3JjZV9lbXB0eShz dHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpCiB7CiAJaW50IG5yX3JldHJpZXMgPSBNRU1fQ0dST1VQ X1JFQ0xBSU1fUkVUUklFUzsKIAorCWlmIChtZW1jZy0+Y3NzLmRldmljZSkKKwkJcmV0dXJuIDA7 CisKIAkvKiB3ZSBjYWxsIHRyeS10by1mcmVlIHBhZ2VzIGZvciBtYWtlIHRoaXMgY2dyb3VwIGVt cHR5ICovCiAJbHJ1X2FkZF9kcmFpbl9hbGwoKTsKIApAQCAtNDQ5Niw3ICs0NTUxLDcgQEAgc3Rh dGljIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX2FsbG9jKHZvaWQpCiB9CiAKIHN0YXRp YyBzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqIF9fcmVmCi1tZW1fY2dyb3VwX2Nzc19hbGxv YyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcykKK19fbWVtX2Nncm91cF9j c3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MsIGJvb2wgaXNf ZGV2aWNlKQogewogCXN0cnVjdCBtZW1fY2dyb3VwICpwYXJlbnQgPSBtZW1fY2dyb3VwX2Zyb21f Y3NzKHBhcmVudF9jc3MpOwogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKQEAgLTQ1MzAsMTEg KzQ1ODUsMTMgQEAgbWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3Rh dGUgKnBhcmVudF9jc3MpCiAJCSAqIG11Y2ggc2Vuc2Ugc28gbGV0IGNncm91cCBzdWJzeXN0ZW0g a25vdyBhYm91dCB0aGlzCiAJCSAqIHVuZm9ydHVuYXRlIHN0YXRlIGluIG91ciBjb250cm9sbGVy LgogCQkgKi8KLQkJaWYgKHBhcmVudCAhPSByb290X21lbV9jZ3JvdXApCisJCWlmICghaXNfZGV2 aWNlICYmIHBhcmVudCAhPSByb290X21lbV9jZ3JvdXApCiAJCQltZW1vcnlfY2dycF9zdWJzeXMu YnJva2VuX2hpZXJhcmNoeSA9IHRydWU7CiAJfQogCi0JLyogVGhlIGZvbGxvd2luZyBzdHVmZiBk b2VzIG5vdCBhcHBseSB0byB0aGUgcm9vdCAqLworCS8qIFRoZSBmb2xsb3dpbmcgc3R1ZmYgZG9l cyBub3QgYXBwbHkgdG8gZGV2aWNlcyBvciB0aGUgcm9vdCAqLworCWlmIChpc19kZXZpY2UpCisJ CXJldHVybiAmbWVtY2ctPmNzczsKIAlpZiAoIXBhcmVudCkgewogCQlyb290X21lbV9jZ3JvdXAg PSBtZW1jZzsKIAkJcmV0dXJuICZtZW1jZy0+Y3NzOwpAQCAtNDU1NCw2ICs0NjExLDM0IEBAIG1l bV9jZ3JvdXBfY3NzX2FsbG9jKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpwYXJlbnRfY3Nz KQogCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogfQogCitzdGF0aWMgc3RydWN0IGNncm91cF9z dWJzeXNfc3RhdGUgKiBfX3JlZgorbWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9z dWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpCit7CisJcmV0dXJuIF9fbWVtX2Nncm91cF9jc3NfYWxs b2MocGFyZW50X2NzcywgZmFsc2UpOworfQorCisvKgorICogRm9yIGdpdmVuIEBjZ3JvdXBfY3Nz LCB3ZSBjcmVhdGUgYW5kIHJldHVybiBuZXcgZGV2aWNlLXNwZWNpZmljIGNzcy4KKyAqCisgKiBA ZGV2aWNlIGFuZCBAY2dyb3VwX2NzcyBhcmUgdW51c2VkIGhlcmUsIGJ1dCB0aGV5IGFyZSBwcm92 aWRlZCBhcyBvdGhlcgorICogY2dyb3VwIHN1YnN5c3RlbXMgbWlnaHQgcmVxdWlyZSB0aGVtLgor ICovCitzdGF0aWMgc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKiBfX3JlZgorbWVtX2Nncm91 cF9kZXZpY2VfY3NzX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldmljZSwKKwkJCSAgICBzdHJ1Y3Qg Y2dyb3VwX3N1YnN5c19zdGF0ZSAqY2dyb3VwX2NzcywKKwkJCSAgICBzdHJ1Y3QgY2dyb3VwX3N1 YnN5c19zdGF0ZSAqcGFyZW50X2RldmljZV9jc3MpCit7CisJLyoKKwkgKiBGb3IgaGllcmFyY2hp YWwgcGFnZSBjb3VudGVycyB0byB3b3JrIGNvcnJlY3RseSwgd2Ugc3BlY2lmeQorCSAqIHBhcmVu dCBoZXJlIGFzIHRoZSBkZXZpY2Utc3BlY2lmaWMgY3NzIGZyb20gb3VyIHBhcmVudCBjc3MKKwkg KiAoQHBhcmVudF9kZXZpY2VfY3NzKS4gIEluIG90aGVyIHdvcmRzLCBmb3IgbmVzdGVkIGNncm91 cHMsCisJICogdGhlIGRldmljZS1zcGVjaWZpYyBjaGFyZ2luZyBzdHJ1Y3R1cmVzIGFyZSBhbHNv IG5lc3RlZC4KKwkgKiBOb3RlLCBjYWxsZXIgd2lsbCBpdHNlbGYgc2V0IC5kZXZpY2UgYW5kIC5w YXJlbnQgaW4gcmV0dXJuZWQKKwkgKiBzdHJ1Y3R1cmUuCisJICovCisJcmV0dXJuIF9fbWVtX2Nn cm91cF9jc3NfYWxsb2MocGFyZW50X2RldmljZV9jc3MsIHRydWUpOworfQorCiBzdGF0aWMgaW50 IG1lbV9jZ3JvdXBfY3NzX29ubGluZShzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzKQog ewogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IG1lbV9jZ3JvdXBfZnJvbV9jc3MoY3NzKTsK QEAgLTQ2MTMsNiArNDY5OCw5IEBAIHN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfY3NzX2ZyZWUoc3Ry dWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcykKIHsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt Y2cgPSBtZW1fY2dyb3VwX2Zyb21fY3NzKGNzcyk7CiAKKwlpZiAoY3NzLT5kZXZpY2UpCisJCWdv dG8gZnJlZV9jZ3JwOworCiAJaWYgKGNncm91cF9zdWJzeXNfb25fZGZsKG1lbW9yeV9jZ3JwX3N1 YnN5cykgJiYgIWNncm91cF9tZW1vcnlfbm9zb2NrZXQpCiAJCXN0YXRpY19icmFuY2hfZGVjKCZt ZW1jZ19zb2NrZXRzX2VuYWJsZWRfa2V5KTsKIApAQCAtNDYyNCw2ICs0NzEyLDcgQEAgc3RhdGlj IHZvaWQgbWVtX2Nncm91cF9jc3NfZnJlZShzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3Nz KQogCW1lbV9jZ3JvdXBfcmVtb3ZlX2Zyb21fdHJlZXMobWVtY2cpOwogCW1lbWNnX2ZyZWVfc2hy aW5rZXJfbWFwcyhtZW1jZyk7CiAJbWVtY2dfZnJlZV9rbWVtKG1lbWNnKTsKK2ZyZWVfY2dycDoK IAltZW1fY2dyb3VwX2ZyZWUobWVtY2cpOwogfQogCkBAIC01NzIwLDYgKzU4MDksNyBAQCBzdGF0 aWMgc3RydWN0IGNmdHlwZSBtZW1vcnlfZmlsZXNbXSA9IHsKIAogc3RydWN0IGNncm91cF9zdWJz eXMgbWVtb3J5X2NncnBfc3Vic3lzID0gewogCS5jc3NfYWxsb2MgPSBtZW1fY2dyb3VwX2Nzc19h bGxvYywKKwkuZGV2aWNlX2Nzc19hbGxvYyA9IG1lbV9jZ3JvdXBfZGV2aWNlX2Nzc19hbGxvYywK IAkuY3NzX29ubGluZSA9IG1lbV9jZ3JvdXBfY3NzX29ubGluZSwKIAkuY3NzX29mZmxpbmUgPSBt ZW1fY2dyb3VwX2Nzc19vZmZsaW5lLAogCS5jc3NfcmVsZWFzZWQgPSBtZW1fY2dyb3VwX2Nzc19y ZWxlYXNlZCwKQEAgLTU3MzIsNiArNTgyMiw3IEBAIHN0cnVjdCBjZ3JvdXBfc3Vic3lzIG1lbW9y eV9jZ3JwX3N1YnN5cyA9IHsKIAkuZGZsX2NmdHlwZXMgPSBtZW1vcnlfZmlsZXMsCiAJLmxlZ2Fj eV9jZnR5cGVzID0gbWVtX2Nncm91cF9sZWdhY3lfZmlsZXMsCiAJLmVhcmx5X2luaXQgPSAwLAor CS5hbGxvd19kZXZpY2VzID0gdHJ1ZSwKIH07CiAKIC8qKgpAQCAtNjAzMSw2ICs2MTIyLDY4IEBA IHZvaWQgbWVtX2Nncm91cF9jYW5jZWxfY2hhcmdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qg bWVtX2Nncm91cCAqbWVtY2csCiAJY2FuY2VsX2NoYXJnZShtZW1jZywgbnJfcGFnZXMpOwogfQog CisvKioKKyAqIG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9kaXJlY3QgLSB0cnkgY2hhcmdpbmcgbnJf cGFnZXMgdG8gbWVtY2cKKyAqIEBtZW1jZzogbWVtY2d0byBjaGFyZ2UKKyAqIEBucl9wYWdlczog bnVtYmVyIG9mIHBhZ2VzIHRvIGNoYXJnZQorICoKKyAqIFRyeSB0byBjaGFyZ2UgQG5yX3BhZ2Vz IHRvIHNwZWNpZmllZCBAbWVtY2cuIFRoaXMgdmFyaWFudCBpcyBpbnRlbmRlZAorICogd2hlcmUg dGhlIG1lbWNnIGlzIGtub3duIGFuZCBjYW4gYmUgZGlyZWN0bHkgY2hhcmdlZCwgd2l0aCB0aGUg cHJpbWFyeQorICogdXNlIGNhc2UgYmVpbmcgaW4gZGV2aWNlIGRyaXZlcnMgdGhhdCBoYXZlIHJl Z2lzdGVyZWQgd2l0aCB0aGUgc3Vic3lzLgorICogRGV2aWNlIGRyaXZlcnMgdGhhdCBpbXBsZW1l bnQgdGhlaXIgb3duIGRldmljZS1zcGVjaWZpYyBtZW1vcnkgbWFuYWdlcgorICogd2lsbCB1c2Ug dGhlc2UgZGlyZWN0IGNoYXJnaW5nIGZ1bmN0aW9ucyB0byBtYWtlIGNoYXJnZXMgYWdhaW5zdCB0 aGVpcgorICogZGV2aWNlLXByaXZhdGUgc3RhdGUgKEBtZW1jZykgd2l0aGluIHRoZSBjZ3JvdXAu CisgKgorICogVGhlcmUgaXMgbm8gc2VwYXJhdGUgbWVtX2Nncm91cF9jb21taXRfY2hhcmdlKCkg aW4gdGhpcyB1c2UgY2FzZSwgYXMgdGhlCisgKiBkZXZpY2UgZHJpdmVyIGlzIG5vdCB1c2luZyBw YWdlIHN0cnVjdHMuIFJlY2xhaW0gaXMgbm90IG5lZWRlZCBpbnRlcm5hbGx5CisgKiBoZXJlLCBh cyB0aGUgY2FsbGVyIGNhbiBkZWNpZGUgdG8gYXR0ZW1wdCBtZW1vcnkgcmVjbGFpbSBvbiBlcnJv ci4KKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4gIE90aGVyd2lzZSwgYW4gZXJyb3IgY29k ZSBpcyByZXR1cm5lZC4KKyAqCisgKiBUbyB1bmNoYXJnZSAob3IgY2FuY2VsIGNoYXJnZSksIGNh bGwgbWVtX2Nncm91cF91bmNoYXJnZV9kaXJlY3QoKS4KKyAqLworaW50IG1lbV9jZ3JvdXBfdHJ5 X2NoYXJnZV9kaXJlY3Qoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAorCQkJCSB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKQoreworCXN0cnVjdCBtZW1fY2dyb3VwICptZW1fb3Zlcl9saW1pdDsKKwlp bnQgcmV0ID0gMDsKKworCWlmICghbWVtY2cgfHwgbWVtX2Nncm91cF9kaXNhYmxlZCgpIHx8IG1l bV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpCisJCXJldHVybiAwOworCisJaWYgKF9fdHJ5X2NoYXJn ZShtZW1jZywgbnJfcGFnZXMsICZtZW1fb3Zlcl9saW1pdCkpIHsKKwkJY3NzX2dldF9tYW55KCZt ZW1jZy0+Y3NzLCBucl9wYWdlcyk7CisJfSBlbHNlIHsKKwkJbWVtY2dfbWVtb3J5X2V2ZW50KG1l bV9vdmVyX2xpbWl0LCBNRU1DR19NQVgpOworCQlyZXQgPSAtRU5PTUVNOworCX0KKwlyZXR1cm4g cmV0OworfQorRVhQT1JUX1NZTUJPTChtZW1fY2dyb3VwX3RyeV9jaGFyZ2VfZGlyZWN0KTsKKwor LyoqCisgKiBtZW1fY2dyb3VwX3VuY2hhcmdlX2RpcmVjdCAtIHVuY2hhcmdlIG5yX3BhZ2VzIHRv IG1lbWNnCisgKiBAbWVtY2c6IG1lbWNnIHRvIGNoYXJnZQorICogQG5yX3BhZ2VzOiBudW1iZXIg b2YgcGFnZXMgdG8gY2hhcmdlCisgKgorICogVW5jaGFyZ2UgQG5yX3BhZ2VzIHRvIHNwZWNpZmll ZCBAbWVtY2cuIFRoaXMgdmFyaWFudCBpcyBpbnRlbmRlZAorICogd2hlcmUgdGhlIG1lbWNnIGlz IGtub3duIGFuZCBjYW4gZGlyZWN0bHkgdW5jaGFyZ2UsIHdpdGggdGhlIHByaW1hcnkKKyAqIHVz ZSBjYXNlIGJlaW5nIGluIGRldmljZSBkcml2ZXJzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHdpdGgg dGhlIHN1YnN5cy4KKyAqIERldmljZSBkcml2ZXJzIHVzZSB0aGVzZSBkaXJlY3QgY2hhcmdpbmcg ZnVuY3Rpb25zIHRvIG1ha2UgY2hhcmdlcworICogYWdhaW5zdCB0aGVpciBkZXZpY2UtcHJpdmF0 ZSBzdGF0ZSAoQG1lbWNnKSB3aXRoaW4gdGhlIGNncm91cC4KKyAqCisgKiBSZXR1cm5zIDAgb24g c3VjY2Vzcy4gIE90aGVyd2lzZSwgYW4gZXJyb3IgY29kZSBpcyByZXR1cm5lZC4KKyAqLwordm9p ZCBtZW1fY2dyb3VwX3VuY2hhcmdlX2RpcmVjdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCisJ CQkJdW5zaWduZWQgbG9uZyBucl9wYWdlcykKK3sKKwlpZiAoIW1lbWNnIHx8IG1lbV9jZ3JvdXBf ZGlzYWJsZWQoKSkKKwkJcmV0dXJuOworCisJY2FuY2VsX2NoYXJnZShtZW1jZywgbnJfcGFnZXMp OworfQorRVhQT1JUX1NZTUJPTChtZW1fY2dyb3VwX3VuY2hhcmdlX2RpcmVjdCk7CisKIHN0cnVj dCB1bmNoYXJnZV9nYXRoZXIgewogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKIAl1bnNpZ25l ZCBsb25nIHBncGdvdXQ7Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA==