From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 22/25] drm/amdgpu: condense mqd programming sequence Date: Tue, 4 Apr 2017 18:05:48 -0400 Message-ID: <20170404220551.8669-23-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 VGhlIE1RRCBzdHJ1Y3R1cmUgbWF0Y2hlcyB0aGUgcmVnIGxheW91dC4gVGFrZSBhZHZhbnRhZ2Ug b2YgdGhpcyB0bwpzaW1wbGlmeSBIUUQgcHJvZ3JhbW1pbmcuCgpOb3RlIHRoYXQgdGhlIEFDVElW RSBmaWVsZCBzdGlsbCBuZWVkcyB0byBiZSBwcm9ncmFtbWVkIGxhc3QuCgpTdWdnZXN0ZWQtYnk6 IEZlbGl4IEt1ZWhsaW5nIDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBB bmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYyB8IDQ0ICsrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgfCA4MyArKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxMDUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3 XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKaW5kZXggYTg0OThm ZC4uYWVjOGU0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3 XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCkBAIC0zMTMw LDYxICszMTMwLDM5IEBAIHN0YXRpYyB2b2lkIGdmeF92N18wX21xZF9pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCW1xZC0+Y3BfaHFkX3BpcGVfcHJpb3JpdHkgPSBSUkVHMzIobW1D UF9IUURfUElQRV9QUklPUklUWSk7CiAJbXFkLT5jcF9ocWRfcXVldWVfcHJpb3JpdHkgPSBSUkVH MzIobW1DUF9IUURfUVVFVUVfUFJJT1JJVFkpOwogCW1xZC0+Y3BfaHFkX2lxX3JwdHIgPSBSUkVH MzIobW1DUF9IUURfSVFfUlBUUik7CiAKIAkvKiBhY3RpdmF0ZSB0aGUgcXVldWUgKi8KIAltcWQt PmNwX2hxZF9hY3RpdmUgPSAxOwogfQogCiBpbnQgZ2Z4X3Y3XzBfbXFkX2NvbW1pdChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGNpa19tcWQgKm1xZCkKIHsKLQl1MzIgdG1wOwor CXVpbnQzMl90IHRtcDsKKwl1aW50MzJfdCBtcWRfcmVnOworCXVpbnQzMl90ICptcWRfZGF0YTsK KworCS8qIEhRRCByZWdpc3RlcnMgZXh0ZW5kIGZyb20gbW1DUF9NUURfQkFTRV9BRERSIHRvIG1t Q1BfTVFEX0NPTlRST0wgKi8KKwltcWRfZGF0YSA9ICZtcWQtPmNwX21xZF9iYXNlX2FkZHJfbG87 CiAKIAkvKiBkaXNhYmxlIHdwdHIgcG9sbGluZyAqLwogCXRtcCA9IFJSRUczMihtbUNQX1BRX1dQ VFJfUE9MTF9DTlRMKTsKIAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfUFFfV1BUUl9QT0xM X0NOVEwsIEVOLCAwKTsKIAlXUkVHMzIobW1DUF9QUV9XUFRSX1BPTExfQ05UTCwgdG1wKTsKIAot CS8qIHByb2dyYW0gTVFEIGZpZWxkIHRvIEhXICovCi0JV1JFRzMyKG1tQ1BfTVFEX0JBU0VfQURE UiwgbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2xvKTsKLQlXUkVHMzIobW1DUF9NUURfQkFTRV9BRERS X0hJLCBtcWQtPmNwX21xZF9iYXNlX2FkZHJfaGkpOwotCVdSRUczMihtbUNQX01RRF9DT05UUk9M LCBtcWQtPmNwX21xZF9jb250cm9sKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfQkFTRSwgbXFkLT5j cF9ocWRfcHFfYmFzZV9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX0JBU0VfSEksIG1xZC0+Y3Bf aHFkX3BxX2Jhc2VfaGkpOwotCVdSRUczMihtbUNQX0hRRF9QUV9DT05UUk9MLCBtcWQtPmNwX2hx ZF9wcV9jb250cm9sKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfV1BUUl9QT0xMX0FERFIsIG1xZC0+ Y3BfaHFkX3BxX3dwdHJfcG9sbF9hZGRyX2xvKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfV1BUUl9Q T0xMX0FERFJfSEksIG1xZC0+Y3BfaHFkX3BxX3dwdHJfcG9sbF9hZGRyX2hpKTsKLQlXUkVHMzIo bW1DUF9IUURfUFFfUlBUUl9SRVBPUlRfQUREUiwgbXFkLT5jcF9ocWRfcHFfcnB0cl9yZXBvcnRf YWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX1JQVFJfUkVQT1JUX0FERFJfSEksIG1xZC0+ Y3BfaHFkX3BxX3JwdHJfcmVwb3J0X2FkZHJfaGkpOwotCVdSRUczMihtbUNQX0hRRF9QUV9ET09S QkVMTF9DT05UUk9MLCBtcWQtPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sKTsKLQlXUkVHMzIo bW1DUF9IUURfUFFfV1BUUiwgbXFkLT5jcF9ocWRfcHFfd3B0cik7Ci0JV1JFRzMyKG1tQ1BfSFFE X1ZNSUQsIG1xZC0+Y3BfaHFkX3ZtaWQpOwotCi0JV1JFRzMyKG1tQ1BfSFFEX0lCX0NPTlRST0ws IG1xZC0+Y3BfaHFkX2liX2NvbnRyb2wpOwotCVdSRUczMihtbUNQX0hRRF9JQl9CQVNFX0FERFIs IG1xZC0+Y3BfaHFkX2liX2Jhc2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0lCX0JBU0Vf QUREUl9ISSwgbXFkLT5jcF9ocWRfaWJfYmFzZV9hZGRyX2hpKTsKLQlXUkVHMzIobW1DUF9IUURf SUJfUlBUUiwgbXFkLT5jcF9ocWRfaWJfcnB0cik7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BFUlNJU1RF TlRfU1RBVEUsIG1xZC0+Y3BfaHFkX3BlcnNpc3RlbnRfc3RhdGUpOwotCVdSRUczMihtbUNQX0hR RF9TRU1BX0NNRCwgbXFkLT5jcF9ocWRfc2VtYV9jbWQpOwotCVdSRUczMihtbUNQX0hRRF9NU0df VFlQRSwgbXFkLT5jcF9ocWRfbXNnX3R5cGUpOwotCVdSRUczMihtbUNQX0hRRF9BVE9NSUMwX1BS RU9QX0xPLCBtcWQtPmNwX2hxZF9hdG9taWMwX3ByZW9wX2xvKTsKLQlXUkVHMzIobW1DUF9IUURf QVRPTUlDMF9QUkVPUF9ISSwgbXFkLT5jcF9ocWRfYXRvbWljMF9wcmVvcF9oaSk7Ci0JV1JFRzMy KG1tQ1BfSFFEX0FUT01JQzFfUFJFT1BfTE8sIG1xZC0+Y3BfaHFkX2F0b21pYzFfcHJlb3BfbG8p OwotCVdSRUczMihtbUNQX0hRRF9BVE9NSUMxX1BSRU9QX0hJLCBtcWQtPmNwX2hxZF9hdG9taWMx X3ByZW9wX2hpKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfUlBUUiwgbXFkLT5jcF9ocWRfcHFfcnB0 cik7Ci0JV1JFRzMyKG1tQ1BfSFFEX1FVQU5UVU0sIG1xZC0+Y3BfaHFkX3F1YW50dW0pOwotCVdS RUczMihtbUNQX0hRRF9QSVBFX1BSSU9SSVRZLCBtcWQtPmNwX2hxZF9waXBlX3ByaW9yaXR5KTsK LQlXUkVHMzIobW1DUF9IUURfUVVFVUVfUFJJT1JJVFksIG1xZC0+Y3BfaHFkX3F1ZXVlX3ByaW9y aXR5KTsKLQlXUkVHMzIobW1DUF9IUURfSVFfUlBUUiwgbXFkLT5jcF9ocWRfaXFfcnB0cik7CisJ LyogcHJvZ3JhbSBhbGwgSFFEIHJlZ2lzdGVycyAqLworCWZvciAobXFkX3JlZyA9IG1tQ1BfSFFE X1ZNSUQ7IG1xZF9yZWcgPD0gbW1DUF9NUURfQ09OVFJPTDsgbXFkX3JlZysrKQorCQlXUkVHMzIo bXFkX3JlZywgbXFkX2RhdGFbbXFkX3JlZyAtIG1tQ1BfTVFEX0JBU0VfQUREUl0pOwogCiAJLyog YWN0aXZhdGUgdGhlIEhRRCAqLwotCVdSRUczMihtbUNQX0hRRF9BQ1RJVkUsIG1xZC0+Y3BfaHFk X2FjdGl2ZSk7CisJZm9yIChtcWRfcmVnID0gbW1DUF9NUURfQkFTRV9BRERSOyBtcWRfcmVnIDw9 IG1tQ1BfSFFEX0FDVElWRTsgbXFkX3JlZysrKQorCQlXUkVHMzIobXFkX3JlZywgbXFkX2RhdGFb bXFkX3JlZyAtIG1tQ1BfTVFEX0JBU0VfQUREUl0pOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRp YyBpbnQgZ2Z4X3Y3XzBfY29tcHV0ZV9xdWV1ZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBpbnQgcmluZ19pZCkKIHsKIAlpbnQgcjsKIAl1NjQgbXFkX2dwdV9hZGRyOwogCXN0cnVj dCBjaWtfbXFkICptcWQ7CiAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmFkZXYtPmdmeC5j b21wdXRlX3JpbmdbcmluZ19pZF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwpp bmRleCA4Y2MwZDA2Li41NmUxYmFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8w LmMKQEAgLTUwMjQsOTkgKzUwMjQsMzggQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfZW5hYmxlX2Rv b3JiZWxsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAl0bXAgPSBS UkVHMzIobW1DUF9QUV9TVEFUVVMpOwogCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9QUV9T VEFUVVMsIERPT1JCRUxMX0VOQUJMRSwgMSk7CiAJV1JFRzMyKG1tQ1BfUFFfU1RBVFVTLCB0bXAp OwogCiAJYWRldi0+Z2Z4LmRvb3JiZWxsX2VuYWJsZWQgPSB0cnVlOwogfQogCiBpbnQgZ2Z4X3Y4 XzBfbXFkX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IHZpX21xZCAq bXFkKQogewogCXVpbnQzMl90IHRtcDsKKwl1aW50MzJfdCBtcWRfcmVnOworCXVpbnQzMl90ICpt cWRfZGF0YTsKKworCS8qIEhRRCByZWdpc3RlcnMgZXh0ZW5kIGZyb20gbW1DUF9NUURfQkFTRV9B RERSIHRvIG1tQ1BfSFFEX0VSUk9SICovCisJbXFkX2RhdGEgPSAmbXFkLT5jcF9tcWRfYmFzZV9h ZGRyX2xvOwogCiAJLyogZGlzYWJsZSB3cHRyIHBvbGxpbmcgKi8KIAl0bXAgPSBSUkVHMzIobW1D UF9QUV9XUFRSX1BPTExfQ05UTCk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX1BRX1dQ VFJfUE9MTF9DTlRMLCBFTiwgMCk7CiAJV1JFRzMyKG1tQ1BfUFFfV1BUUl9QT0xMX0NOVEwsIHRt cCk7CiAKLQlXUkVHMzIobW1DUF9IUURfRU9QX0JBU0VfQUREUiwgbXFkLT5jcF9ocWRfZW9wX2Jh c2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VPUF9CQVNFX0FERFJfSEksIG1xZC0+Y3Bf aHFkX2VvcF9iYXNlX2FkZHJfaGkpOwotCi0JLyogc2V0IHRoZSBFT1Agc2l6ZSwgcmVnaXN0ZXIg dmFsdWUgaXMgMl4oRU9QX1NJWkUrMSkgZHdvcmRzICovCi0JV1JFRzMyKG1tQ1BfSFFEX0VPUF9D T05UUk9MLCBtcWQtPmNwX2hxZF9lb3BfY29udHJvbCk7Ci0KLQkvKiBlbmFibGUgZG9vcmJlbGw/ ICovCi0JV1JFRzMyKG1tQ1BfSFFEX1BRX0RPT1JCRUxMX0NPTlRST0wsIG1xZC0+Y3BfaHFkX3Bx X2Rvb3JiZWxsX2NvbnRyb2wpOwotCi0JLyogc2V0IHBxIHJlYWQvd3JpdGUgcG9pbnRlcnMgKi8K LQlXUkVHMzIobW1DUF9IUURfREVRVUVVRV9SRVFVRVNULCBtcWQtPmNwX2hxZF9kZXF1ZXVlX3Jl cXVlc3QpOwotCVdSRUczMihtbUNQX0hRRF9QUV9SUFRSLCBtcWQtPmNwX2hxZF9wcV9ycHRyKTsK LQlXUkVHMzIobW1DUF9IUURfUFFfV1BUUiwgbXFkLT5jcF9ocWRfcHFfd3B0cik7Ci0KLQkvKiBz ZXQgdGhlIHBvaW50ZXIgdG8gdGhlIE1RRCAqLwotCVdSRUczMihtbUNQX01RRF9CQVNFX0FERFIs IG1xZC0+Y3BfbXFkX2Jhc2VfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfTVFEX0JBU0VfQUREUl9I SSwgbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2hpKTsKLQotCS8qIHNldCBNUUQgdm1pZCB0byAwICov Ci0JV1JFRzMyKG1tQ1BfTVFEX0NPTlRST0wsIG1xZC0+Y3BfbXFkX2NvbnRyb2wpOwotCi0JLyog c2V0IHRoZSBwb2ludGVyIHRvIHRoZSBIUUQsIHRoaXMgaXMgc2ltaWxhciBDUF9SQjBfQkFTRS9f SEkgKi8KLQlXUkVHMzIobW1DUF9IUURfUFFfQkFTRSwgbXFkLT5jcF9ocWRfcHFfYmFzZV9sbyk7 Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX0JBU0VfSEksIG1xZC0+Y3BfaHFkX3BxX2Jhc2VfaGkpOwot Ci0JLyogc2V0IHVwIHRoZSBIUUQsIHRoaXMgaXMgc2ltaWxhciB0byBDUF9SQjBfQ05UTCAqLwot CVdSRUczMihtbUNQX0hRRF9QUV9DT05UUk9MLCBtcWQtPmNwX2hxZF9wcV9jb250cm9sKTsKLQot CS8qIHNldCB0aGUgd2IgYWRkcmVzcyB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBub3QgKi8KLQlX UkVHMzIobW1DUF9IUURfUFFfUlBUUl9SRVBPUlRfQUREUiwKLQkJCQltcWQtPmNwX2hxZF9wcV9y cHRyX3JlcG9ydF9hZGRyX2xvKTsKLQlXUkVHMzIobW1DUF9IUURfUFFfUlBUUl9SRVBPUlRfQURE Ul9ISSwKLQkJCQltcWQtPmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2hpKTsKLQotCS8qIG9u bHkgdXNlZCBpZiBDUF9QUV9XUFRSX1BPTExfQ05UTC5DUF9QUV9XUFRSX1BPTExfQ05UTF9fRU5f TUFTSz0xICovCi0JV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFJfUE9MTF9BRERSLCBtcWQtPmNwX2hx ZF9wcV93cHRyX3BvbGxfYWRkcl9sbyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFJfUE9MTF9B RERSX0hJLCBtcWQtPmNwX2hxZF9wcV93cHRyX3BvbGxfYWRkcl9oaSk7Ci0KLQkvKiBlbmFibGUg dGhlIGRvb3JiZWxsIGlmIHJlcXVlc3RlZCAqLwotCVdSRUczMihtbUNQX0hRRF9QUV9ET09SQkVM TF9DT05UUk9MLCBtcWQtPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sKTsKKwkvKiBwcm9ncmFt IGFsbCBIUUQgcmVnaXN0ZXJzICovCisJZm9yIChtcWRfcmVnID0gbW1DUF9IUURfVk1JRDsgbXFk X3JlZyA8PSBtbUNQX0hRRF9FUlJPUjsgbXFkX3JlZysrKQorCQlXUkVHMzIobXFkX3JlZywgbXFk X2RhdGFbbXFkX3JlZyAtIG1tQ1BfTVFEX0JBU0VfQUREUl0pOwogCi0JLyogcmVzZXQgcmVhZCBh bmQgd3JpdGUgcG9pbnRlcnMsIHNpbWlsYXIgdG8gQ1BfUkIwX1dQVFIvX1JQVFIgKi8KLQlXUkVH MzIobW1DUF9IUURfUFFfV1BUUiwgbXFkLT5jcF9ocWRfcHFfd3B0cik7Ci0JV1JFRzMyKG1tQ1Bf SFFEX0VPUF9SUFRSLCBtcWQtPmNwX2hxZF9lb3BfcnB0cik7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VP UF9XUFRSLCBtcWQtPmNwX2hxZF9lb3Bfd3B0cik7Ci0KLQkvKiBzZXQgdGhlIEhRRCBwcmlvcml0 eSAqLwotCVdSRUczMihtbUNQX0hRRF9QSVBFX1BSSU9SSVRZLCBtcWQtPmNwX2hxZF9waXBlX3By aW9yaXR5KTsKLQlXUkVHMzIobW1DUF9IUURfUVVFVUVfUFJJT1JJVFksIG1xZC0+Y3BfaHFkX3F1 ZXVlX3ByaW9yaXR5KTsKLQlXUkVHMzIobW1DUF9IUURfUVVBTlRVTSwgbXFkLT5jcF9ocWRfcXVh bnR1bSk7Ci0KLQkvKiBzZXQgY3dzciBzYXZlIGFyZWEgKi8KLQlXUkVHMzIobW1DUF9IUURfQ1RY X1NBVkVfQkFTRV9BRERSX0xPLCBtcWQtPmNwX2hxZF9jdHhfc2F2ZV9iYXNlX2FkZHJfbG8pOwot CVdSRUczMihtbUNQX0hRRF9DVFhfU0FWRV9CQVNFX0FERFJfSEksIG1xZC0+Y3BfaHFkX2N0eF9z YXZlX2Jhc2VfYWRkcl9oaSk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0NUWF9TQVZFX0NPTlRST0wsIG1x ZC0+Y3BfaHFkX2N0eF9zYXZlX2NvbnRyb2wpOwotCVdSRUczMihtbUNQX0hRRF9DTlRMX1NUQUNL X09GRlNFVCwgbXFkLT5jcF9ocWRfY250bF9zdGFja19vZmZzZXQpOwotCVdSRUczMihtbUNQX0hR RF9DTlRMX1NUQUNLX1NJWkUsIG1xZC0+Y3BfaHFkX2NudGxfc3RhY2tfc2l6ZSk7Ci0JV1JFRzMy KG1tQ1BfSFFEX1dHX1NUQVRFX09GRlNFVCwgbXFkLT5jcF9ocWRfd2dfc3RhdGVfb2Zmc2V0KTsK LQlXUkVHMzIobW1DUF9IUURfQ1RYX1NBVkVfU0laRSwgbXFkLT5jcF9ocWRfY3R4X3NhdmVfc2l6 ZSk7Ci0KLQlXUkVHMzIobW1DUF9IUURfSUJfQ09OVFJPTCwgbXFkLT5jcF9ocWRfaWJfY29udHJv bCk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VPUF9FVkVOVFMsIG1xZC0+Y3BfaHFkX2VvcF9kb25lX2V2 ZW50cyk7Ci0JV1JFRzMyKG1tQ1BfSFFEX0VSUk9SLCBtcWQtPmNwX2hxZF9lcnJvcik7Ci0JV1JF RzMyKG1tQ1BfSFFEX0VPUF9XUFRSX01FTSwgbXFkLT5jcF9ocWRfZW9wX3dwdHJfbWVtKTsKLQlX UkVHMzIobW1DUF9IUURfRU9QX0RPTkVTLCBtcWQtPmNwX2hxZF9lb3BfZG9uZXMpOwotCi0JLyog c2V0IHRoZSB2bWlkIGZvciB0aGUgcXVldWUgKi8KLQlXUkVHMzIobW1DUF9IUURfVk1JRCwgbXFk LT5jcF9ocWRfdm1pZCk7Ci0KLQlXUkVHMzIobW1DUF9IUURfUEVSU0lTVEVOVF9TVEFURSwgbXFk LT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSk7Ci0KLQkvKiBhY3RpdmF0ZSB0aGUgcXVldWUgKi8K LQlXUkVHMzIobW1DUF9IUURfQUNUSVZFLCBtcWQtPmNwX2hxZF9hY3RpdmUpOworCS8qIGFjdGl2 YXRlIHRoZSBIUUQgKi8KKwlmb3IgKG1xZF9yZWcgPSBtbUNQX01RRF9CQVNFX0FERFI7IG1xZF9y ZWcgPD0gbW1DUF9IUURfQUNUSVZFOyBtcWRfcmVnKyspCisJCVdSRUczMihtcWRfcmVnLCBtcWRf ZGF0YVttcWRfcmVnIC0gbW1DUF9NUURfQkFTRV9BRERSXSk7CiAKIAlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGludCBnZnhfdjhfMF9raXFfaW5pdF9xdWV1ZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcpCiB7CiAJaW50IHIgPSAwOwogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+ YWRldjsKIAlzdHJ1Y3QgdmlfbXFkICptcWQgPSByaW5nLT5tcWRfcHRyOwogCWludCBtcWRfaWR4 ID0gQU1ER1BVX01BWF9DT01QVVRFX1JJTkdTOwotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=