From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 01/17] drm/amdgpu: clarify MEC_HPD_SIZE is specific to a gfx generation Date: Mon, 17 Apr 2017 18:47:57 -0400 Message-ID: <20170417224813.3173-2-andresx7@gmail.com> References: <20170417224813.3173-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170417224813.3173-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 UmVuYW1lIE1FQ19IUERfU0laRSB0byBHRlhOX01FQ19IUERfU0laRSB0byBjbGFyaWZ5IGl0IGlz IHNwZWNpZmljIHRvIGEKZ2Z4IGdlbmVyYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXMgUm9k cmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y3XzAuYyB8IDExICsrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjhfMC5jIHwgMTUgKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjlfMC5jIHwgMTcgKysrKysrKystLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwg MjAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dmeF92N18wLmMKaW5kZXggYzkzMGJiOC4uM2I5ODE2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjdfMC5jCkBAIC0zMiw0MCArMzIsNDEgQEAKICNpbmNsdWRlICJjbGVhcnN0YXRl X2NpLmgiCiAKICNpbmNsdWRlICJkY2UvZGNlXzhfMF9kLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV84 XzBfc2hfbWFzay5oIgogCiAjaW5jbHVkZSAiYmlmL2JpZl80XzFfZC5oIgogI2luY2x1ZGUgImJp Zi9iaWZfNF8xX3NoX21hc2suaCIKIAogI2luY2x1ZGUgImdjYS9nZnhfN18wX2QuaCIKICNpbmNs dWRlICJnY2EvZ2Z4XzdfMl9lbnVtLmgiCiAjaW5jbHVkZSAiZ2NhL2dmeF83XzJfc2hfbWFzay5o IgogCiAjaW5jbHVkZSAiZ21jL2dtY183XzBfZC5oIgogI2luY2x1ZGUgImdtYy9nbWNfN18wX3No X21hc2suaCIKIAogI2luY2x1ZGUgIm9zcy9vc3NfMl8wX2QuaCIKICNpbmNsdWRlICJvc3Mvb3Nz XzJfMF9zaF9tYXNrLmgiCiAKICNkZWZpbmUgR0ZYN19OVU1fR0ZYX1JJTkdTICAgICAxCiAjZGVm aW5lIEdGWDdfTlVNX0NPTVBVVEVfUklOR1MgOAorI2RlZmluZSBHRlg3X01FQ19IUERfU0laRSAg ICAgIDIwNDgKIAogc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0X3JpbmdfZnVuY3Moc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpOwogc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0X2lycV9mdW5jcyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBzdGF0aWMgdm9pZCBnZnhfdjdfMF9zZXRfZ2Rz X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogCiBNT0RVTEVfRklSTVdBUkUoInJh ZGVvbi9ib25haXJlX3BmcC5iaW4iKTsKIE1PRFVMRV9GSVJNV0FSRSgicmFkZW9uL2JvbmFpcmVf bWUuYmluIik7CiBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9ib25haXJlX2NlLmJpbiIpOwogTU9E VUxFX0ZJUk1XQVJFKCJyYWRlb24vYm9uYWlyZV9ybGMuYmluIik7CiBNT0RVTEVfRklSTVdBUkUo InJhZGVvbi9ib25haXJlX21lYy5iaW4iKTsKIAogTU9EVUxFX0ZJUk1XQVJFKCJyYWRlb24vaGF3 YWlpX3BmcC5iaW4iKTsKIE1PRFVMRV9GSVJNV0FSRSgicmFkZW9uL2hhd2FpaV9tZS5iaW4iKTsK IE1PRFVMRV9GSVJNV0FSRSgicmFkZW9uL2hhd2FpaV9jZS5iaW4iKTsKIE1PRFVMRV9GSVJNV0FS RSgicmFkZW9uL2hhd2FpaV9ybGMuYmluIik7CiBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9oYXdh aWlfbWVjLmJpbiIpOwogCiBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9rYXZlcmlfcGZwLmJpbiIp OwogTU9EVUxFX0ZJUk1XQVJFKCJyYWRlb24va2F2ZXJpX21lLmJpbiIpOwogTU9EVUxFX0ZJUk1X QVJFKCJyYWRlb24va2F2ZXJpX2NlLmJpbiIpOwpAQCAtMjgwNCw5MCArMjgwNSw4OCBAQCBzdGF0 aWMgdm9pZCBnZnhfdjdfMF9jcF9jb21wdXRlX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiAJCX0KIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92N18wX21lY19maW5pKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogewogCWludCByOwogCiAJaWYgKGFkZXYtPmdmeC5tZWMuaHBk X2VvcF9vYmopIHsKIAkJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPmdmeC5tZWMuaHBkX2Vv cF9vYmosIGZhbHNlKTsKIAkJaWYgKHVubGlrZWx5KHIgIT0gMCkpCiAJCQlkZXZfd2FybihhZGV2 LT5kZXYsICIoJWQpIHJlc2VydmUgSFBEIEVPUCBibyBmYWlsZWRcbiIsIHIpOwogCQlhbWRncHVf Ym9fdW5waW4oYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CiAJCWFtZGdwdV9ib191bnJlc2Vy dmUoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CiAKIAkJYW1kZ3B1X2JvX3VucmVmKCZhZGV2 LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiA9IE5V TEw7CiAJfQogfQogCi0jZGVmaW5lIE1FQ19IUERfU0laRSAyMDQ4Ci0KIHN0YXRpYyBpbnQgZ2Z4 X3Y3XzBfbWVjX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHI7CiAJ dTMyICpocGQ7CiAKIAkvKgogCSAqIEtWOiAgICAyIE1FQywgNCBQaXBlcy9NRUMsIDggUXVldWVz L1BpcGUgLSA2NCBRdWV1ZXMgdG90YWwKIAkgKiBDSS9LQjogMSBNRUMsIDQgUGlwZXMvTUVDLCA4 IFF1ZXVlcy9QaXBlIC0gMzIgUXVldWVzIHRvdGFsCiAJICogTm9uZXRoZWxlc3MsIHdlIGFzc2ln biBvbmx5IDEgcGlwZSBiZWNhdXNlIGFsbCBvdGhlciBwaXBlcyB3aWxsCiAJICogYmUgaGFuZGxl ZCBieSBLRkQKIAkgKi8KIAlhZGV2LT5nZngubWVjLm51bV9tZWMgPSAxOwogCWFkZXYtPmdmeC5t ZWMubnVtX3BpcGUgPSAxOwogCWFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlID0gYWRldi0+Z2Z4Lm1l Yy5udW1fbWVjICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSAqIDg7CiAKIAlpZiAoYWRldi0+Z2Z4 Lm1lYy5ocGRfZW9wX29iaiA9PSBOVUxMKSB7CiAJCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYs Ci0JCQkJICAgICBhZGV2LT5nZngubWVjLm51bV9tZWMgKmFkZXYtPmdmeC5tZWMubnVtX3BpcGUg KiBNRUNfSFBEX1NJWkUgKiAyLAorCQkJCSAgICAgYWRldi0+Z2Z4Lm1lYy5udW1fbWVjICogYWRl di0+Z2Z4Lm1lYy5udW1fcGlwZSAqIEdGWDdfTUVDX0hQRF9TSVpFICogMiwKIAkJCQkgICAgIFBB R0VfU0laRSwgdHJ1ZSwKIAkJCQkgICAgIEFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwg TlVMTCwKIAkJCQkgICAgICZhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJaWYgKHIpIHsK IAkJCWRldl93YXJuKGFkZXYtPmRldiwgIiglZCkgY3JlYXRlIEhEUCBFT1AgYm8gZmFpbGVkXG4i LCByKTsKIAkJCXJldHVybiByOwogCQl9CiAJfQogCiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFk ZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmosIGZhbHNlKTsKIAlpZiAodW5saWtlbHkociAhPSAwKSkg ewogCQlnZnhfdjdfMF9tZWNfZmluaShhZGV2KTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRn cHVfYm9fcGluKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmosIEFNREdQVV9HRU1fRE9NQUlOX0dU VCwKIAkJCSAgJmFkZXYtPmdmeC5tZWMuaHBkX2VvcF9ncHVfYWRkcik7CiAJaWYgKHIpIHsKIAkJ ZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSBwaW4gSERQIEVPUCBibyBmYWlsZWRcbiIsIHIpOwog CQlnZnhfdjdfMF9tZWNfZmluaShhZGV2KTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRncHVf Ym9fa21hcChhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqLCAodm9pZCAqKikmaHBkKTsKIAlpZiAo cikgewogCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIG1hcCBIRFAgRU9QIGJvIGZhaWxlZFxu Iiwgcik7CiAJCWdmeF92N18wX21lY19maW5pKGFkZXYpOwogCQlyZXR1cm4gcjsKIAl9CiAKIAkv KiBjbGVhciBtZW1vcnkuICBOb3Qgc3VyZSBpZiB0aGlzIGlzIHJlcXVpcmVkIG9yIG5vdCAqLwot CW1lbXNldChocGQsIDAsIGFkZXYtPmdmeC5tZWMubnVtX21lYyAqYWRldi0+Z2Z4Lm1lYy5udW1f cGlwZSAqIE1FQ19IUERfU0laRSAqIDIpOworCW1lbXNldChocGQsIDAsIGFkZXYtPmdmeC5tZWMu bnVtX21lYyAqIGFkZXYtPmdmeC5tZWMubnVtX3BpcGUgKiBHRlg3X01FQ19IUERfU0laRSAqIDIp OwogCiAJYW1kZ3B1X2JvX2t1bm1hcChhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAlhbWRn cHVfYm9fdW5yZXNlcnZlKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwogCiAJcmV0dXJuIDA7 CiB9CiAKIHN0cnVjdCBocWRfcmVnaXN0ZXJzCiB7CiAJdTMyIGNwX21xZF9iYXNlX2FkZHI7CiAJ dTMyIGNwX21xZF9iYXNlX2FkZHJfaGk7CiAJdTMyIGNwX2hxZF9hY3RpdmU7CiAJdTMyIGNwX2hx ZF92bWlkOwogCXUzMiBjcF9ocWRfcGVyc2lzdGVudF9zdGF0ZTsKIAl1MzIgY3BfaHFkX3BpcGVf cHJpb3JpdHk7CiAJdTMyIGNwX2hxZF9xdWV1ZV9wcmlvcml0eTsKIAl1MzIgY3BfaHFkX3F1YW50 dW07CiAJdTMyIGNwX2hxZF9wcV9iYXNlOwogCXUzMiBjcF9ocWRfcHFfYmFzZV9oaTsKIAl1MzIg Y3BfaHFkX3BxX3JwdHI7CkBAIC0yOTYxLDU1ICsyOTYwLDU1IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y3 XzBfY3BfY29tcHV0ZV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJYm9vbCB1 c2VfZG9vcmJlbGwgPSB0cnVlOwogCXU2NCBocWRfZ3B1X2FkZHI7CiAJdTY0IG1xZF9ncHVfYWRk cjsKIAl1NjQgZW9wX2dwdV9hZGRyOwogCXU2NCB3Yl9ncHVfYWRkcjsKIAl1MzIgKmJ1ZjsKIAlz dHJ1Y3QgYm9uYWlyZV9tcWQgKm1xZDsKIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmc7CiAKIAkv KiBmaXggdXAgY2hpY2tlbiBiaXRzICovCiAJdG1wID0gUlJFRzMyKG1tQ1BfQ1BGX0RFQlVHKTsK IAl0bXAgfD0gKDEgPDwgMjMpOwogCVdSRUczMihtbUNQX0NQRl9ERUJVRywgdG1wKTsKIAogCS8q IGluaXQgdGhlIHBpcGVzICovCiAJbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CiAJZm9y IChpID0gMDsgaSA8IChhZGV2LT5nZngubWVjLm51bV9waXBlICogYWRldi0+Z2Z4Lm1lYy5udW1f bWVjKTsgaSsrKSB7CiAJCWludCBtZSA9IChpIDwgNCkgPyAxIDogMjsKIAkJaW50IHBpcGUgPSAo aSA8IDQpID8gaSA6IChpIC0gNCk7CiAKLQkJZW9wX2dwdV9hZGRyID0gYWRldi0+Z2Z4Lm1lYy5o cGRfZW9wX2dwdV9hZGRyICsgKGkgKiBNRUNfSFBEX1NJWkUgKiAyKTsKKwkJZW9wX2dwdV9hZGRy ID0gYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX2dwdV9hZGRyICsgKGkgKiBHRlg3X01FQ19IUERfU0la RSAqIDIpOwogCiAJCWNpa19zcmJtX3NlbGVjdChhZGV2LCBtZSwgcGlwZSwgMCwgMCk7CiAKIAkJ Lyogd3JpdGUgdGhlIEVPUCBhZGRyICovCiAJCVdSRUczMihtbUNQX0hQRF9FT1BfQkFTRV9BRERS LCBlb3BfZ3B1X2FkZHIgPj4gOCk7CiAJCVdSRUczMihtbUNQX0hQRF9FT1BfQkFTRV9BRERSX0hJ LCB1cHBlcl8zMl9iaXRzKGVvcF9ncHVfYWRkcikgPj4gOCk7CiAKIAkJLyogc2V0IHRoZSBWTUlE IGFzc2lnbmVkICovCiAJCVdSRUczMihtbUNQX0hQRF9FT1BfVk1JRCwgMCk7CiAKIAkJLyogc2V0 IHRoZSBFT1Agc2l6ZSwgcmVnaXN0ZXIgdmFsdWUgaXMgMl4oRU9QX1NJWkUrMSkgZHdvcmRzICov CiAJCXRtcCA9IFJSRUczMihtbUNQX0hQRF9FT1BfQ09OVFJPTCk7CiAJCXRtcCAmPSB+Q1BfSFBE X0VPUF9DT05UUk9MX19FT1BfU0laRV9NQVNLOwotCQl0bXAgfD0gb3JkZXJfYmFzZV8yKE1FQ19I UERfU0laRSAvIDgpOworCQl0bXAgfD0gb3JkZXJfYmFzZV8yKEdGWDdfTUVDX0hQRF9TSVpFIC8g OCk7CiAJCVdSRUczMihtbUNQX0hQRF9FT1BfQ09OVFJPTCwgdG1wKTsKIAl9CiAJY2lrX3NyYm1f c2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwogCW11dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRl eCk7CiAKIAkvKiBpbml0IHRoZSBxdWV1ZXMuICBKdXN0IHR3byBmb3Igbm93LiAqLwogCWZvciAo aSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7IGkrKykgewogCQlyaW5nID0g JmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbaV07CiAKIAkJaWYgKHJpbmctPm1xZF9vYmogPT0gTlVM TCkgewogCQkJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwKIAkJCQkJICAgICBzaXplb2Yoc3Ry dWN0IGJvbmFpcmVfbXFkKSwKIAkJCQkJICAgICBQQUdFX1NJWkUsIHRydWUsCiAJCQkJCSAgICAg QU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLCBOVUxMLCBOVUxMLAogCQkJCQkgICAgICZyaW5nLT5t cWRfb2JqKTsKIAkJCWlmIChyKSB7CiAJCQkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSBjcmVh dGUgTVFEIGJvIGZhaWxlZFxuIiwgcik7CiAJCQkJcmV0dXJuIHI7CiAJCQl9CiAJCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCmluZGV4IGRmNTBlMzQuLmZjOTRjM2EgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwpAQCAtMzYsNDAgKzM2LDQxIEBACiAjaW5j bHVkZSAiZ21jL2dtY184XzJfc2hfbWFzay5oIgogCiAjaW5jbHVkZSAib3NzL29zc18zXzBfZC5o IgogI2luY2x1ZGUgIm9zcy9vc3NfM18wX3NoX21hc2suaCIKIAogI2luY2x1ZGUgImJpZi9iaWZf NV8wX2QuaCIKICNpbmNsdWRlICJiaWYvYmlmXzVfMF9zaF9tYXNrLmgiCiAKICNpbmNsdWRlICJn Y2EvZ2Z4XzhfMF9kLmgiCiAjaW5jbHVkZSAiZ2NhL2dmeF84XzBfZW51bS5oIgogI2luY2x1ZGUg ImdjYS9nZnhfOF8wX3NoX21hc2suaCIKICNpbmNsdWRlICJnY2EvZ2Z4XzhfMF9lbnVtLmgiCiAK ICNpbmNsdWRlICJkY2UvZGNlXzEwXzBfZC5oIgogI2luY2x1ZGUgImRjZS9kY2VfMTBfMF9zaF9t YXNrLmgiCiAKICNpbmNsdWRlICJzbXUvc211XzdfMV8zX2QuaCIKIAogI2RlZmluZSBHRlg4X05V TV9HRlhfUklOR1MgICAgIDEKICNkZWZpbmUgR0ZYOF9OVU1fQ09NUFVURV9SSU5HUyA4CisjZGVm aW5lIEdGWDhfTUVDX0hQRF9TSVpFIDIwNDgKIAogI2RlZmluZSBUT1BBWl9HQl9BRERSX0NPTkZJ R19HT0xERU4gMHgyMjAxMDAwMQogI2RlZmluZSBDQVJSSVpPX0dCX0FERFJfQ09ORklHX0dPTERF TiAweDIyMDEwMDAxCiAjZGVmaW5lIFBPTEFSSVMxMV9HQl9BRERSX0NPTkZJR19HT0xERU4gMHgy MjAxMTAwMgogI2RlZmluZSBUT05HQV9HQl9BRERSX0NPTkZJR19HT0xERU4gMHgyMjAxMTAwMwog CiAjZGVmaW5lIEFSUkFZX01PREUoeCkJCQkJCSgoeCkgPDwgR0JfVElMRV9NT0RFMF9fQVJSQVlf TU9ERV9fU0hJRlQpCiAjZGVmaW5lIFBJUEVfQ09ORklHKHgpCQkJCQkoKHgpIDw8IEdCX1RJTEVf TU9ERTBfX1BJUEVfQ09ORklHX19TSElGVCkKICNkZWZpbmUgVElMRV9TUExJVCh4KQkJCQkJKCh4 KSA8PCBHQl9USUxFX01PREUwX19USUxFX1NQTElUX19TSElGVCkKICNkZWZpbmUgTUlDUk9fVElM RV9NT0RFX05FVyh4KQkJCQkoKHgpIDw8IEdCX1RJTEVfTU9ERTBfX01JQ1JPX1RJTEVfTU9ERV9O RVdfX1NISUZUKQogI2RlZmluZSBTQU1QTEVfU1BMSVQoeCkJCQkJCSgoeCkgPDwgR0JfVElMRV9N T0RFMF9fU0FNUExFX1NQTElUX19TSElGVCkKICNkZWZpbmUgQkFOS19XSURUSCh4KQkJCQkJKCh4 KSA8PCBHQl9NQUNST1RJTEVfTU9ERTBfX0JBTktfV0lEVEhfX1NISUZUKQogI2RlZmluZSBCQU5L X0hFSUdIVCh4KQkJCQkJKCh4KSA8PCBHQl9NQUNST1RJTEVfTU9ERTBfX0JBTktfSEVJR0hUX19T SElGVCkKICNkZWZpbmUgTUFDUk9fVElMRV9BU1BFQ1QoeCkJCQkJKCh4KSA8PCBHQl9NQUNST1RJ TEVfTU9ERTBfX01BQ1JPX1RJTEVfQVNQRUNUX19TSElGVCkKICNkZWZpbmUgTlVNX0JBTktTKHgp CQkJCQkoKHgpIDw8IEdCX01BQ1JPVElMRV9NT0RFMF9fTlVNX0JBTktTX19TSElGVCkKIAogI2Rl ZmluZSBSTENfQ0dUVF9NR0NHX09WRVJSSURFX19DUEZfTUFTSyAgICAgICAgICAgIDB4MDAwMDAw MDFMCiAjZGVmaW5lIFJMQ19DR1RUX01HQ0dfT1ZFUlJJREVfX1JMQ19NQVNLICAgICAgICAgICAg MHgwMDAwMDAwMkwKICNkZWZpbmUgUkxDX0NHVFRfTUdDR19PVkVSUklERV9fTUdDR19NQVNLICAg ICAgICAgICAweDAwMDAwMDA0TAogI2RlZmluZSBSTENfQ0dUVF9NR0NHX09WRVJSSURFX19DR0NH X01BU0sgICAgICAgICAgIDB4MDAwMDAwMDhMCkBAIC0xMzk2LDExNiArMTM5NywxMTQgQEAgc3Rh dGljIGludCBnZnhfdjhfMF9raXFfaW5pdF9yaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQlyaW5nLT5waXBlID0gMTsKIAl9CiAKIAlyaW5nLT5xdWV1ZSA9IDA7CiAJcmluZy0+ZW9w X2dwdV9hZGRyID0ga2lxLT5lb3BfZ3B1X2FkZHI7CiAJc3ByaW50ZihyaW5nLT5uYW1lLCAia2lx ICVkLiVkLiVkIiwgcmluZy0+bWUsIHJpbmctPnBpcGUsIHJpbmctPnF1ZXVlKTsKIAlyID0gYW1k Z3B1X3JpbmdfaW5pdChhZGV2LCByaW5nLCAxMDI0LAogCQkJICAgICBpcnEsIEFNREdQVV9DUF9L SVFfSVJRX0RSSVZFUjApOwogCWlmIChyKQogCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIGZh aWxlZCB0byBpbml0IGtpcSByaW5nXG4iLCByKTsKIAogCXJldHVybiByOwogfQogc3RhdGljIHZv aWQgZ2Z4X3Y4XzBfa2lxX2ZyZWVfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCiAJCQkJ ICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICppcnEpCiB7CiAJYW1kZ3B1X3diX2ZyZWUocmluZy0+ YWRldiwgcmluZy0+YWRldi0+dmlydC5yZWdfdmFsX29mZnMpOwogCWFtZGdwdV9yaW5nX2Zpbmko cmluZyk7CiB9CiAKLSNkZWZpbmUgTUVDX0hQRF9TSVpFIDIwNDgKLQogc3RhdGljIGludCBnZnhf djhfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlpbnQgcjsKIAl1 MzIgKmhwZDsKIAogCS8qCiAJICogd2UgYXNzaWduIG9ubHkgMSBwaXBlIGJlY2F1c2UgYWxsIG90 aGVyIHBpcGVzIHdpbGwKIAkgKiBiZSBoYW5kbGVkIGJ5IEtGRAogCSAqLwogCWFkZXYtPmdmeC5t ZWMubnVtX21lYyA9IDE7CiAJYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZSA9IDE7CiAJYWRldi0+Z2Z4 Lm1lYy5udW1fcXVldWUgPSBhZGV2LT5nZngubWVjLm51bV9tZWMgKiBhZGV2LT5nZngubWVjLm51 bV9waXBlICogODsKIAogCWlmIChhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqID09IE5VTEwpIHsK IAkJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwKLQkJCQkgICAgIGFkZXYtPmdmeC5tZWMubnVt X3F1ZXVlICogTUVDX0hQRF9TSVpFLAorCQkJCSAgICAgYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWUg KiBHRlg4X01FQ19IUERfU0laRSwKIAkJCQkgICAgIFBBR0VfU0laRSwgdHJ1ZSwKIAkJCQkgICAg IEFNREdQVV9HRU1fRE9NQUlOX0dUVCwgMCwgTlVMTCwgTlVMTCwKIAkJCQkgICAgICZhZGV2LT5n ZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJaWYgKHIpIHsKIAkJCWRldl93YXJuKGFkZXYtPmRldiwg IiglZCkgY3JlYXRlIEhEUCBFT1AgYm8gZmFpbGVkXG4iLCByKTsKIAkJCXJldHVybiByOwogCQl9 CiAJfQogCiAJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmos IGZhbHNlKTsKIAlpZiAodW5saWtlbHkociAhPSAwKSkgewogCQlnZnhfdjhfMF9tZWNfZmluaShh ZGV2KTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRncHVfYm9fcGluKGFkZXYtPmdmeC5tZWMu aHBkX2VvcF9vYmosIEFNREdQVV9HRU1fRE9NQUlOX0dUVCwKIAkJCSAgJmFkZXYtPmdmeC5tZWMu aHBkX2VvcF9ncHVfYWRkcik7CiAJaWYgKHIpIHsKIAkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVk KSBwaW4gSERQIEVPUCBibyBmYWlsZWRcbiIsIHIpOwogCQlnZnhfdjhfMF9tZWNfZmluaShhZGV2 KTsKIAkJcmV0dXJuIHI7CiAJfQogCXIgPSBhbWRncHVfYm9fa21hcChhZGV2LT5nZngubWVjLmhw ZF9lb3Bfb2JqLCAodm9pZCAqKikmaHBkKTsKIAlpZiAocikgewogCQlkZXZfd2FybihhZGV2LT5k ZXYsICIoJWQpIG1hcCBIRFAgRU9QIGJvIGZhaWxlZFxuIiwgcik7CiAJCWdmeF92OF8wX21lY19m aW5pKGFkZXYpOwogCQlyZXR1cm4gcjsKIAl9CiAKLQltZW1zZXQoaHBkLCAwLCBhZGV2LT5nZngu bWVjLm51bV9xdWV1ZSAqIE1FQ19IUERfU0laRSk7CisJbWVtc2V0KGhwZCwgMCwgYWRldi0+Z2Z4 Lm1lYy5udW1fcXVldWUgKiBHRlg4X01FQ19IUERfU0laRSk7CiAKIAlhbWRncHVfYm9fa3VubWFw KGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9vYmopOwogCWFtZGdwdV9ib191bnJlc2VydmUoYWRldi0+ Z2Z4Lm1lYy5ocGRfZW9wX29iaik7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgZ2Z4 X3Y4XzBfa2lxX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IGFt ZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwogCiAJYW1kZ3B1X2JvX2ZyZWVfa2VybmVs KCZraXEtPmVvcF9vYmosICZraXEtPmVvcF9ncHVfYWRkciwgTlVMTCk7CiB9CiAKIHN0YXRpYyBp bnQgZ2Z4X3Y4XzBfa2lxX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50 IHI7CiAJdTMyICpocGQ7CiAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lx OwogCi0JciA9IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsIE1FQ19IUERfU0laRSwgUEFH RV9TSVpFLAorCXIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LCBHRlg4X01FQ19IUERf U0laRSwgUEFHRV9TSVpFLAogCQkJCSAgICBBTURHUFVfR0VNX0RPTUFJTl9HVFQsICZraXEtPmVv cF9vYmosCiAJCQkJICAgICZraXEtPmVvcF9ncHVfYWRkciwgKHZvaWQgKiopJmhwZCk7CiAJaWYg KHIpIHsKIAkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBLSVEgYm8gKCVk KS5cbiIsIHIpOwogCQlyZXR1cm4gcjsKIAl9CiAKLQltZW1zZXQoaHBkLCAwLCBNRUNfSFBEX1NJ WkUpOworCW1lbXNldChocGQsIDAsIEdGWDhfTUVDX0hQRF9TSVpFKTsKIAogCXIgPSBhbWRncHVf Ym9fcmVzZXJ2ZShraXEtPmVvcF9vYmosIGZhbHNlKTsKIAlpZiAodW5saWtlbHkociAhPSAwKSkK IAkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSByZXNlcnZlIGtpcSBlb3AgYm8gZmFpbGVkXG4i LCByKTsKIAlhbWRncHVfYm9fa3VubWFwKGtpcS0+ZW9wX29iaik7CiAJYW1kZ3B1X2JvX3VucmVz ZXJ2ZShraXEtPmVvcF9vYmopOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCB1MzIg dmdwcl9pbml0X2NvbXB1dGVfc2hhZGVyW10gPQogewogCTB4N2UwMDAyMDksIDB4N2UwMjAyMDgs CiAJMHg3ZTA0MDIwNywgMHg3ZTA2MDIwNiwKIAkweDdlMDgwMjA1LCAweDdlMGEwMjA0LAogCTB4 N2UwYzAyMDMsIDB4N2UwZTAyMDIsCiAJMHg3ZTEwMDIwMSwgMHg3ZTEyMDIwMCwKIAkweDdlMTQw MjA5LCAweDdlMTYwMjA4LAogCTB4N2UxODAyMDcsIDB4N2UxYTAyMDYsCiAJMHg3ZTFjMDIwNSwg MHg3ZTFlMDIwNCwKQEAgLTIxMzgsNDEgKzIxMzcsNDEgQEAgc3RhdGljIGludCBnZnhfdjhfMF9z d19pbml0KHZvaWQgKmhhbmRsZSkKIAkJaWYgKHIpCiAJCQlyZXR1cm4gcjsKIAl9CiAKIAkvKiBz ZXQgdXAgdGhlIGNvbXB1dGUgcXVldWVzICovCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5u dW1fY29tcHV0ZV9yaW5nczsgaSsrKSB7CiAJCXVuc2lnbmVkIGlycV90eXBlOwogCiAJCS8qIG1h eCAzMiBxdWV1ZXMgcGVyIE1FQyAqLwogCQlpZiAoKGkgPj0gMzIpIHx8IChpID49IEFNREdQVV9N QVhfQ09NUFVURV9SSU5HUykpIHsKIAkJCURSTV9FUlJPUigiVG9vIG1hbnkgKCVkKSBjb21wdXRl IHJpbmdzIVxuIiwgaSk7CiAJCQlicmVhazsKIAkJfQogCQlyaW5nID0gJmFkZXYtPmdmeC5jb21w dXRlX3JpbmdbaV07CiAJCXJpbmctPnJpbmdfb2JqID0gTlVMTDsKIAkJcmluZy0+dXNlX2Rvb3Ji ZWxsID0gdHJ1ZTsKIAkJcmluZy0+ZG9vcmJlbGxfaW5kZXggPSBBTURHUFVfRE9PUkJFTExfTUVD X1JJTkcwICsgaTsKIAkJcmluZy0+bWUgPSAxOyAvKiBmaXJzdCBNRUMgKi8KIAkJcmluZy0+cGlw ZSA9IGkgLyA4OwogCQlyaW5nLT5xdWV1ZSA9IGkgJSA4OwotCQlyaW5nLT5lb3BfZ3B1X2FkZHIg PSBhZGV2LT5nZngubWVjLmhwZF9lb3BfZ3B1X2FkZHIgKyAoaSAqIE1FQ19IUERfU0laRSk7CisJ CXJpbmctPmVvcF9ncHVfYWRkciA9IGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9ncHVfYWRkciArIChp ICogR0ZYOF9NRUNfSFBEX1NJWkUpOwogCQlzcHJpbnRmKHJpbmctPm5hbWUsICJjb21wXyVkLiVk LiVkIiwgcmluZy0+bWUsIHJpbmctPnBpcGUsIHJpbmctPnF1ZXVlKTsKIAkJaXJxX3R5cGUgPSBB TURHUFVfQ1BfSVJRX0NPTVBVVEVfTUVDMV9QSVBFMF9FT1AgKyByaW5nLT5waXBlOwogCQkvKiB0 eXBlLTIgcGFja2V0cyBhcmUgZGVwcmVjYXRlZCBvbiBNRUMsIHVzZSB0eXBlLTMgaW5zdGVhZCAq LwogCQlyID0gYW1kZ3B1X3JpbmdfaW5pdChhZGV2LCByaW5nLCAxMDI0LCAmYWRldi0+Z2Z4LmVv cF9pcnEsCiAJCQkJICAgICBpcnFfdHlwZSk7CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7CiAJfQog CiAJciA9IGdmeF92OF8wX2tpcV9pbml0KGFkZXYpOwogCWlmIChyKSB7CiAJCURSTV9FUlJPUigi RmFpbGVkIHRvIGluaXQgS0lRIEJPcyFcbiIpOwogCQlyZXR1cm4gcjsKIAl9CiAKIAlraXEgPSAm YWRldi0+Z2Z4LmtpcTsKIAlyID0gZ2Z4X3Y4XzBfa2lxX2luaXRfcmluZyhhZGV2LCAma2lxLT5y aW5nLCAma2lxLT5pcnEpOwogCWlmIChyKQogCQlyZXR1cm4gcjsKIApAQCAtNDc1OCw0MSArNDc1 Nyw0MSBAQCBzdGF0aWMgaW50IGdmeF92OF8wX21xZF9pbml0KHN0cnVjdCBhbWRncHVfcmluZyAq cmluZykKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7CiAJc3RydWN0 IHZpX21xZCAqbXFkID0gcmluZy0+bXFkX3B0cjsKIAl1aW50NjRfdCBocWRfZ3B1X2FkZHIsIHdi X2dwdV9hZGRyLCBlb3BfYmFzZV9hZGRyOwogCXVpbnQzMl90IHRtcDsKIAogCW1xZC0+aGVhZGVy ID0gMHhDMDMxMDgwMDsKIAltcWQtPmNvbXB1dGVfcGlwZWxpbmVzdGF0X2VuYWJsZSA9IDB4MDAw MDAwMDE7CiAJbXFkLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTAgPSAweGZmZmZmZmZm OwogCW1xZC0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UxID0gMHhmZmZmZmZmZjsKIAlt cWQtPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiA9IDB4ZmZmZmZmZmY7CiAJbXFkLT5j b21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTMgPSAweGZmZmZmZmZmOwogCW1xZC0+Y29tcHV0 ZV9taXNjX3Jlc2VydmVkID0gMHgwMDAwMDAwMzsKIAogCWVvcF9iYXNlX2FkZHIgPSByaW5nLT5l b3BfZ3B1X2FkZHIgPj4gODsKIAltcWQtPmNwX2hxZF9lb3BfYmFzZV9hZGRyX2xvID0gZW9wX2Jh c2VfYWRkcjsKIAltcWQtPmNwX2hxZF9lb3BfYmFzZV9hZGRyX2hpID0gdXBwZXJfMzJfYml0cyhl b3BfYmFzZV9hZGRyKTsKIAogCS8qIHNldCB0aGUgRU9QIHNpemUsIHJlZ2lzdGVyIHZhbHVlIGlz IDJeKEVPUF9TSVpFKzEpIGR3b3JkcyAqLwogCXRtcCA9IFJSRUczMihtbUNQX0hRRF9FT1BfQ09O VFJPTCk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9FT1BfQ09OVFJPTCwgRU9Q X1NJWkUsCi0JCQkob3JkZXJfYmFzZV8yKE1FQ19IUERfU0laRSAvIDQpIC0gMSkpOworCQkJKG9y ZGVyX2Jhc2VfMihHRlg4X01FQ19IUERfU0laRSAvIDQpIC0gMSkpOwogCiAJbXFkLT5jcF9ocWRf ZW9wX2NvbnRyb2wgPSB0bXA7CiAKIAkvKiBlbmFibGUgZG9vcmJlbGw/ICovCiAJdG1wID0gUkVH X1NFVF9GSUVMRChSUkVHMzIobW1DUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCksCiAJCQkgICAg Q1BfSFFEX1BRX0RPT1JCRUxMX0NPTlRST0wsCiAJCQkgICAgRE9PUkJFTExfRU4sCiAJCQkgICAg cmluZy0+dXNlX2Rvb3JiZWxsID8gMSA6IDApOwogCiAJbXFkLT5jcF9ocWRfcHFfZG9vcmJlbGxf Y29udHJvbCA9IHRtcDsKIAogCS8qIGRpc2FibGUgdGhlIHF1ZXVlIGlmIGl0J3MgYWN0aXZlICov CiAJbXFkLT5jcF9ocWRfZGVxdWV1ZV9yZXF1ZXN0ID0gMDsKIAltcWQtPmNwX2hxZF9wcV9ycHRy ID0gMDsKIAltcWQtPmNwX2hxZF9wcV93cHRyID0gMDsKIAogCS8qIHNldCB0aGUgcG9pbnRlciB0 byB0aGUgTVFEICovCiAJbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2xvID0gcmluZy0+bXFkX2dwdV9h ZGRyICYgMHhmZmZmZmZmYzsKIAltcWQtPmNwX21xZF9iYXNlX2FkZHJfaGkgPSB1cHBlcl8zMl9i aXRzKHJpbmctPm1xZF9ncHVfYWRkcik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlf MC5jCmluZGV4IDg3NTk2ZTQuLjBkZTdmZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4 X3Y5XzAuYwpAQCAtMjMsNDAgKzIzLDQxIEBACiAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4K ICNpbmNsdWRlICJkcm1QLmgiCiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1 X2dmeC5oIgogI2luY2x1ZGUgInNvYzE1LmgiCiAjaW5jbHVkZSAic29jMTVkLmgiCiAKICNpbmNs dWRlICJ2ZWdhMTAvc29jMTVpcC5oIgogI2luY2x1ZGUgInZlZ2ExMC9HQy9nY185XzBfb2Zmc2V0 LmgiCiAjaW5jbHVkZSAidmVnYTEwL0dDL2djXzlfMF9zaF9tYXNrLmgiCiAjaW5jbHVkZSAidmVn YTEwL3ZlZ2ExMF9lbnVtLmgiCiAjaW5jbHVkZSAidmVnYTEwL0hEUC9oZHBfNF8wX29mZnNldC5o IgogCiAjaW5jbHVkZSAic29jMTVfY29tbW9uLmgiCiAjaW5jbHVkZSAiY2xlYXJzdGF0ZV9nZng5 LmgiCiAjaW5jbHVkZSAidjlfc3RydWN0cy5oIgogCiAjZGVmaW5lIEdGWDlfTlVNX0dGWF9SSU5H UyAgICAgMQogI2RlZmluZSBHRlg5X05VTV9DT01QVVRFX1JJTkdTIDgKICNkZWZpbmUgR0ZYOV9O VU1fU0UJCTQKKyNkZWZpbmUgR0ZYOV9NRUNfSFBEX1NJWkUgMjA0OAogI2RlZmluZSBSTENHX1VD T0RFX0xPQURJTkdfU1RBUlRfQUREUkVTUyAweDIwMDAKIAogTU9EVUxFX0ZJUk1XQVJFKCJhbWRn cHUvdmVnYTEwX2NlLmJpbiIpOwogTU9EVUxFX0ZJUk1XQVJFKCJhbWRncHUvdmVnYTEwX3BmcC5i aW4iKTsKIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9tZS5iaW4iKTsKIE1PRFVMRV9G SVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9tZWMuYmluIik7CiBNT0RVTEVfRklSTVdBUkUoImFtZGdw dS92ZWdhMTBfbWVjMi5iaW4iKTsKIE1PRFVMRV9GSVJNV0FSRSgiYW1kZ3B1L3ZlZ2ExMF9ybGMu YmluIik7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0IGFtZGdw dV9nZHNfcmVnX29mZnNldFtdID0KIHsKIAl7U09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1HRFNf Vk1JRDBfQkFTRSksIFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tR0RTX1ZNSUQwX1NJWkUpLAog CQlTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBtbUdEU19HV1NfVk1JRDApLCBTT0MxNV9SRUdfT0ZG U0VUKEdDLCAwLCBtbUdEU19PQV9WTUlEMCl9LAogCXtTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBt bUdEU19WTUlEMV9CQVNFKSwgU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1HRFNfVk1JRDFfU0la RSksCiAJCVNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tR0RTX0dXU19WTUlEMSksIFNPQzE1X1JF R19PRkZTRVQoR0MsIDAsIG1tR0RTX09BX1ZNSUQxKX0sCiAJe1NPQzE1X1JFR19PRkZTRVQoR0Ms IDAsIG1tR0RTX1ZNSUQyX0JBU0UpLCBTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBtbUdEU19WTUlE Ml9TSVpFKSwKIAkJU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1HRFNfR1dTX1ZNSUQyKSwgU09D MTVfUkVHX09GRlNFVChHQywgMCwgbW1HRFNfT0FfVk1JRDIpfSwKIAl7U09DMTVfUkVHX09GRlNF VChHQywgMCwgbW1HRFNfVk1JRDNfQkFTRSksIFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tR0RT X1ZNSUQzX1NJWkUpLAogCQlTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBtbUdEU19HV1NfVk1JRDMp LCBTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBtbUdEU19PQV9WTUlEMyl9LAogCXtTT0MxNV9SRUdf T0ZGU0VUKEdDLCAwLCBtbUdEU19WTUlENF9CQVNFKSwgU09DMTVfUkVHX09GRlNFVChHQywgMCwg bW1HRFNfVk1JRDRfU0laRSksCkBAIC00NTcsNjMgKzQ1OCw2MSBAQCBzdGF0aWMgdm9pZCBnZnhf djlfMF9tZWNfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJaWYgKHVubGlrZWx5 KHIgIT0gMCkpCiAJCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIHJlc2VydmUgSFBEIEVPUCBi byBmYWlsZWRcbiIsIHIpOwogCQlhbWRncHVfYm9fdW5waW4oYWRldi0+Z2Z4Lm1lYy5ocGRfZW9w X29iaik7CiAJCWFtZGdwdV9ib191bnJlc2VydmUoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaik7 CiAKIAkJYW1kZ3B1X2JvX3VucmVmKCZhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqKTsKIAkJYWRl di0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiA9IE5VTEw7CiAJfQogCWlmIChhZGV2LT5nZngubWVjLm1l Y19md19vYmopIHsKIAkJciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPmdmeC5tZWMubWVjX2Z3 X29iaiwgZmFsc2UpOwogCQlpZiAodW5saWtlbHkociAhPSAwKSkKIAkJCWRldl93YXJuKGFkZXYt PmRldiwgIiglZCkgcmVzZXJ2ZSBtZWMgZmlybXdhcmUgYm8gZmFpbGVkXG4iLCByKTsKIAkJYW1k Z3B1X2JvX3VucGluKGFkZXYtPmdmeC5tZWMubWVjX2Z3X29iaik7CiAJCWFtZGdwdV9ib191bnJl c2VydmUoYWRldi0+Z2Z4Lm1lYy5tZWNfZndfb2JqKTsKIAogCQlhbWRncHVfYm9fdW5yZWYoJmFk ZXYtPmdmeC5tZWMubWVjX2Z3X29iaik7CiAJCWFkZXYtPmdmeC5tZWMubWVjX2Z3X29iaiA9IE5V TEw7CiAJfQogfQogCi0jZGVmaW5lIE1FQ19IUERfU0laRSAyMDQ4Ci0KIHN0YXRpYyBpbnQgZ2Z4 X3Y5XzBfbWVjX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHI7CiAJ dTMyICpocGQ7CiAJY29uc3QgX19sZTMyICpmd19kYXRhOwogCXVuc2lnbmVkIGZ3X3NpemU7CiAJ dTMyICpmdzsKIAogCWNvbnN0IHN0cnVjdCBnZnhfZmlybXdhcmVfaGVhZGVyX3YxXzAgKm1lY19o ZHI7CiAKIAkvKgogCSAqIHdlIGFzc2lnbiBvbmx5IDEgcGlwZSBiZWNhdXNlIGFsbCBvdGhlciBw aXBlcyB3aWxsCiAJICogYmUgaGFuZGxlZCBieSBLRkQKIAkgKi8KIAlhZGV2LT5nZngubWVjLm51 bV9tZWMgPSAxOwogCWFkZXYtPmdmeC5tZWMubnVtX3BpcGUgPSAxOwogCWFkZXYtPmdmeC5tZWMu bnVtX3F1ZXVlID0gYWRldi0+Z2Z4Lm1lYy5udW1fbWVjICogYWRldi0+Z2Z4Lm1lYy5udW1fcGlw ZSAqIDg7CiAKIAlpZiAoYWRldi0+Z2Z4Lm1lYy5ocGRfZW9wX29iaiA9PSBOVUxMKSB7CiAJCXIg PSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsCi0JCQkJICAgICBhZGV2LT5nZngubWVjLm51bV9xdWV1 ZSAqIE1FQ19IUERfU0laRSwKKwkJCQkgICAgIGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVlICogR0ZY OV9NRUNfSFBEX1NJWkUsCiAJCQkJICAgICBQQUdFX1NJWkUsIHRydWUsCiAJCQkJICAgICBBTURH UFVfR0VNX0RPTUFJTl9HVFQsIDAsIE5VTEwsIE5VTEwsCiAJCQkJICAgICAmYWRldi0+Z2Z4Lm1l Yy5ocGRfZW9wX29iaik7CiAJCWlmIChyKSB7CiAJCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQp IGNyZWF0ZSBIRFAgRU9QIGJvIGZhaWxlZFxuIiwgcik7CiAJCQlyZXR1cm4gcjsKIAkJfQogCX0K IAogCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZShhZGV2LT5nZngubWVjLmhwZF9lb3Bfb2JqLCBmYWxz ZSk7CiAJaWYgKHVubGlrZWx5KHIgIT0gMCkpIHsKIAkJZ2Z4X3Y5XzBfbWVjX2ZpbmkoYWRldik7 CiAJCXJldHVybiByOwogCX0KIAlyID0gYW1kZ3B1X2JvX3BpbihhZGV2LT5nZngubWVjLmhwZF9l b3Bfb2JqLCBBTURHUFVfR0VNX0RPTUFJTl9HVFQsCiAJCQkgICZhZGV2LT5nZngubWVjLmhwZF9l b3BfZ3B1X2FkZHIpOwogCWlmIChyKSB7CiAJCWRldl93YXJuKGFkZXYtPmRldiwgIiglZCkgcGlu IEhEUCBFT1AgYm8gZmFpbGVkXG4iLCByKTsKIAkJZ2Z4X3Y5XzBfbWVjX2ZpbmkoYWRldik7CiAJ CXJldHVybiByOwpAQCAtNTcyLDQ5ICs1NzEsNDkgQEAgc3RhdGljIGludCBnZnhfdjlfMF9tZWNf aW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlhbWRncHVfYm9fa3VubWFwKGFkZXYt PmdmeC5tZWMubWVjX2Z3X29iaik7CiAJYW1kZ3B1X2JvX3VucmVzZXJ2ZShhZGV2LT5nZngubWVj Lm1lY19md19vYmopOwogCiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgZ2Z4X3Y5XzBf a2lxX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IGFtZGdwdV9r aXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwogCiAJYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZraXEt PmVvcF9vYmosICZraXEtPmVvcF9ncHVfYWRkciwgTlVMTCk7CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4 X3Y5XzBfa2lxX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaW50IHI7CiAJ dTMyICpocGQ7CiAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwogCi0J ciA9IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsIE1FQ19IUERfU0laRSwgUEFHRV9TSVpF LAorCXIgPSBhbWRncHVfYm9fY3JlYXRlX2tlcm5lbChhZGV2LCBHRlg5X01FQ19IUERfU0laRSwg UEFHRV9TSVpFLAogCQkJCSAgICBBTURHUFVfR0VNX0RPTUFJTl9HVFQsICZraXEtPmVvcF9vYmos CiAJCQkJICAgICZraXEtPmVvcF9ncHVfYWRkciwgKHZvaWQgKiopJmhwZCk7CiAJaWYgKHIpIHsK IAkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBLSVEgYm8gKCVkKS5cbiIs IHIpOwogCQlyZXR1cm4gcjsKIAl9CiAKLQltZW1zZXQoaHBkLCAwLCBNRUNfSFBEX1NJWkUpOwor CW1lbXNldChocGQsIDAsIEdGWDlfTUVDX0hQRF9TSVpFKTsKIAogCXIgPSBhbWRncHVfYm9fcmVz ZXJ2ZShraXEtPmVvcF9vYmosIGZhbHNlKTsKIAlpZiAodW5saWtlbHkociAhPSAwKSkKIAkJZGV2 X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSByZXNlcnZlIGtpcSBlb3AgYm8gZmFpbGVkXG4iLCByKTsK IAlhbWRncHVfYm9fa3VubWFwKGtpcS0+ZW9wX29iaik7CiAJYW1kZ3B1X2JvX3VucmVzZXJ2ZShr aXEtPmVvcF9vYmopOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfa2lx X2luaXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHN0cnVjdCBhbWRn cHVfcmluZyAqcmluZywKIAkJCQkgIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqaXJxKQogewogCXN0 cnVjdCBhbWRncHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsKIAlpbnQgciA9IDA7CiAKIAly ID0gYW1kZ3B1X3diX2dldChhZGV2LCAmYWRldi0+dmlydC5yZWdfdmFsX29mZnMpOwogCWlmIChy KQogCQlyZXR1cm4gcjsKQEAgLTEwNzgsNDEgKzEwNzcsNDEgQEAgc3RhdGljIGludCBnZnhfdjlf MF9zd19pbml0KHZvaWQgKmhhbmRsZSkKIAkJaWYgKHIpCiAJCQlyZXR1cm4gcjsKIAl9CiAKIAkv KiBzZXQgdXAgdGhlIGNvbXB1dGUgcXVldWVzICovCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdm eC5udW1fY29tcHV0ZV9yaW5nczsgaSsrKSB7CiAJCXVuc2lnbmVkIGlycV90eXBlOwogCiAJCS8q IG1heCAzMiBxdWV1ZXMgcGVyIE1FQyAqLwogCQlpZiAoKGkgPj0gMzIpIHx8IChpID49IEFNREdQ VV9NQVhfQ09NUFVURV9SSU5HUykpIHsKIAkJCURSTV9FUlJPUigiVG9vIG1hbnkgKCVkKSBjb21w dXRlIHJpbmdzIVxuIiwgaSk7CiAJCQlicmVhazsKIAkJfQogCQlyaW5nID0gJmFkZXYtPmdmeC5j b21wdXRlX3JpbmdbaV07CiAJCXJpbmctPnJpbmdfb2JqID0gTlVMTDsKIAkJcmluZy0+dXNlX2Rv b3JiZWxsID0gdHJ1ZTsKIAkJcmluZy0+ZG9vcmJlbGxfaW5kZXggPSAoQU1ER1BVX0RPT1JCRUxM NjRfTUVDX1JJTkcwICsgaSkgPDwgMTsKIAkJcmluZy0+bWUgPSAxOyAvKiBmaXJzdCBNRUMgKi8K IAkJcmluZy0+cGlwZSA9IGkgLyA4OwogCQlyaW5nLT5xdWV1ZSA9IGkgJSA4OwotCQlyaW5nLT5l b3BfZ3B1X2FkZHIgPSBhZGV2LT5nZngubWVjLmhwZF9lb3BfZ3B1X2FkZHIgKyAoaSAqIE1FQ19I UERfU0laRSk7CisJCXJpbmctPmVvcF9ncHVfYWRkciA9IGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9n cHVfYWRkciArIChpICogR0ZYOV9NRUNfSFBEX1NJWkUpOwogCQlzcHJpbnRmKHJpbmctPm5hbWUs ICJjb21wICVkLiVkLiVkIiwgcmluZy0+bWUsIHJpbmctPnBpcGUsIHJpbmctPnF1ZXVlKTsKIAkJ aXJxX3R5cGUgPSBBTURHUFVfQ1BfSVJRX0NPTVBVVEVfTUVDMV9QSVBFMF9FT1AgKyByaW5nLT5w aXBlOwogCQkvKiB0eXBlLTIgcGFja2V0cyBhcmUgZGVwcmVjYXRlZCBvbiBNRUMsIHVzZSB0eXBl LTMgaW5zdGVhZCAqLwogCQlyID0gYW1kZ3B1X3JpbmdfaW5pdChhZGV2LCByaW5nLCAxMDI0LAog CQkJCSAgICAgJmFkZXYtPmdmeC5lb3BfaXJxLCBpcnFfdHlwZSk7CiAJCWlmIChyKQogCQkJcmV0 dXJuIHI7CiAJfQogCiAJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewogCQlyID0gZ2Z4X3Y5 XzBfa2lxX2luaXQoYWRldik7CiAJCWlmIChyKSB7CiAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBp bml0IEtJUSBCT3MhXG4iKTsKIAkJCXJldHVybiByOwogCQl9CiAKIAkJa2lxID0gJmFkZXYtPmdm eC5raXE7CiAJCXIgPSBnZnhfdjlfMF9raXFfaW5pdF9yaW5nKGFkZXYsICZraXEtPnJpbmcsICZr aXEtPmlycSk7CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7CkBAIC0xODgzLDQxICsxODgyLDQxIEBA IHN0YXRpYyBpbnQgZ2Z4X3Y5XzBfbXFkX2luaXQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQog CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKIAlzdHJ1Y3QgdjlfbXFk ICptcWQgPSByaW5nLT5tcWRfcHRyOwogCXVpbnQ2NF90IGhxZF9ncHVfYWRkciwgd2JfZ3B1X2Fk ZHIsIGVvcF9iYXNlX2FkZHI7CiAJdWludDMyX3QgdG1wOwogCiAJbXFkLT5oZWFkZXIgPSAweEMw MzEwODAwOwogCW1xZC0+Y29tcHV0ZV9waXBlbGluZXN0YXRfZW5hYmxlID0gMHgwMDAwMDAwMTsK IAltcWQtPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMCA9IDB4ZmZmZmZmZmY7CiAJbXFk LT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTEgPSAweGZmZmZmZmZmOwogCW1xZC0+Y29t cHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UyID0gMHhmZmZmZmZmZjsKIAltcWQtPmNvbXB1dGVf c3RhdGljX3RocmVhZF9tZ210X3NlMyA9IDB4ZmZmZmZmZmY7CiAJbXFkLT5jb21wdXRlX21pc2Nf cmVzZXJ2ZWQgPSAweDAwMDAwMDAzOwogCiAJZW9wX2Jhc2VfYWRkciA9IHJpbmctPmVvcF9ncHVf YWRkciA+PiA4OwogCW1xZC0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJfbG8gPSBlb3BfYmFzZV9hZGRy OwogCW1xZC0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJfaGkgPSB1cHBlcl8zMl9iaXRzKGVvcF9iYXNl X2FkZHIpOwogCiAJLyogc2V0IHRoZSBFT1Agc2l6ZSwgcmVnaXN0ZXIgdmFsdWUgaXMgMl4oRU9Q X1NJWkUrMSkgZHdvcmRzICovCiAJdG1wID0gUlJFRzMyX1NPQzE1KEdDLCAwLCBtbUNQX0hRRF9F T1BfQ09OVFJPTCk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9FT1BfQ09OVFJP TCwgRU9QX1NJWkUsCi0JCQkob3JkZXJfYmFzZV8yKE1FQ19IUERfU0laRSAvIDQpIC0gMSkpOwor CQkJKG9yZGVyX2Jhc2VfMihHRlg5X01FQ19IUERfU0laRSAvIDQpIC0gMSkpOwogCiAJbXFkLT5j cF9ocWRfZW9wX2NvbnRyb2wgPSB0bXA7CiAKIAkvKiBlbmFibGUgZG9vcmJlbGw/ICovCiAJdG1w ID0gUlJFRzMyX1NPQzE1KEdDLCAwLCBtbUNQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MKTsKIAog CWlmIChyaW5nLT51c2VfZG9vcmJlbGwpIHsKIAkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQ X0hRRF9QUV9ET09SQkVMTF9DT05UUk9MLAogCQkJCSAgICBET09SQkVMTF9PRkZTRVQsIHJpbmct PmRvb3JiZWxsX2luZGV4KTsKIAkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9E T09SQkVMTF9DT05UUk9MLAogCQkJCSAgICBET09SQkVMTF9FTiwgMSk7CiAJCXRtcCA9IFJFR19T RVRfRklFTEQodG1wLCBDUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwKIAkJCQkgICAgRE9PUkJF TExfU09VUkNFLCAwKTsKIAkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09S QkVMTF9DT05UUk9MLAogCQkJCSAgICBET09SQkVMTF9ISVQsIDApOwogCX0KIAllbHNlCiAJCXRt cCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwKIAkJCQkJ IERPT1JCRUxMX0VOLCAwKTsKIApAQCAtMzc0MCw1MiArMzczOSw1MiBAQCBzdGF0aWMgaW50IGdm eF92OV8wX2luaXRfcXVldWUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogCS8qIGluaXQgdGhl IG1xZCBzdHJ1Y3QgKi8KIAltZW1zZXQoYnVmLCAwLCBzaXplb2Yoc3RydWN0IHY5X21xZCkpOwog CiAJbXFkID0gKHN0cnVjdCB2OV9tcWQgKilidWY7CiAJbXFkLT5oZWFkZXIgPSAweEMwMzEwODAw OwogCW1xZC0+Y29tcHV0ZV9waXBlbGluZXN0YXRfZW5hYmxlID0gMHgwMDAwMDAwMTsKIAltcWQt PmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMCA9IDB4ZmZmZmZmZmY7CiAJbXFkLT5jb21w dXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTEgPSAweGZmZmZmZmZmOwogCW1xZC0+Y29tcHV0ZV9z dGF0aWNfdGhyZWFkX21nbXRfc2UyID0gMHhmZmZmZmZmZjsKIAltcWQtPmNvbXB1dGVfc3RhdGlj X3RocmVhZF9tZ210X3NlMyA9IDB4ZmZmZmZmZmY7CiAJbXFkLT5jb21wdXRlX21pc2NfcmVzZXJ2 ZWQgPSAweDAwMDAwMDAzOwogCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwogCXNvYzE1 X2dyYm1fc2VsZWN0KGFkZXYsIHJpbmctPm1lLAogCQkJICAgICAgIHJpbmctPnBpcGUsCiAJCQkg ICAgICAgcmluZy0+cXVldWUsIDApOwogCS8qIGRpc2FibGUgd3B0ciBwb2xsaW5nICovCiAJV1JF RzMyX0ZJRUxEMTUoR0MsIDAsIENQX1BRX1dQVFJfUE9MTF9DTlRMLCBFTiwgMCk7CiAKIAkvKiB3 cml0ZSB0aGUgRU9QIGFkZHIgKi8KIAlCVUdfT04ocmluZy0+bWUgIT0gMSB8fCByaW5nLT5waXBl ICE9IDApOyAvKiBjYW4ndCBoYW5kbGUgb3RoZXIgY2FzZXMgZW9wIGFkZHJlc3MgKi8KLQllb3Bf Z3B1X2FkZHIgPSBhZGV2LT5nZngubWVjLmhwZF9lb3BfZ3B1X2FkZHIgKyAocmluZy0+cXVldWUg KiBNRUNfSFBEX1NJWkUpOworCWVvcF9ncHVfYWRkciA9IGFkZXYtPmdmeC5tZWMuaHBkX2VvcF9n cHVfYWRkciArIChyaW5nLT5xdWV1ZSAqIEdGWDlfTUVDX0hQRF9TSVpFKTsKIAllb3BfZ3B1X2Fk ZHIgPj49IDg7CiAKIAlXUkVHMzJfU09DMTUoR0MsIDAsIG1tQ1BfSFFEX0VPUF9CQVNFX0FERFIs IGxvd2VyXzMyX2JpdHMoZW9wX2dwdV9hZGRyKSk7CiAJV1JFRzMyX1NPQzE1KEdDLCAwLCBtbUNQ X0hRRF9FT1BfQkFTRV9BRERSX0hJLCB1cHBlcl8zMl9iaXRzKGVvcF9ncHVfYWRkcikpOwogCW1x ZC0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJfbG8gPSBsb3dlcl8zMl9iaXRzKGVvcF9ncHVfYWRkcik7 CiAJbXFkLT5jcF9ocWRfZW9wX2Jhc2VfYWRkcl9oaSA9IHVwcGVyXzMyX2JpdHMoZW9wX2dwdV9h ZGRyKTsKIAogCS8qIHNldCB0aGUgRU9QIHNpemUsIHJlZ2lzdGVyIHZhbHVlIGlzIDJeKEVPUF9T SVpFKzEpIGR3b3JkcyAqLwogCXRtcCA9IFJSRUczMl9TT0MxNShHQywgMCwgbW1DUF9IUURfRU9Q X0NPTlRST0wpOwogCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9IUURfRU9QX0NPTlRST0ws IEVPUF9TSVpFLAotCQkJCSAgICAob3JkZXJfYmFzZV8yKE1FQ19IUERfU0laRSAvIDQpIC0gMSkp OworCQkJCSAgICAob3JkZXJfYmFzZV8yKEdGWDlfTUVDX0hQRF9TSVpFIC8gNCkgLSAxKSk7CiAJ V1JFRzMyX1NPQzE1KEdDLCAwLCBtbUNQX0hRRF9FT1BfQ09OVFJPTCwgdG1wKTsKIAogCS8qIGVu YWJsZSBkb29yYmVsbD8gKi8KIAl0bXAgPSBSUkVHMzJfU09DMTUoR0MsIDAsIG1tQ1BfSFFEX1BR X0RPT1JCRUxMX0NPTlRST0wpOwogCWlmICh1c2VfZG9vcmJlbGwpCiAJCXRtcCA9IFJFR19TRVRf RklFTEQodG1wLCBDUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwgRE9PUkJFTExfRU4sIDEpOwog CWVsc2UKIAkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09SQkVMTF9DT05U Uk9MLCBET09SQkVMTF9FTiwgMCk7CiAKIAlXUkVHMzJfU09DMTUoR0MsIDAsIG1tQ1BfSFFEX1BR X0RPT1JCRUxMX0NPTlRST0wsIHRtcCk7CiAJbXFkLT5jcF9ocWRfcHFfZG9vcmJlbGxfY29udHJv bCA9IHRtcDsKIAogCS8qIGRpc2FibGUgdGhlIHF1ZXVlIGlmIGl0J3MgYWN0aXZlICovCiAJcmlu Zy0+d3B0ciA9IDA7CiAJbXFkLT5jcF9ocWRfZGVxdWV1ZV9yZXF1ZXN0ID0gMDsKIAltcWQtPmNw X2hxZF9wcV9ycHRyID0gMDsKIAltcWQtPmNwX2hxZF9wcV93cHRyX2xvID0gMDsKIAltcWQtPmNw X2hxZF9wcV93cHRyX2hpID0gMDsKIAlpZiAoUlJFRzMyX1NPQzE1KEdDLCAwLCBtbUNQX0hRRF9B Q1RJVkUpICYgMSkgewogCQlXUkVHMzJfU09DMTUoR0MsIDAsIG1tQ1BfSFFEX0RFUVVFVUVfUkVR VUVTVCwgMSk7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==