From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: [PATCH 2/2] drm/amdkfd: Add CU-masking ioctl to KFD Date: Sat, 14 Jul 2018 19:05:59 -0400 Message-ID: <1531609559-30402-2-git-send-email-Felix.Kuehling@amd.com> References: <1531609559-30402-1-git-send-email-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531609559-30402-1-git-send-email-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: Eric Huang , Felix Kuehling , Flora Cui , Kent Russell Q1UtbWFza2luZyBhbGxvd3MgYSBLRkQgY2xpZW50IHRvIGNvbnRyb2wgdGhlIHNldCBvZiBDVXMg dXNlZCBieSBhCnVzZXIgbW9kZSBxdWV1ZSBmb3IgZXhlY3V0aW5nIGNvbXB1dGUgZGlzcGF0Y2hl cy4gVGhpcyBjYW4gYmUgdXNlZApmb3Igb3B0aW1pemluZyB0aGUgcGFydGl0aW9uaW5nIG9mIHRo ZSBHUFUgYW5kIG1pbmltaXplIGNvbmZsaWN0cwpiZXR3ZWVuIGNvbmN1cnJlbnQgdGFza3MuCgpT aWduZWQtb2ZmLWJ5OiBGbG9yYSBDdWkgPGZsb3JhLmN1aUBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5 OiBLZW50IFJ1c3NlbGwgPGtlbnQucnVzc2VsbEBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmlj IEh1YW5nIDxKaW5IdWlFcmljLkh1YW5nQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEZlbGl4IEt1 ZWhsaW5nIDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9jaGFyZGV2LmMgICAgICAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZS5jICAgICAgfCAg MSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuYyAgICAgICB8 IDQxICsrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9t YW5hZ2VyLmggICAgICAgfCAgNCArKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21x ZF9tYW5hZ2VyX2Npay5jICAgfCAyNyArKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYyAgICB8IDI3ICsrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jICAgIHwgMjcgKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCAgICAgICAgICAgICAgfCAgNSAr KwogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMgfCAz MCArKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAyMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFy ZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jCmluZGV4IDIx ZDA5ODkuLjA2M2M5NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9jaGFyZGV2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYu YwpAQCAtMzkyLDYgKzM5Miw2MSBAQCBzdGF0aWMgaW50IGtmZF9pb2N0bF91cGRhdGVfcXVldWUo c3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwKIAlyZXR1cm4gcmV0dmFs OwogfQogCitzdGF0aWMgaW50IGtmZF9pb2N0bF9zZXRfY3VfbWFzayhzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IGtmZF9wcm9jZXNzICpwLAorCQkJCQl2b2lkICpkYXRhKQoreworCWludCByZXR2 YWw7CisJY29uc3QgaW50IG1heF9udW1fY3VzID0gMTAyNDsKKwlzdHJ1Y3Qga2ZkX2lvY3RsX3Nl dF9jdV9tYXNrX2FyZ3MgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzIHBy b3BlcnRpZXM7CisJdWludDMyX3QgX191c2VyICpjdV9tYXNrX3B0ciA9ICh1aW50MzJfdCBfX3Vz ZXIgKilhcmdzLT5jdV9tYXNrX3B0cjsKKwlzaXplX3QgY3VfbWFza19zaXplID0gc2l6ZW9mKHVp bnQzMl90KSAqIChhcmdzLT5udW1fY3VfbWFzayAvIDMyKTsKKworCWlmICgoYXJncy0+bnVtX2N1 X21hc2sgJSAzMikgIT0gMCkgeworCQlwcl9kZWJ1ZygibnVtX2N1X21hc2sgMHgleCBtdXN0IGJl IGEgbXVsdGlwbGUgb2YgMzIiLAorCQkJCWFyZ3MtPm51bV9jdV9tYXNrKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCisJcHJvcGVydGllcy5jdV9tYXNrX2NvdW50ID0gYXJncy0+bnVtX2N1X21h c2s7CisJaWYgKHByb3BlcnRpZXMuY3VfbWFza19jb3VudCA9PSAwKSB7CisJCXByX2RlYnVnKCJD VSBtYXNrIGNhbm5vdCBiZSAwIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFRvIHBy ZXZlbnQgYW4gdW5yZWFzb25hYmx5IGxhcmdlIENVIG1hc2sgc2l6ZSwgc2V0IGFuIGFyYml0cmFy eQorCSAqIGxpbWl0IG9mIG1heF9udW1fY3VzIGJpdHMuICBXZSBjYW4gdGhlbiBqdXN0IGRyb3Ag YW55IENVIG1hc2sgYml0cworCSAqIHBhc3QgbWF4X251bV9jdXMgYml0cyBhbmQganVzdCB1c2Ug dGhlIGZpcnN0IG1heF9udW1fY3VzIGJpdHMuCisJICovCisJaWYgKHByb3BlcnRpZXMuY3VfbWFz a19jb3VudCA+IG1heF9udW1fY3VzKSB7CisJCXByX2RlYnVnKCJDVSBtYXNrIGNhbm5vdCBiZSBn cmVhdGVyIHRoYW4gMTAyNCBiaXRzIik7CisJCXByb3BlcnRpZXMuY3VfbWFza19jb3VudCA9IG1h eF9udW1fY3VzOworCQljdV9tYXNrX3NpemUgPSBzaXplb2YodWludDMyX3QpICogKG1heF9udW1f Y3VzLzMyKTsKKwl9CisKKwlwcm9wZXJ0aWVzLmN1X21hc2sgPSBremFsbG9jKGN1X21hc2tfc2l6 ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcm9wZXJ0aWVzLmN1X21hc2spCisJCXJldHVybiAtRU5P TUVNOworCisJcmV0dmFsID0gY29weV9mcm9tX3VzZXIocHJvcGVydGllcy5jdV9tYXNrLCBjdV9t YXNrX3B0ciwgY3VfbWFza19zaXplKTsKKwlpZiAocmV0dmFsKSB7CisJCXByX2RlYnVnKCJDb3Vs ZCBub3QgY29weSBDVSBtYXNrIGZyb20gdXNlcnNwYWNlIik7CisJCWtmcmVlKHByb3BlcnRpZXMu Y3VfbWFzayk7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCW11dGV4X2xvY2soJnAtPm11dGV4 KTsKKworCXJldHZhbCA9IHBxbV9zZXRfY3VfbWFzaygmcC0+cHFtLCBhcmdzLT5xdWV1ZV9pZCwg JnByb3BlcnRpZXMpOworCisJbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7CisKKwlpZiAocmV0dmFs KQorCQlrZnJlZShwcm9wZXJ0aWVzLmN1X21hc2spOworCisJcmV0dXJuIHJldHZhbDsKK30KKwog c3RhdGljIGludCBrZmRfaW9jdGxfc2V0X21lbW9yeV9wb2xpY3koc3RydWN0IGZpbGUgKmZpbGVw LAogCQkJCQlzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAsIHZvaWQgKmRhdGEpCiB7CkBAIC0xNTYxLDYg KzE2MTYsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGtmZF9pb2N0bF9kZXNjIGFtZGtmZF9p b2N0bHNbXSA9IHsKIAlBTURLRkRfSU9DVExfREVGKEFNREtGRF9JT0NfVU5NQVBfTUVNT1JZX0ZS T01fR1BVLAogCQkJa2ZkX2lvY3RsX3VubWFwX21lbW9yeV9mcm9tX2dwdSwgMCksCiAKKwlBTURL RkRfSU9DVExfREVGKEFNREtGRF9JT0NfU0VUX0NVX01BU0ssCisJCQlrZmRfaW9jdGxfc2V0X2N1 X21hc2ssIDApLAorCiB9OwogCiAjZGVmaW5lIEFNREtGRF9DT1JFX0lPQ1RMX0NPVU5UCUFSUkFZ X1NJWkUoYW1ka2ZkX2lvY3RscykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9rZXJuZWxfcXVldWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9r ZXJuZWxfcXVldWUuYwppbmRleCAyYzg4OTdlLi45Zjg0YjRkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZS5jCkBAIC0xMjMsNiArMTIzLDcgQEAgc3Rh dGljIGJvb2wgaW5pdGlhbGl6ZShzdHJ1Y3Qga2VybmVsX3F1ZXVlICprcSwgc3RydWN0IGtmZF9k ZXYgKmRldiwKIAlwcm9wLndyaXRlX3B0ciA9ICh1aW50MzJfdCAqKSBrcS0+d3B0cl9ncHVfYWRk cjsKIAlwcm9wLmVvcF9yaW5nX2J1ZmZlcl9hZGRyZXNzID0ga3EtPmVvcF9ncHVfYWRkcjsKIAlw cm9wLmVvcF9yaW5nX2J1ZmZlcl9zaXplID0gUEFHRV9TSVpFOworCXByb3AuY3VfbWFzayA9IE5V TEw7CiAKIAlpZiAoaW5pdF9xdWV1ZSgma3EtPnF1ZXVlLCAmcHJvcCkgIT0gMCkKIAkJZ290byBl cnJfaW5pdF9xdWV1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9tcWRfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5h Z2VyLmMKaW5kZXggNGI4ZWI1MC4uM2JjMjVhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMKQEAgLTIxLDcgKzIxLDcgQEAKICAqCiAgKi8KIAotI2lu Y2x1ZGUgImtmZF9wcml2LmgiCisjaW5jbHVkZSAia2ZkX21xZF9tYW5hZ2VyLmgiCiAKIHN0cnVj dCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdChlbnVtIEtGRF9NUURfVFlQRSB0eXBlLAog CQkJCQlzdHJ1Y3Qga2ZkX2RldiAqZGV2KQpAQCAtNDgsMyArNDgsNDIgQEAgc3RydWN0IG1xZF9t YW5hZ2VyICptcWRfbWFuYWdlcl9pbml0KGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsCiAKIAlyZXR1 cm4gTlVMTDsKIH0KKwordm9pZCBtcWRfc3ltbWV0cmljYWxseV9tYXBfY3VfbWFzayhzdHJ1Y3Qg bXFkX21hbmFnZXIgKm1tLAorCQljb25zdCB1aW50MzJfdCAqY3VfbWFzaywgdWludDMyX3QgY3Vf bWFza19jb3VudCwKKwkJdWludDMyX3QgKnNlX21hc2spCit7CisJc3RydWN0IGtmZF9jdV9pbmZv IGN1X2luZm87CisJdWludDMyX3QgY3VfcGVyX3NoWzRdID0gezB9OworCWludCBpLCBzZSwgY3Ug PSAwOworCisJbW0tPmRldi0+a2ZkMmtnZC0+Z2V0X2N1X2luZm8obW0tPmRldi0+a2dkLCAmY3Vf aW5mbyk7CisKKwlpZiAoY3VfbWFza19jb3VudCA+IGN1X2luZm8uY3VfYWN0aXZlX251bWJlcikK KwkJY3VfbWFza19jb3VudCA9IGN1X2luZm8uY3VfYWN0aXZlX251bWJlcjsKKworCWZvciAoc2Ug PSAwOyBzZSA8IGN1X2luZm8ubnVtX3NoYWRlcl9lbmdpbmVzOyBzZSsrKQorCQlmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKQorCQkJY3VfcGVyX3NoW3NlXSArPSBod2VpZ2h0MzIoY3VfaW5mby5jdV9i aXRtYXBbc2VdW2ldKTsKKworCS8qIFN5bW1ldHJpY2FsbHkgbWFwIGN1X21hc2sgdG8gYWxsIFNF czoKKwkgKiBjdV9tYXNrWzBdIGJpdDAgLT4gc2VfbWFza1swXSBiaXQwOworCSAqIGN1X21hc2tb MF0gYml0MSAtPiBzZV9tYXNrWzFdIGJpdDA7CisJICogLi4uIChpZiAjIFNFIGlzIDQpCisJICog Y3VfbWFza1swXSBiaXQ0IC0+IHNlX21hc2tbMF0gYml0MTsKKwkgKiAuLi4KKwkgKi8KKwlzZSA9 IDA7CisJZm9yIChpID0gMDsgaSA8IGN1X21hc2tfY291bnQ7IGkrKykgeworCQlpZiAoY3VfbWFz a1tpIC8gMzJdICYgKDEgPDwgKGkgJSAzMikpKQorCQkJc2VfbWFza1tzZV0gfD0gMSA8PCBjdTsK KworCQlkbyB7CisJCQlzZSsrOworCQkJaWYgKHNlID09IGN1X2luZm8ubnVtX3NoYWRlcl9lbmdp bmVzKSB7CisJCQkJc2UgPSAwOworCQkJCWN1Kys7CisJCQl9CisJCX0gd2hpbGUgKGN1ID49IGN1 X3Blcl9zaFtzZV0gJiYgY3UgPCAzMik7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbXFkX21hbmFnZXIuaAppbmRleCA4OTcyYmNmLi40ZTg0MDUyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuaApAQCAtOTMsNCArOTMsOCBA QCBzdHJ1Y3QgbXFkX21hbmFnZXIgewogCXN0cnVjdCBrZmRfZGV2CSpkZXY7CiB9OwogCit2b2lk IG1xZF9zeW1tZXRyaWNhbGx5X21hcF9jdV9tYXNrKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sCisJ CWNvbnN0IHVpbnQzMl90ICpjdV9tYXNrLCB1aW50MzJfdCBjdV9tYXNrX2NvdW50LAorCQl1aW50 MzJfdCAqc2VfbWFzayk7CisKICNlbmRpZiAvKiBLRkRfTVFEX01BTkFHRVJfSF8gKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl9jaWsuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl9jaWsuYwppbmRleCA0 ODcyNTc0Li40NzI0MzE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfbXFkX21hbmFnZXJfY2lrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X21xZF9tYW5hZ2VyX2Npay5jCkBAIC00MSw2ICs0MSwzMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBjaWtfc2RtYV9ybGNfcmVnaXN0ZXJzICpnZXRfc2RtYV9tcWQodm9pZCAqbXFkKQogCXJldHVy biAoc3RydWN0IGNpa19zZG1hX3JsY19yZWdpc3RlcnMgKiltcWQ7CiB9CiAKK3N0YXRpYyB2b2lk IHVwZGF0ZV9jdV9tYXNrKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwKKwkJCXN0 cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQoreworCXN0cnVjdCBjaWtfbXFkICptOworCXVpbnQz Ml90IHNlX21hc2tbNF0gPSB7MH07IC8qIDQgaXMgdGhlIG1heCAjIG9mIFNFcyAqLworCisJaWYg KHEtPmN1X21hc2tfY291bnQgPT0gMCkKKwkJcmV0dXJuOworCisJbXFkX3N5bW1ldHJpY2FsbHlf bWFwX2N1X21hc2sobW0sCisJCXEtPmN1X21hc2ssIHEtPmN1X21hc2tfY291bnQsIHNlX21hc2sp OworCisJbSA9IGdldF9tcWQobXFkKTsKKwltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9z ZTAgPSBzZV9tYXNrWzBdOworCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMSA9IHNl X21hc2tbMV07CisJbS0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UyID0gc2VfbWFza1sy XTsKKwltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTMgPSBzZV9tYXNrWzNdOworCisJ cHJfZGVidWcoIlVwZGF0ZSBjdSBtYXNrIHRvICUjeCAlI3ggJSN4ICUjeFxuIiwKKwkJbS0+Y29t cHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UwLAorCQltLT5jb21wdXRlX3N0YXRpY190aHJlYWRf bWdtdF9zZTEsCisJCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiwKKwkJbS0+Y29t cHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UzKTsKK30KKwogc3RhdGljIGludCBpbml0X21xZChz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLAogCQlzdHJ1Y3Qga2ZkX21lbV9vYmog KiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwKIAkJc3RydWN0IHF1ZXVlX3Byb3Bl cnRpZXMgKnEpCkBAIC0xOTYsNiArMjIxLDggQEAgc3RhdGljIGludCBfX3VwZGF0ZV9tcWQoc3Ry dWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLAogCWlmIChxLT5mb3JtYXQgPT0gS0ZEX1FV RVVFX0ZPUk1BVF9BUUwpCiAJCW0tPmNwX2hxZF9wcV9jb250cm9sIHw9IE5PX1VQREFURV9SUFRS OwogCisJdXBkYXRlX2N1X21hc2sobW0sIG1xZCwgcSk7CisKIAlxLT5pc19hY3RpdmUgPSAocS0+ cXVldWVfc2l6ZSA+IDAgJiYKIAkJCXEtPnF1ZXVlX2FkZHJlc3MgIT0gMCAmJgogCQkJcS0+cXVl dWVfcGVyY2VudCA+IDAgJiYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9tcWRfbWFuYWdlcl92OS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21x ZF9tYW5hZ2VyX3Y5LmMKaW5kZXggYWQ1YzlmOC4uZjVmYzM2NyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMKQEAgLTQxLDYgKzQxLDMxIEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IHY5X3NkbWFfbXFkICpnZXRfc2RtYV9tcWQodm9pZCAqbXFk KQogCXJldHVybiAoc3RydWN0IHY5X3NkbWFfbXFkICopbXFkOwogfQogCitzdGF0aWMgdm9pZCB1 cGRhdGVfY3VfbWFzayhzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsCisJCQlzdHJ1 Y3QgcXVldWVfcHJvcGVydGllcyAqcSkKK3sKKwlzdHJ1Y3QgdjlfbXFkICptOworCXVpbnQzMl90 IHNlX21hc2tbNF0gPSB7MH07IC8qIDQgaXMgdGhlIG1heCAjIG9mIFNFcyAqLworCisJaWYgKHEt PmN1X21hc2tfY291bnQgPT0gMCkKKwkJcmV0dXJuOworCisJbXFkX3N5bW1ldHJpY2FsbHlfbWFw X2N1X21hc2sobW0sCisJCXEtPmN1X21hc2ssIHEtPmN1X21hc2tfY291bnQsIHNlX21hc2spOwor CisJbSA9IGdldF9tcWQobXFkKTsKKwltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTAg PSBzZV9tYXNrWzBdOworCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMSA9IHNlX21h c2tbMV07CisJbS0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UyID0gc2VfbWFza1syXTsK KwltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTMgPSBzZV9tYXNrWzNdOworCisJcHJf ZGVidWcoInVwZGF0ZSBjdSBtYXNrIHRvICUjeCAlI3ggJSN4ICUjeFxuIiwKKwkJbS0+Y29tcHV0 ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UwLAorCQltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdt dF9zZTEsCisJCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiwKKwkJbS0+Y29tcHV0 ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UzKTsKK30KKwogc3RhdGljIGludCBpbml0X21xZChzdHJ1 Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLAogCQkJc3RydWN0IGtmZF9tZW1fb2JqICoq bXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsCiAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVy dGllcyAqcSkKQEAgLTE5OCw2ICsyMjMsOCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9tcWQoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLAogCWlmIChtbS0+ZGV2LT5jd3NyX2VuYWJsZWQg JiYgcS0+Y3R4X3NhdmVfcmVzdG9yZV9hcmVhX2FkZHJlc3MpCiAJCW0tPmNwX2hxZF9jdHhfc2F2 ZV9jb250cm9sID0gMDsKIAorCXVwZGF0ZV9jdV9tYXNrKG1tLCBtcWQsIHEpOworCiAJcS0+aXNf YWN0aXZlID0gKHEtPnF1ZXVlX3NpemUgPiAwICYmCiAJCQlxLT5xdWV1ZV9hZGRyZXNzICE9IDAg JiYKIAkJCXEtPnF1ZXVlX3BlcmNlbnQgPiAwICYmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jCmluZGV4IDg5ZTQyNDIuLmI4MWZkYTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jCkBAIC00 Myw2ICs0MywzMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB2aV9zZG1hX21xZCAqZ2V0X3NkbWFf bXFkKHZvaWQgKm1xZCkKIAlyZXR1cm4gKHN0cnVjdCB2aV9zZG1hX21xZCAqKW1xZDsKIH0KIAor c3RhdGljIHZvaWQgdXBkYXRlX2N1X21hc2soc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq bXFkLAorCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpCit7CisJc3RydWN0IHZpX21xZCAq bTsKKwl1aW50MzJfdCBzZV9tYXNrWzRdID0gezB9OyAvKiA0IGlzIHRoZSBtYXggIyBvZiBTRXMg Ki8KKworCWlmIChxLT5jdV9tYXNrX2NvdW50ID09IDApCisJCXJldHVybjsKKworCW1xZF9zeW1t ZXRyaWNhbGx5X21hcF9jdV9tYXNrKG1tLAorCQlxLT5jdV9tYXNrLCBxLT5jdV9tYXNrX2NvdW50 LCBzZV9tYXNrKTsKKworCW0gPSBnZXRfbXFkKG1xZCk7CisJbS0+Y29tcHV0ZV9zdGF0aWNfdGhy ZWFkX21nbXRfc2UwID0gc2VfbWFza1swXTsKKwltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdt dF9zZTEgPSBzZV9tYXNrWzFdOworCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiA9 IHNlX21hc2tbMl07CisJbS0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UzID0gc2VfbWFz a1szXTsKKworCXByX2RlYnVnKCJVcGRhdGUgY3UgbWFzayB0byAlI3ggJSN4ICUjeCAlI3hcbiIs CisJCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMCwKKwkJbS0+Y29tcHV0ZV9zdGF0 aWNfdGhyZWFkX21nbXRfc2UxLAorCQltLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTIs CisJCW0tPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMyk7Cit9CisKIHN0YXRpYyBpbnQg aW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwKIAkJCXN0cnVjdCBr ZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLAogCQkJc3RydWN0 IHF1ZXVlX3Byb3BlcnRpZXMgKnEpCkBAIC0xOTYsNiArMjIxLDggQEAgc3RhdGljIGludCBfX3Vw ZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLAogCQkJYXRjX2JpdCA8 PCBDUF9IUURfQ1RYX1NBVkVfQ09OVFJPTF9fQVRDX19TSElGVCB8CiAJCQltdHlwZSA8PCBDUF9I UURfQ1RYX1NBVkVfQ09OVFJPTF9fTVRZUEVfX1NISUZUOwogCisJdXBkYXRlX2N1X21hc2sobW0s IG1xZCwgcSk7CisKIAlxLT5pc19hY3RpdmUgPSAocS0+cXVldWVfc2l6ZSA+IDAgJiYKIAkJCXEt PnF1ZXVlX2FkZHJlc3MgIT0gMCAmJgogCQkJcS0+cXVldWVfcGVyY2VudCA+IDAgJiYKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmggYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oCmluZGV4IGNhODMyNTQuLmY5NzE3MTAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaApAQCAtNDIyLDYgKzQyMiw5IEBAIHN0cnVj dCBxdWV1ZV9wcm9wZXJ0aWVzIHsKIAl1aW50MzJfdCBjdGxfc3RhY2tfc2l6ZTsKIAl1aW50NjRf dCB0YmFfYWRkcjsKIAl1aW50NjRfdCB0bWFfYWRkcjsKKwkvKiBSZWxldmFudCBmb3IgQ1UgKi8K Kwl1aW50MzJfdCBjdV9tYXNrX2NvdW50OyAvKiBNdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgKi8K Kwl1aW50MzJfdCAqY3VfbWFzazsKIH07CiAKIC8qKgpAQCAtODcyLDYgKzg3NSw4IEBAIGludCBw cW1fY3JlYXRlX3F1ZXVlKHN0cnVjdCBwcm9jZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwKIGludCBw cW1fZGVzdHJveV9xdWV1ZShzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyICpwcW0sIHVuc2ln bmVkIGludCBxaWQpOwogaW50IHBxbV91cGRhdGVfcXVldWUoc3RydWN0IHByb2Nlc3NfcXVldWVf bWFuYWdlciAqcHFtLCB1bnNpZ25lZCBpbnQgcWlkLAogCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRp ZXMgKnApOworaW50IHBxbV9zZXRfY3VfbWFzayhzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9tYW5hZ2Vy ICpwcW0sIHVuc2lnbmVkIGludCBxaWQsCisJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcCk7 CiBzdHJ1Y3Qga2VybmVsX3F1ZXVlICpwcW1fZ2V0X2tlcm5lbF9xdWV1ZShzdHJ1Y3QgcHJvY2Vz c19xdWV1ZV9tYW5hZ2VyICpwcW0sCiAJCQkJCQl1bnNpZ25lZCBpbnQgcWlkKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdl ci5jCmluZGV4IGViNGU1ZmIuLmM4Y2FkOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMKQEAgLTMyNSw2ICszMjUs OCBAQCBpbnQgcHFtX2Rlc3Ryb3lfcXVldWUoc3RydWN0IHByb2Nlc3NfcXVldWVfbWFuYWdlciAq cHFtLCB1bnNpZ25lZCBpbnQgcWlkKQogCQkJaWYgKHJldHZhbCAhPSAtRVRJTUUpCiAJCQkJZ290 byBlcnJfZGVzdHJveV9xdWV1ZTsKIAkJfQorCQlrZnJlZShwcW4tPnEtPnByb3BlcnRpZXMuY3Vf bWFzayk7CisJCXBxbi0+cS0+cHJvcGVydGllcy5jdV9tYXNrID0gTlVMTDsKIAkJdW5pbml0X3F1 ZXVlKHBxbi0+cSk7CiAJfQogCkBAIC0zNjUsNiArMzY3LDM0IEBAIGludCBwcW1fdXBkYXRlX3F1 ZXVlKHN0cnVjdCBwcm9jZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwgdW5zaWduZWQgaW50IHFpZCwK IAlyZXR1cm4gMDsKIH0KIAoraW50IHBxbV9zZXRfY3VfbWFzayhzdHJ1Y3QgcHJvY2Vzc19xdWV1 ZV9tYW5hZ2VyICpwcW0sIHVuc2lnbmVkIGludCBxaWQsCisJCQlzdHJ1Y3QgcXVldWVfcHJvcGVy dGllcyAqcCkKK3sKKwlpbnQgcmV0dmFsOworCXN0cnVjdCBwcm9jZXNzX3F1ZXVlX25vZGUgKnBx bjsKKworCXBxbiA9IGdldF9xdWV1ZV9ieV9xaWQocHFtLCBxaWQpOworCWlmICghcHFuKSB7CisJ CXByX2RlYnVnKCJObyBxdWV1ZSAlZCBleGlzdHMgZm9yIHVwZGF0ZSBvcGVyYXRpb25cbiIsIHFp ZCk7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCS8qIEZyZWUgdGhlIG9sZCBDVSBtYXNrIG1l bW9yeSBpZiBpdCBpcyBhbHJlYWR5IGFsbG9jYXRlZCwgdGhlbgorCSAqIGFsbG9jYXRlIG1lbW9y eSBmb3IgdGhlIG5ldyBDVSBtYXNrLgorCSAqLworCWtmcmVlKHBxbi0+cS0+cHJvcGVydGllcy5j dV9tYXNrKTsKKworCXBxbi0+cS0+cHJvcGVydGllcy5jdV9tYXNrX2NvdW50ID0gcC0+Y3VfbWFz a19jb3VudDsKKwlwcW4tPnEtPnByb3BlcnRpZXMuY3VfbWFzayA9IHAtPmN1X21hc2s7CisKKwly ZXR2YWwgPSBwcW4tPnEtPmRldmljZS0+ZHFtLT5vcHMudXBkYXRlX3F1ZXVlKHBxbi0+cS0+ZGV2 aWNlLT5kcW0sCisJCQkJCQkJcHFuLT5xKTsKKwlpZiAocmV0dmFsICE9IDApCisJCXJldHVybiBy ZXR2YWw7CisKKwlyZXR1cm4gMDsKK30KKwogc3RydWN0IGtlcm5lbF9xdWV1ZSAqcHFtX2dldF9r ZXJuZWxfcXVldWUoCiAJCQkJCXN0cnVjdCBwcm9jZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwKIAkJ CQkJdW5zaWduZWQgaW50IHFpZCkKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngK