From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 05/25] drm/amdgpu: unify MQD programming sequence for kfd and amdgpu Date: Tue, 4 Apr 2017 18:05:31 -0400 Message-ID: <20170404220551.8669-6-andresx7@gmail.com> References: <20170404220551.8669-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@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: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org VXNlIHRoZSBzYW1lIGdmeF8qX21xZF9jb21taXQgZnVuY3Rpb24gZm9yIGtmZCBhbmQgYW1kZ3B1 IGNvZGVwYXRocy4KClRoaXMgcmVtb3ZlcyB0aGUgbGFzdCBkdXBsaWNhdGVzIG9mIHRoaXMgcHJv Z3JhbW1pbmcgc2VxdWVuY2UuCgpSZXZpZXdlZC1ieTogRWR3YXJkIE8nQ2FsbGFnaGFuIDxmdW5m dW5jdG9yQGZvbGtsb3JlMTk4NC5uZXQ+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJp c3RpYW4ua29lbmlnQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFu ZHJlc3g3QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf YW1ka2ZkX2dmeF92Ny5jIHwgNTEgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMgfCA0OSArKy0tLS0tLS0tLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jICAgICAgICAg ICAgIHwgMzggKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dm eF92N18wLmggICAgICAgICAgICAgfCAgNSArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dmeF92OF8wLmMgICAgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKysrKysrLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5oICAgICAgICAgICAgIHwgIDUgKysrCiA2 IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jCmluZGV4 IDFhMGE1ZjcuLjAzOGI3ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2FtZGtmZF9nZnhfdjcuYwpAQCAtMjIsMjAgKzIyLDIxIEBACiAKICNpbmNsdWRlIDxs aW51eC9mZHRhYmxlLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGxp bnV4L2Zpcm13YXJlLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlICJhbWRncHUu aCIKICNpbmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCiAjaW5jbHVkZSAiY2lrZC5oIgogI2luY2x1 ZGUgImNpa19zZG1hLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3Vjb2RlLmgiCisjaW5jbHVkZSAiZ2Z4 X3Y3XzAuaCIKICNpbmNsdWRlICJnY2EvZ2Z4XzdfMl9kLmgiCiAjaW5jbHVkZSAiZ2NhL2dmeF83 XzJfZW51bS5oIgogI2luY2x1ZGUgImdjYS9nZnhfN18yX3NoX21hc2suaCIKICNpbmNsdWRlICJv c3Mvb3NzXzJfMF9kLmgiCiAjaW5jbHVkZSAib3NzL29zc18yXzBfc2hfbWFzay5oIgogI2luY2x1 ZGUgImdtYy9nbWNfN18xX2QuaCIKICNpbmNsdWRlICJnbWMvZ21jXzdfMV9zaF9tYXNrLmgiCiAj aW5jbHVkZSAiY2lrX3N0cnVjdHMuaCIKIAogI2RlZmluZSBDSUtfUElQRV9QRVJfTUVDCSg0KQpA QCAtMzAyLDY5ICszMDMsMjUgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY2lrX3NkbWFfcmxjX3Jl Z2lzdGVycyAqZ2V0X3NkbWFfbXFkKHZvaWQgKm1xZCkKIHN0YXRpYyBpbnQga2dkX2hxZF9sb2Fk KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCXVp bnQzMl90IHF1ZXVlX2lkLCB1aW50MzJfdCBfX3VzZXIgKndwdHIpCiB7CiAJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOwogCXVpbnQzMl90IHdwdHJf c2hhZG93LCBpc193cHRyX3NoYWRvd192YWxpZDsKIAlzdHJ1Y3QgY2lrX21xZCAqbTsKIAogCW0g PSBnZXRfbXFkKG1xZCk7CiAKIAlpc193cHRyX3NoYWRvd192YWxpZCA9ICFnZXRfdXNlcih3cHRy X3NoYWRvdywgd3B0cik7Ci0KLQlhY3F1aXJlX3F1ZXVlKGtnZCwgcGlwZV9pZCwgcXVldWVfaWQp OwotCVdSRUczMihtbUNQX01RRF9CQVNFX0FERFIsIG0tPmNwX21xZF9iYXNlX2FkZHJfbG8pOwot CVdSRUczMihtbUNQX01RRF9CQVNFX0FERFJfSEksIG0tPmNwX21xZF9iYXNlX2FkZHJfaGkpOwot CVdSRUczMihtbUNQX01RRF9DT05UUk9MLCBtLT5jcF9tcWRfY29udHJvbCk7Ci0KLQlXUkVHMzIo bW1DUF9IUURfUFFfQkFTRSwgbS0+Y3BfaHFkX3BxX2Jhc2VfbG8pOwotCVdSRUczMihtbUNQX0hR RF9QUV9CQVNFX0hJLCBtLT5jcF9ocWRfcHFfYmFzZV9oaSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BR X0NPTlRST0wsIG0tPmNwX2hxZF9wcV9jb250cm9sKTsKLQotCVdSRUczMihtbUNQX0hRRF9JQl9D T05UUk9MLCBtLT5jcF9ocWRfaWJfY29udHJvbCk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0lCX0JBU0Vf QUREUiwgbS0+Y3BfaHFkX2liX2Jhc2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0lCX0JB U0VfQUREUl9ISSwgbS0+Y3BfaHFkX2liX2Jhc2VfYWRkcl9oaSk7Ci0KLQlXUkVHMzIobW1DUF9I UURfSUJfUlBUUiwgbS0+Y3BfaHFkX2liX3JwdHIpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX1BFUlNJ U1RFTlRfU1RBVEUsIG0tPmNwX2hxZF9wZXJzaXN0ZW50X3N0YXRlKTsKLQlXUkVHMzIobW1DUF9I UURfU0VNQV9DTUQsIG0tPmNwX2hxZF9zZW1hX2NtZCk7Ci0JV1JFRzMyKG1tQ1BfSFFEX01TR19U WVBFLCBtLT5jcF9ocWRfbXNnX3R5cGUpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX0FUT01JQzBfUFJF T1BfTE8sIG0tPmNwX2hxZF9hdG9taWMwX3ByZW9wX2xvKTsKLQlXUkVHMzIobW1DUF9IUURfQVRP TUlDMF9QUkVPUF9ISSwgbS0+Y3BfaHFkX2F0b21pYzBfcHJlb3BfaGkpOwotCVdSRUczMihtbUNQ X0hRRF9BVE9NSUMxX1BSRU9QX0xPLCBtLT5jcF9ocWRfYXRvbWljMV9wcmVvcF9sbyk7Ci0JV1JF RzMyKG1tQ1BfSFFEX0FUT01JQzFfUFJFT1BfSEksIG0tPmNwX2hxZF9hdG9taWMxX3ByZW9wX2hp KTsKLQotCVdSRUczMihtbUNQX0hRRF9QUV9SUFRSX1JFUE9SVF9BRERSLCBtLT5jcF9ocWRfcHFf cnB0cl9yZXBvcnRfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX1JQVFJfUkVQT1JUX0FE RFJfSEksCi0JCQltLT5jcF9ocWRfcHFfcnB0cl9yZXBvcnRfYWRkcl9oaSk7Ci0KLQlXUkVHMzIo bW1DUF9IUURfUFFfUlBUUiwgbS0+Y3BfaHFkX3BxX3JwdHIpOwotCi0JV1JFRzMyKG1tQ1BfSFFE X1BRX1dQVFJfUE9MTF9BRERSLCBtLT5jcF9ocWRfcHFfd3B0cl9wb2xsX2FkZHJfbG8pOwotCVdS RUczMihtbUNQX0hRRF9QUV9XUFRSX1BPTExfQUREUl9ISSwgbS0+Y3BfaHFkX3BxX3dwdHJfcG9s bF9hZGRyX2hpKTsKLQotCVdSRUczMihtbUNQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MLCBtLT5j cF9ocWRfcHFfZG9vcmJlbGxfY29udHJvbCk7Ci0KLQlXUkVHMzIobW1DUF9IUURfVk1JRCwgbS0+ Y3BfaHFkX3ZtaWQpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX1FVQU5UVU0sIG0tPmNwX2hxZF9xdWFu dHVtKTsKLQotCVdSRUczMihtbUNQX0hRRF9QSVBFX1BSSU9SSVRZLCBtLT5jcF9ocWRfcGlwZV9w cmlvcml0eSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1FVRVVFX1BSSU9SSVRZLCBtLT5jcF9ocWRfcXVl dWVfcHJpb3JpdHkpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX0lRX1JQVFIsIG0tPmNwX2hxZF9pcV9y cHRyKTsKLQogCWlmIChpc193cHRyX3NoYWRvd192YWxpZCkKLQkJV1JFRzMyKG1tQ1BfSFFEX1BR X1dQVFIsIHdwdHJfc2hhZG93KTsKKwkJbS0+Y3BfaHFkX3BxX3dwdHIgPSB3cHRyX3NoYWRvdzsK IAotCVdSRUczMihtbUNQX0hRRF9BQ1RJVkUsIG0tPmNwX2hxZF9hY3RpdmUpOworCWFjcXVpcmVf cXVldWUoa2dkLCBwaXBlX2lkLCBxdWV1ZV9pZCk7CisJZ2Z4X3Y3XzBfbXFkX2NvbW1pdChhZGV2 LCBtKTsKIAlyZWxlYXNlX3F1ZXVlKGtnZCk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu dCBrZ2RfaHFkX3NkbWFfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQpCiB7CiAJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOwogCXN0 cnVjdCBjaWtfc2RtYV9ybGNfcmVnaXN0ZXJzICptOwogCXVpbnQzMl90IHNkbWFfYmFzZV9hZGRy OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n ZnhfdjguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4 LmMKaW5kZXggNjY5NzYxMi4uMmVjZWYzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjguYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCkBAIC0yMSwyMCArMjEsMjEgQEAKICAqLwog CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvZmR0YWJsZS5oPgog I2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgog I2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1k Z3B1X2FtZGtmZC5oIgogI2luY2x1ZGUgImFtZGdwdV91Y29kZS5oIgorI2luY2x1ZGUgImdmeF92 OF8wLmgiCiAjaW5jbHVkZSAiZ2NhL2dmeF84XzBfc2hfbWFzay5oIgogI2luY2x1ZGUgImdjYS9n ZnhfOF8wX2QuaCIKICNpbmNsdWRlICJnY2EvZ2Z4XzhfMF9lbnVtLmgiCiAjaW5jbHVkZSAib3Nz L29zc18zXzBfc2hfbWFzay5oIgogI2luY2x1ZGUgIm9zcy9vc3NfM18wX2QuaCIKICNpbmNsdWRl ICJnbWMvZ21jXzhfMV9zaF9tYXNrLmgiCiAjaW5jbHVkZSAiZ21jL2dtY184XzFfZC5oIgogI2lu Y2x1ZGUgInZpX3N0cnVjdHMuaCIKICNpbmNsdWRlICJ2aWQuaCIKIApAQCAtMjQ0LDY3ICsyNDUs MjUgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqZ2V0X3Nk bWFfbXFkKHZvaWQgKm1xZCkKIHN0YXRpYyBpbnQga2dkX2hxZF9sb2FkKHN0cnVjdCBrZ2RfZGV2 ICprZ2QsIHZvaWQgKm1xZCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCXVpbnQzMl90IHF1ZXVlX2lk LCB1aW50MzJfdCBfX3VzZXIgKndwdHIpCiB7CiAJc3RydWN0IHZpX21xZCAqbTsKIAl1aW50MzJf dCBzaGFkb3dfd3B0ciwgdmFsaWRfd3B0cjsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9 IGdldF9hbWRncHVfZGV2aWNlKGtnZCk7CiAKIAltID0gZ2V0X21xZChtcWQpOwogCiAJdmFsaWRf d3B0ciA9IGNvcHlfZnJvbV91c2VyKCZzaGFkb3dfd3B0ciwgd3B0ciwgc2l6ZW9mKHNoYWRvd193 cHRyKSk7Ci0JYWNxdWlyZV9xdWV1ZShrZ2QsIHBpcGVfaWQsIHF1ZXVlX2lkKTsKLQotCVdSRUcz MihtbUNQX01RRF9DT05UUk9MLCBtLT5jcF9tcWRfY29udHJvbCk7Ci0JV1JFRzMyKG1tQ1BfTVFE X0JBU0VfQUREUiwgbS0+Y3BfbXFkX2Jhc2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfTVFEX0JB U0VfQUREUl9ISSwgbS0+Y3BfbXFkX2Jhc2VfYWRkcl9oaSk7Ci0KLQlXUkVHMzIobW1DUF9IUURf Vk1JRCwgbS0+Y3BfaHFkX3ZtaWQpOwotCVdSRUczMihtbUNQX0hRRF9QRVJTSVNURU5UX1NUQVRF LCBtLT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BJUEVfUFJJ T1JJVFksIG0tPmNwX2hxZF9waXBlX3ByaW9yaXR5KTsKLQlXUkVHMzIobW1DUF9IUURfUVVFVUVf UFJJT1JJVFksIG0tPmNwX2hxZF9xdWV1ZV9wcmlvcml0eSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1FV QU5UVU0sIG0tPmNwX2hxZF9xdWFudHVtKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfQkFTRSwgbS0+ Y3BfaHFkX3BxX2Jhc2VfbG8pOwotCVdSRUczMihtbUNQX0hRRF9QUV9CQVNFX0hJLCBtLT5jcF9o cWRfcHFfYmFzZV9oaSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX1JQVFJfUkVQT1JUX0FERFIsIG0t PmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2xvKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfUlBU Ul9SRVBPUlRfQUREUl9ISSwKLQkJCW0tPmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2hpKTsK LQogCWlmICh2YWxpZF93cHRyID4gMCkKLQkJV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFIsIHNoYWRv d193cHRyKTsKLQotCVdSRUczMihtbUNQX0hRRF9QUV9DT05UUk9MLCBtLT5jcF9ocWRfcHFfY29u dHJvbCk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX0RPT1JCRUxMX0NPTlRST0wsIG0tPmNwX2hxZF9w cV9kb29yYmVsbF9jb250cm9sKTsKLQotCVdSRUczMihtbUNQX0hRRF9FT1BfQkFTRV9BRERSLCBt LT5jcF9ocWRfZW9wX2Jhc2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VPUF9CQVNFX0FE RFJfSEksIG0tPmNwX2hxZF9lb3BfYmFzZV9hZGRyX2hpKTsKLQlXUkVHMzIobW1DUF9IUURfRU9Q X0NPTlRST0wsIG0tPmNwX2hxZF9lb3BfY29udHJvbCk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VPUF9S UFRSLCBtLT5jcF9ocWRfZW9wX3JwdHIpOwotCVdSRUczMihtbUNQX0hRRF9FT1BfV1BUUiwgbS0+ Y3BfaHFkX2VvcF93cHRyKTsKLQlXUkVHMzIobW1DUF9IUURfRU9QX0VWRU5UUywgbS0+Y3BfaHFk X2VvcF9kb25lX2V2ZW50cyk7Ci0KLQlXUkVHMzIobW1DUF9IUURfQ1RYX1NBVkVfQkFTRV9BRERS X0xPLCBtLT5jcF9ocWRfY3R4X3NhdmVfYmFzZV9hZGRyX2xvKTsKLQlXUkVHMzIobW1DUF9IUURf Q1RYX1NBVkVfQkFTRV9BRERSX0hJLCBtLT5jcF9ocWRfY3R4X3NhdmVfYmFzZV9hZGRyX2hpKTsK LQlXUkVHMzIobW1DUF9IUURfQ1RYX1NBVkVfQ09OVFJPTCwgbS0+Y3BfaHFkX2N0eF9zYXZlX2Nv bnRyb2wpOwotCVdSRUczMihtbUNQX0hRRF9DTlRMX1NUQUNLX09GRlNFVCwgbS0+Y3BfaHFkX2Nu dGxfc3RhY2tfb2Zmc2V0KTsKLQlXUkVHMzIobW1DUF9IUURfQ05UTF9TVEFDS19TSVpFLCBtLT5j cF9ocWRfY250bF9zdGFja19zaXplKTsKLQlXUkVHMzIobW1DUF9IUURfV0dfU1RBVEVfT0ZGU0VU LCBtLT5jcF9ocWRfd2dfc3RhdGVfb2Zmc2V0KTsKLQlXUkVHMzIobW1DUF9IUURfQ1RYX1NBVkVf U0laRSwgbS0+Y3BfaHFkX2N0eF9zYXZlX3NpemUpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX0lCX0NP TlRST0wsIG0tPmNwX2hxZF9pYl9jb250cm9sKTsKLQotCVdSRUczMihtbUNQX0hRRF9ERVFVRVVF X1JFUVVFU1QsIG0tPmNwX2hxZF9kZXF1ZXVlX3JlcXVlc3QpOwotCVdSRUczMihtbUNQX0hRRF9F UlJPUiwgbS0+Y3BfaHFkX2Vycm9yKTsKLQlXUkVHMzIobW1DUF9IUURfRU9QX1dQVFJfTUVNLCBt LT5jcF9ocWRfZW9wX3dwdHJfbWVtKTsKLQlXUkVHMzIobW1DUF9IUURfRU9QX0RPTkVTLCBtLT5j cF9ocWRfZW9wX2RvbmVzKTsKLQotCVdSRUczMihtbUNQX0hRRF9BQ1RJVkUsIG0tPmNwX2hxZF9h Y3RpdmUpOworCQltLT5jcF9ocWRfcHFfd3B0ciA9IHZhbGlkX3dwdHI7CiAKKwlhY3F1aXJlX3F1 ZXVlKGtnZCwgcGlwZV9pZCwgcXVldWVfaWQpOworCWdmeF92OF8wX21xZF9jb21taXQoYWRldiwg bXFkKTsKIAlyZWxlYXNlX3F1ZXVlKGtnZCk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu dCBrZ2RfaHFkX3NkbWFfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQpCiB7CiAJ cmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dm eF92N18wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCmluZGV4IGM1 MDQxYWIuLjRjODlhYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dm eF92N18wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwpAQCAt MzA2MSwyNiArMzA2MSw0MyBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9tcWRfaW5pdChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAl9CiAKIAkvKiByZWFkIGFuZCB3cml0ZSBwb2ludGVycywg c2ltaWxhciB0byBDUF9SQjBfV1BUUi9fUlBUUiAqLwogCXJpbmctPndwdHIgPSAwOwogCW1xZC0+ Y3BfaHFkX3BxX3dwdHIgPSBsb3dlcl8zMl9iaXRzKHJpbmctPndwdHIpOwogCW1xZC0+Y3BfaHFk X3BxX3JwdHIgPSBSUkVHMzIobW1DUF9IUURfUFFfUlBUUik7CiAKIAkvKiBzZXQgdGhlIHZtaWQg Zm9yIHRoZSBxdWV1ZSAqLwogCW1xZC0+Y3BfaHFkX3ZtaWQgPSAwOwogCisJLyogZGVmYXVsdHMg Ki8KKwltcWQtPmNwX2hxZF9pYl9jb250cm9sID0gUlJFRzMyKG1tQ1BfSFFEX0lCX0NPTlRST0wp OworCW1xZC0+Y3BfaHFkX2liX2Jhc2VfYWRkcl9sbyA9IFJSRUczMihtbUNQX0hRRF9JQl9CQVNF X0FERFIpOworCW1xZC0+Y3BfaHFkX2liX2Jhc2VfYWRkcl9oaSA9IFJSRUczMihtbUNQX0hRRF9J Ql9CQVNFX0FERFJfSEkpOworCW1xZC0+Y3BfaHFkX2liX3JwdHIgPSBSUkVHMzIobW1DUF9IUURf SUJfUlBUUik7CisJbXFkLT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSA9IFJSRUczMihtbUNQX0hR RF9QRVJTSVNURU5UX1NUQVRFKTsKKwltcWQtPmNwX2hxZF9zZW1hX2NtZCA9IFJSRUczMihtbUNQ X0hRRF9TRU1BX0NNRCk7CisJbXFkLT5jcF9ocWRfbXNnX3R5cGUgPSBSUkVHMzIobW1DUF9IUURf TVNHX1RZUEUpOworCW1xZC0+Y3BfaHFkX2F0b21pYzBfcHJlb3BfbG8gPSBSUkVHMzIobW1DUF9I UURfQVRPTUlDMF9QUkVPUF9MTyk7CisJbXFkLT5jcF9ocWRfYXRvbWljMF9wcmVvcF9oaSA9IFJS RUczMihtbUNQX0hRRF9BVE9NSUMwX1BSRU9QX0hJKTsKKwltcWQtPmNwX2hxZF9hdG9taWMxX3By ZW9wX2xvID0gUlJFRzMyKG1tQ1BfSFFEX0FUT01JQzFfUFJFT1BfTE8pOworCW1xZC0+Y3BfaHFk X2F0b21pYzFfcHJlb3BfaGkgPSBSUkVHMzIobW1DUF9IUURfQVRPTUlDMV9QUkVPUF9ISSk7CisJ bXFkLT5jcF9ocWRfcHFfcnB0ciA9IFJSRUczMihtbUNQX0hRRF9QUV9SUFRSKTsKKwltcWQtPmNw X2hxZF9xdWFudHVtID0gUlJFRzMyKG1tQ1BfSFFEX1FVQU5UVU0pOworCW1xZC0+Y3BfaHFkX3Bp cGVfcHJpb3JpdHkgPSBSUkVHMzIobW1DUF9IUURfUElQRV9QUklPUklUWSk7CisJbXFkLT5jcF9o cWRfcXVldWVfcHJpb3JpdHkgPSBSUkVHMzIobW1DUF9IUURfUVVFVUVfUFJJT1JJVFkpOworCW1x ZC0+Y3BfaHFkX2lxX3JwdHIgPSBSUkVHMzIobW1DUF9IUURfSVFfUlBUUik7CisKIAkvKiBhY3Rp dmF0ZSB0aGUgcXVldWUgKi8KIAltcWQtPmNwX2hxZF9hY3RpdmUgPSAxOwogfQogCi1zdGF0aWMg aW50IGdmeF92N18wX21xZF9jb21taXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCi0JCQkg ICAgICAgc3RydWN0IGNpa19tcWQgKm1xZCkKK2ludCBnZnhfdjdfMF9tcWRfY29tbWl0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgY2lrX21xZCAqbXFkKQogewogCXUzMiB0bXA7 CiAKIAkvKiBkaXNhYmxlIHdwdHIgcG9sbGluZyAqLwogCXRtcCA9IFJSRUczMihtbUNQX1BRX1dQ VFJfUE9MTF9DTlRMKTsKIAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfUFFfV1BUUl9QT0xM X0NOVEwsIEVOLCAwKTsKIAlXUkVHMzIobW1DUF9QUV9XUFRSX1BPTExfQ05UTCwgdG1wKTsKIAog CS8qIHByb2dyYW0gTVFEIGZpZWxkIHRvIEhXICovCiAJV1JFRzMyKG1tQ1BfTVFEX0JBU0VfQURE UiwgbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2xvKTsKQEAgLTMwOTAsMjAgKzMxMDcsMzcgQEAgc3Rh dGljIGludCBnZnhfdjdfMF9tcWRfY29tbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CVdSRUczMihtbUNQX0hRRF9QUV9CQVNFX0hJLCBtcWQtPmNwX2hxZF9wcV9iYXNlX2hpKTsKIAlX UkVHMzIobW1DUF9IUURfUFFfQ09OVFJPTCwgbXFkLT5jcF9ocWRfcHFfY29udHJvbCk7CiAJV1JF RzMyKG1tQ1BfSFFEX1BRX1dQVFJfUE9MTF9BRERSLCBtcWQtPmNwX2hxZF9wcV93cHRyX3BvbGxf YWRkcl9sbyk7CiAJV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFJfUE9MTF9BRERSX0hJLCBtcWQtPmNw X2hxZF9wcV93cHRyX3BvbGxfYWRkcl9oaSk7CiAJV1JFRzMyKG1tQ1BfSFFEX1BRX1JQVFJfUkVQ T1JUX0FERFIsIG1xZC0+Y3BfaHFkX3BxX3JwdHJfcmVwb3J0X2FkZHJfbG8pOwogCVdSRUczMiht bUNQX0hRRF9QUV9SUFRSX1JFUE9SVF9BRERSX0hJLCBtcWQtPmNwX2hxZF9wcV9ycHRyX3JlcG9y dF9hZGRyX2hpKTsKIAlXUkVHMzIobW1DUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwgbXFkLT5j cF9ocWRfcHFfZG9vcmJlbGxfY29udHJvbCk7CiAJV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFIsIG1x ZC0+Y3BfaHFkX3BxX3dwdHIpOwogCVdSRUczMihtbUNQX0hRRF9WTUlELCBtcWQtPmNwX2hxZF92 bWlkKTsKIAorCVdSRUczMihtbUNQX0hRRF9JQl9DT05UUk9MLCBtcWQtPmNwX2hxZF9pYl9jb250 cm9sKTsKKwlXUkVHMzIobW1DUF9IUURfSUJfQkFTRV9BRERSLCBtcWQtPmNwX2hxZF9pYl9iYXNl X2FkZHJfbG8pOworCVdSRUczMihtbUNQX0hRRF9JQl9CQVNFX0FERFJfSEksIG1xZC0+Y3BfaHFk X2liX2Jhc2VfYWRkcl9oaSk7CisJV1JFRzMyKG1tQ1BfSFFEX0lCX1JQVFIsIG1xZC0+Y3BfaHFk X2liX3JwdHIpOworCVdSRUczMihtbUNQX0hRRF9QRVJTSVNURU5UX1NUQVRFLCBtcWQtPmNwX2hx ZF9wZXJzaXN0ZW50X3N0YXRlKTsKKwlXUkVHMzIobW1DUF9IUURfU0VNQV9DTUQsIG1xZC0+Y3Bf aHFkX3NlbWFfY21kKTsKKwlXUkVHMzIobW1DUF9IUURfTVNHX1RZUEUsIG1xZC0+Y3BfaHFkX21z Z190eXBlKTsKKwlXUkVHMzIobW1DUF9IUURfQVRPTUlDMF9QUkVPUF9MTywgbXFkLT5jcF9ocWRf YXRvbWljMF9wcmVvcF9sbyk7CisJV1JFRzMyKG1tQ1BfSFFEX0FUT01JQzBfUFJFT1BfSEksIG1x ZC0+Y3BfaHFkX2F0b21pYzBfcHJlb3BfaGkpOworCVdSRUczMihtbUNQX0hRRF9BVE9NSUMxX1BS RU9QX0xPLCBtcWQtPmNwX2hxZF9hdG9taWMxX3ByZW9wX2xvKTsKKwlXUkVHMzIobW1DUF9IUURf QVRPTUlDMV9QUkVPUF9ISSwgbXFkLT5jcF9ocWRfYXRvbWljMV9wcmVvcF9oaSk7CisJV1JFRzMy KG1tQ1BfSFFEX1BRX1JQVFIsIG1xZC0+Y3BfaHFkX3BxX3JwdHIpOworCVdSRUczMihtbUNQX0hR RF9RVUFOVFVNLCBtcWQtPmNwX2hxZF9xdWFudHVtKTsKKwlXUkVHMzIobW1DUF9IUURfUElQRV9Q UklPUklUWSwgbXFkLT5jcF9ocWRfcGlwZV9wcmlvcml0eSk7CisJV1JFRzMyKG1tQ1BfSFFEX1FV RVVFX1BSSU9SSVRZLCBtcWQtPmNwX2hxZF9xdWV1ZV9wcmlvcml0eSk7CisJV1JFRzMyKG1tQ1Bf SFFEX0lRX1JQVFIsIG1xZC0+Y3BfaHFkX2lxX3JwdHIpOworCiAJLyogYWN0aXZhdGUgdGhlIEhR RCAqLwogCVdSRUczMihtbUNQX0hRRF9BQ1RJVkUsIG1xZC0+Y3BfaHFkX2FjdGl2ZSk7CiAKIAly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBnZnhfdjdfMF9jb21wdXRlX3F1ZXVlX2luaXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGludCByaW5nX2lkKQogewogCWludCByOwogCXU2NCBt cWRfZ3B1X2FkZHI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djdfMC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuaAppbmRleCAyZjUx NjRjLi42ZmI5YzE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djdfMC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmgKQEAgLTIy LDExICsyMiwxNiBAQAogICovCiAKICNpZm5kZWYgX19HRlhfVjdfMF9IX18KICNkZWZpbmUgX19H RlhfVjdfMF9IX18KIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lv biBnZnhfdjdfMF9pcF9ibG9jazsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2Nr X3ZlcnNpb24gZ2Z4X3Y3XzFfaXBfYmxvY2s7CiBleHRlcm4gY29uc3Qgc3RydWN0IGFtZGdwdV9p cF9ibG9ja192ZXJzaW9uIGdmeF92N18yX2lwX2Jsb2NrOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBh bWRncHVfaXBfYmxvY2tfdmVyc2lvbiBnZnhfdjdfM19pcF9ibG9jazsKIAorc3RydWN0IGFtZGdw dV9kZXZpY2U7CitzdHJ1Y3QgY2lrX21xZDsKKworaW50IGdmeF92N18wX21xZF9jb21taXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBjaWtfbXFkICptcWQpOworCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCmluZGV4IDc2MjQ3N2YuLjc5ZDE2MDYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwpAQCAtNDg1MiwyMCArNDg1Miw0 MCBAQCBzdGF0aWMgaW50IGdmeF92OF8wX21xZF9pbml0KHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZykKIAltcWQtPmNwX2hxZF9wcV93cHRyID0gcmluZy0+d3B0cjsKIAltcWQtPmNwX2hxZF9wcV9y cHRyID0gUlJFRzMyKG1tQ1BfSFFEX1BRX1JQVFIpOwogCiAJLyogc2V0IHRoZSB2bWlkIGZvciB0 aGUgcXVldWUgKi8KIAltcWQtPmNwX2hxZF92bWlkID0gMDsKIAogCXRtcCA9IFJSRUczMihtbUNQ X0hRRF9QRVJTSVNURU5UX1NUQVRFKTsKIAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfSFFE X1BFUlNJU1RFTlRfU1RBVEUsIFBSRUxPQURfU0laRSwgMHg1Myk7CiAJbXFkLT5jcF9ocWRfcGVy c2lzdGVudF9zdGF0ZSA9IHRtcDsKIAorCS8qIGRlZmF1bHRzICovCisJbXFkLT5jcF9ocWRfZW9w X3JwdHIgPSBSUkVHMzIobW1DUF9IUURfRU9QX1JQVFIpOworCW1xZC0+Y3BfaHFkX2VvcF93cHRy ID0gUlJFRzMyKG1tQ1BfSFFEX0VPUF9XUFRSKTsKKwltcWQtPmNwX2hxZF9waXBlX3ByaW9yaXR5 ID0gUlJFRzMyKG1tQ1BfSFFEX1BJUEVfUFJJT1JJVFkpOworCW1xZC0+Y3BfaHFkX3F1ZXVlX3By aW9yaXR5ID0gUlJFRzMyKG1tQ1BfSFFEX1FVRVVFX1BSSU9SSVRZKTsKKwltcWQtPmNwX2hxZF9x dWFudHVtID0gUlJFRzMyKG1tQ1BfSFFEX1FVQU5UVU0pOworCW1xZC0+Y3BfaHFkX2N0eF9zYXZl X2Jhc2VfYWRkcl9sbyA9IFJSRUczMihtbUNQX0hRRF9DVFhfU0FWRV9CQVNFX0FERFJfTE8pOwor CW1xZC0+Y3BfaHFkX2N0eF9zYXZlX2Jhc2VfYWRkcl9oaSA9IFJSRUczMihtbUNQX0hRRF9DVFhf U0FWRV9CQVNFX0FERFJfSEkpOworCW1xZC0+Y3BfaHFkX2N0eF9zYXZlX2NvbnRyb2wgPSBSUkVH MzIobW1DUF9IUURfQ1RYX1NBVkVfQ09OVFJPTCk7CisJbXFkLT5jcF9ocWRfY250bF9zdGFja19v ZmZzZXQgPSBSUkVHMzIobW1DUF9IUURfQ05UTF9TVEFDS19PRkZTRVQpOworCW1xZC0+Y3BfaHFk X2NudGxfc3RhY2tfc2l6ZSA9IFJSRUczMihtbUNQX0hRRF9DTlRMX1NUQUNLX1NJWkUpOworCW1x ZC0+Y3BfaHFkX3dnX3N0YXRlX29mZnNldCA9IFJSRUczMihtbUNQX0hRRF9XR19TVEFURV9PRkZT RVQpOworCW1xZC0+Y3BfaHFkX2N0eF9zYXZlX3NpemUgPSBSUkVHMzIobW1DUF9IUURfQ1RYX1NB VkVfU0laRSk7CisJbXFkLT5jcF9ocWRfaWJfY29udHJvbCA9IFJSRUczMihtbUNQX0hRRF9JQl9D T05UUk9MKTsKKwltcWQtPmNwX2hxZF9lb3BfZG9uZV9ldmVudHMgPSBSUkVHMzIobW1DUF9IUURf RU9QX0VWRU5UUyk7CisJbXFkLT5jcF9ocWRfZXJyb3IgPSBSUkVHMzIobW1DUF9IUURfRVJST1Ip OworCW1xZC0+Y3BfaHFkX2VvcF93cHRyX21lbSA9IFJSRUczMihtbUNQX0hRRF9FT1BfV1BUUl9N RU0pOworCW1xZC0+Y3BfaHFkX2VvcF9kb25lcyA9IFJSRUczMihtbUNQX0hRRF9FT1BfRE9ORVMp OworCisKIAkvKiBhY3RpdmF0ZSB0aGUgcXVldWUgKi8KIAltcWQtPmNwX2hxZF9hY3RpdmUgPSAx OwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfbXFkX2RlYWN0aXZhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IGk7CiAKQEAgLTQ5MDUsMjQgKzQ5 MjUsMjIgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfZW5hYmxlX2Rvb3JiZWxsKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAkJV1JFRzMyKG1tQ1BfTUVDX0RPT1JCRUxM X1JBTkdFX1VQUEVSLCBBTURHUFVfRE9PUkJFTExfTUVDX1JJTkc3IDw8IDIpOwogCX0KIAogCXRt cCA9IFJSRUczMihtbUNQX1BRX1NUQVRVUyk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQ X1BRX1NUQVRVUywgRE9PUkJFTExfRU5BQkxFLCAxKTsKIAlXUkVHMzIobW1DUF9QUV9TVEFUVVMs IHRtcCk7CiAKIAlhZGV2LT5nZnguZG9vcmJlbGxfZW5hYmxlZCA9IHRydWU7CiB9CiAKLXN0YXRp YyBpbnQgZ2Z4X3Y4XzBfbXFkX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCitpbnQg Z2Z4X3Y4XzBfbXFkX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IHZp X21xZCAqbXFkKQogewotCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsK LQlzdHJ1Y3QgdmlfbXFkICptcWQgPSByaW5nLT5tcWRfcHRyOwogCXVpbnQzMl90IHRtcDsKIAog CS8qIGRpc2FibGUgd3B0ciBwb2xsaW5nICovCiAJdG1wID0gUlJFRzMyKG1tQ1BfUFFfV1BUUl9Q T0xMX0NOVEwpOwogCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9QUV9XUFRSX1BPTExfQ05U TCwgRU4sIDApOwogCVdSRUczMihtbUNQX1BRX1dQVFJfUE9MTF9DTlRMLCB0bXApOwogCiAJV1JF RzMyKG1tQ1BfSFFEX0VPUF9CQVNFX0FERFIsIG1xZC0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJfbG8p OwogCVdSRUczMihtbUNQX0hRRF9FT1BfQkFTRV9BRERSX0hJLCBtcWQtPmNwX2hxZF9lb3BfYmFz ZV9hZGRyX2hpKTsKIApAQCAtNDk1OSwyMCArNDk3Nyw0MiBAQCBzdGF0aWMgaW50IGdmeF92OF8w X21xZF9jb21taXQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogCiAJLyogb25seSB1c2VkIGlm IENQX1BRX1dQVFJfUE9MTF9DTlRMLkNQX1BRX1dQVFJfUE9MTF9DTlRMX19FTl9NQVNLPTEgKi8K IAlXUkVHMzIobW1DUF9IUURfUFFfV1BUUl9QT0xMX0FERFIsIG1xZC0+Y3BfaHFkX3BxX3dwdHJf cG9sbF9hZGRyX2xvKTsKIAlXUkVHMzIobW1DUF9IUURfUFFfV1BUUl9QT0xMX0FERFJfSEksIG1x ZC0+Y3BfaHFkX3BxX3dwdHJfcG9sbF9hZGRyX2hpKTsKIAogCS8qIGVuYWJsZSB0aGUgZG9vcmJl bGwgaWYgcmVxdWVzdGVkICovCiAJV1JFRzMyKG1tQ1BfSFFEX1BRX0RPT1JCRUxMX0NPTlRST0ws IG1xZC0+Y3BfaHFkX3BxX2Rvb3JiZWxsX2NvbnRyb2wpOwogCiAJLyogcmVzZXQgcmVhZCBhbmQg d3JpdGUgcG9pbnRlcnMsIHNpbWlsYXIgdG8gQ1BfUkIwX1dQVFIvX1JQVFIgKi8KIAlXUkVHMzIo bW1DUF9IUURfUFFfV1BUUiwgbXFkLT5jcF9ocWRfcHFfd3B0cik7CisJV1JFRzMyKG1tQ1BfSFFE X0VPUF9SUFRSLCBtcWQtPmNwX2hxZF9lb3BfcnB0cik7CisJV1JFRzMyKG1tQ1BfSFFEX0VPUF9X UFRSLCBtcWQtPmNwX2hxZF9lb3Bfd3B0cik7CisKKwkvKiBzZXQgdGhlIEhRRCBwcmlvcml0eSAq LworCVdSRUczMihtbUNQX0hRRF9QSVBFX1BSSU9SSVRZLCBtcWQtPmNwX2hxZF9waXBlX3ByaW9y aXR5KTsKKwlXUkVHMzIobW1DUF9IUURfUVVFVUVfUFJJT1JJVFksIG1xZC0+Y3BfaHFkX3F1ZXVl X3ByaW9yaXR5KTsKKwlXUkVHMzIobW1DUF9IUURfUVVBTlRVTSwgbXFkLT5jcF9ocWRfcXVhbnR1 bSk7CisKKwkvKiBzZXQgY3dzciBzYXZlIGFyZWEgKi8KKwlXUkVHMzIobW1DUF9IUURfQ1RYX1NB VkVfQkFTRV9BRERSX0xPLCBtcWQtPmNwX2hxZF9jdHhfc2F2ZV9iYXNlX2FkZHJfbG8pOworCVdS RUczMihtbUNQX0hRRF9DVFhfU0FWRV9CQVNFX0FERFJfSEksIG1xZC0+Y3BfaHFkX2N0eF9zYXZl X2Jhc2VfYWRkcl9oaSk7CisJV1JFRzMyKG1tQ1BfSFFEX0NUWF9TQVZFX0NPTlRST0wsIG1xZC0+ Y3BfaHFkX2N0eF9zYXZlX2NvbnRyb2wpOworCVdSRUczMihtbUNQX0hRRF9DTlRMX1NUQUNLX09G RlNFVCwgbXFkLT5jcF9ocWRfY250bF9zdGFja19vZmZzZXQpOworCVdSRUczMihtbUNQX0hRRF9D TlRMX1NUQUNLX1NJWkUsIG1xZC0+Y3BfaHFkX2NudGxfc3RhY2tfc2l6ZSk7CisJV1JFRzMyKG1t Q1BfSFFEX1dHX1NUQVRFX09GRlNFVCwgbXFkLT5jcF9ocWRfd2dfc3RhdGVfb2Zmc2V0KTsKKwlX UkVHMzIobW1DUF9IUURfQ1RYX1NBVkVfU0laRSwgbXFkLT5jcF9ocWRfY3R4X3NhdmVfc2l6ZSk7 CisKKwlXUkVHMzIobW1DUF9IUURfSUJfQ09OVFJPTCwgbXFkLT5jcF9ocWRfaWJfY29udHJvbCk7 CisJV1JFRzMyKG1tQ1BfSFFEX0VPUF9FVkVOVFMsIG1xZC0+Y3BfaHFkX2VvcF9kb25lX2V2ZW50 cyk7CisJV1JFRzMyKG1tQ1BfSFFEX0VSUk9SLCBtcWQtPmNwX2hxZF9lcnJvcik7CisJV1JFRzMy KG1tQ1BfSFFEX0VPUF9XUFRSX01FTSwgbXFkLT5jcF9ocWRfZW9wX3dwdHJfbWVtKTsKKwlXUkVH MzIobW1DUF9IUURfRU9QX0RPTkVTLCBtcWQtPmNwX2hxZF9lb3BfZG9uZXMpOwogCiAJLyogc2V0 IHRoZSB2bWlkIGZvciB0aGUgcXVldWUgKi8KIAlXUkVHMzIobW1DUF9IUURfVk1JRCwgbXFkLT5j cF9ocWRfdm1pZCk7CiAKIAlXUkVHMzIobW1DUF9IUURfUEVSU0lTVEVOVF9TVEFURSwgbXFkLT5j cF9ocWRfcGVyc2lzdGVudF9zdGF0ZSk7CiAKIAkvKiBhY3RpdmF0ZSB0aGUgcXVldWUgKi8KIAlX UkVHMzIobW1DUF9IUURfQUNUSVZFLCBtcWQtPmNwX2hxZF9hY3RpdmUpOwogCiAJcmV0dXJuIDA7 CkBAIC00OTk3LDM0ICs1MDM3LDM0IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfa2lxX2luaXRfcXVl dWUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogCQlhbWRncHVfcmluZ19jbGVhcl9yaW5nKHJp bmcpOwogCiAJCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwogCQl2aV9zcmJtX3NlbGVj dChhZGV2LCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUsIDApOwogCQlyID0gZ2Z4 X3Y4XzBfbXFkX2RlYWN0aXZhdGUoYWRldik7CiAJCWlmIChyKSB7CiAJCQlkZXZfZXJyKGFkZXYt PmRldiwgImZhaWxlZCB0byBkZWFjdGl2YXRlIHJpbmcgJXNcbiIsIHJpbmctPm5hbWUpOwogCQkJ Z290byBvdXRfdW5sb2NrOwogCQl9CiAJCWdmeF92OF8wX2VuYWJsZV9kb29yYmVsbChhZGV2LCBy aW5nLT51c2VfZG9vcmJlbGwpOwotCQlnZnhfdjhfMF9tcWRfY29tbWl0KHJpbmcpOworCQlnZnhf djhfMF9tcWRfY29tbWl0KGFkZXYsIG1xZCk7CiAJCXZpX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAs IDAsIDApOwogCQltdXRleF91bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwogCX0gZWxzZSB7CiAJ CW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwogCQl2aV9zcmJtX3NlbGVjdChhZGV2LCBy aW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUsIDApOwogCQlnZnhfdjhfMF9tcWRfaW5p dChyaW5nKTsKIAkJciA9IGdmeF92OF8wX21xZF9kZWFjdGl2YXRlKGFkZXYpOwogCQlpZiAocikg ewogCQkJZGV2X2VycihhZGV2LT5kZXYsICJmYWlsZWQgdG8gZGVhY3RpdmF0ZSByaW5nICVzXG4i LCByaW5nLT5uYW1lKTsKIAkJCWdvdG8gb3V0X3VubG9jazsKIAkJfQogCQlnZnhfdjhfMF9lbmFi bGVfZG9vcmJlbGwoYWRldiwgcmluZy0+dXNlX2Rvb3JiZWxsKTsKLQkJZ2Z4X3Y4XzBfbXFkX2Nv bW1pdChyaW5nKTsKKwkJZ2Z4X3Y4XzBfbXFkX2NvbW1pdChhZGV2LCBtcWQpOwogCQl2aV9zcmJt X3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKIAkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5zcmJtX211 dGV4KTsKIAogCQlpZiAoYWRldi0+Z2Z4Lm1lYy5tcWRfYmFja3VwW21xZF9pZHhdKQogCQkJbWVt Y3B5KGFkZXYtPmdmeC5tZWMubXFkX2JhY2t1cFttcWRfaWR4XSwgbXFkLCBzaXplb2YoKm1xZCkp OwogCX0KIAogCXJldHVybiByOwogCiBvdXRfdW5sb2NrOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dmeF92OF8wLmgKaW5kZXggNzg4Y2MzYS4uZWMzZjExZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5oCkBAIC0yMCwxMSArMjAsMTYgQEAKICAqIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KICAqCiAgKi8KIAogI2lmbmRlZiBfX0dGWF9WOF8wX0hfXwogI2RlZmlu ZSBfX0dGWF9WOF8wX0hfXwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192 ZXJzaW9uIGdmeF92OF8wX2lwX2Jsb2NrOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBf YmxvY2tfdmVyc2lvbiBnZnhfdjhfMV9pcF9ibG9jazsKIAorc3RydWN0IGFtZGdwdV9kZXZpY2U7 CitzdHJ1Y3QgdmlfbXFkOworCitpbnQgZ2Z4X3Y4XzBfbXFkX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgc3RydWN0IHZpX21xZCAqbXFkKTsKKwogI2VuZGlmCi0tIAoyLjkuMwoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBt YWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==