From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: [PATCH RFC v4 16/16] drm/amdgpu: Integrate with DRM cgroup Date: Thu, 29 Aug 2019 02:05:33 -0400 Message-ID: <20190829060533.32315-17-Kenny.Ho@amd.com> References: <20190829060533.32315-1-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190829060533.32315-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, felix.kuehling@amd.com, joseph.greathouse@amd.com, jsparks@cray.com, lkaplan@cray.com, daniel@ffwll.ch Cc: Kenny Ho VGhlIG51bWJlciBvZiBsb2dpY2FsIGdwdSAobGdwdSkgaXMgZGVmaW5lZCB0byBiZSB0aGUgbnVt YmVyIG9mIGNvbXB1dGUKdW5pdCAoQ1UpIGZvciBhIGRldmljZS4gIFRoZSBsZ3B1IGFsbG9jYXRp b24gbGltaXQgb25seSBhcHBsaWVzIHRvCmNvbXB1dGUgd29ya2xvYWQgZm9yIHRoZSBtb21lbnQg KGVuZm9yY2VkIHZpYSBrZmQgcXVldWUgY3JlYXRpb24uKSAgQW55CmN1X21hc2sgdXBkYXRlIGlz IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGNvbXB1dGUgdW5pdAph cyBkZWZpbmVkIGJ5IHRoZSBkcm1jZyB0aGUga2ZkIHByb2Nlc3MgYmVsb25ncyB0by4KCkNoYW5n ZS1JZDogSTY5YTU3NDUyYzU0OTE3M2ExY2Q2MjNjMzBkYzU3MTk1YjNiNjU2M2UKU2lnbmVkLW9m Zi1ieTogS2VubnkgSG8gPEtlbm55LkhvQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9kcnYuYyAgICAgICB8ICAyMSArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9jaGFyZGV2LmMgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfcHJpdi5oICAgICAgICAgfCAgIDMgKwogLi4uL2FtZC9hbWRrZmQva2ZkX3Byb2Nl c3NfcXVldWVfbWFuYWdlci5jICAgIHwgMTQwICsrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBj aGFuZ2VkLCAxNzQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9hbWRrZmQuaAppbmRleCA1NWNiMWIyMDk0ZmQuLjM2OTkxNTMzNzIxMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaApAQCAtMTk4LDYgKzE5OCwxMCBA QCB1aW50OF90IGFtZGdwdV9hbWRrZmRfZ2V0X3hnbWlfaG9wc19jb3VudChzdHJ1Y3Qga2dkX2Rl diAqZHN0LCBzdHJ1Y3Qga2dkX2RldiAqcwogCQl2YWxpZDsJCQkJCQkJXAogCX0pCiAKK2ludCBh bWRncHVfYW1ka2ZkX3VwZGF0ZV9jdV9tYXNrX2Zvcl9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVj dCAqdGFzaywKKwkJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGxvbmcgKmxn cHVfYml0bWFwLAorCQl1bnNpZ25lZCBpbnQgbmJpdHMpOworCiAvKiBHUFVWTSBBUEkgKi8KIGlu dCBhbWRncHVfYW1ka2ZkX2dwdXZtX2NyZWF0ZV9wcm9jZXNzX3ZtKHN0cnVjdCBrZ2RfZGV2ICpr Z2QsIHVuc2lnbmVkIGludCBwYXNpZCwKIAkJCQkJdm9pZCAqKnZtLCB2b2lkICoqcHJvY2Vzc19p bmZvLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCmluZGV4IDE2M2E0ZmJm MDYxMS4uOGFiZWZmZGQyZTViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ry di5jCkBAIC0xMzk4LDkgKzEzOTgsMjkgQEAgYW1kZ3B1X2dldF9jcnRjX3NjYW5vdXRfcG9zaXRp b24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiBzdGF0aWMgdm9p ZCBhbWRncHVfZHJtY2dfY3VzdG9tX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1 Y3QgZHJtY2dfcHJvcHMgKnByb3BzKQogeworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKworCXByb3BzLT5sZ3B1X2NhcGFjaXR5ID0gYWRldi0+Z2Z4LmN1 X2luZm8ubnVtYmVyOworCiAJcHJvcHMtPmxpbWl0X2VuZm9yY2VkID0gdHJ1ZTsKIH0KIAorc3Rh dGljIHZvaWQgYW1kZ3B1X2RybWNnX2xpbWl0X3VwZGF0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgZHJtY2dfZGV2aWNlX3Jlc291 cmNlICpkZHIsCisJCWVudW0gZHJtY2dfcmVzX3R5cGUgcmVzX3R5cGUpCit7CisJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJc3dpdGNoIChyZXNfdHlw ZSkgeworCWNhc2UgRFJNQ0dfVFlQRV9MR1BVOgorCQlhbWRncHVfYW1ka2ZkX3VwZGF0ZV9jdV9t YXNrX2Zvcl9wcm9jZXNzKHRhc2ssIGFkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICBkZHIt PmxncHVfYWxsb2NhdGVkLCBkZXYtPmRybWNnX3Byb3BzLmxncHVfY2FwYWNpdHkpOworCQlicmVh azsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZl ciBrbXNfZHJpdmVyID0gewogCS5kcml2ZXJfZmVhdHVyZXMgPQogCSAgICBEUklWRVJfVVNFX0FH UCB8IERSSVZFUl9BVE9NSUMgfApAQCAtMTQzOCw2ICsxNDU4LDcgQEAgc3RhdGljIHN0cnVjdCBk cm1fZHJpdmVyIGttc19kcml2ZXIgPSB7CiAJLmdlbV9wcmltZV9tbWFwID0gYW1kZ3B1X2dlbV9w cmltZV9tbWFwLAogCiAJLmRybWNnX2N1c3RvbV9pbml0ID0gYW1kZ3B1X2RybWNnX2N1c3RvbV9p bml0LAorCS5kcm1jZ19saW1pdF91cGRhdGVkID0gYW1kZ3B1X2RybWNnX2xpbWl0X3VwZGF0ZWQs CiAKIAkubmFtZSA9IERSSVZFUl9OQU1FLAogCS5kZXNjID0gRFJJVkVSX0RFU0MsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwppbmRleCAxMzhjNzA0NTRlMmIuLmZhNzY1 YjgwM2Y5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJk ZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jCkBAIC00 NTAsNiArNDUwLDEyIEBAIHN0YXRpYyBpbnQga2ZkX2lvY3RsX3NldF9jdV9tYXNrKHN0cnVjdCBm aWxlICpmaWxwLCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsCiAJCXJldHVybiAtRUZBVUxUOwogCX0K IAorCWlmICghcHFtX2RybWNnX2xncHVfdmFsaWRhdGUocCwgYXJncy0+cXVldWVfaWQsIHByb3Bl cnRpZXMuY3VfbWFzaywgY3VfbWFza19zaXplKSkgeworCQlwcl9kZWJ1ZygiQ1UgbWFzayBub3Qg cGVybWl0dGVkIGJ5IERSTSBDZ3JvdXAiKTsKKwkJa2ZyZWUocHJvcGVydGllcy5jdV9tYXNrKTsK KwkJcmV0dXJuIC1FQUNDRVM7CisJfQorCiAJbXV0ZXhfbG9jaygmcC0+bXV0ZXgpOwogCiAJcmV0 dmFsID0gcHFtX3NldF9jdV9tYXNrKCZwLT5wcW0sIGFyZ3MtPnF1ZXVlX2lkLCAmcHJvcGVydGll cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAppbmRleCA4YjBlZWU1YjM1MjEu Ljg4ODgxYmVjNzU1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X3ByaXYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oCkBAIC0x MDM4LDYgKzEwMzgsOSBAQCBpbnQgcHFtX2dldF93YXZlX3N0YXRlKHN0cnVjdCBwcm9jZXNzX3F1 ZXVlX21hbmFnZXIgKnBxbSwKIAkJICAgICAgIHUzMiAqY3RsX3N0YWNrX3VzZWRfc2l6ZSwKIAkJ ICAgICAgIHUzMiAqc2F2ZV9hcmVhX3VzZWRfc2l6ZSk7CiAKK2Jvb2wgcHFtX2RybWNnX2xncHVf dmFsaWRhdGUoc3RydWN0IGtmZF9wcm9jZXNzICpwLCBpbnQgcWlkLCB1MzIgKmN1X21hc2ssCisJ CXVuc2lnbmVkIGludCBjdV9tYXNrX3NpemUpOworCiBpbnQgYW1ka2ZkX2ZlbmNlX3dhaXRfdGlt ZW91dCh1bnNpZ25lZCBpbnQgKmZlbmNlX2FkZHIsCiAJCQkJdW5zaWduZWQgaW50IGZlbmNlX3Zh bHVlLAogCQkJCXVuc2lnbmVkIGludCB0aW1lb3V0X21zKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYwppbmRleCA3ZTZj M2VlODJmNWIuLmE4OTZkZTI5MDMwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYwpAQCAtMjMsOSArMjMsMTEgQEAK IAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5j bHVkZSA8bGludXgvY2dyb3VwX2RybS5oPgogI2luY2x1ZGUgImtmZF9kZXZpY2VfcXVldWVfbWFu YWdlci5oIgogI2luY2x1ZGUgImtmZF9wcml2LmgiCiAjaW5jbHVkZSAia2ZkX2tlcm5lbF9xdWV1 ZS5oIgorI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKIAog c3RhdGljIGlubGluZSBzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9ub2RlICpnZXRfcXVldWVfYnlfcWlk KApAQCAtMTY3LDYgKzE2OSw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2NwX3F1ZXVlKHN0cnVjdCBw cm9jZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwKIAkJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAq cV9wcm9wZXJ0aWVzLAogCQkJCXN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgcWlkKQogewor CXN0cnVjdCBkcm1jZyAqZHJtY2c7CiAJaW50IHJldHZhbDsKIAogCS8qIERvb3JiZWxsIGluaXRp YWxpemVkIGluIHVzZXIgc3BhY2UqLwpAQCAtMTgwLDYgKzE4MywzNiBAQCBzdGF0aWMgaW50IGNy ZWF0ZV9jcF9xdWV1ZShzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyICpwcW0sCiAJaWYgKHJl dHZhbCAhPSAwKQogCQlyZXR1cm4gcmV0dmFsOwogCisKKwlkcm1jZyA9IGRybWNnX2dldChwcW0t PnByb2Nlc3MtPmxlYWRfdGhyZWFkKTsKKwlpZiAoZHJtY2cpIHsKKwkJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXY7CisJCXN0cnVjdCBkcm1jZ19kZXZpY2VfcmVzb3VyY2UgKmRkcjsKKwkJaW50 IG1hc2tfc2l6ZTsKKwkJdTMyICptYXNrOworCisJCWFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKikgZGV2LT5rZ2Q7CisKKwkJbWFza19zaXplID0gYWRldi0+ZGRldi0+ZHJtY2dfcHJvcHMu bGdwdV9jYXBhY2l0eTsKKwkJbWFzayA9IGt6YWxsb2Moc2l6ZW9mKHUzMikgKiByb3VuZF91cCht YXNrX3NpemUsIDMyKSwKKwkJCQlHRlBfS0VSTkVMKTsKKworCQlpZiAoIW1hc2spIHsKKwkJCWRy bWNnX3B1dChkcm1jZyk7CisJCQl1bmluaXRfcXVldWUoKnEpOworCQkJcmV0dXJuIC1FTk9NRU07 CisJCX0KKworCQlkZHIgPSBkcm1jZy0+ZGV2X3Jlc291cmNlc1thZGV2LT5kZGV2LT5wcmltYXJ5 LT5pbmRleF07CisKKwkJYml0bWFwX3RvX2FycjMyKG1hc2ssIGRkci0+bGdwdV9hbGxvY2F0ZWQs IG1hc2tfc2l6ZSk7CisKKwkJKCpxKS0+cHJvcGVydGllcy5jdV9tYXNrX2NvdW50ID0gbWFza19z aXplOworCQkoKnEpLT5wcm9wZXJ0aWVzLmN1X21hc2sgPSBtYXNrOworCisJCWRybWNnX3B1dChk cm1jZyk7CisJfQorCiAJKCpxKS0+ZGV2aWNlID0gZGV2OwogCSgqcSktPnByb2Nlc3MgPSBwcW0t PnByb2Nlc3M7CiAKQEAgLTQ5NSw2ICs1MjgsMTEzIEBAIGludCBwcW1fZ2V0X3dhdmVfc3RhdGUo c3RydWN0IHByb2Nlc3NfcXVldWVfbWFuYWdlciAqcHFtLAogCQkJCQkJICAgICAgIHNhdmVfYXJl YV91c2VkX3NpemUpOwogfQogCitib29sIHBxbV9kcm1jZ19sZ3B1X3ZhbGlkYXRlKHN0cnVjdCBr ZmRfcHJvY2VzcyAqcCwgaW50IHFpZCwgdTMyICpjdV9tYXNrLAorCQl1bnNpZ25lZCBpbnQgY3Vf bWFza19zaXplKQoreworCURFQ0xBUkVfQklUTUFQKGN1cnJfbWFzaywgTUFYX0RSTUNHX0xHUFVf Q0FQQUNJVFkpOworCXN0cnVjdCBkcm1jZ19kZXZpY2VfcmVzb3VyY2UgKmRkcjsKKwlzdHJ1Y3Qg cHJvY2Vzc19xdWV1ZV9ub2RlICpwcW47CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXY7CisJ c3RydWN0IGRybWNnICpkcm1jZzsKKwlib29sIHJlc3VsdDsKKworCWlmIChjdV9tYXNrX3NpemUg PiBNQVhfRFJNQ0dfTEdQVV9DQVBBQ0lUWSkKKwkJcmV0dXJuIGZhbHNlOworCisJYml0bWFwX2Zy b21fYXJyMzIoY3Vycl9tYXNrLCBjdV9tYXNrLCBjdV9tYXNrX3NpemUpOworCisJcHFuID0gZ2V0 X3F1ZXVlX2J5X3FpZCgmcC0+cHFtLCBxaWQpOworCWlmICghcHFuKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlhZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopcHFuLT5xLT5kZXZpY2UtPmtnZDsK KworCWRybWNnID0gZHJtY2dfZ2V0KHAtPmxlYWRfdGhyZWFkKTsKKwlkZHIgPSBkcm1jZy0+ZGV2 X3Jlc291cmNlc1thZGV2LT5kZGV2LT5wcmltYXJ5LT5pbmRleF07CisKKwlpZiAoYml0bWFwX3N1 YnNldChjdXJyX21hc2ssIGRkci0+bGdwdV9hbGxvY2F0ZWQsCisJCQkJTUFYX0RSTUNHX0xHUFVf Q0FQQUNJVFkpKQorCQlyZXN1bHQgPSB0cnVlOworCWVsc2UKKwkJcmVzdWx0ID0gZmFsc2U7CisK Kwlkcm1jZ19wdXQoZHJtY2cpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworaW50IGFtZGdwdV9h bWRrZmRfdXBkYXRlX2N1X21hc2tfZm9yX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNr LAorCQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbG9uZyAqbGdwdV9ibSwK KwkJdW5zaWduZWQgaW50IGxncHVfYm1fc2l6ZSkKK3sKKwlzdHJ1Y3Qga2ZkX2RldiAqa2RldiA9 IGFkZXYtPmtmZC5kZXY7CisJc3RydWN0IHByb2Nlc3NfcXVldWVfbm9kZSAqcHFuOworCXN0cnVj dCBrZmRfcHJvY2VzcyAqa2ZkcHJvYzsKKwlzaXplX3Qgc2l6ZV9pbl9ieXRlczsKKwl1MzIgKmN1 X21hc2s7CisJaW50IHJjID0gMDsKKworCWlmICgobGdwdV9ibV9zaXplICUgMzIpICE9IDApIHsK KwkJcHJfd2FybigibGdwdV9ibV9zaXplICVkIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMiIsCisJ CQkJbGdwdV9ibV9zaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJa2ZkcHJvYyA9IGtm ZF9nZXRfcHJvY2Vzcyh0YXNrKTsKKworCWlmIChJU19FUlIoa2ZkcHJvYykpCisJCXJldHVybiAt RVNSQ0g7CisKKwlzaXplX2luX2J5dGVzID0gc2l6ZW9mKHUzMikgKiByb3VuZF91cChsZ3B1X2Jt X3NpemUsIDMyKTsKKworCW11dGV4X2xvY2soJmtmZHByb2MtPm11dGV4KTsKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KHBxbiwgJmtmZHByb2MtPnBxbS5xdWV1ZXMsIHByb2Nlc3NfcXVldWVfbGlzdCkg eworCQlpZiAocHFuLT5xICYmIHBxbi0+cS0+ZGV2aWNlID09IGtkZXYpIHsKKwkJCS8qIHVwZGF0 ZSBjdV9tYXNrIGFjY29yZGluZ2x5ICovCisJCQljdV9tYXNrID0ga3phbGxvYyhzaXplX2luX2J5 dGVzLCBHRlBfS0VSTkVMKTsKKwkJCWlmICghY3VfbWFzaykgeworCQkJCXJjID0gLUVOT01FTTsK KwkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKHBxbi0+cS0+cHJvcGVydGllcy5jdV9tYXNrKSB7 CisJCQkJREVDTEFSRV9CSVRNQVAoY3Vycl9tYXNrLAorCQkJCQkJTUFYX0RSTUNHX0xHUFVfQ0FQ QUNJVFkpOworCisJCQkJaWYgKHBxbi0+cS0+cHJvcGVydGllcy5jdV9tYXNrX2NvdW50ID4KKwkJ CQkJCWxncHVfYm1fc2l6ZSkgeworCQkJCQlyYyA9IC1FSU5WQUw7CisJCQkJCWtmcmVlKGN1X21h c2spOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQliaXRtYXBfZnJvbV9hcnIzMihjdXJyX21h c2ssCisJCQkJCQlwcW4tPnEtPnByb3BlcnRpZXMuY3VfbWFzaywKKwkJCQkJCXBxbi0+cS0+cHJv cGVydGllcy5jdV9tYXNrX2NvdW50KTsKKworCQkJCWJpdG1hcF9hbmQoY3Vycl9tYXNrLCBjdXJy X21hc2ssIGxncHVfYm0sCisJCQkJCQlsZ3B1X2JtX3NpemUpOworCisJCQkJYml0bWFwX3RvX2Fy cjMyKGN1X21hc2ssIGN1cnJfbWFzaywKKwkJCQkJCWxncHVfYm1fc2l6ZSk7CisKKwkJCQlrZnJl ZShjdXJyX21hc2spOworCQkJfSBlbHNlCisJCQkJYml0bWFwX3RvX2FycjMyKGN1X21hc2ssIGxn cHVfYm0sCisJCQkJCQlsZ3B1X2JtX3NpemUpOworCisJCQlwcW4tPnEtPnByb3BlcnRpZXMuY3Vf bWFzayA9IGN1X21hc2s7CisJCQlwcW4tPnEtPnByb3BlcnRpZXMuY3VfbWFza19jb3VudCA9IGxn cHVfYm1fc2l6ZTsKKworCQkJcmMgPSBwcW4tPnEtPmRldmljZS0+ZHFtLT5vcHMudXBkYXRlX3F1 ZXVlKAorCQkJCQlwcW4tPnEtPmRldmljZS0+ZHFtLCBwcW4tPnEpOworCQl9CisJfQorCW11dGV4 X3VubG9jaygma2ZkcHJvYy0+bXV0ZXgpOworCisJcmV0dXJuIHJjOworfQorCiAjaWYgZGVmaW5l ZChDT05GSUdfREVCVUdfRlMpCiAKIGludCBwcW1fZGVidWdmc19tcWRzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVs