From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH] drm/msm/a6xx: Poll for HFI responses Date: Thu, 20 Sep 2018 17:04:43 -0600 Message-ID: <20180920230443.6031-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org VGhlIG9ubHkgSEZJIGNvbW11bmljYXRpb24gd2l0aCB0aGUgR01VIG9uIHNkbTg0NSBoYXBwZW5z CmR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgYWxsIGNvbW1hbmRzIGFyZSBzeW5jaHJvbm91cy4g QSBmYW5jeQppbnRlcnJ1cHQgdGFza2xldCBhbmQgYXNzb2NpYXRlZCBpbmZyYXN0cnVjdHVyZSBp cyBlbnRpcmVseQpub3QgZWVkZWQgYW5kIHB1dHMgdXMgYXQgdGhlIG1lcmN5IG9mIHRoZSBzY2hl ZHVsZXIuCgpJbnN0ZWFkIHBvbGwgZm9yIHRoZSBtZXNzYWdlIHNpZ25hbCBhbmQgaGFuZGxlIHRo ZSByZXNwb25zZQppbW1lZGlhdGVseSBhbmQgZ28gb24gb3VyIHdheS4KClNpZ25lZC1vZmYtYnk6 IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYTZ4eF9nbXUuYyB8ICAxMyArLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2E2eHhfZ211LmggfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2 eHhfaGZpLmMgfCAxNjEgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdl ZCwgNTcgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ211LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hNnh4X2dtdS5jCmluZGV4IGJiYjgxMjZlYzVjNS4uNTNjYjRkNDhjY2NmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ211LmMKQEAgLTIsNyArMiw2IEBACiAvKiBDb3B5cmln aHQgKGMpIDIwMTctMjAxOCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4gKi8KIAogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgotI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5o PgogI2luY2x1ZGUgPGxpbnV4L3BtX29wcC5oPgogI2luY2x1ZGUgPHNvYy9xY29tL2NtZC1kYi5o PgogCkBAIC00Miw5ICs0MSw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhNnh4X2hmaV9pcnEoaW50 IGlycSwgdm9pZCAqZGF0YSkKIAlzdGF0dXMgPSBnbXVfcmVhZChnbXUsIFJFR19BNlhYX0dNVV9H TVUySE9TVF9JTlRSX0lORk8pOwogCWdtdV93cml0ZShnbXUsIFJFR19BNlhYX0dNVV9HTVUySE9T VF9JTlRSX0NMUiwgc3RhdHVzKTsKIAotCWlmIChzdGF0dXMgJiBBNlhYX0dNVV9HTVUySE9TVF9J TlRSX0lORk9fTVNHUSkKLQkJdGFza2xldF9zY2hlZHVsZSgmZ211LT5oZmlfdGFza2xldCk7Ci0K IAlpZiAoc3RhdHVzICYgQTZYWF9HTVVfR01VMkhPU1RfSU5UUl9JTkZPX0NNM19GQVVMVCkgewog CQlkZXZfZXJyX3JhdGVsaW1pdGVkKGdtdS0+ZGV2LCAiR01VIGZpcm13YXJlIGZhdWx0XG4iKTsK IApAQCAtMTM1LDkgKzEzMSw2IEBAIHN0YXRpYyBpbnQgYTZ4eF9nbXVfaGZpX3N0YXJ0KHN0cnVj dCBhNnh4X2dtdSAqZ211KQogCXUzMiB2YWw7CiAJaW50IHJldDsKIAotCWdtdV9ybXcoZ211LCBS RUdfQTZYWF9HTVVfR01VMkhPU1RfSU5UUl9NQVNLLAotCQlBNlhYX0dNVV9HTVUySE9TVF9JTlRS X0lORk9fTVNHUSwgMCk7Ci0KIAlnbXVfd3JpdGUoZ211LCBSRUdfQTZYWF9HTVVfSEZJX0NUUkxf SU5JVCwgMSk7CiAKIAlyZXQgPSBnbXVfcG9sbF90aW1lb3V0KGdtdSwgUkVHX0E2WFhfR01VX0hG SV9DVFJMX1NUQVRVUywgdmFsLApAQCAtNTQ3LDggKzU0MCw3IEBAIHN0YXRpYyBpbnQgYTZ4eF9n bXVfZndfc3RhcnQoc3RydWN0IGE2eHhfZ211ICpnbXUsIHVuc2lnbmVkIGludCBzdGF0ZSkKIH0K IAogI2RlZmluZSBBNlhYX0hGSV9JUlFfTUFTSyBcCi0JKEE2WFhfR01VX0dNVTJIT1NUX0lOVFJf SU5GT19NU0dRIHwgXAotCSBBNlhYX0dNVV9HTVUySE9TVF9JTlRSX0lORk9fQ00zX0ZBVUxUKQor CShBNlhYX0dNVV9HTVUySE9TVF9JTlRSX0lORk9fQ00zX0ZBVUxUKQogCiAjZGVmaW5lIEE2WFhf R01VX0lSUV9NQVNLIFwKIAkoQTZYWF9HTVVfQU9fSE9TVF9JTlRFUlJVUFRfU1RBVFVTX1dET0df QklURSB8IFwKQEAgLTExODQsOSArMTE3Niw2IEBAIGludCBhNnh4X2dtdV9wcm9iZShzdHJ1Y3Qg YTZ4eF9ncHUgKmE2eHhfZ3B1LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpCiAJaWYgKGdtdS0+ aGZpX2lycSA8IDAgfHwgZ211LT5nbXVfaXJxIDwgMCkKIAkJZ290byBlcnI7CiAKLQkvKiBTZXQg dXAgYSB0YXNrbGV0IHRvIGhhbmRsZSBHTVUgSEZJIHJlc3BvbnNlcyAqLwotCXRhc2tsZXRfaW5p dCgmZ211LT5oZmlfdGFza2xldCwgYTZ4eF9oZmlfdGFzaywgKHVuc2lnbmVkIGxvbmcpIGdtdSk7 Ci0KIAkvKiBHZXQgdGhlIHBvd2VyIGxldmVscyBmb3IgdGhlIEdNVSBhbmQgR1BVICovCiAJYTZ4 eF9nbXVfcHdybGV2ZWxzX3Byb2JlKGdtdSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2E2eHhfZ211LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4 X2dtdS5oCmluZGV4IGQ5YTM4NmMxODc5OS4uNmYyZWMyNGViZGRmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dtdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E2eHhfZ211LmgKQEAgLTQsNiArNCw3IEBACiAjaWZuZGVmIF9BNlhYX0dNVV9I XwogI2RlZmluZSBfQTZYWF9HTVVfSF8KIAorI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgogI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgogI2luY2x1ZGUgIm1zbV9kcnYuaCIKICNpbmNsdWRl ICJhNnh4X2hmaS5oIgpAQCAtMTU3LDYgKzE1OCw0IEBAIHZvaWQgYTZ4eF9oZmlfaW5pdChzdHJ1 Y3QgYTZ4eF9nbXUgKmdtdSk7CiBpbnQgYTZ4eF9oZmlfc3RhcnQoc3RydWN0IGE2eHhfZ211ICpn bXUsIGludCBib290X3N0YXRlKTsKIHZvaWQgYTZ4eF9oZmlfc3RvcChzdHJ1Y3QgYTZ4eF9nbXUg KmdtdSk7CiAKLXZvaWQgYTZ4eF9oZmlfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpOwotCiAjZW5k aWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfaGZpLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2hmaS5jCmluZGV4IGYxOWVmNGNiNmVhNC4u NmZmOWJhZWMyNjU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4 X2hmaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfaGZpLmMKQEAgLTc5 LDgzICs3OSw3MiBAQCBzdGF0aWMgaW50IGE2eHhfaGZpX3F1ZXVlX3dyaXRlKHN0cnVjdCBhNnh4 X2dtdSAqZ211LAogCXJldHVybiAwOwogfQogCi1zdHJ1Y3QgYTZ4eF9oZmlfcmVzcG9uc2Ugewot CXUzMiBpZDsKLQl1MzIgc2VxbnVtOwotCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKLQlzdHJ1Y3Qg Y29tcGxldGlvbiBjb21wbGV0ZTsKLQotCXUzMiBlcnJvcjsKLQl1MzIgcGF5bG9hZFsxNl07Ci19 Oworc3RhdGljIGludCBhNnh4X2hmaV93YWl0X2Zvcl9hY2soc3RydWN0IGE2eHhfZ211ICpnbXUs IHUzMiBpZCwgdTMyIHNlcW51bSwKKwkJdTMyICpwYXlsb2FkLCB1MzIgcGF5bG9hZF9zaXplKQor eworCXN0cnVjdCBhNnh4X2hmaV9xdWV1ZSAqcXVldWUgPSAmZ211LT5xdWV1ZXNbSEZJX1JFU1BP TlNFX1FVRVVFXTsKKwl1MzIgdmFsOworCWludCByZXQ7CiAKLS8qCi0gKiBJbmNvbWluZyBIRkkg YWNrIG1lc3NhZ2VzIGNhbiBjb21lIGluIG91dCBvZiBvcmRlciBzbyB3ZSBuZWVkIHRvIHN0b3Jl IGFsbAotICogdGhlIHBlbmRpbmcgbWVzc2FnZXMgb24gYSBsaXN0IHVudGlsIHRoZXkgYXJlIGhh bmRsZWQuCi0gKi8KLXN0YXRpYyBzcGlubG9ja190IGhmaV9hY2tfbG9jayA9IF9fU1BJTl9MT0NL X1VOTE9DS0VEKG1lc3NhZ2VfbG9jayk7Ci1zdGF0aWMgTElTVF9IRUFEKGhmaV9hY2tfbGlzdCk7 CisJLyogV2FpdCBmb3IgYSByZXNwb25zZSAqLworCXJldCA9IGdtdV9wb2xsX3RpbWVvdXQoZ211 LCBSRUdfQTZYWF9HTVVfR01VMkhPU1RfSU5UUl9JTkZPLCB2YWwsCisJCXZhbCAmIEE2WFhfR01V X0dNVTJIT1NUX0lOVFJfSU5GT19NU0dRLCAxMDAsIDUwMDApOwogCi1zdGF0aWMgdm9pZCBhNnh4 X2hmaV9oYW5kbGVfYWNrKHN0cnVjdCBhNnh4X2dtdSAqZ211LAotCQlzdHJ1Y3QgYTZ4eF9oZmlf bXNnX3Jlc3BvbnNlICptc2cpCi17Ci0Jc3RydWN0IGE2eHhfaGZpX3Jlc3BvbnNlICpyZXNwOwot CXUzMiBpZCwgc2VxbnVtOwotCi0JLyogbXNnLT5yZXRfaGVhZGVyIGNvbnRhaW5zIHRoZSBoZWFk ZXIgb2YgdGhlIG1lc3NhZ2UgYmVpbmcgYWNrZWQgKi8KLQlpZCA9IEhGSV9IRUFERVJfSUQobXNn LT5yZXRfaGVhZGVyKTsKLQlzZXFudW0gPSBIRklfSEVBREVSX1NFUU5VTShtc2ctPnJldF9oZWFk ZXIpOwotCi0Jc3Bpbl9sb2NrKCZoZmlfYWNrX2xvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnko cmVzcCwgJmhmaV9hY2tfbGlzdCwgbm9kZSkgewotCQlpZiAocmVzcC0+aWQgPT0gaWQgJiYgcmVz cC0+c2VxbnVtID09IHNlcW51bSkgewotCQkJcmVzcC0+ZXJyb3IgPSBtc2ctPmVycm9yOwotCQkJ bWVtY3B5KHJlc3AtPnBheWxvYWQsIG1zZy0+cGF5bG9hZCwKLQkJCQlzaXplb2YocmVzcC0+cGF5 bG9hZCkpOwotCi0JCQljb21wbGV0ZSgmcmVzcC0+Y29tcGxldGUpOwotCQkJc3Bpbl91bmxvY2so JmhmaV9hY2tfbG9jayk7Ci0JCQlyZXR1cm47Ci0JCX0KKwlpZiAocmV0KSB7CisJCWRldl9lcnIo Z211LT5kZXYsCisJCQkiTWVzc2FnZSAlcyBpZCAlZCB0aW1lZCBvdXQgd2FpdGluZyBmb3IgcmVz cG9uc2VcbiIsCisJCQlhNnh4X2hmaV9tc2dfaWRbaWRdLCBzZXFudW0pOworCQlyZXR1cm4gLUVU SU1FRE9VVDsKIAl9Ci0Jc3Bpbl91bmxvY2soJmhmaV9hY2tfbG9jayk7CiAKLQlkZXZfZXJyKGdt dS0+ZGV2LCAiTm9ib2R5IHdhcyB3YWl0aW5nIGZvciBIRkkgbWVzc2FnZSAlZFxuIiwgc2VxbnVt KTsKLX0KKwkvKiBDbGVhciB0aGUgaW50ZXJydXB0ICovCisJZ211X3dyaXRlKGdtdSwgUkVHX0E2 WFhfR01VX0dNVTJIT1NUX0lOVFJfQ0xSLAorCQlBNlhYX0dNVV9HTVUySE9TVF9JTlRSX0lORk9f TVNHUSk7CiAKLXN0YXRpYyB2b2lkIGE2eHhfaGZpX2hhbmRsZV9lcnJvcihzdHJ1Y3QgYTZ4eF9n bXUgKmdtdSwKLQkJc3RydWN0IGE2eHhfaGZpX21zZ19yZXNwb25zZSAqbXNnKQotewotCXN0cnVj dCBhNnh4X2hmaV9tc2dfZXJyb3IgKmVycm9yID0gKHN0cnVjdCBhNnh4X2hmaV9tc2dfZXJyb3Ig KikgbXNnOworCWZvciAoOzspIHsKKwkJc3RydWN0IGE2eHhfaGZpX21zZ19yZXNwb25zZSByZXNw OwogCi0JZGV2X2VycihnbXUtPmRldiwgIkdNVSBmaXJtd2FyZSBlcnJvciAlZFxuIiwgZXJyb3It PmNvZGUpOwotfQorCQkvKiBHZXQgdGhlIG5leHQgcGFja2V0ICovCisJCXJldCA9IGE2eHhfaGZp X3F1ZXVlX3JlYWQocXVldWUsICh1MzIgKikgJnJlc3AsCisJCQlzaXplb2YocmVzcCkgPj4gMik7 CiAKLXZvaWQgYTZ4eF9oZmlfdGFzayh1bnNpZ25lZCBsb25nIGRhdGEpCi17Ci0Jc3RydWN0IGE2 eHhfZ211ICpnbXUgPSAoc3RydWN0IGE2eHhfZ211ICopIGRhdGE7Ci0Jc3RydWN0IGE2eHhfaGZp X3F1ZXVlICpxdWV1ZSA9ICZnbXUtPnF1ZXVlc1tIRklfUkVTUE9OU0VfUVVFVUVdOwotCXN0cnVj dCBhNnh4X2hmaV9tc2dfcmVzcG9uc2UgcmVzcDsKKwkJLyogSWYgdGhlIHF1ZXVlIGlzIGVtcHR5 IG91ciByZXNwb25zZSBuZXZlciBtYWRlIGl0ICovCisJCWlmICghcmV0KSB7CisJCQlkZXZfZXJy KGdtdS0+ZGV2LAorCQkJCSJUaGUgSEZJIHJlc3BvbnNlIHF1ZXVlIGlzIHVuZXhwZWN0ZWRseSBl bXB0eVxuIik7CiAKLQlmb3IgKDs7KSB7Ci0JCXUzMiBpZDsKLQkJaW50IHJldCA9IGE2eHhfaGZp X3F1ZXVlX3JlYWQocXVldWUsICh1MzIgKikgJnJlc3AsCi0JCQlzaXplb2YocmVzcCkgPj4gMik7 CisJCQlyZXR1cm4gLUVOT0VOVDsKKwkJfQorCisJCWlmIChIRklfSEVBREVSX0lEKHJlc3AuaGVh ZGVyKSA9PSBIRklfRjJIX01TR19FUlJPUikgeworCQkJc3RydWN0IGE2eHhfaGZpX21zZ19lcnJv ciAqZXJyb3IgPQorCQkJCShzdHJ1Y3QgYTZ4eF9oZmlfbXNnX2Vycm9yICopICZyZXNwOwogCi0J CS8qIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgb3IgbmVnYXRpdmUgb24gZXJy b3IgKi8KLQkJaWYgKHJldCA8PSAwKSB7Ci0JCQlpZiAocmV0IDwgMCkKLQkJCQlkZXZfZXJyKGdt dS0+ZGV2LAotCQkJCQkiVW5hYmxlIHRvIHJlYWQgdGhlIEhGSSBtZXNzYWdlIHF1ZXVlXG4iKTsK LQkJCWJyZWFrOworCQkJZGV2X2VycihnbXUtPmRldiwgIkdNVSBmaXJtd2FyZSBlcnJvciAlZFxu IiwKKwkJCQllcnJvci0+Y29kZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChzZXFudW0g IT0gSEZJX0hFQURFUl9TRVFOVU0ocmVzcC5yZXRfaGVhZGVyKSkgeworCQkJZGV2X2VycihnbXUt PmRldiwKKwkJCQkiVW5leHBlY3RlZCBtZXNzYWdlIGlkICVkIG9uIHRoZSByZXNwb25zZSBxdWV1 ZVxuIiwKKwkJCQlIRklfSEVBREVSX1NFUU5VTShyZXNwLnJldF9oZWFkZXIpKTsKKwkJCWNvbnRp bnVlOworCQl9CisKKwkJaWYgKHJlc3AuZXJyb3IpIHsKKwkJCWRldl9lcnIoZ211LT5kZXYsCisJ CQkJIk1lc3NhZ2UgJXMgaWQgJWQgcmV0dXJuZWQgZXJyb3IgJWRcbiIsCisJCQkJYTZ4eF9oZmlf bXNnX2lkW2lkXSwgc2VxbnVtLCByZXNwLmVycm9yKTsKKwkJCXJldHVybiAtRUlOVkFMOwogCQl9 CiAKLQkJaWQgPSBIRklfSEVBREVSX0lEKHJlc3AuaGVhZGVyKTsKKwkJLyogQWxsIGlzIHdlbGws IGNvcHkgb3ZlciB0aGUgYnVmZmVyICovCisJCWlmIChwYXlsb2FkICYmIHBheWxvYWRfc2l6ZSkK KwkJCW1lbWNweShwYXlsb2FkLCByZXNwLnBheWxvYWQsCisJCQkJbWluX3QodTMyLCBwYXlsb2Fk X3NpemUsIHNpemVvZihyZXNwLnBheWxvYWQpKSk7CiAKLQkJaWYgKGlkID09IEhGSV9GMkhfTVNH X0FDSykKLQkJCWE2eHhfaGZpX2hhbmRsZV9hY2soZ211LCAmcmVzcCk7Ci0JCWVsc2UgaWYgKGlk ID09IEhGSV9GMkhfTVNHX0VSUk9SKQotCQkJYTZ4eF9oZmlfaGFuZGxlX2Vycm9yKGdtdSwgJnJl c3ApOworCQlyZXR1cm4gMDsKIAl9CiB9CiAKQEAgLTE2Myw3ICsxNTIsNiBAQCBzdGF0aWMgaW50 IGE2eHhfaGZpX3NlbmRfbXNnKHN0cnVjdCBhNnh4X2dtdSAqZ211LCBpbnQgaWQsCiAJCXZvaWQg KmRhdGEsIHUzMiBzaXplLCB1MzIgKnBheWxvYWQsIHUzMiBwYXlsb2FkX3NpemUpCiB7CiAJc3Ry dWN0IGE2eHhfaGZpX3F1ZXVlICpxdWV1ZSA9ICZnbXUtPnF1ZXVlc1tIRklfQ09NTUFORF9RVUVV RV07Ci0Jc3RydWN0IGE2eHhfaGZpX3Jlc3BvbnNlIHJlc3AgPSB7IDAgfTsKIAlpbnQgcmV0LCBk d29yZHMgPSBzaXplID4+IDI7CiAJdTMyIHNlcW51bTsKIApAQCAtMTczLDUzICsxNjEsMTQgQEAg c3RhdGljIGludCBhNnh4X2hmaV9zZW5kX21zZyhzdHJ1Y3QgYTZ4eF9nbXUgKmdtdSwgaW50IGlk LAogCSooKHUzMiAqKSBkYXRhKSA9IChzZXFudW0gPDwgMjApIHwgKEhGSV9NU0dfQ01EIDw8IDE2 KSB8CiAJCShkd29yZHMgPDwgOCkgfCBpZDsKIAotCWluaXRfY29tcGxldGlvbigmcmVzcC5jb21w bGV0ZSk7Ci0JcmVzcC5pZCA9IGlkOwotCXJlc3Auc2VxbnVtID0gc2VxbnVtOwotCi0Jc3Bpbl9s b2NrX2JoKCZoZmlfYWNrX2xvY2spOwotCWxpc3RfYWRkX3RhaWwoJnJlc3Aubm9kZSwgJmhmaV9h Y2tfbGlzdCk7Ci0Jc3Bpbl91bmxvY2tfYmgoJmhmaV9hY2tfbG9jayk7Ci0KIAlyZXQgPSBhNnh4 X2hmaV9xdWV1ZV93cml0ZShnbXUsIHF1ZXVlLCBkYXRhLCBkd29yZHMpOwogCWlmIChyZXQpIHsK IAkJZGV2X2VycihnbXUtPmRldiwgIlVuYWJsZSB0byBzZW5kIG1lc3NhZ2UgJXMgaWQgJWRcbiIs CiAJCQlhNnh4X2hmaV9tc2dfaWRbaWRdLCBzZXFudW0pOwotCQlnb3RvIG91dDsKLQl9Ci0KLQkv KiBXYWl0IHVwIHRvIDUgc2Vjb25kcyBmb3IgdGhlIHJlc3BvbnNlICovCi0JcmV0ID0gd2FpdF9m b3JfY29tcGxldGlvbl90aW1lb3V0KCZyZXNwLmNvbXBsZXRlLAotCQltc2Vjc190b19qaWZmaWVz KDUwMDApKTsKLQlpZiAoIXJldCkgewotCQlkZXZfZXJyKGdtdS0+ZGV2LAotCQkJIk1lc3NhZ2Ug JXMgaWQgJWQgdGltZWQgb3V0IHdhaXRpbmcgZm9yIHJlc3BvbnNlXG4iLAotCQkJYTZ4eF9oZmlf bXNnX2lkW2lkXSwgc2VxbnVtKTsKLQkJcmV0ID0gLUVUSU1FRE9VVDsKLQl9IGVsc2UKLQkJcmV0 ID0gMDsKLQotb3V0OgotCXNwaW5fbG9ja19iaCgmaGZpX2Fja19sb2NrKTsKLQlsaXN0X2RlbCgm cmVzcC5ub2RlKTsKLQlzcGluX3VubG9ja19iaCgmaGZpX2Fja19sb2NrKTsKLQotCWlmIChyZXQp CiAJCXJldHVybiByZXQ7Ci0KLQlpZiAocmVzcC5lcnJvcikgewotCQlkZXZfZXJyKGdtdS0+ZGV2 LCAiTWVzc2FnZSAlcyBpZCAlZCByZXR1cm5lZCBlcnJvciAlZFxuIiwKLQkJCWE2eHhfaGZpX21z Z19pZFtpZF0sIHNlcW51bSwgcmVzcC5lcnJvcik7Ci0JCXJldHVybiAtRUlOVkFMOwogCX0KIAot CWlmIChwYXlsb2FkICYmIHBheWxvYWRfc2l6ZSkgewotCQlpbnQgY29weSA9IG1pbl90KHUzMiwg cGF5bG9hZF9zaXplLCBzaXplb2YocmVzcC5wYXlsb2FkKSk7Ci0KLQkJbWVtY3B5KHBheWxvYWQs IHJlc3AucGF5bG9hZCwgY29weSk7Ci0JfQotCi0JcmV0dXJuIDA7CisJcmV0dXJuIGE2eHhfaGZp X3dhaXRfZm9yX2FjayhnbXUsIGlkLCBzZXFudW0sIHBheWxvYWQsIHBheWxvYWRfc2l6ZSk7CiB9 CiAKIHN0YXRpYyBpbnQgYTZ4eF9oZmlfc2VuZF9nbXVfaW5pdChzdHJ1Y3QgYTZ4eF9nbXUgKmdt dSwgaW50IGJvb3Rfc3RhdGUpCi0tIAoyLjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZyZWVkcmVubwo=