From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhawanpreet Lakha Subject: [PATCH 09/20] drm/amdgpu: psp DTM init Date: Thu, 29 Aug 2019 12:22:42 -0400 Message-ID: <20190829162253.10195-10-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: Bhawanpreet Lakha RFRNIGlzIHRoZSBkaXNwbGF5IHRvcG9sb2d5IG1hbmFnZXIuIFRoaXMgaXMgbmVlZGVkIHRvIGNv bW11bmljYXRlIHdpdGgKcHNwIGFib3V0IHRoZSBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zLgoKVGhp cyBwYXRjaCBhZGRzCiAgICAtTG9hZGluZyB0aGUgZmlybXdhcmUKICAgIC1UaGUgZnVuY3Rpb25z IGFuZCBkZWZpbml0aW9ucyBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZQoKU2ln bmVkLW9mZi1ieTogQmhhd2FucHJlZXQgTGFraGEgPEJoYXdhbnByZWV0Lkxha2hhQGFtZC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jICAgfCAxNTMgKysr KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bz cC5oICAgfCAgMTUgKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdWNvZGUu aCB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYyAgICB8ICAg NCArCiA0IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3BzcC5jCmluZGV4IGNjY2UxYjUwNmExMi4uNzE5MmU3ZmJhNmRjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jCkBAIC05NDIsNiArOTQyLDE0 OSBAQCBzdGF0aWMgaW50IHBzcF9oZGNwX3Rlcm1pbmF0ZShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBz cCkKIH0KIC8vIEhEQ1AgZW5kCiAKKy8vIERUTSBzdGFydAorc3RhdGljIHZvaWQgcHNwX3ByZXBf ZHRtX3RhX2xvYWRfY21kX2J1ZihzdHJ1Y3QgcHNwX2dmeF9jbWRfcmVzcCAqY21kLAorCQl1aW50 NjRfdCBkdG1fdGFfbWMsIHVpbnQ2NF90IGR0bV9tY19zaGFyZWQsCisJCXVpbnQzMl90IGR0bV90 YV9zaXplLCB1aW50MzJfdCBzaGFyZWRfc2l6ZSkKK3sKKwljbWQtPmNtZF9pZCA9IEdGWF9DTURf SURfTE9BRF9UQTsKKwljbWQtPmNtZC5jbWRfbG9hZF90YS5hcHBfcGh5X2FkZHJfbG8gPSBsb3dl cl8zMl9iaXRzKGR0bV90YV9tYyk7CisJY21kLT5jbWQuY21kX2xvYWRfdGEuYXBwX3BoeV9hZGRy X2hpID0gdXBwZXJfMzJfYml0cyhkdG1fdGFfbWMpOworCWNtZC0+Y21kLmNtZF9sb2FkX3RhLmFw cF9sZW4gPSBkdG1fdGFfc2l6ZTsKKworCWNtZC0+Y21kLmNtZF9sb2FkX3RhLmNtZF9idWZfcGh5 X2FkZHJfbG8gPSBsb3dlcl8zMl9iaXRzKGR0bV9tY19zaGFyZWQpOworCWNtZC0+Y21kLmNtZF9s b2FkX3RhLmNtZF9idWZfcGh5X2FkZHJfaGkgPSB1cHBlcl8zMl9iaXRzKGR0bV9tY19zaGFyZWQp OworCWNtZC0+Y21kLmNtZF9sb2FkX3RhLmNtZF9idWZfbGVuID0gc2hhcmVkX3NpemU7Cit9CisK K3N0YXRpYyBpbnQgcHNwX2R0bV9pbml0X3NoYXJlZF9idWYoc3RydWN0IHBzcF9jb250ZXh0ICpw c3ApCit7CisJaW50IHJldDsKKworCS8qCisJICogQWxsb2NhdGUgMTZrIG1lbW9yeSBhbGlnbmVk IHRvIDRrIGZyb20gRnJhbWUgQnVmZmVyIChsb2NhbAorCSAqIHBoeXNpY2FsKSBmb3IgZHRtIHRh IDwtPiBEcml2ZXIKKwkgKi8KKwlyZXQgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChwc3AtPmFk ZXYsIFBTUF9EVE1fU0hBUkVEX01FTV9TSVpFLAorCQkJUEFHRV9TSVpFLCBBTURHUFVfR0VNX0RP TUFJTl9WUkFNLAorCQkJJnBzcC0+ZHRtX2NvbnRleHQuZHRtX3NoYXJlZF9ibywKKwkJCSZwc3At PmR0bV9jb250ZXh0LmR0bV9zaGFyZWRfbWNfYWRkciwKKwkJCSZwc3AtPmR0bV9jb250ZXh0LmR0 bV9zaGFyZWRfYnVmKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgcHNwX2R0bV9s b2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwKQoreworCWludCByZXQ7CisJc3RydWN0IHBzcF9n ZnhfY21kX3Jlc3AgKmNtZDsKKworCS8qCisJICogVE9ETzogYnlwYXNzIHRoZSBsb2FkaW5nIGlu IHNyaW92IGZvciBub3cKKwkgKi8KKwlpZiAoYW1kZ3B1X3NyaW92X3ZmKHBzcC0+YWRldikpCisJ CXJldHVybiAwOworCisJY21kID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHBzcF9nZnhfY21kX3Jl c3ApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNtZCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltZW1z ZXQocHNwLT5md19wcmlfYnVmLCAwLCBQU1BfMV9NRUcpOworCW1lbWNweShwc3AtPmZ3X3ByaV9i dWYsIHBzcC0+dGFfZHRtX3N0YXJ0X2FkZHIsIHBzcC0+dGFfZHRtX3Vjb2RlX3NpemUpOworCisJ cHNwX3ByZXBfZHRtX3RhX2xvYWRfY21kX2J1ZihjbWQsIHBzcC0+ZndfcHJpX21jX2FkZHIsCisJ CQlwc3AtPmR0bV9jb250ZXh0LmR0bV9zaGFyZWRfbWNfYWRkciwKKwkJCXBzcC0+dGFfZHRtX3Vj b2RlX3NpemUsIFBTUF9EVE1fU0hBUkVEX01FTV9TSVpFKTsKKworCXJldCA9IHBzcF9jbWRfc3Vi bWl0X2J1Zihwc3AsIE5VTEwsIGNtZCwKKwkJCXBzcC0+ZmVuY2VfYnVmX21jX2FkZHIpOworCisJ aWYgKCFyZXQpIHsKKwkJcHJpbnRrKCJMT0FERURERSBkdG0gISEhISExIik7CisJCXBzcC0+ZHRt X2NvbnRleHQuZHRtX2luaXRpYWxpemVkID0gMTsKKwkJcHNwLT5kdG1fY29udGV4dC5zZXNzaW9u X2lkID0gY21kLT5yZXNwLnNlc3Npb25faWQ7CisJfQorCisJa2ZyZWUoY21kKTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQgcHNwX2R0bV9pbml0aWFsaXplKHN0cnVjdCBwc3BfY29u dGV4dCAqcHNwKQoreworCWludCByZXQ7CisKKwlpZiAoIXBzcC0+ZHRtX2NvbnRleHQuZHRtX2lu aXRpYWxpemVkKSB7CisJCXJldCA9IHBzcF9kdG1faW5pdF9zaGFyZWRfYnVmKHBzcCk7CisJCWlm IChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHBzcF9kdG1fbG9hZChwc3ApOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg cHNwX3ByZXBfZHRtX3RhX2ludm9rZV9jbWRfYnVmKHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpj bWQsCisJCXVpbnQzMl90IHRhX2NtZF9pZCwKKwkJdWludDMyX3QgZHRtX3Nlc3Npb25faWQpCit7 CisJY21kLT5jbWRfaWQgPSBHRlhfQ01EX0lEX0lOVk9LRV9DTUQ7CisJY21kLT5jbWQuY21kX2lu dm9rZV9jbWQuc2Vzc2lvbl9pZCA9IGR0bV9zZXNzaW9uX2lkOworCWNtZC0+Y21kLmNtZF9pbnZv a2VfY21kLnRhX2NtZF9pZCA9IHRhX2NtZF9pZDsKKwkvKiBOb3RlOiBjbWRfaW52b2tlX2NtZC5i dWYgaXMgbm90IHVzZWQgZm9yIG5vdyAqLworfQorCitpbnQgcHNwX2R0bV9pbnZva2Uoc3RydWN0 IHBzcF9jb250ZXh0ICpwc3AsIHVpbnQzMl90IHRhX2NtZF9pZCkKK3sKKwlpbnQgcmV0OworCXN0 cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQ7CisKKwkvKgorCSAqIFRPRE86IGJ5cGFzcyB0aGUg bG9hZGluZyBpbiBzcmlvdiBmb3Igbm93CisJICovCisJaWYgKGFtZGdwdV9zcmlvdl92Zihwc3At PmFkZXYpKQorCQlyZXR1cm4gMDsKKworCWNtZCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwc3Bf Z2Z4X2NtZF9yZXNwKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbWQpCisJCXJldHVybiAtRU5PTUVN OworCisJcHNwX3ByZXBfZHRtX3RhX2ludm9rZV9jbWRfYnVmKGNtZCwgdGFfY21kX2lkLAorCQkJ cHNwLT5kdG1fY29udGV4dC5zZXNzaW9uX2lkKTsKKworCXJldCA9IHBzcF9jbWRfc3VibWl0X2J1 Zihwc3AsIE5VTEwsIGNtZCwKKwkJCXBzcC0+ZmVuY2VfYnVmX21jX2FkZHIpOworCisJa2ZyZWUo Y21kKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgcHNwX2R0bV90ZXJtaW5hdGUo c3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCit7CisJaW50IHJldDsKKworCWlmICghcHNwLT5kdG1f Y29udGV4dC5kdG1faW5pdGlhbGl6ZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gcHNwX2hkY3Bf dW5sb2FkKHBzcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXBzcC0+ZHRtX2NvbnRl eHQuZHRtX2luaXRpYWxpemVkID0gMDsKKworCS8qIGZyZWUgaGRjcCBzaGFyZWQgbWVtb3J5ICov CisJYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZwc3AtPmR0bV9jb250ZXh0LmR0bV9zaGFyZWRfYm8s CisJCQkmcHNwLT5kdG1fY29udGV4dC5kdG1fc2hhcmVkX21jX2FkZHIsCisJCQkmcHNwLT5kdG1f Y29udGV4dC5kdG1fc2hhcmVkX2J1Zik7CisKKwlyZXR1cm4gMDsKK30KKy8vIERUTSBlbmQKKwog c3RhdGljIGludCBwc3BfaHdfc3RhcnQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCiB7CiAJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBwc3AtPmFkZXY7CkBAIC0xMDIxLDYgKzExNjQsMTAg QEAgc3RhdGljIGludCBwc3BfaHdfc3RhcnQoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApCiAJCQlk ZXZfZXJyKHBzcC0+YWRldi0+ZGV2LAogCQkJCQkiSERDUDogRmFpbGVkIHRvIGluaXRpYWxpemUg SERDUFxuIik7CiAKKwkJcmV0ID0gcHNwX2R0bV9pbml0aWFsaXplKHBzcCk7CisJCWlmIChyZXQp CisJCQlkZXZfZXJyKHBzcC0+YWRldi0+ZGV2LAorCQkJCQkiRFRNOiBGYWlsZWQgdG8gaW5pdGlh bGl6ZSBEVE1cbiIpOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTM5Myw2ICsxNTQwLDcgQEAgc3Rh dGljIGludCBwc3BfaHdfZmluaSh2b2lkICpoYW5kbGUpCiAJaWYgKHBzcC0+YWRldi0+cHNwLnRh X2Z3KSB7CiAJCXBzcF9yYXNfdGVybWluYXRlKHBzcCk7CiAJCXBzcF9oZGNwX3Rlcm1pbmF0ZShw c3ApOworCQlwc3BfZHRtX3Rlcm1pbmF0ZShwc3ApOwogCX0KIAogCXBzcF9yaW5nX2Rlc3Ryb3ko cHNwLCBQU1BfUklOR19UWVBFX19LTSk7CkBAIC0xNDM5LDYgKzE1ODcsMTEgQEAgc3RhdGljIGlu dCBwc3Bfc3VzcGVuZCh2b2lkICpoYW5kbGUpCiAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byB0ZXJt aW5hdGUgaGRjcCB0YVxuIik7CiAJCQlyZXR1cm4gcmV0OwogCQl9CisJCXJldCA9IHBzcF9kdG1f dGVybWluYXRlKHBzcCk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHRl cm1pbmF0ZSBkdG0gdGFcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQogCX0KIAogCXJldCA9IHBz cF9yaW5nX3N0b3AocHNwLCBQU1BfUklOR19UWVBFX19LTSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcHNwLmgKaW5kZXggNjc4OGUxNjAxOTQ1Li43ZGQ5YWU3ZGJiZTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNk ZWZpbmUgUFNQXzFfTUVHCQkweDEwMDAwMAogI2RlZmluZSBQU1BfVE1SX1NJWkUJMHg0MDAwMDAK ICNkZWZpbmUgUFNQX0hEQ1BfU0hBUkVEX01FTV9TSVpFCTB4NDAwMAorI2RlZmluZSBQU1BfRFRN X1NIQVJFRF9NRU1fU0laRQkweDQwMDAKICNkZWZpbmUgUFNQX1NIQVJFRF9NRU1fU0laRQkJMHg0 MDAwCiAKIHN0cnVjdCBwc3BfY29udGV4dDsKQEAgLTE1Miw2ICsxNTMsMTQgQEAgc3RydWN0IHBz cF9oZGNwX2NvbnRleHQgewogCXZvaWQJCQkqaGRjcF9zaGFyZWRfYnVmOwogfTsKIAorc3RydWN0 IHBzcF9kdG1fY29udGV4dCB7CisJYm9vbAkJCWR0bV9pbml0aWFsaXplZDsKKwl1aW50MzJfdAkJ c2Vzc2lvbl9pZDsKKwlzdHJ1Y3QgYW1kZ3B1X2JvCSpkdG1fc2hhcmVkX2JvOworCXVpbnQ2NF90 CQlkdG1fc2hhcmVkX21jX2FkZHI7CisJdm9pZAkJCSpkdG1fc2hhcmVkX2J1ZjsKK307CisKIHN0 cnVjdCBwc3BfY29udGV4dAogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICAgICAgICAgICAgKmFk ZXY7CkBAIC0yMjEsOSArMjMwLDE0IEBAIHN0cnVjdCBwc3BfY29udGV4dAogCXVpbnQzMl90CQkJ dGFfaGRjcF91Y29kZV9zaXplOwogCXVpbnQ4X3QJCQkJKnRhX2hkY3Bfc3RhcnRfYWRkcjsKIAor CXVpbnQzMl90CQkJdGFfZHRtX3Vjb2RlX3ZlcnNpb247CisJdWludDMyX3QJCQl0YV9kdG1fdWNv ZGVfc2l6ZTsKKwl1aW50OF90CQkJCSp0YV9kdG1fc3RhcnRfYWRkcjsKKwogCXN0cnVjdCBwc3Bf eGdtaV9jb250ZXh0CQl4Z21pX2NvbnRleHQ7CiAJc3RydWN0IHBzcF9yYXNfY29udGV4dAkJcmFz OwogCXN0cnVjdCBwc3BfaGRjcF9jb250ZXh0IAloZGNwX2NvbnRleHQ7CisJc3RydWN0IHBzcF9k dG1fY29udGV4dAkJZHRtX2NvbnRleHQ7CiAJc3RydWN0IG11dGV4CQkJbXV0ZXg7CiB9OwogCkBA IC0yOTYsNiArMzEwLDcgQEAgaW50IHBzcF9yYXNfaW52b2tlKHN0cnVjdCBwc3BfY29udGV4dCAq cHNwLCB1aW50MzJfdCB0YV9jbWRfaWQpOwogaW50IHBzcF9yYXNfZW5hYmxlX2ZlYXR1cmVzKHN0 cnVjdCBwc3BfY29udGV4dCAqcHNwLAogCQl1bmlvbiB0YV9yYXNfY21kX2lucHV0ICppbmZvLCBi b29sIGVuYWJsZSk7CiBpbnQgcHNwX2hkY3BfaW52b2tlKHN0cnVjdCBwc3BfY29udGV4dCAqcHNw LCB1aW50MzJfdCB0YV9jbWRfaWQpOworaW50IHBzcF9kdG1faW52b2tlKHN0cnVjdCBwc3BfY29u dGV4dCAqcHNwLCB1aW50MzJfdCB0YV9jbWRfaWQpOwogCiBpbnQgcHNwX3JsY19hdXRvbG9hZF9z dGFydChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3Vjb2RlLmgKaW5kZXggYzJiNTkzYWI3NDk1Li40MTA1ODdiOTUwZjMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91Y29kZS5oCkBAIC0xMTEsNiArMTExLDkg QEAgc3RydWN0IHRhX2Zpcm13YXJlX2hlYWRlcl92MV8wIHsKIAl1aW50MzJfdCB0YV9oZGNwX3Vj b2RlX3ZlcnNpb247CiAJdWludDMyX3QgdGFfaGRjcF9vZmZzZXRfYnl0ZXM7CiAJdWludDMyX3Qg dGFfaGRjcF9zaXplX2J5dGVzOworCXVpbnQzMl90IHRhX2R0bV91Y29kZV92ZXJzaW9uOworCXVp bnQzMl90IHRhX2R0bV9vZmZzZXRfYnl0ZXM7CisJdWludDMyX3QgdGFfZHRtX3NpemVfYnl0ZXM7 CiB9OwogCiAvKiB2ZXJzaW9uX21ham9yPTEsIHZlcnNpb25fbWlub3I9MCAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYwppbmRleCAzNDhlYzRlMjc1ZjMuLmU5Mzc3MDEzM2Fk NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMF8wLmMKQEAgLTk3LDYgKzk3LDEw IEBAIHN0YXRpYyBpbnQgcHNwX3YxMF8wX2luaXRfbWljcm9jb2RlKHN0cnVjdCBwc3BfY29udGV4 dCAqcHNwKQogCiAJCWFkZXYtPnBzcC50YV9md192ZXJzaW9uID0gbGUzMl90b19jcHUodGFfaGRy LT5oZWFkZXIudWNvZGVfdmVyc2lvbik7CiAKKwkJYWRldi0+cHNwLnRhX2R0bV91Y29kZV92ZXJz aW9uID0gbGUzMl90b19jcHUodGFfaGRyLT50YV9kdG1fdWNvZGVfdmVyc2lvbik7CisJCWFkZXYt PnBzcC50YV9kdG1fdWNvZGVfc2l6ZSA9IGxlMzJfdG9fY3B1KHRhX2hkci0+dGFfZHRtX3NpemVf Ynl0ZXMpOworCQlhZGV2LT5wc3AudGFfZHRtX3N0YXJ0X2FkZHIgPSAodWludDhfdCAqKWFkZXYt PnBzcC50YV9oZGNwX3N0YXJ0X2FkZHIgKworCQkJbGUzMl90b19jcHUodGFfaGRyLT50YV9kdG1f b2Zmc2V0X2J5dGVzKTsKIAl9CiAKIAlyZXR1cm4gMDsKLS0gCjIuMTcuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4