From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 4/8] drm/amdgpu: invalidate only the currently needed VMHUB v2 Date: Tue, 11 Apr 2017 10:44:16 +0200 Message-ID: <1491900260-10001-4-git-send-email-deathsimple@vodafone.de> References: <1491900260-10001-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1491900260-10001-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@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 RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKRHJvcCBp bnZhbGlkYXRpbmcgYm90aCBodWJzIGZyb20gZWFjaCBlbmdpbmUuCgp2MjogZG9uJ3QgdXNlIGhh cmRjb2RlZCB2YWx1ZXMKClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlh bi5rb2VuaWdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRl dWNoZXJAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdt YWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyB8ICAg MyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYyAgfCAgMzYgKysrKyst LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jIHwgIDYwICsrKysr KysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYyAgfCAx MTEgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS92Y2VfdjRfMC5jICB8ICA1NyArKysrKysrKy0tLS0tLS0tLQogNSBmaWxlcyBjaGFu Z2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZtLmMKaW5kZXggZGI0N2M1MS4uZDZhNjg3MyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKQEAgLTQwNiw4ICs0MDYsNyBAQCBpbnQgYW1kZ3B1 X3ZtX2dyYWJfaWQoc3RydWN0IGFtZGdwdV92bSAqdm0sIHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZywKIAkJICAgICAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiA9IHJpbmctPmFkZXY7Ci0JLyogVGVtcG9yYXJ5IHVzZSBvbmx5IHRoZSBmaXJz dCBWTSBtYW5hZ2VyICovCi0JdW5zaWduZWQgdm1odWIgPSAwOyAvKnJpbmctPmZ1bmNzLT52bWh1 YjsqLworCXVuc2lnbmVkIHZtaHViID0gcmluZy0+ZnVuY3MtPnZtaHViOwogCXN0cnVjdCBhbWRn cHVfdm1faWRfbWFuYWdlciAqaWRfbWdyID0gJmFkZXYtPnZtX21hbmFnZXIuaWRfbWdyW3ZtaHVi XTsKIAl1aW50NjRfdCBmZW5jZV9jb250ZXh0ID0gYWRldi0+ZmVuY2VfY29udGV4dCArIHJpbmct PmlkeDsKIAlzdHJ1Y3QgZmVuY2UgKnVwZGF0ZXMgPSBzeW5jLT5sYXN0X3ZtX3VwZGF0ZTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCmluZGV4IGM4YmYyYzYuLjU1YTE3Y2UgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwpAQCAtMjk1NiwzNSArMjk1NiwyOSBA QCBzdGF0aWMgdm9pZCBnZnhfdjlfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYyhzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcpCiBzdGF0aWMgdm9pZCBnZnhfdjlfMF9yaW5nX2VtaXRfdm1fZmx1c2go c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAogCQkJCQl1bnNpZ25lZCB2bV9pZCwgdWludDY0X3Qg cGRfYWRkcikKIHsKKwlzdHJ1Y3QgYW1kZ3B1X3ZtaHViICpodWIgPSAmcmluZy0+YWRldi0+dm1o dWJbcmluZy0+ZnVuY3MtPnZtaHViXTsKIAlpbnQgdXNlcGZwID0gKHJpbmctPmZ1bmNzLT50eXBl ID09IEFNREdQVV9SSU5HX1RZUEVfR0ZYKTsKIAl1aW50MzJfdCByZXEgPSByaW5nLT5hZGV2LT5n YXJ0LmdhcnRfZnVuY3MtPmdldF9pbnZhbGlkYXRlX3JlcSh2bV9pZCk7CiAJdW5zaWduZWQgZW5n ID0gcmluZy0+aWR4OwotCXVuc2lnbmVkIGk7CiAKIAlwZF9hZGRyID0gcGRfYWRkciB8IDB4MTsg LyogdmFsaWQgYml0ICovCiAJLyogbm93IG9ubHkgdXNlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBv ZiBQREUgYW5kIHZhbGlkICovCiAJQlVHX09OKHBkX2FkZHIgJiAweEZGRkYwMDAwMDAwMDAwM0VV TEwpOwogCi0JZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfVk1IVUJTOyArK2kpIHsKLQkJc3Ry dWN0IGFtZGdwdV92bWh1YiAqaHViID0gJnJpbmctPmFkZXYtPnZtaHViW2ldOwotCi0JCWdmeF92 OV8wX3dyaXRlX2RhdGFfdG9fcmVnKHJpbmcsIHVzZXBmcCwgdHJ1ZSwKLQkJCQkJICAgaHViLT5j dHgwX3B0Yl9hZGRyX2xvMzIKLQkJCQkJICAgKyAoMiAqIHZtX2lkKSwKLQkJCQkJICAgbG93ZXJf MzJfYml0cyhwZF9hZGRyKSk7CisJZ2Z4X3Y5XzBfd3JpdGVfZGF0YV90b19yZWcocmluZywgdXNl cGZwLCB0cnVlLAorCQkJCSAgIGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsgKDIgKiB2bV9pZCks CisJCQkJICAgbG93ZXJfMzJfYml0cyhwZF9hZGRyKSk7CiAKLQkJZ2Z4X3Y5XzBfd3JpdGVfZGF0 YV90b19yZWcocmluZywgdXNlcGZwLCB0cnVlLAotCQkJCQkgICBodWItPmN0eDBfcHRiX2FkZHJf aGkzMgotCQkJCQkgICArICgyICogdm1faWQpLAotCQkJCQkgICB1cHBlcl8zMl9iaXRzKHBkX2Fk ZHIpKTsKKwlnZnhfdjlfMF93cml0ZV9kYXRhX3RvX3JlZyhyaW5nLCB1c2VwZnAsIHRydWUsCisJ CQkJICAgaHViLT5jdHgwX3B0Yl9hZGRyX2hpMzIgKyAoMiAqIHZtX2lkKSwKKwkJCQkgICB1cHBl cl8zMl9iaXRzKHBkX2FkZHIpKTsKIAotCQlnZnhfdjlfMF93cml0ZV9kYXRhX3RvX3JlZyhyaW5n LCB1c2VwZnAsIHRydWUsCi0JCQkJCSAgIGh1Yi0+dm1faW52X2VuZzBfcmVxICsgZW5nLCByZXEp OworCWdmeF92OV8wX3dyaXRlX2RhdGFfdG9fcmVnKHJpbmcsIHVzZXBmcCwgdHJ1ZSwKKwkJCQkg ICBodWItPnZtX2ludl9lbmcwX3JlcSArIGVuZywgcmVxKTsKIAotCQkvKiB3YWl0IGZvciB0aGUg aW52YWxpZGF0ZSB0byBjb21wbGV0ZSAqLwotCQlnZnhfdjlfMF93YWl0X3JlZ19tZW0ocmluZywg MCwgMCwgMCwgaHViLT52bV9pbnZfZW5nMF9hY2sgKwotCQkJCSAgICAgIGVuZywgMCwgMSA8PCB2 bV9pZCwgMSA8PCB2bV9pZCwgMHgyMCk7Ci0JfQorCS8qIHdhaXQgZm9yIHRoZSBpbnZhbGlkYXRl IHRvIGNvbXBsZXRlICovCisJZ2Z4X3Y5XzBfd2FpdF9yZWdfbWVtKHJpbmcsIDAsIDAsIDAsIGh1 Yi0+dm1faW52X2VuZzBfYWNrICsKKwkJCSAgICAgIGVuZywgMCwgMSA8PCB2bV9pZCwgMSA8PCB2 bV9pZCwgMHgyMCk7CiAKIAkvKiBjb21wdXRlIGRvZXNuJ3QgaGF2ZSBQRlAgKi8KIAlpZiAodXNl cGZwKSB7CkBAIC0zNDYzLDcgKzM0NTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9y aW5nX2Z1bmNzIGdmeF92OV8wX3JpbmdfZnVuY3NfZ2Z4ID0gewogCS5lbWl0X2ZyYW1lX3NpemUg PSAvKiB0b3RhbGx5IDI0MiBtYXhpbXVtIGlmIDE2IElCcyAqLwogCQk1ICsgIC8qIENPTkRfRVhF QyAqLwogCQk3ICsgIC8qIFBJUEVMSU5FX1NZTkMgKi8KLQkJNDYgKyAvKiBWTV9GTFVTSCAqLwor CQkyNCArIC8qIFZNX0ZMVVNIICovCiAJCTggKyAgLyogRkVOQ0UgZm9yIFZNX0ZMVVNIICovCiAJ CTIwICsgLyogR0RTIHN3aXRjaCAqLwogCQk0ICsgLyogZG91YmxlIFNXSVRDSF9CVUZGRVIsCkBA IC0zNTEwLDcgKzM1MDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNz IGdmeF92OV8wX3JpbmdfZnVuY3NfY29tcHV0ZSA9IHsKIAkJNyArIC8qIGdmeF92OV8wX3Jpbmdf ZW1pdF9oZHBfZmx1c2ggKi8KIAkJNSArIC8qIGdmeF92OV8wX3JpbmdfZW1pdF9oZHBfaW52YWxp ZGF0ZSAqLwogCQk3ICsgLyogZ2Z4X3Y5XzBfcmluZ19lbWl0X3BpcGVsaW5lX3N5bmMgKi8KLQkJ NjQgKyAvKiBnZnhfdjlfMF9yaW5nX2VtaXRfdm1fZmx1c2ggKi8KKwkJMjQgKyAvKiBnZnhfdjlf MF9yaW5nX2VtaXRfdm1fZmx1c2ggKi8KIAkJOCArIDggKyA4LCAvKiBnZnhfdjlfMF9yaW5nX2Vt aXRfZmVuY2UgeDMgZm9yIHVzZXIgZmVuY2UsIHZtIGZlbmNlICovCiAJLmVtaXRfaWJfc2l6ZSA9 CTQsIC8qIGdmeF92OV8wX3JpbmdfZW1pdF9pYl9jb21wdXRlICovCiAJLmVtaXRfaWIgPSBnZnhf djlfMF9yaW5nX2VtaXRfaWJfY29tcHV0ZSwKQEAgLTM1NDAsNyArMzUzNCw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgZ2Z4X3Y5XzBfcmluZ19mdW5jc19raXEgPSB7 CiAJCTcgKyAvKiBnZnhfdjlfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoICovCiAJCTUgKyAvKiBnZnhf djlfMF9yaW5nX2VtaXRfaGRwX2ludmFsaWRhdGUgKi8KIAkJNyArIC8qIGdmeF92OV8wX3Jpbmdf ZW1pdF9waXBlbGluZV9zeW5jICovCi0JCTY0ICsgLyogZ2Z4X3Y5XzBfcmluZ19lbWl0X3ZtX2Zs dXNoICovCisJCTI0ICsgLyogZ2Z4X3Y5XzBfcmluZ19lbWl0X3ZtX2ZsdXNoICovCiAJCTggKyA4 ICsgOCwgLyogZ2Z4X3Y5XzBfcmluZ19lbWl0X2ZlbmNlX2tpcSB4MyBmb3IgdXNlciBmZW5jZSwg dm0gZmVuY2UgKi8KIAkuZW1pdF9pYl9zaXplID0JNCwgLyogZ2Z4X3Y5XzBfcmluZ19lbWl0X2li X2NvbXB1dGUgKi8KIAkuZW1pdF9pYiA9IGdmeF92OV8wX3JpbmdfZW1pdF9pYl9jb21wdXRlLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwppbmRleCA4Y2JiNDlkLi5hZGQ5Mzcx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYwpAQCAtMTAzOSw0NCArMTAz OSw0MCBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBfcmluZ19lbWl0X3BpcGVsaW5lX3N5bmMoc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nKQogc3RhdGljIHZvaWQgc2RtYV92NF8wX3JpbmdfZW1pdF92 bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCiAJCQkJCSB1bnNpZ25lZCB2bV9pZCwg dWludDY0X3QgcGRfYWRkcikKIHsKKwlzdHJ1Y3QgYW1kZ3B1X3ZtaHViICpodWIgPSAmcmluZy0+ YWRldi0+dm1odWJbcmluZy0+ZnVuY3MtPnZtaHViXTsKIAl1aW50MzJfdCByZXEgPSByaW5nLT5h ZGV2LT5nYXJ0LmdhcnRfZnVuY3MtPmdldF9pbnZhbGlkYXRlX3JlcSh2bV9pZCk7CiAJdW5zaWdu ZWQgZW5nID0gcmluZy0+aWR4OwotCXVuc2lnbmVkIGk7CiAKIAlwZF9hZGRyID0gcGRfYWRkciB8 IDB4MTsgLyogdmFsaWQgYml0ICovCiAJLyogbm93IG9ubHkgdXNlIHBoeXNpY2FsIGJhc2UgYWRk cmVzcyBvZiBQREUgYW5kIHZhbGlkICovCiAJQlVHX09OKHBkX2FkZHIgJiAweEZGRkYwMDAwMDAw MDAwM0VVTEwpOwogCi0JZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfVk1IVUJTOyArK2kpIHsK LQkJc3RydWN0IGFtZGdwdV92bWh1YiAqaHViID0gJnJpbmctPmFkZXYtPnZtaHViW2ldOwotCi0J CWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFNETUFfUEtUX0hFQURFUl9PUChTRE1BX09QX1NSQk1f V1JJVEUpIHwKLQkJCQkgIFNETUFfUEtUX1NSQk1fV1JJVEVfSEVBREVSX0JZVEVfRU4oMHhmKSk7 Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsgdm1f aWQgKiAyKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJfYml0cyhwZF9hZGRy KSk7Ci0KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgU0RNQV9QS1RfSEVBREVSX09QKFNETUFf T1BfU1JCTV9XUklURSkgfAotCQkJCSAgU0RNQV9QS1RfU1JCTV9XUklURV9IRUFERVJfQllURV9F TigweGYpKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgaHViLT5jdHgwX3B0Yl9hZGRyX2hp MzIgKyB2bV9pZCAqIDIpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCB1cHBlcl8zMl9iaXRz KHBkX2FkZHIpKTsKLQotCQkvKiBmbHVzaCBUTEIgKi8KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgU0RNQV9QS1RfSEVBREVSX09QKFNETUFfT1BfU1JCTV9XUklURSkgfAotCQkJCSAgU0RNQV9Q S1RfU1JCTV9XUklURV9IRUFERVJfQllURV9FTigweGYpKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUo cmluZywgaHViLT52bV9pbnZfZW5nMF9yZXEgKyBlbmcpOwotCQlhbWRncHVfcmluZ193cml0ZShy aW5nLCByZXEpOwotCi0JCS8qIHdhaXQgZm9yIGZsdXNoICovCi0JCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIFNETUFfUEtUX0hFQURFUl9PUChTRE1BX09QX1BPTExfUkVHTUVNKSB8Ci0JCQkJICBT RE1BX1BLVF9QT0xMX1JFR01FTV9IRUFERVJfSERQX0ZMVVNIKDApIHwKLQkJCQkgIFNETUFfUEtU X1BPTExfUkVHTUVNX0hFQURFUl9GVU5DKDMpKTsgLyogZXF1YWwgKi8KLQkJYW1kZ3B1X3Jpbmdf d3JpdGUocmluZywgKGh1Yi0+dm1faW52X2VuZzBfYWNrICsgZW5nKSA8PCAyKTsKLQkJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgMCk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDEgPDwgdm1f aWQpOyAvKiByZWZlcmVuY2UgKi8KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMSA8PCB2bV9p ZCk7IC8qIG1hc2sgKi8KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgU0RNQV9QS1RfUE9MTF9S RUdNRU1fRFc1X1JFVFJZX0NPVU5UKDB4ZmZmKSB8Ci0JCQkJICBTRE1BX1BLVF9QT0xMX1JFR01F TV9EVzVfSU5URVJWQUwoMTApKTsKLQl9CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgU0RNQV9Q S1RfSEVBREVSX09QKFNETUFfT1BfU1JCTV9XUklURSkgfAorCQkJICBTRE1BX1BLVF9TUkJNX1dS SVRFX0hFQURFUl9CWVRFX0VOKDB4ZikpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGh1Yi0+ Y3R4MF9wdGJfYWRkcl9sbzMyICsgdm1faWQgKiAyKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5n LCBsb3dlcl8zMl9iaXRzKHBkX2FkZHIpKTsKKworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFNE TUFfUEtUX0hFQURFUl9PUChTRE1BX09QX1NSQk1fV1JJVEUpIHwKKwkJCSAgU0RNQV9QS1RfU1JC TV9XUklURV9IRUFERVJfQllURV9FTigweGYpKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBo dWItPmN0eDBfcHRiX2FkZHJfaGkzMiArIHZtX2lkICogMik7CisJYW1kZ3B1X3Jpbmdfd3JpdGUo cmluZywgdXBwZXJfMzJfYml0cyhwZF9hZGRyKSk7CisKKwkvKiBmbHVzaCBUTEIgKi8KKwlhbWRn cHVfcmluZ193cml0ZShyaW5nLCBTRE1BX1BLVF9IRUFERVJfT1AoU0RNQV9PUF9TUkJNX1dSSVRF KSB8CisJCQkgIFNETUFfUEtUX1NSQk1fV1JJVEVfSEVBREVSX0JZVEVfRU4oMHhmKSk7CisJYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgaHViLT52bV9pbnZfZW5nMF9yZXEgKyBlbmcpOworCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsIHJlcSk7CisKKwkvKiB3YWl0IGZvciBmbHVzaCAqLworCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsIFNETUFfUEtUX0hFQURFUl9PUChTRE1BX09QX1BPTExfUkVHTUVN KSB8CisJCQkgIFNETUFfUEtUX1BPTExfUkVHTUVNX0hFQURFUl9IRFBfRkxVU0goMCkgfAorCQkJ ICBTRE1BX1BLVF9QT0xMX1JFR01FTV9IRUFERVJfRlVOQygzKSk7IC8qIGVxdWFsICovCisJYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgKGh1Yi0+dm1faW52X2VuZzBfYWNrICsgZW5nKSA8PCAyKTsK KwlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCAx IDw8IHZtX2lkKTsgLyogcmVmZXJlbmNlICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMSA8 PCB2bV9pZCk7IC8qIG1hc2sgKi8KKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBTRE1BX1BLVF9Q T0xMX1JFR01FTV9EVzVfUkVUUllfQ09VTlQoMHhmZmYpIHwKKwkJCSAgU0RNQV9QS1RfUE9MTF9S RUdNRU1fRFc1X0lOVEVSVkFMKDEwKSk7CiB9CiAKIHN0YXRpYyBpbnQgc2RtYV92NF8wX2Vhcmx5 X2luaXQodm9pZCAqaGFuZGxlKQpAQCAtMTQ4MSw3ICsxNDc3LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBhbWRncHVfcmluZ19mdW5jcyBzZG1hX3Y0XzBfcmluZ19mdW5jcyA9IHsKIAkJNiArIC8q IHNkbWFfdjRfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoICovCiAJCTMgKyAvKiBzZG1hX3Y0XzBfcmlu Z19lbWl0X2hkcF9pbnZhbGlkYXRlICovCiAJCTYgKyAvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X3Bp cGVsaW5lX3N5bmMgKi8KLQkJMzYgKyAvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X3ZtX2ZsdXNoICov CisJCTE4ICsgLyogc2RtYV92NF8wX3JpbmdfZW1pdF92bV9mbHVzaCAqLwogCQkxMCArIDEwICsg MTAsIC8qIHNkbWFfdjRfMF9yaW5nX2VtaXRfZmVuY2UgeDMgZm9yIHVzZXIgZmVuY2UsIHZtIGZl bmNlICovCiAJLmVtaXRfaWJfc2l6ZSA9IDcgKyA2LCAvKiBzZG1hX3Y0XzBfcmluZ19lbWl0X2li ICovCiAJLmVtaXRfaWIgPSBzZG1hX3Y0XzBfcmluZ19lbWl0X2liLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L3V2ZF92N18wLmMKaW5kZXggZmE4MDQ2NS4uNDVlODZmOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y3XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS91dmRfdjdfMC5jCkBAIC0xMDM0LDQyICsxMDM0LDM4IEBAIHN0YXRpYyB2b2lk IHV2ZF92N18wX3ZtX3JlZ193YWl0KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIHN0YXRpYyB2 b2lkIHV2ZF92N18wX3JpbmdfZW1pdF92bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs CiAJCQkJCXVuc2lnbmVkIHZtX2lkLCB1aW50NjRfdCBwZF9hZGRyKQogeworCXN0cnVjdCBhbWRn cHVfdm1odWIgKmh1YiA9ICZyaW5nLT5hZGV2LT52bWh1YltyaW5nLT5mdW5jcy0+dm1odWJdOwog CXVpbnQzMl90IHJlcSA9IHJpbmctPmFkZXYtPmdhcnQuZ2FydF9mdW5jcy0+Z2V0X2ludmFsaWRh dGVfcmVxKHZtX2lkKTsKIAl1aW50MzJfdCBkYXRhMCwgZGF0YTEsIG1hc2s7CiAJdW5zaWduZWQg ZW5nID0gcmluZy0+aWR4OwotCXVuc2lnbmVkIGk7CiAKIAlwZF9hZGRyID0gcGRfYWRkciB8IDB4 MTsgLyogdmFsaWQgYml0ICovCiAJLyogbm93IG9ubHkgdXNlIHBoeXNpY2FsIGJhc2UgYWRkcmVz cyBvZiBQREUgYW5kIHZhbGlkICovCiAJQlVHX09OKHBkX2FkZHIgJiAweEZGRkYwMDAwMDAwMDAw M0VVTEwpOwogCi0JZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfVk1IVUJTOyArK2kpIHsKLQkJ c3RydWN0IGFtZGdwdV92bWh1YiAqaHViID0gJnJpbmctPmFkZXYtPnZtaHViW2ldOwotCi0JCWRh dGEwID0gKGh1Yi0+Y3R4MF9wdGJfYWRkcl9oaTMyICsgdm1faWQgKiAyKSA8PCAyOwotCQlkYXRh MSA9IHVwcGVyXzMyX2JpdHMocGRfYWRkcik7Ci0JCXV2ZF92N18wX3ZtX3JlZ193cml0ZShyaW5n LCBkYXRhMCwgZGF0YTEpOwotCi0JCWRhdGEwID0gKGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsg dm1faWQgKiAyKSA8PCAyOwotCQlkYXRhMSA9IGxvd2VyXzMyX2JpdHMocGRfYWRkcik7Ci0JCXV2 ZF92N18wX3ZtX3JlZ193cml0ZShyaW5nLCBkYXRhMCwgZGF0YTEpOwotCi0JCWRhdGEwID0gKGh1 Yi0+Y3R4MF9wdGJfYWRkcl9sbzMyICsgdm1faWQgKiAyKSA8PCAyOwotCQlkYXRhMSA9IGxvd2Vy XzMyX2JpdHMocGRfYWRkcik7Ci0JCW1hc2sgPSAweGZmZmZmZmZmOwotCQl1dmRfdjdfMF92bV9y ZWdfd2FpdChyaW5nLCBkYXRhMCwgZGF0YTEsIG1hc2spOwotCi0JCS8qIGZsdXNoIFRMQiAqLwot CQlkYXRhMCA9IChodWItPnZtX2ludl9lbmcwX3JlcSArIGVuZykgPDwgMjsKLQkJZGF0YTEgPSBy ZXE7Ci0JCXV2ZF92N18wX3ZtX3JlZ193cml0ZShyaW5nLCBkYXRhMCwgZGF0YTEpOwotCi0JCS8q IHdhaXQgZm9yIGZsdXNoICovCi0JCWRhdGEwID0gKGh1Yi0+dm1faW52X2VuZzBfYWNrICsgZW5n KSA8PCAyOwotCQlkYXRhMSA9IDEgPDwgdm1faWQ7Ci0JCW1hc2sgPSAgMSA8PCB2bV9pZDsKLQkJ dXZkX3Y3XzBfdm1fcmVnX3dhaXQocmluZywgZGF0YTAsIGRhdGExLCBtYXNrKTsKLQl9CisJZGF0 YTAgPSAoaHViLT5jdHgwX3B0Yl9hZGRyX2hpMzIgKyB2bV9pZCAqIDIpIDw8IDI7CisJZGF0YTEg PSB1cHBlcl8zMl9iaXRzKHBkX2FkZHIpOworCXV2ZF92N18wX3ZtX3JlZ193cml0ZShyaW5nLCBk YXRhMCwgZGF0YTEpOworCisJZGF0YTAgPSAoaHViLT5jdHgwX3B0Yl9hZGRyX2xvMzIgKyB2bV9p ZCAqIDIpIDw8IDI7CisJZGF0YTEgPSBsb3dlcl8zMl9iaXRzKHBkX2FkZHIpOworCXV2ZF92N18w X3ZtX3JlZ193cml0ZShyaW5nLCBkYXRhMCwgZGF0YTEpOworCisJZGF0YTAgPSAoaHViLT5jdHgw X3B0Yl9hZGRyX2xvMzIgKyB2bV9pZCAqIDIpIDw8IDI7CisJZGF0YTEgPSBsb3dlcl8zMl9iaXRz KHBkX2FkZHIpOworCW1hc2sgPSAweGZmZmZmZmZmOworCXV2ZF92N18wX3ZtX3JlZ193YWl0KHJp bmcsIGRhdGEwLCBkYXRhMSwgbWFzayk7CisKKwkvKiBmbHVzaCBUTEIgKi8KKwlkYXRhMCA9ICho dWItPnZtX2ludl9lbmcwX3JlcSArIGVuZykgPDwgMjsKKwlkYXRhMSA9IHJlcTsKKwl1dmRfdjdf MF92bV9yZWdfd3JpdGUocmluZywgZGF0YTAsIGRhdGExKTsKKworCS8qIHdhaXQgZm9yIGZsdXNo ICovCisJZGF0YTAgPSAoaHViLT52bV9pbnZfZW5nMF9hY2sgKyBlbmcpIDw8IDI7CisJZGF0YTEg PSAxIDw8IHZtX2lkOworCW1hc2sgPSAgMSA8PCB2bV9pZDsKKwl1dmRfdjdfMF92bV9yZWdfd2Fp dChyaW5nLCBkYXRhMCwgZGF0YTEsIG1hc2spOwogfQogCiBzdGF0aWMgdm9pZCB1dmRfdjdfMF9l bmNfcmluZ19pbnNlcnRfZW5kKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKQEAgLTEwODAsNDQg KzEwNzYsMzcgQEAgc3RhdGljIHZvaWQgdXZkX3Y3XzBfZW5jX3JpbmdfaW5zZXJ0X2VuZChzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiBzdGF0aWMgdm9pZCB1dmRfdjdfMF9lbmNfcmluZ19lbWl0 X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAkJCSB1bnNpZ25lZCBpbnQgdm1f aWQsIHVpbnQ2NF90IHBkX2FkZHIpCiB7CisJc3RydWN0IGFtZGdwdV92bWh1YiAqaHViID0gJnJp bmctPmFkZXYtPnZtaHViW3JpbmctPmZ1bmNzLT52bWh1Yl07CiAJdWludDMyX3QgcmVxID0gcmlu Zy0+YWRldi0+Z2FydC5nYXJ0X2Z1bmNzLT5nZXRfaW52YWxpZGF0ZV9yZXEodm1faWQpOwogCXVu c2lnbmVkIGVuZyA9IHJpbmctPmlkeDsKLQl1bnNpZ25lZCBpOwogCiAJcGRfYWRkciA9IHBkX2Fk ZHIgfCAweDE7IC8qIHZhbGlkIGJpdCAqLwogCS8qIG5vdyBvbmx5IHVzZSBwaHlzaWNhbCBiYXNl IGFkZHJlc3Mgb2YgUERFIGFuZCB2YWxpZCAqLwogCUJVR19PTihwZF9hZGRyICYgMHhGRkZGMDAw MDAwMDAwMDNFVUxMKTsKIAotCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1ZNSFVCUzsgKytp KSB7Ci0JCXN0cnVjdCBhbWRncHVfdm1odWIgKmh1YiA9ICZyaW5nLT5hZGV2LT52bWh1YltpXTsK LQotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBIRVZDX0VOQ19DTURfUkVHX1dSSVRFKTsKLQkJ YW1kZ3B1X3Jpbmdfd3JpdGUocmluZywKLQkJCShodWItPmN0eDBfcHRiX2FkZHJfaGkzMiArIHZt X2lkICogMikgPDwgMik7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMo cGRfYWRkcikpOwotCi0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIEhFVkNfRU5DX0NNRF9SRUdf V1JJVEUpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLAotCQkJKGh1Yi0+Y3R4MF9wdGJfYWRk cl9sbzMyICsgdm1faWQgKiAyKSA8PCAyKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93 ZXJfMzJfYml0cyhwZF9hZGRyKSk7Ci0KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgSEVWQ19F TkNfQ01EX1JFR19XQUlUKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywKLQkJCShodWItPmN0 eDBfcHRiX2FkZHJfbG8zMiArIHZtX2lkICogMikgPDwgMik7Ci0JCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIDB4ZmZmZmZmZmYpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8zMl9i aXRzKHBkX2FkZHIpKTsKLQotCQkvKiBmbHVzaCBUTEIgKi8KLQkJYW1kZ3B1X3Jpbmdfd3JpdGUo cmluZywgSEVWQ19FTkNfQ01EX1JFR19XUklURSk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs CShodWItPnZtX2ludl9lbmcwX3JlcSArIGVuZykgPDwgMik7Ci0JCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIHJlcSk7Ci0KLQkJLyogd2FpdCBmb3IgZmx1c2ggKi8KLQkJYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgSEVWQ19FTkNfQ01EX1JFR19XQUlUKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgKGh1Yi0+dm1faW52X2VuZzBfYWNrICsgZW5nKSA8PCAyKTsKLQkJYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgMSA8PCB2bV9pZCk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDEgPDwgdm1f aWQpOwotCX0KKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBIRVZDX0VOQ19DTURfUkVHX1dSSVRF KTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLAkoaHViLT5jdHgwX3B0Yl9hZGRyX2hpMzIgKyB2 bV9pZCAqIDIpIDw8IDIpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMo cGRfYWRkcikpOworCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgSEVWQ19FTkNfQ01EX1JFR19X UklURSk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJKGh1Yi0+Y3R4MF9wdGJfYWRkcl9sbzMy ICsgdm1faWQgKiAyKSA8PCAyKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8zMl9i aXRzKHBkX2FkZHIpKTsKKworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIEhFVkNfRU5DX0NNRF9S RUdfV0FJVCk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywJKGh1Yi0+Y3R4MF9wdGJfYWRkcl9s bzMyICsgdm1faWQgKiAyKSA8PCAyKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCAweGZmZmZm ZmZmKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8zMl9iaXRzKHBkX2FkZHIpKTsK KworCS8qIGZsdXNoIFRMQiAqLworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIEhFVkNfRU5DX0NN RF9SRUdfV1JJVEUpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCShodWItPnZtX2ludl9lbmcw X3JlcSArIGVuZykgPDwgMik7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgcmVxKTsKKworCS8q IHdhaXQgZm9yIGZsdXNoICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgSEVWQ19FTkNfQ01E X1JFR19XQUlUKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCAoaHViLT52bV9pbnZfZW5nMF9h Y2sgKyBlbmcpIDw8IDIpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDEgPDwgdm1faWQpOwor CWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDEgPDwgdm1faWQpOwogfQogCiAjaWYgMApAQCAtMTQ1 NSw3ICsxNDQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyB1dmRf djdfMF9yaW5nX3ZtX2Z1bmNzID0gewogCS5lbWl0X2ZyYW1lX3NpemUgPQogCQkyICsgLyogdXZk X3Y3XzBfcmluZ19lbWl0X2hkcF9mbHVzaCAqLwogCQkyICsgLyogdXZkX3Y3XzBfcmluZ19lbWl0 X2hkcF9pbnZhbGlkYXRlICovCi0JCTM0ICogQU1ER1BVX01BWF9WTUhVQlMgKyAvKiB1dmRfdjdf MF9yaW5nX2VtaXRfdm1fZmx1c2ggKi8KKwkJMzQgKyAvKiB1dmRfdjdfMF9yaW5nX2VtaXRfdm1f Zmx1c2ggKi8KIAkJMTQgKyAxNCwgLyogdXZkX3Y3XzBfcmluZ19lbWl0X2ZlbmNlIHgyIHZtIGZl bmNlICovCiAJLmVtaXRfaWJfc2l6ZSA9IDgsIC8qIHV2ZF92N18wX3JpbmdfZW1pdF9pYiAqLwog CS5lbWl0X2liID0gdXZkX3Y3XzBfcmluZ19lbWl0X2liLApAQCAtMTQ4MSw3ICsxNDcwLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyB1dmRfdjdfMF9lbmNfcmluZ192 bV9mdW5jcyA9IHsKIAkuZ2V0X3dwdHIgPSB1dmRfdjdfMF9lbmNfcmluZ19nZXRfd3B0ciwKIAku c2V0X3dwdHIgPSB1dmRfdjdfMF9lbmNfcmluZ19zZXRfd3B0ciwKIAkuZW1pdF9mcmFtZV9zaXpl ID0KLQkJMTcgKiBBTURHUFVfTUFYX1ZNSFVCUyArIC8qIHV2ZF92N18wX2VuY19yaW5nX2VtaXRf dm1fZmx1c2ggKi8KKwkJMTcgKyAvKiB1dmRfdjdfMF9lbmNfcmluZ19lbWl0X3ZtX2ZsdXNoICov CiAJCTUgKyA1ICsgLyogdXZkX3Y3XzBfZW5jX3JpbmdfZW1pdF9mZW5jZSB4MiB2bSBmZW5jZSAq LwogCQkxLCAvKiB1dmRfdjdfMF9lbmNfcmluZ19pbnNlcnRfZW5kICovCiAJLmVtaXRfaWJfc2l6 ZSA9IDUsIC8qIHV2ZF92N18wX2VuY19yaW5nX2VtaXRfaWIgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZjZV92NF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS92Y2VfdjRfMC5jCmluZGV4IDA2MDg4OTFiLi5jNTY3ZDEzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y2VfdjRfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L3ZjZV92NF8wLmMKQEAgLTk2OCw0NCArOTY4LDM3IEBAIHN0YXRpYyB2b2lkIHZj ZV92NF8wX3JpbmdfaW5zZXJ0X2VuZChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiBzdGF0aWMg dm9pZCB2Y2VfdjRfMF9lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAkJ CSB1bnNpZ25lZCBpbnQgdm1faWQsIHVpbnQ2NF90IHBkX2FkZHIpCiB7CisJc3RydWN0IGFtZGdw dV92bWh1YiAqaHViID0gJnJpbmctPmFkZXYtPnZtaHViW3JpbmctPmZ1bmNzLT52bWh1Yl07CiAJ dWludDMyX3QgcmVxID0gcmluZy0+YWRldi0+Z2FydC5nYXJ0X2Z1bmNzLT5nZXRfaW52YWxpZGF0 ZV9yZXEodm1faWQpOwogCXVuc2lnbmVkIGVuZyA9IHJpbmctPmlkeDsKLQl1bnNpZ25lZCBpOwog CiAJcGRfYWRkciA9IHBkX2FkZHIgfCAweDE7IC8qIHZhbGlkIGJpdCAqLwogCS8qIG5vdyBvbmx5 IHVzZSBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgUERFIGFuZCB2YWxpZCAqLwogCUJVR19PTihw ZF9hZGRyICYgMHhGRkZGMDAwMDAwMDAwMDNFVUxMKTsKIAotCWZvciAoaSA9IDA7IGkgPCBBTURH UFVfTUFYX1ZNSFVCUzsgKytpKSB7Ci0JCXN0cnVjdCBhbWRncHVfdm1odWIgKmh1YiA9ICZyaW5n LT5hZGV2LT52bWh1YltpXTsKLQotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBWQ0VfQ01EX1JF R19XUklURSk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCi0JCQkoaHViLT5jdHgwX3B0Yl9h ZGRyX2hpMzIgKyB2bV9pZCAqIDIpIDw8IDIpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCB1 cHBlcl8zMl9iaXRzKHBkX2FkZHIpKTsKLQotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBWQ0Vf Q01EX1JFR19XUklURSk7Ci0JCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsCi0JCQkoaHViLT5jdHgw X3B0Yl9hZGRyX2xvMzIgKyB2bV9pZCAqIDIpIDw8IDIpOwotCQlhbWRncHVfcmluZ193cml0ZShy aW5nLCBsb3dlcl8zMl9iaXRzKHBkX2FkZHIpKTsKLQotCQlhbWRncHVfcmluZ193cml0ZShyaW5n LCBWQ0VfQ01EX1JFR19XQUlUKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywKLQkJCShodWIt PmN0eDBfcHRiX2FkZHJfbG8zMiArIHZtX2lkICogMikgPDwgMik7Ci0JCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIDB4ZmZmZmZmZmYpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8z Ml9iaXRzKHBkX2FkZHIpKTsKLQotCQkvKiBmbHVzaCBUTEIgKi8KLQkJYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgVkNFX0NNRF9SRUdfV1JJVEUpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLAko aHViLT52bV9pbnZfZW5nMF9yZXEgKyBlbmcpIDw8IDIpOwotCQlhbWRncHVfcmluZ193cml0ZShy aW5nLCByZXEpOwotCi0JCS8qIHdhaXQgZm9yIGZsdXNoICovCi0JCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIFZDRV9DTURfUkVHX1dBSVQpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCAoaHVi LT52bV9pbnZfZW5nMF9hY2sgKyBlbmcpIDw8IDIpOwotCQlhbWRncHVfcmluZ193cml0ZShyaW5n LCAxIDw8IHZtX2lkKTsKLQkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMSA8PCB2bV9pZCk7Ci0J fQorCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFZDRV9DTURfUkVHX1dSSVRFKTsKKwlhbWRncHVf cmluZ193cml0ZShyaW5nLAkoaHViLT5jdHgwX3B0Yl9hZGRyX2hpMzIgKyB2bV9pZCAqIDIpIDw8 IDIpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMocGRfYWRkcikpOwor CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgVkNFX0NNRF9SRUdfV1JJVEUpOworCWFtZGdwdV9y aW5nX3dyaXRlKHJpbmcsCShodWItPmN0eDBfcHRiX2FkZHJfbG8zMiArIHZtX2lkICogMikgPDwg Mik7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJfYml0cyhwZF9hZGRyKSk7CisK KwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBWQ0VfQ01EX1JFR19XQUlUKTsKKwlhbWRncHVfcmlu Z193cml0ZShyaW5nLAkoaHViLT5jdHgwX3B0Yl9hZGRyX2xvMzIgKyB2bV9pZCAqIDIpIDw8IDIp OworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDB4ZmZmZmZmZmYpOworCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIGxvd2VyXzMyX2JpdHMocGRfYWRkcikpOworCisJLyogZmx1c2ggVExCICovCisJ YW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgVkNFX0NNRF9SRUdfV1JJVEUpOworCWFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsCShodWItPnZtX2ludl9lbmcwX3JlcSArIGVuZykgPDwgMik7CisJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgcmVxKTsKKworCS8qIHdhaXQgZm9yIGZsdXNoICovCisJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgVkNFX0NNRF9SRUdfV0FJVCk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUo cmluZywgKGh1Yi0+dm1faW52X2VuZzBfYWNrICsgZW5nKSA8PCAyKTsKKwlhbWRncHVfcmluZ193 cml0ZShyaW5nLCAxIDw8IHZtX2lkKTsKKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCAxIDw8IHZt X2lkKTsKIH0KIAogc3RhdGljIGludCB2Y2VfdjRfMF9zZXRfaW50ZXJydXB0X3N0YXRlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTA3NSw3ICsxMDY4LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyB2Y2VfdjRfMF9yaW5nX3ZtX2Z1bmNzID0gewogCS5z ZXRfd3B0ciA9IHZjZV92NF8wX3Jpbmdfc2V0X3dwdHIsCiAJLnBhcnNlX2NzID0gYW1kZ3B1X3Zj ZV9yaW5nX3BhcnNlX2NzX3ZtLAogCS5lbWl0X2ZyYW1lX3NpemUgPQotCQkxNyAqIEFNREdQVV9N QVhfVk1IVUJTICsgLyogdmNlX3Y0XzBfZW1pdF92bV9mbHVzaCAqLworCQkxNyArIC8qIHZjZV92 NF8wX2VtaXRfdm1fZmx1c2ggKi8KIAkJNSArIDUgKyAvKiBhbWRncHVfdmNlX3JpbmdfZW1pdF9m ZW5jZSB4MiB2bSBmZW5jZSAqLwogCQkxLCAvKiB2Y2VfdjRfMF9yaW5nX2luc2VydF9lbmQgKi8K IAkuZW1pdF9pYl9zaXplID0gNSwgLyogdmNlX3Y0XzBfcmluZ19lbWl0X2liICovCi0tIAoyLjUu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==