From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhawanpreet Lakha Subject: [PATCH 03/20] drm: revocation check at drm subsystem Date: Thu, 29 Aug 2019 12:22:36 -0400 Message-ID: <20190829162253.10195-4-Bhawanpreet.Lakha@amd.com> References: <20190829162253.10195-1-Bhawanpreet.Lakha@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190829162253.10195-1-Bhawanpreet.Lakha-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 Cc: Ramalingam C , Daniel Vetter RnJvbTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgoKT24gZXZlcnkgaGRj cCByZXZvY2F0aW9uIGNoZWNrIHJlcXVlc3QgU1JNIGlzIHJlYWQgZnJvbSBmdyBmaWxlCi9saWIv ZmlybXdhcmUvZGlzcGxheV9oZGNwX3NybS5iaW4KClNSTSB0YWJsZSBpcyBwYXJzZWQgYW5kIHN0 b3JlZCBhdCBkcm1faGRjcC5jLCB3aXRoIGZ1bmN0aW9ucyBleHBvcnRlZApmb3IgdGhlIHNlcnZp Y2VzIGZvciByZXZvY2F0aW9uIGNoZWNrIGZyb20gZHJpdmVycyAod2hpY2gKaW1wbGVtZW50cyB0 aGUgSERDUCBhdXRoZW50aWNhdGlvbikKClRoaXMgcGF0Y2ggaGFuZGxlcyB0aGUgSERDUDEuNCBh bmQgMi4yIHZlcnNpb25zIG9mIFNSTSB0YWJsZS4KCnYyOgogIG1vdmVkIHRoZSB1QVBJIHRvIHJl cXVlc3RfZmlybXdhcmVfZGlyZWN0KCkgW0RhbmllbF0KdjM6CiAga2RvYyBhZGRlZC4gW0Rhbmll bF0KICBzcm1faGVhZGVyIHVuaWZpZWQgYW5kIGJpdCBmaWVsZCBkZWZpbml0aW9ucyBhcmUgcmVt b3ZlZC4gW0RhbmllbF0KICBsb2NraW5nIGltcHJvdmVkLiBbRGFuaWVsXQogIHZybCBsZW5ndGgg dmlvbGF0aW9uIGlzIGZpeGVkLiBbRGFuaWVsXQp2NDoKICBzL19fc3dhYjE2L2JlMTZfdG9fY3B1 IFtEYW5pZWxdCiAgYmUyNF90b19jcHUgaXMgZG9uZSB0aHJvdWdoIGEgZ2xvYmFsIGZ1bmMgW0Rh bmllbF0KICBVbnVzZWQgdmFyaWFibGVzIGFyZSByZW1vdmVkLiBbRGFuaWVsXQogIHVuY2hlY2tl ZCByZXR1cm4gdmFsdWVzIGFyZSBkcm9wcGVkIGZyb20gc3RhdGljIGZ1bmNzIFtEYW5pZWxdCgpT aWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+CkFja2Vk LWJ5OiBTYXR5ZXNod2FyIFNpbmdoIDxzYXR5ZXNod2FyLnNpbmdoQGludGVsLmNvbT4KUmV2aWV3 ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KQWNrZWQtYnk6IERhdmUgQWly bGllIDxhaXJsaWVkQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KTGluazogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Au b3JnL3BhdGNoL21zZ2lkLzIwMTkwNTA3MTYyNzQ1LjI1NjAwLTUtcmFtYWxpbmdhbS5jQGludGVs LmNvbQotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgIDYgKwog ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2RybV9oZGNwLmMgICAgICAgICAgICB8IDMzMyArKysrKysrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oICAgICAgICB8ICAgNCArCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMgICAgICAgICAgIHwgICAyICsKIGluY2x1ZGUvZHJtL2Ry bV9oZGNwLmggICAgICAgICAgICAgICAgfCAgMjQgKysKIDYgZmlsZXMgY2hhbmdlZCwgMzcwIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vZHJtX2hkY3AuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMt aGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4 IDE0MTAyYWUwMzVkYy4uMGZlNzI2YTZlZTY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dw dS9kcm0ta21zLWhlbHBlcnMucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVs cGVycy5yc3QKQEAgLTE4MSw2ICsxODEsMTIgQEAgUGFuZWwgSGVscGVyIFJlZmVyZW5jZQogLi4g a2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtz LmMKICAgIDpleHBvcnQ6CiAKK0hEQ1AgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1 L2RybS9kcm1faGRjcC5jCisgICA6ZXhwb3J0OgorCiBEaXNwbGF5IFBvcnQgSGVscGVyIEZ1bmN0 aW9ucyBSZWZlcmVuY2UKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKaW5kZXggZjIwNDgzMDY2OWUyLi43ZmEwOWVhMDBmZmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAg LTE3LDcgKzE3LDcgQEAgZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1fY2FjaGUubyBcCiAJ CWRybV9wbGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50Lm8gXAogCQlkcm1fZHVtYl9i dWZmZXJzLm8gZHJtX21vZGVfY29uZmlnLm8gZHJtX3ZibGFuay5vIFwKIAkJZHJtX3N5bmNvYmou byBkcm1fbGVhc2UubyBkcm1fd3JpdGViYWNrLm8gZHJtX2NsaWVudC5vIFwKLQkJZHJtX2F0b21p Y191YXBpLm8KKwkJZHJtX2F0b21pY191YXBpLm8gZHJtX2hkY3AubwogCiBkcm0tJChDT05GSUdf RFJNX0xFR0FDWSkgKz0gZHJtX2xlZ2FjeV9taXNjLm8gZHJtX2J1ZnMubyBkcm1fY29udGV4dC5v IGRybV9kbWEubyBkcm1fc2NhdHRlci5vIGRybV9sb2NrLm8KIGRybS0kKENPTkZJR19EUk1fTElC X1JBTkRPTSkgKz0gbGliL2RybV9yYW5kb20ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2hkY3AuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVlNTQwOTUwNWMzMQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jCkBAIC0wLDAgKzEsMzMzIEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBBdXRob3JzOgorICogUmFtYWxpbmdhbSBDIDxyYW1hbGlu Z2FtLmNAaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9nZnAuaD4KKyNpbmNsdWRlIDxsaW51 eC9leHBvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvZmly bXdhcmUuaD4KKworI2luY2x1ZGUgPGRybS9kcm1faGRjcC5oPgorI2luY2x1ZGUgPGRybS9kcm1f c3lzZnMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9k ZXZpY2UuaD4KKworc3RydWN0IGhkY3Bfc3JtIHsKKwl1MzIgcmV2b2tlZF9rc3ZfY250OworCXU4 ICpyZXZva2VkX2tzdl9saXN0OworCisJLyogTXV0ZXggdG8gcHJvdGVjdCBhYm92ZSBzdHJ1Y3Qg bWVtYmVyICovCisJc3RydWN0IG11dGV4IG11dGV4OworfSAqc3JtX2RhdGE7CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBkcm1faGRjcF9wcmludF9rc3YoY29uc3QgdTggKmtzdikKK3sKKwlEUk1fREVC VUcoIlx0JSMwMngsICUjMDJ4LCAlIzAyeCwgJSMwMngsICUjMDJ4XG4iLAorCQkgIGtzdlswXSwg a3N2WzFdLCBrc3ZbMl0sIGtzdlszXSwga3N2WzRdKTsKK30KKworc3RhdGljIHUzMiBkcm1faGRj cF9nZXRfcmV2b2tlZF9rc3ZfY291bnQoY29uc3QgdTggKmJ1ZiwgdTMyIHZybHNfbGVuZ3RoKQor eworCXUzMiBwYXJzZWRfYnl0ZXMgPSAwLCBrc3ZfY291bnQgPSAwLCB2cmxfa3N2X2NudCwgdnJs X3N6OworCisJd2hpbGUgKHBhcnNlZF9ieXRlcyA8IHZybHNfbGVuZ3RoKSB7CisJCXZybF9rc3Zf Y250ID0gKmJ1ZjsKKwkJa3N2X2NvdW50ICs9IHZybF9rc3ZfY250OworCisJCXZybF9zeiA9ICh2 cmxfa3N2X2NudCAqIERSTV9IRENQX0tTVl9MRU4pICsgMTsKKwkJYnVmICs9IHZybF9zejsKKwkJ cGFyc2VkX2J5dGVzICs9IHZybF9zejsKKwl9CisKKwkvKgorCSAqIFdoZW4gdnJscyBhcmUgbm90 IHZhbGlkLCBrc3ZzIGFyZSBub3QgY29uc2lkZXJlZC4KKwkgKiBIZW5jZSBTUk0gd2lsbCBiZSBk aXNjYXJkZWQuCisJICovCisJaWYgKHBhcnNlZF9ieXRlcyAhPSB2cmxzX2xlbmd0aCkKKwkJa3N2 X2NvdW50ID0gMDsKKworCXJldHVybiBrc3ZfY291bnQ7Cit9CisKK3N0YXRpYyB1MzIgZHJtX2hk Y3BfZ2V0X3Jldm9rZWRfa3N2cyhjb25zdCB1OCAqYnVmLCB1OCAqcmV2b2tlZF9rc3ZfbGlzdCwK KwkJCQkgICAgIHUzMiB2cmxzX2xlbmd0aCkKK3sKKwl1MzIgcGFyc2VkX2J5dGVzID0gMCwga3N2 X2NvdW50ID0gMDsKKwl1MzIgdnJsX2tzdl9jbnQsIHZybF9rc3Zfc3osIHZybF9pZHggPSAwOwor CisJZG8geworCQl2cmxfa3N2X2NudCA9ICpidWY7CisJCXZybF9rc3Zfc3ogPSB2cmxfa3N2X2Nu dCAqIERSTV9IRENQX0tTVl9MRU47CisKKwkJYnVmKys7CisKKwkJRFJNX0RFQlVHKCJ2cmw6ICVk LCBSZXZva2VkIEtTVnM6ICVkXG4iLCB2cmxfaWR4KyssCisJCQkgIHZybF9rc3ZfY250KTsKKwkJ bWVtY3B5KHJldm9rZWRfa3N2X2xpc3QsIGJ1ZiwgdnJsX2tzdl9zeik7CisKKwkJa3N2X2NvdW50 ICs9IHZybF9rc3ZfY250OworCQlyZXZva2VkX2tzdl9saXN0ICs9IHZybF9rc3Zfc3o7CisJCWJ1 ZiArPSB2cmxfa3N2X3N6OworCisJCXBhcnNlZF9ieXRlcyArPSAodnJsX2tzdl9zeiArIDEpOwor CX0gd2hpbGUgKHBhcnNlZF9ieXRlcyA8IHZybHNfbGVuZ3RoKTsKKworCXJldHVybiBrc3ZfY291 bnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGdldF92cmxfbGVuZ3RoKGNvbnN0IHU4ICpidWYp Cit7CisJcmV0dXJuIGRybV9oZGNwX2JlMjRfdG9fY3B1KGJ1Zik7Cit9CisKK3N0YXRpYyBpbnQg ZHJtX2hkY3BfcGFyc2VfaGRjcDFfc3JtKGNvbnN0IHU4ICpidWYsIHNpemVfdCBjb3VudCkKK3sK KwlzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyICpoZWFkZXI7CisJdTMyIHZybF9sZW5ndGgsIGtzdl9j b3VudDsKKworCWlmIChjb3VudCA8IChzaXplb2Yoc3RydWN0IGhkY3Bfc3JtX2hlYWRlcikgKwor CSAgICBEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9TSVpFICsgRFJNX0hEQ1BfMV80X0RDUF9TSUdf U0laRSkpIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIGJsb2IgbGVuZ3RoXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaGVhZGVyID0gKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIgKilidWY7 CisJRFJNX0RFQlVHKCJTUk0gSUQ6IDB4JXgsIFNSTSBWZXI6IDB4JXgsIFNSTSBHZW4gTm86IDB4 JXhcbiIsCisJCSAgaGVhZGVyLT5zcm1faWQsCisJCSAgYmUxNl90b19jcHUoaGVhZGVyLT5zcm1f dmVyc2lvbiksIGhlYWRlci0+c3JtX2dlbl9ubyk7CisKKwlXQVJOX09OKGhlYWRlci0+cmVzZXJ2 ZWQpOworCisJYnVmID0gYnVmICsgc2l6ZW9mKCpoZWFkZXIpOworCXZybF9sZW5ndGggPSBnZXRf dnJsX2xlbmd0aChidWYpOworCWlmIChjb3VudCA8IChzaXplb2Yoc3RydWN0IGhkY3Bfc3JtX2hl YWRlcikgKyB2cmxfbGVuZ3RoKSB8fAorCSAgICB2cmxfbGVuZ3RoIDwgKERSTV9IRENQXzFfNF9W UkxfTEVOR1RIX1NJWkUgKworCQkJICBEUk1fSERDUF8xXzRfRENQX1NJR19TSVpFKSkgeworCQlE Uk1fRVJST1IoIkludmFsaWQgYmxvYiBsZW5ndGggb3IgdnJsIGxlbmd0aFxuIik7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCS8qIExlbmd0aCBvZiB0aGUgYWxsIHZybHMgY29tYmluZWQgKi8K Kwl2cmxfbGVuZ3RoIC09IChEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9TSVpFICsKKwkJICAgICAg IERSTV9IRENQXzFfNF9EQ1BfU0lHX1NJWkUpOworCisJaWYgKCF2cmxfbGVuZ3RoKSB7CisJCURS TV9FUlJPUigiTm8gdnJsIGZvdW5kXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYnVm ICs9IERSTV9IRENQXzFfNF9WUkxfTEVOR1RIX1NJWkU7CisJa3N2X2NvdW50ID0gZHJtX2hkY3Bf Z2V0X3Jldm9rZWRfa3N2X2NvdW50KGJ1ZiwgdnJsX2xlbmd0aCk7CisJaWYgKCFrc3ZfY291bnQp IHsKKwkJRFJNX0RFQlVHKCJSZXZva2VkIEtTViBjb3VudCBpcyAwXG4iKTsKKwkJcmV0dXJuIGNv dW50OworCX0KKworCWtmcmVlKHNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0KTsKKwlzcm1fZGF0 YS0+cmV2b2tlZF9rc3ZfbGlzdCA9IGtjYWxsb2Moa3N2X2NvdW50LCBEUk1fSERDUF9LU1ZfTEVO LAorCQkJCQkgICAgIEdGUF9LRVJORUwpOworCWlmICghc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xp c3QpIHsKKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVtb3J5XG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07 CisJfQorCisJaWYgKGRybV9oZGNwX2dldF9yZXZva2VkX2tzdnMoYnVmLCBzcm1fZGF0YS0+cmV2 b2tlZF9rc3ZfbGlzdCwKKwkJCQkgICAgICB2cmxfbGVuZ3RoKSAhPSBrc3ZfY291bnQpIHsKKwkJ c3JtX2RhdGEtPnJldm9rZWRfa3N2X2NudCA9IDA7CisJCWtmcmVlKHNybV9kYXRhLT5yZXZva2Vk X2tzdl9saXN0KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3JtX2RhdGEtPnJldm9rZWRf a3N2X2NudCA9IGtzdl9jb3VudDsKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBpbnQgZHJt X2hkY3BfcGFyc2VfaGRjcDJfc3JtKGNvbnN0IHU4ICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlz dHJ1Y3QgaGRjcF9zcm1faGVhZGVyICpoZWFkZXI7CisJdTMyIHZybF9sZW5ndGgsIGtzdl9jb3Vu dCwga3N2X3N6OworCisJaWYgKGNvdW50IDwgKHNpemVvZihzdHJ1Y3QgaGRjcF9zcm1faGVhZGVy KSArCisJICAgIERSTV9IRENQXzJfVlJMX0xFTkdUSF9TSVpFICsgRFJNX0hEQ1BfMl9EQ1BfU0lH X1NJWkUpKSB7CisJCURSTV9FUlJPUigiSW52YWxpZCBibG9iIGxlbmd0aFxuIik7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCWhlYWRlciA9IChzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyICopYnVm OworCURSTV9ERUJVRygiU1JNIElEOiAweCV4LCBTUk0gVmVyOiAweCV4LCBTUk0gR2VuIE5vOiAw eCV4XG4iLAorCQkgIGhlYWRlci0+c3JtX2lkICYgRFJNX0hEQ1BfU1JNX0lEX01BU0ssCisJCSAg YmUxNl90b19jcHUoaGVhZGVyLT5zcm1fdmVyc2lvbiksIGhlYWRlci0+c3JtX2dlbl9ubyk7CisK KwlpZiAoaGVhZGVyLT5yZXNlcnZlZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlidWYgPSBidWYg KyBzaXplb2YoKmhlYWRlcik7CisJdnJsX2xlbmd0aCA9IGdldF92cmxfbGVuZ3RoKGJ1Zik7CisK KwlpZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIpICsgdnJsX2xlbmd0 aCkgfHwKKwkgICAgdnJsX2xlbmd0aCA8IChEUk1fSERDUF8yX1ZSTF9MRU5HVEhfU0laRSArCisJ ICAgIERSTV9IRENQXzJfRENQX1NJR19TSVpFKSkgeworCQlEUk1fRVJST1IoIkludmFsaWQgYmxv YiBsZW5ndGggb3IgdnJsIGxlbmd0aFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8q IExlbmd0aCBvZiB0aGUgYWxsIHZybHMgY29tYmluZWQgKi8KKwl2cmxfbGVuZ3RoIC09IChEUk1f SERDUF8yX1ZSTF9MRU5HVEhfU0laRSArCisJCSAgICAgICBEUk1fSERDUF8yX0RDUF9TSUdfU0la RSk7CisKKwlpZiAoIXZybF9sZW5ndGgpIHsKKwkJRFJNX0VSUk9SKCJObyB2cmwgZm91bmRcbiIp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlidWYgKz0gRFJNX0hEQ1BfMl9WUkxfTEVOR1RI X1NJWkU7CisJa3N2X2NvdW50ID0gKCpidWYgPDwgMikgfCBEUk1fSERDUF8yX0tTVl9DT1VOVF8y X0xTQklUUygqKGJ1ZiArIDEpKTsKKwlpZiAoIWtzdl9jb3VudCkgeworCQlEUk1fREVCVUcoIlJl dm9rZWQgS1NWIGNvdW50IGlzIDBcbiIpOworCQlyZXR1cm4gY291bnQ7CisJfQorCisJa2ZyZWUo c3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3QpOworCXNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0 ID0ga2NhbGxvYyhrc3ZfY291bnQsIERSTV9IRENQX0tTVl9MRU4sCisJCQkJCSAgICAgR0ZQX0tF Uk5FTCk7CisJaWYgKCFzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCkgeworCQlEUk1fRVJST1Io Ik91dCBvZiBNZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlrc3Zfc3ogPSBr c3ZfY291bnQgKiBEUk1fSERDUF9LU1ZfTEVOOworCWJ1ZiArPSBEUk1fSERDUF8yX05PX09GX0RF Vl9QTFVTX1JFU0VSVkVEX1NaOworCisJRFJNX0RFQlVHKCJSZXZva2VkIEtTVnM6ICVkXG4iLCBr c3ZfY291bnQpOworCW1lbWNweShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCwgYnVmLCBrc3Zf c3opOworCisJc3JtX2RhdGEtPnJldm9rZWRfa3N2X2NudCA9IGtzdl9jb3VudDsKKwlyZXR1cm4g Y291bnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19zcm1fdmVyc2lvbl9oZGNwMShjb25z dCB1OCAqYnVmKQoreworCXJldHVybiAqYnVmID09ICh1OCkoRFJNX0hEQ1BfMV80X1NSTV9JRCA8 PCA0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzX3NybV92ZXJzaW9uX2hkY3AyKGNvbnN0 IHU4ICpidWYpCit7CisJcmV0dXJuICpidWYgPT0gKHU4KShEUk1fSERDUF8yX1NSTV9JRCA8PCA0 IHwgRFJNX0hEQ1BfMl9JTkRJQ0FUT1IpOworfQorCitzdGF0aWMgdm9pZCBkcm1faGRjcF9zcm1f dXBkYXRlKGNvbnN0IHU4ICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpZiAoY291bnQgPCBzaXpl b2Yoc3RydWN0IGhkY3Bfc3JtX2hlYWRlcikpCisJCXJldHVybjsKKworCWlmIChpc19zcm1fdmVy c2lvbl9oZGNwMShidWYpKQorCQlkcm1faGRjcF9wYXJzZV9oZGNwMV9zcm0oYnVmLCBjb3VudCk7 CisJZWxzZSBpZiAoaXNfc3JtX3ZlcnNpb25faGRjcDIoYnVmKSkKKwkJZHJtX2hkY3BfcGFyc2Vf aGRjcDJfc3JtKGJ1ZiwgY291bnQpOworfQorCit2b2lkIGRybV9oZGNwX3JlcXVlc3Rfc3JtKHN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2KQoreworCWNoYXIgZndfbmFtZVszNl0gPSAiZGlzcGxh eV9oZGNwX3NybS5iaW4iOworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CisKKwlpbnQgcmV0 OworCisJcmV0ID0gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoJmZ3LCAoY29uc3QgY2hhciAqKWZ3 X25hbWUsCisJCQkJICAgICAgZHJtX2Rldi0+ZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBl eGl0OworCisJaWYgKGZ3LT5zaXplICYmIGZ3LT5kYXRhKQorCQlkcm1faGRjcF9zcm1fdXBkYXRl KGZ3LT5kYXRhLCBmdy0+c2l6ZSk7CisKK2V4aXQ6CisJcmVsZWFzZV9maXJtd2FyZShmdyk7Cit9 CisKKy8qKgorICogZHJtX2hkY3BfY2hlY2tfa3N2c19yZXZva2VkIC0gQ2hlY2sgdGhlIHJldm9r ZWQgc3RhdHVzIG9mIHRoZSBJRHMKKyAqCisgKiBAZHJtX2RldjogZHJtX2RldmljZSBmb3Igd2hp Y2ggSERDUCByZXZvY2F0aW9uIGNoZWNrIGlzIHJlcXVlc3RlZAorICogQGtzdnM6IExpc3Qgb2Yg S1NWcyAoSERDUCByZWNlaXZlciBJRHMpCisgKiBAa3N2X2NvdW50OiBLU1YgY291bnQgcGFzc2Vk IGluIHRocm91Z2ggQGtzdnMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBIRENQIFN5 c3RlbSByZW5ld2FiaWxpdHkgTWVzc2FnZShTUk0gVGFibGUpCisgKiBmcm9tIHVzZXJzcGFjZSBh cyBhIGZpcm13YXJlIGFuZCBwYXJzZXMgaXQgZm9yIHRoZSByZXZva2VkIEhEQ1AKKyAqIEtTVnMo UmVjZWl2ZXIgSURzKSBkZXRlY3RlZCBieSBEQ1AgTExDLiBPbmNlIHRoZSByZXZva2VkIEtTVnMg YXJlIGtub3duLAorICogcmV2b2tlZCBzdGF0ZSBvZiB0aGUgS1NWcyBpbiB0aGUgbGlzdCBwYXNz ZWQgaW4gYnkgZGlzcGxheSBkcml2ZXJzIGFyZQorICogZGVjaWRlZCBhbmQgcmVzcG9uc2UgaXMg c2VudC4KKyAqCisgKiBTUk0gc2hvdWxkIGJlIHByZXNlbnRlZCBpbiB0aGUgbmFtZSBvZiAiZGlz cGxheV9oZGNwX3NybS5iaW4iLgorICoKKyAqIFJldHVybnM6CisgKiBUUlVFIG9uIGFueSBvZiB0 aGUgS1NWIGlzIHJldm9rZWQsIGVsc2UgRkFMU0UuCisgKi8KK2Jvb2wgZHJtX2hkY3BfY2hlY2tf a3N2c19yZXZva2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LCB1OCAqa3N2cywKKwkJCQkg dTMyIGtzdl9jb3VudCkKK3sKKwl1MzIgcmV2X2tzdl9jbnQsIGNudCwgaSwgajsKKwl1OCAqcmV2 X2tzdl9saXN0OworCisJaWYgKCFzcm1fZGF0YSkKKwkJcmV0dXJuIGZhbHNlOworCisJbXV0ZXhf bG9jaygmc3JtX2RhdGEtPm11dGV4KTsKKwlkcm1faGRjcF9yZXF1ZXN0X3NybShkcm1fZGV2KTsK KworCXJldl9rc3ZfY250ID0gc3JtX2RhdGEtPnJldm9rZWRfa3N2X2NudDsKKwlyZXZfa3N2X2xp c3QgPSBzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdDsKKworCS8qIElmIHRoZSBSZXZva2VkIGtz diBsaXN0IGlzIGVtcHR5ICovCisJaWYgKCFyZXZfa3N2X2NudCB8fCAhcmV2X2tzdl9saXN0KSB7 CisJCW11dGV4X3VubG9jaygmc3JtX2RhdGEtPm11dGV4KTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCWZvciAgKGNudCA9IDA7IGNudCA8IGtzdl9jb3VudDsgY250KyspIHsKKwkJcmV2X2tzdl9s aXN0ID0gc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3Q7CisJCWZvciAoaSA9IDA7IGkgPCByZXZf a3N2X2NudDsgaSsrKSB7CisJCQlmb3IgKGogPSAwOyBqIDwgRFJNX0hEQ1BfS1NWX0xFTjsgaisr KQorCQkJCWlmIChrc3ZzW2pdICE9IHJldl9rc3ZfbGlzdFtqXSkgeworCQkJCQlicmVhazsKKwkJ CQl9IGVsc2UgaWYgKGogPT0gKERSTV9IRENQX0tTVl9MRU4gLSAxKSkgeworCQkJCQlEUk1fREVC VUcoIlJldm9rZWQgS1NWIGlzICIpOworCQkJCQlkcm1faGRjcF9wcmludF9rc3Yoa3N2cyk7CisJ CQkJCW11dGV4X3VubG9jaygmc3JtX2RhdGEtPm11dGV4KTsKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQkJfQorCQkJLyogTW92ZSB0aGUgb2Zmc2V0IHRvIG5leHQgS1NWIGluIHRoZSByZXZva2VkIGxp c3QgKi8KKwkJCXJldl9rc3ZfbGlzdCArPSBEUk1fSERDUF9LU1ZfTEVOOworCQl9CisKKwkJLyog SXRlcmF0ZSB0byBuZXh0IGtzdl9vZmZzZXQgKi8KKwkJa3N2cyArPSBEUk1fSERDUF9LU1ZfTEVO OworCX0KKwltdXRleF91bmxvY2soJnNybV9kYXRhLT5tdXRleCk7CisJcmV0dXJuIGZhbHNlOwor fQorRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2hkY3BfY2hlY2tfa3N2c19yZXZva2VkKTsKKworaW50 IGRybV9zZXR1cF9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcykKK3sKKwlzcm1fZGF0 YSA9IGt6YWxsb2Moc2l6ZW9mKCpzcm1fZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghc3JtX2Rh dGEpCisJCXJldHVybiAtRU5PTUVNOworCW11dGV4X2luaXQoJnNybV9kYXRhLT5tdXRleCk7CisK KwlyZXR1cm4gMDsKK30KKwordm9pZCBkcm1fdGVhcmRvd25faGRjcF9zcm0oc3RydWN0IGNsYXNz ICpkcm1fY2xhc3MpCit7CisJaWYgKHNybV9kYXRhKSB7CisJCWtmcmVlKHNybV9kYXRhLT5yZXZv a2VkX2tzdl9saXN0KTsKKwkJa2ZyZWUoc3JtX2RhdGEpOworCX0KK30KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaAppbmRleCBlMTlhYzdjYTYwMmQuLjQ3NmE0MjI0MTRmNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaApAQCAtMjAxLDMgKzIwMSw3IEBAIGludCBkcm1fc3luY29ial9xdWVyeV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogdm9pZCBkcm1fZnJhbWVidWZmZXJfcHJp bnRfaW5mbyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHVuc2lnbmVkIGludCBpbmRlbnQsCiAJCQkJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwogaW50IGRybV9mcmFtZWJ1ZmZlcl9k ZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlub3IpOworCisvKiBkcm1faGRjcC5jICov CitpbnQgZHJtX3NldHVwX2hkY3Bfc3JtKHN0cnVjdCBjbGFzcyAqZHJtX2NsYXNzKTsKK3ZvaWQg ZHJtX3RlYXJkb3duX2hkY3Bfc3JtKHN0cnVjdCBjbGFzcyAqZHJtX2NsYXNzKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lz ZnMuYwppbmRleCBlY2I3YjMzMDAyYmIuLjE4YjFhYzQ0Mjk5NyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lzZnMuYwpA QCAtNzgsNiArNzgsNyBAQCBpbnQgZHJtX3N5c2ZzX2luaXQodm9pZCkKIAl9CiAKIAlkcm1fY2xh c3MtPmRldm5vZGUgPSBkcm1fZGV2bm9kZTsKKwlkcm1fc2V0dXBfaGRjcF9zcm0oZHJtX2NsYXNz KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTAsNiArOTEsNyBAQCB2b2lkIGRybV9zeXNmc19kZXN0 cm95KHZvaWQpCiB7CiAJaWYgKElTX0VSUl9PUl9OVUxMKGRybV9jbGFzcykpCiAJCXJldHVybjsK Kwlkcm1fdGVhcmRvd25faGRjcF9zcm0oZHJtX2NsYXNzKTsKIAljbGFzc19yZW1vdmVfZmlsZShk cm1fY2xhc3MsICZjbGFzc19hdHRyX3ZlcnNpb24uYXR0cik7CiAJY2xhc3NfZGVzdHJveShkcm1f Y2xhc3MpOwogCWRybV9jbGFzcyA9IE5VTEw7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f aGRjcC5oIGIvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaAppbmRleCAxY2M2NmRmMDVhNDMuLjJmMDMz NWQwYTUwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaAorKysgYi9pbmNsdWRl L2RybS9kcm1faGRjcC5oCkBAIC0yNjUsNCArMjY1LDI4IEBAIHZvaWQgZHJtX2hkY3BfY3B1X3Rv X2JlMjQodTggc2VxX251bVtIRENQXzJfMl9TRVFfTlVNX0xFTl0sIHUzMiB2YWwpCiAJc2VxX251 bVsyXSA9IHZhbDsKIH0KIAorI2RlZmluZSBEUk1fSERDUF9TUk1fR0VOMV9NQVhfQllURVMJCSg1 ICogMTAyNCkKKyNkZWZpbmUgRFJNX0hEQ1BfMV80X1NSTV9JRAkJCTB4OAorI2RlZmluZSBEUk1f SERDUF9TUk1fSURfTUFTSwkJCSgweEYgPDwgNCkKKyNkZWZpbmUgRFJNX0hEQ1BfMV80X1ZSTF9M RU5HVEhfU0laRQkJMworI2RlZmluZSBEUk1fSERDUF8xXzRfRENQX1NJR19TSVpFCQk0MAorI2Rl ZmluZSBEUk1fSERDUF8yX1NSTV9JRAkJCTB4OQorI2RlZmluZSBEUk1fSERDUF8yX0lORElDQVRP UgkJCTB4MQorI2RlZmluZSBEUk1fSERDUF8yX0lORElDQVRPUl9NQVNLCQkweEYKKyNkZWZpbmUg RFJNX0hEQ1BfMl9WUkxfTEVOR1RIX1NJWkUJCTMKKyNkZWZpbmUgRFJNX0hEQ1BfMl9EQ1BfU0lH X1NJWkUJCQkzODQKKyNkZWZpbmUgRFJNX0hEQ1BfMl9OT19PRl9ERVZfUExVU19SRVNFUlZFRF9T Wgk0CisjZGVmaW5lIERSTV9IRENQXzJfS1NWX0NPVU5UXzJfTFNCSVRTKGJ5dGUpCSgoKGJ5dGUp ICYgMHhDKSA+PiA2KQorCitzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyIHsKKwl1OCBzcm1faWQ7CisJ dTggcmVzZXJ2ZWQ7CisJX19iZTE2IHNybV92ZXJzaW9uOworCXU4IHNybV9nZW5fbm87Cit9IF9f cGFja2VkOworCitzdHJ1Y3QgZHJtX2RldmljZTsKKworYm9vbCBkcm1faGRjcF9jaGVja19rc3Zz X3Jldm9rZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgdTggKmtzdnMsIHUzMiBrc3Zf Y291bnQpOwogI2VuZGlmCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeA==