From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 08/11] drm/msm: Support multiple ringbuffers Date: Tue, 7 Mar 2017 09:58:17 -0700 Message-ID: <1488905900-6603-9-git-send-email-jcrouse@codeaurora.org> References: <1486402779-9024-1-git-send-email-jcrouse@codeaurora.org> <1488905900-6603-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488905900-6603-1-git-send-email-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 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 QWRkIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoZSBpZGVhIG9mIG11bHRpcGxlIHJp bmdidWZmZXJzLgpBc3NpZ24gZWFjaCByaW5nYnVmZmVyIGFuIGlkIGFuZCB1c2UgdGhhdCBhcyBh biBpbmRleCBmb3IgdGhlIHZhcmlvdXMKcmluZyBzcGVjaWZpYyBvcGVyYXRpb25zLgoKVGhlIGJp Z2dlc3QgZGVsdGEgaXMgdG8gc3VwcG9ydCBsZWdhY3kgZmVuY2VzLiBFYWNoIGZlbmNlIGdldHMg aXRzIG93bgpzZXF1ZW5jZSBudW1iZXIgYnV0IHRoZSBsZWdhY3kgZnVuY3Rpb25zIGV4cGVjdCB0 byB1c2UgYSB1bmlxdWUgaW50ZWdlci4KVG8gaGFuZGxlIHRoaXMgd2UgcmV0dXJuIGEgdW5pcXVl IGlkZW50aWZlciBmb3IgZWFjaCBzdWJtaXNzaW9uIGJ1dAptYXAgaXQgdG8gYSBzcGVjaWZpYyBy aW5nL3NlcXVlbmNlIHVuZGVyIHRoZSBjb3ZlcnMuIE5ld2VyIHVzZXJzIHVzZQphIGRtYV9mZW5j ZSBwb2ludGVyIGFueXdheSBzbyB0aGV5IGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCBzZXF1 ZW5jZQpJRCBvciByaW5nLgoKVGhlIGFjdHVhbCBtZWNoYW5pY3MgZm9yIG11bHRpcGxlIHJpbmdi dWZmZXJzIGFyZSB2ZXJ5IHRhcmdldCBzcGVjaWZpYwpzbyB0aGlzIGNvZGUganVzdCBhbGxvd3Mg Zm9yIHRoZSBwb3NzaWJpbGl0eSBidXQgc3RpbGwgb25seSBkZWZpbmVzCm9uZSByaW5nYnVmZmVy IGZvciBlYWNoIHRhcmdldCBmYW1pbHkuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxq Y3JvdXNlQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2Ez eHhfZ3B1LmMgICB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUu YyAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jICAgfCAg NDUgKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5oICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfcG93ZXIuYyB8ICAgNiArLQog ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIHwgMTU2ICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9f Z3B1LmggfCAgMzYgKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAg ICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9mZW5jZS5jICAgICAgICAgfCAg ODUgKysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmggICAg ICAgICB8ICAxMyArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oICAgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMgICAgfCAgMTAgKy0K IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgICB8IDEyMyArKysrKysrKysr KysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaCAgICAgICAgICAg fCAgMzggKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYyAgICB8 ICAxMyArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaCAgICB8ICAgOCAr LQogaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmggICAgICAgICAgICAgIHwgICA1ICsKIDE3IGZp bGVzIGNoYW5nZWQsIDM3NSBpbnNlcnRpb25zKCspLCAxODYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMKaW5kZXggZmM0ZmQyZC4uMmY3Mjg0OCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jCkBAIC00NCw3ICs0NCw3IEBACiAKIHN0YXRp YyBib29sIGEzeHhfbWVfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewotCXN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5n ID0gZ3B1LT5yYlswXTsKIAogCU9VVF9QS1QzKHJpbmcsIENQX01FX0lOSVQsIDE3KTsKIAlPVVRf UklORyhyaW5nLCAweDAwMDAwM2Y3KTsKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGJvb2wgYTN4 eF9tZV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJT1VUX1JJTkcocmluZywgMHgwMDAwMDAw MCk7CiAJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CiAKLQlncHUtPmZ1bmNzLT5mbHVzaChn cHUpOworCWdwdS0+ZnVuY3MtPmZsdXNoKGdwdSwgcmluZyk7CiAJcmV0dXJuIGEzeHhfaWRsZShn cHUpOwogfQogCkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIHZvaWQgYTN4eF9kZXN0cm95KHN0 cnVjdCBtc21fZ3B1ICpncHUpCiBzdGF0aWMgYm9vbCBhM3h4X2lkbGUoc3RydWN0IG1zbV9ncHUg KmdwdSkKIHsKIAkvKiB3YWl0IGZvciByaW5nYnVmZmVyIHRvIGRyYWluOiAqLwotCWlmICghYWRy ZW5vX2lkbGUoZ3B1KSkKKwlpZiAoIWFkcmVub19pZGxlKGdwdSwgZ3B1LT5yYlswXSkpCiAJCXJl dHVybiBmYWxzZTsKIAogCS8qIHRoZW4gd2FpdCBmb3IgR1BVIHRvIGZpbmlzaDogKi8KQEAgLTQ0 OSw2ICs0NDksNyBAQCBzdGF0aWMgdm9pZCBhM3h4X2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSkK IAkJLmxhc3RfZmVuY2UgPSBhZHJlbm9fbGFzdF9mZW5jZSwKIAkJLnN1Ym1pdCA9IGFkcmVub19z dWJtaXQsCiAJCS5mbHVzaCA9IGFkcmVub19mbHVzaCwKKwkJLmFjdGl2ZV9yaW5nID0gYWRyZW5v X2FjdGl2ZV9yaW5nLAogCQkuaXJxID0gYTN4eF9pcnEsCiAJCS5kZXN0cm95ID0gYTN4eF9kZXN0 cm95LAogI2lmZGVmIENPTkZJR19ERUJVR19GUwpAQCAtNDk2LDcgKzQ5Nyw3IEBAIHN0cnVjdCBt c21fZ3B1ICphM3h4X2dwdV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJYWRyZW5vX2dw dS0+cmVnaXN0ZXJzID0gYTN4eF9yZWdpc3RlcnM7CiAJYWRyZW5vX2dwdS0+cmVnX29mZnNldHMg PSBhM3h4X3JlZ2lzdGVyX29mZnNldHM7CiAKLQlyZXQgPSBhZHJlbm9fZ3B1X2luaXQoZGV2LCBw ZGV2LCBhZHJlbm9fZ3B1LCAmZnVuY3MpOworCXJldCA9IGFkcmVub19ncHVfaW5pdChkZXYsIHBk ZXYsIGFkcmVub19ncHUsICZmdW5jcywgMSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYwppbmRleCA2YmM5NDhiLi5iZGQyYTI0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMKQEAgLTExNiw3ICsxMTYsNyBAQCBz dGF0aWMgdm9pZCBhNHh4X2VuYWJsZV9od2NnKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAKIHN0YXRp YyBib29sIGE0eHhfbWVfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewotCXN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5n ID0gZ3B1LT5yYlswXTsKIAogCU9VVF9QS1QzKHJpbmcsIENQX01FX0lOSVQsIDE3KTsKIAlPVVRf UklORyhyaW5nLCAweDAwMDAwM2Y3KTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgYm9vbCBh NHh4X21lX2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlPVVRfUklORyhyaW5nLCAweDAwMDAw MDAwKTsKIAlPVVRfUklORyhyaW5nLCAweDAwMDAwMDAwKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNo KGdwdSk7CisJZ3B1LT5mdW5jcy0+Zmx1c2goZ3B1LCByaW5nKTsKIAlyZXR1cm4gYTR4eF9pZGxl KGdwdSk7CiB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCBhNHh4X2Rlc3Ryb3ko c3RydWN0IG1zbV9ncHUgKmdwdSkKIHN0YXRpYyBib29sIGE0eHhfaWRsZShzdHJ1Y3QgbXNtX2dw dSAqZ3B1KQogewogCS8qIHdhaXQgZm9yIHJpbmdidWZmZXIgdG8gZHJhaW46ICovCi0JaWYgKCFh ZHJlbm9faWRsZShncHUpKQorCWlmICghYWRyZW5vX2lkbGUoZ3B1LCBncHUtPnJiWzBdKSkKIAkJ cmV0dXJuIGZhbHNlOwogCiAJLyogdGhlbiB3YWl0IGZvciBHUFUgdG8gZmluaXNoOiAqLwpAQCAt NTM5LDYgKzUzOSw3IEBAIHN0YXRpYyBpbnQgYTR4eF9nZXRfdGltZXN0YW1wKHN0cnVjdCBtc21f Z3B1ICpncHUsIHVpbnQ2NF90ICp2YWx1ZSkKIAkJLmxhc3RfZmVuY2UgPSBhZHJlbm9fbGFzdF9m ZW5jZSwKIAkJLnN1Ym1pdCA9IGFkcmVub19zdWJtaXQsCiAJCS5mbHVzaCA9IGFkcmVub19mbHVz aCwKKwkJLmFjdGl2ZV9yaW5nID0gYWRyZW5vX2FjdGl2ZV9yaW5nLAogCQkuaXJxID0gYTR4eF9p cnEsCiAJCS5kZXN0cm95ID0gYTR4eF9kZXN0cm95LAogI2lmZGVmIENPTkZJR19ERUJVR19GUwpA QCAtNTgwLDcgKzU4MSw3IEBAIHN0cnVjdCBtc21fZ3B1ICphNHh4X2dwdV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJYWRyZW5vX2dwdS0+cmVnaXN0ZXJzID0gYTR4eF9yZWdpc3RlcnM7 CiAJYWRyZW5vX2dwdS0+cmVnX29mZnNldHMgPSBhNHh4X3JlZ2lzdGVyX29mZnNldHM7CiAKLQly ZXQgPSBhZHJlbm9fZ3B1X2luaXQoZGV2LCBwZGV2LCBhZHJlbm9fZ3B1LCAmZnVuY3MpOworCXJl dCA9IGFkcmVub19ncHVfaW5pdChkZXYsIHBkZXYsIGFkcmVub19ncHUsICZmdW5jcywgMSk7CiAJ aWYgKHJldCkKIAkJZ290byBmYWlsOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hNXh4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUu YwppbmRleCAyNWFiMWY0Li40YWQ5OGI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hNXh4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhf Z3B1LmMKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBhNXh4X3N1Ym1pdChzdHJ1Y3Qg bXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIHsKIAlzdHJ1Y3Qg YWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKIAlzdHJ1Y3QgbXNt X2RybV9wcml2YXRlICpwcml2ID0gZ3B1LT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5n ID0gc3VibWl0LT5yaW5nOwogCXVuc2lnbmVkIGludCBpLCBpYnMgPSAwOwogCiAJZm9yIChpID0g MDsgaSA8IHN1Ym1pdC0+bnJfY21kczsgaSsrKSB7CkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBzdGF0 aWMgdm9pZCBhNXh4X3N1Ym1pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQgKnN1Ym1pdCwKIAogCU9VVF9QS1Q3KHJpbmcsIENQX0VWRU5UX1dSSVRFLCA0KTsKIAlP VVRfUklORyhyaW5nLCBDQUNIRV9GTFVTSF9UUyB8ICgxIDw8IDMxKSk7Ci0JT1VUX1JJTkcocmlu ZywgbG93ZXJfMzJfYml0cyhyYm1lbXB0cihhZHJlbm9fZ3B1LCBmZW5jZSkpKTsKLQlPVVRfUklO RyhyaW5nLCB1cHBlcl8zMl9iaXRzKHJibWVtcHRyKGFkcmVub19ncHUsIGZlbmNlKSkpOworCU9V VF9SSU5HKHJpbmcsIGxvd2VyXzMyX2JpdHMocmJtZW1wdHIoYWRyZW5vX2dwdSwgcmluZy0+aWQs IGZlbmNlKSkpOworCU9VVF9SSU5HKHJpbmcsIHVwcGVyXzMyX2JpdHMocmJtZW1wdHIoYWRyZW5v X2dwdSwgcmluZy0+aWQsIGZlbmNlKSkpOwogCU9VVF9SSU5HKHJpbmcsIHN1Ym1pdC0+ZmVuY2Ut PnNlcW5vKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNoKGdwdSk7CisJZ3B1LT5mdW5jcy0+Zmx1c2go Z3B1LCByaW5nKTsKIH0KIAogc3RydWN0IGE1eHhfaHdjZyB7CkBAIC0zNTgsNyArMzU4LDcgQEAg c3RhdGljIHZvaWQgYTV4eF9lbmFibGVfaHdjZyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogc3RhdGlj IGludCBhNXh4X21lX2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdHJ1Y3QgYWRyZW5v X2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKLQlzdHJ1Y3QgbXNtX3Jpbmdi dWZmZXIgKnJpbmcgPSBncHUtPnJiOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdw dS0+cmJbMF07CiAKIAlPVVRfUEtUNyhyaW5nLCBDUF9NRV9JTklULCA4KTsKIApAQCAtMzg5LDkg KzM4OSw4IEBAIHN0YXRpYyBpbnQgYTV4eF9tZV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJ T1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CiAJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7 CiAKLQlncHUtPmZ1bmNzLT5mbHVzaChncHUpOwotCi0JcmV0dXJuIGE1eHhfaWRsZShncHUpID8g MCA6IC1FSU5WQUw7CisJZ3B1LT5mdW5jcy0+Zmx1c2goZ3B1LCByaW5nKTsKKwlyZXR1cm4gYTV4 eF9pZGxlKGdwdSwgcmluZykgPyAwIDogLUVJTlZBTDsKIH0KIAogc3RhdGljIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqYTV4eF91Y29kZV9sb2FkX2JvKHN0cnVjdCBtc21fZ3B1ICpncHUsCkBAIC02 OTUsMTEgKzY5NCwxMSBAQCBzdGF0aWMgaW50IGE1eHhfaHdfaW5pdChzdHJ1Y3QgbXNtX2dwdSAq Z3B1KQogCSAqIHRpY2tpbmcgY29ycmVjdGx5CiAJICovCiAJaWYgKGFkcmVub19pc19hNTMwKGFk cmVub19ncHUpKSB7Ci0JCU9VVF9QS1Q3KGdwdS0+cmIsIENQX0VWRU5UX1dSSVRFLCAxKTsKLQkJ T1VUX1JJTkcoZ3B1LT5yYiwgMHgwRik7CisJCU9VVF9QS1Q3KGdwdS0+cmJbMF0sIENQX0VWRU5U X1dSSVRFLCAxKTsKKwkJT1VUX1JJTkcoZ3B1LT5yYlswXSwgMHgwRik7CiAKLQkJZ3B1LT5mdW5j cy0+Zmx1c2goZ3B1KTsKLQkJaWYgKCFhNXh4X2lkbGUoZ3B1KSkKKwkJZ3B1LT5mdW5jcy0+Zmx1 c2goZ3B1LCBncHUtPnJiWzBdKTsKKwkJaWYgKCFhNXh4X2lkbGUoZ3B1LCBncHUtPnJiWzBdKSkK IAkJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNzEyLDExICs3MTEsMTEgQEAgc3RhdGljIGlu dCBhNXh4X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAkgKi8KIAlyZXQgPSBhNXh4X3ph cF9zaGFkZXJfaW5pdChncHUpOwogCWlmICghcmV0KSB7Ci0JCU9VVF9QS1Q3KGdwdS0+cmIsIENQ X1NFVF9TRUNVUkVfTU9ERSwgMSk7Ci0JCU9VVF9SSU5HKGdwdS0+cmIsIDB4MDAwMDAwMDApOwor CQlPVVRfUEtUNyhncHUtPnJiWzBdLCBDUF9TRVRfU0VDVVJFX01PREUsIDEpOworCQlPVVRfUklO RyhncHUtPnJiWzBdLCAweDAwMDAwMDAwKTsKIAotCQlncHUtPmZ1bmNzLT5mbHVzaChncHUpOwot CQlpZiAoIWE1eHhfaWRsZShncHUpKQorCQlncHUtPmZ1bmNzLT5mbHVzaChncHUsIGdwdS0+cmJb MF0pOworCQlpZiAoIWE1eHhfaWRsZShncHUsIGdwdS0+cmJbMF0pKQogCQkJcmV0dXJuIC1FSU5W QUw7CiAJfSBlbHNlIHsKIAkJLyogUHJpbnQgYSB3YXJuaW5nIHNvIGlmIHdlIGRpZSwgd2Uga25v dyB3aHkgKi8KQEAgLTc5MCwxNiArNzg5LDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfYTV4eF9j aGVja19pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJCUE1WFhfUkJCTV9JTlRfMF9NQVNLX01J U0NfSEFOR19ERVRFQ1QpOwogfQogCi1ib29sIGE1eHhfaWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1 KQorYm9vbCBhNXh4X2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVm ZmVyICpyaW5nKQogewogCS8qIHdhaXQgZm9yIENQIHRvIGRyYWluIHJpbmdidWZmZXI6ICovCi0J aWYgKCFhZHJlbm9faWRsZShncHUpKQorCWlmICghYWRyZW5vX2lkbGUoZ3B1LCByaW5nKSkKIAkJ cmV0dXJuIGZhbHNlOwogCiAJaWYgKHNwaW5fdW50aWwoX2E1eHhfY2hlY2tfaWRsZShncHUpKSkg ewotCQlEUk1fRVJST1IoIiVzOiAlcHM6IHRpbWVvdXQgd2FpdGluZyBmb3IgR1BVIHRvIGlkbGU6 IHN0YXR1cyAlOC44WCBpcnEgJTguOFhcbiIsCi0JCQlncHUtPm5hbWUsIF9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwKKwkJRFJNX0RFVl9FUlJPUihncHUtPmRldi0+ZGV2LAorCQkJInRpbWVv dXQgd2FpdGluZyBmb3IgR1BVIFJCICVkIHRvIGlkbGU6IHN0YXR1cyAlOC44WCBycHRyL3dwdHI6 ICU0LjRYLyU0LjRYIGlycSAlOC44WFxuIiwKKwkJCXJpbmctPmlkLAogCQkJZ3B1X3JlYWQoZ3B1 LCBSRUdfQTVYWF9SQkJNX1NUQVRVUyksCisJCQlncHVfcmVhZChncHUsIFJFR19BNVhYX0NQX1JC X1JQVFIpLAorCQkJZ3B1X3JlYWQoZ3B1LCBSRUdfQTVYWF9DUF9SQl9XUFRSKSwKIAkJCWdwdV9y ZWFkKGdwdSwgUkVHX0E1WFhfUkJCTV9JTlRfMF9TVEFUVVMpKTsKIAogCQlyZXR1cm4gZmFsc2U7 CkBAIC0xMDk5LDYgKzExMDEsNyBAQCBzdGF0aWMgdm9pZCBhNXh4X3Nob3coc3RydWN0IG1zbV9n cHUgKmdwdSwgc3RydWN0IHNlcV9maWxlICptKQogCQkubGFzdF9mZW5jZSA9IGFkcmVub19sYXN0 X2ZlbmNlLAogCQkuc3VibWl0ID0gYTV4eF9zdWJtaXQsCiAJCS5mbHVzaCA9IGFkcmVub19mbHVz aCwKKwkJLmFjdGl2ZV9yaW5nID0gYWRyZW5vX2FjdGl2ZV9yaW5nLAogCQkuaXJxID0gYTV4eF9p cnEsCiAJCS5kZXN0cm95ID0gYTV4eF9kZXN0cm95LAogCQkuc2hvdyA9IGE1eHhfc2hvdywKQEAg LTExMzMsNyArMTEzNiw3IEBAIHN0cnVjdCBtc21fZ3B1ICphNXh4X2dwdV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAKIAlhNXh4X2dwdS0+bG1fbGVha2FnZSA9IDB4NEUwMDFBOwogCi0J cmV0ID0gYWRyZW5vX2dwdV9pbml0KGRldiwgcGRldiwgYWRyZW5vX2dwdSwgJmZ1bmNzKTsKKwly ZXQgPSBhZHJlbm9fZ3B1X2luaXQoZGV2LCBwZGV2LCBhZHJlbm9fZ3B1LCAmZnVuY3MsIDEpOwog CWlmIChyZXQpIHsKIAkJYTV4eF9kZXN0cm95KCYoYTV4eF9ncHUtPmJhc2UuYmFzZSkpOwogCQly ZXR1cm4gRVJSX1BUUihyZXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYTV4eF9ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmgKaW5k ZXggNmIyMGYyOC4uNDA1YjU2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYTV4eF9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5o CkBAIC01Niw2ICs1Niw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNwaW5fdXNlY3Moc3RydWN0IG1z bV9ncHUgKmdwdSwgdWludDMyX3QgdXNlY3MsCiAJcmV0dXJuIC1FVElNRURPVVQ7CiB9CiAKLWJv b2wgYTV4eF9pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUpOworYm9vbCBhNXh4X2lkbGUoc3RydWN0 IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKTsKIAogI2VuZGlmIC8q IF9fQTVYWF9HUFVfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hNXh4X3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3Bvd2VyLmMK aW5kZXggMmZkZWU0NC4uYTdkOTFhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9wb3dlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhf cG93ZXIuYwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBpbnQgYTV4eF9ncG11X2luaXQoc3Ry dWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRv X2FkcmVub19ncHUoZ3B1KTsKIAlzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0gdG9fYTV4eF9n cHUoYWRyZW5vX2dwdSk7Ci0Jc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1LT5yYjsK KwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUtPnJiWzBdOwogCiAJaWYgKCFhNXh4 X2dwdS0+Z3BtdV9kd29yZHMpCiAJCXJldHVybiAwOwpAQCAtMTkyLDkgKzE5Miw5IEBAIHN0YXRp YyBpbnQgYTV4eF9ncG11X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlPVVRfUEtUNyhyaW5n LCBDUF9TRVRfUFJPVEVDVEVEX01PREUsIDEpOwogCU9VVF9SSU5HKHJpbmcsIDEpOwogCi0JZ3B1 LT5mdW5jcy0+Zmx1c2goZ3B1KTsKKwlncHUtPmZ1bmNzLT5mbHVzaChncHUsIHJpbmcpOwogCi0J aWYgKCFhNXh4X2lkbGUoZ3B1KSkgeworCWlmICghYTV4eF9pZGxlKGdwdSwgcmluZykpIHsKIAkJ RFJNX0VSUk9SKCIlczogVW5hYmxlIHRvIGxvYWQgR1BNVSBmaXJtd2FyZS4gR1BNVSB3aWxsIG5v dCBiZSBhY3RpdmVcbiIsCiAJCQlncHUtPm5hbWUpOwogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYwppbmRleCA1OWI4OTMwLi4yMWM4MzlmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0yMSw3ICsyMSw2IEBA CiAjaW5jbHVkZSAibXNtX2dlbS5oIgogI2luY2x1ZGUgIm1zbV9tbXUuaCIKIAotI2RlZmluZSBS Ql9TSVpFICAgIFNaXzMySwogI2RlZmluZSBSQl9CTEtTSVpFIDMyCiAKIGludCBhZHJlbm9fZ2V0 X3BhcmFtKHN0cnVjdCBtc21fZ3B1ICpncHUsIHVpbnQzMl90IHBhcmFtLCB1aW50NjRfdCAqdmFs dWUpCkBAIC01NywzMiArNTYsMzYgQEAgaW50IGFkcmVub19nZXRfcGFyYW0oc3RydWN0IG1zbV9n cHUgKmdwdSwgdWludDMyX3QgcGFyYW0sIHVpbnQ2NF90ICp2YWx1ZSkKIGludCBhZHJlbm9faHdf aW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9f Z3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwotCWludCByZXQ7CisJaW50IGk7CiAKIAlEQkcoIiVz IiwgZ3B1LT5uYW1lKTsKIAotCXJldCA9IG1zbV9nZW1fZ2V0X2lvdmEoZ3B1LT5yYi0+Ym8sIGdw dS0+YXNwYWNlLCAmZ3B1LT5yYl9pb3ZhKTsKLQlpZiAocmV0KSB7Ci0JCWdwdS0+cmJfaW92YSA9 IDA7Ci0JCWRldl9lcnIoZ3B1LT5kZXYtPmRldiwgImNvdWxkIG5vdCBtYXAgcmluZ2J1ZmZlcjog JWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7CisJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmlu Z3M7IGkrKykgeworCQlpbnQgcmV0ID0gbXNtX2dlbV9nZXRfaW92YShncHUtPnJiW2ldLT5ibywg Z3B1LT5hc3BhY2UsCisJCQkmZ3B1LT5yYltpXS0+aW92YSk7CisJCWlmIChyZXQpIHsKKwkJCWdw dS0+cmJbaV0tPmlvdmEgPSAwOworCQkJZGV2X2VycihncHUtPmRldi0+ZGV2LAorCQkJCSJjb3Vs ZCBub3QgbWFwIHJpbmdidWZmZXIgJWQ6ICVkXG4iLCBpLCByZXQpOworCQkJcmV0dXJuIHJldDsK KwkJfQogCX0KIAogCS8qIFNldHVwIFJFR19DUF9SQl9DTlRMOiAqLwogCWFkcmVub19ncHVfd3Jp dGUoYWRyZW5vX2dwdSwgUkVHX0FEUkVOT19DUF9SQl9DTlRMLAotCQkJLyogc2l6ZSBpcyBsb2cy KHF1YWQtd29yZHMpOiAqLwotCQkJQVhYWF9DUF9SQl9DTlRMX0JVRlNaKGlsb2cyKGdwdS0+cmIt PnNpemUgLyA4KSkgfAotCQkJQVhYWF9DUF9SQl9DTlRMX0JMS1NaKGlsb2cyKFJCX0JMS1NJWkUg LyA4KSkgfAotCQkJKGFkcmVub19pc19hNDMwKGFkcmVub19ncHUpID8gQVhYWF9DUF9SQl9DTlRM X05PX1VQREFURSA6IDApKTsKKwkJLyogc2l6ZSBpcyBsb2cyKHF1YWQtd29yZHMpOiAqLworCQlB WFhYX0NQX1JCX0NOVExfQlVGU1ooaWxvZzIoTVNNX0dQVV9SSU5HQlVGRkVSX1NaIC8gOCkpIHwK KwkJQVhYWF9DUF9SQl9DTlRMX0JMS1NaKGlsb2cyKFJCX0JMS1NJWkUgLyA4KSkgfAorCQkoYWRy ZW5vX2lzX2E0MzAoYWRyZW5vX2dwdSkgPyBBWFhYX0NQX1JCX0NOVExfTk9fVVBEQVRFIDogMCkp OwogCi0JLyogU2V0dXAgcmluZ2J1ZmZlciBhZGRyZXNzOiAqLworCS8qIFNldHVwIHJpbmdidWZm ZXIgYWRkcmVzcyAtIHVzZSByaW5nYnVmZmVyWzBdIGZvciBHUFUgaW5pdCAqLwogCWFkcmVub19n cHVfd3JpdGU2NChhZHJlbm9fZ3B1LCBSRUdfQURSRU5PX0NQX1JCX0JBU0UsCi0JCVJFR19BRFJF Tk9fQ1BfUkJfQkFTRV9ISSwgZ3B1LT5yYl9pb3ZhKTsKKwkJUkVHX0FEUkVOT19DUF9SQl9CQVNF X0hJLCBncHUtPnJiWzBdLT5pb3ZhKTsKIAogCWlmICghYWRyZW5vX2lzX2E0MzAoYWRyZW5vX2dw dSkpIHsKIAkJYWRyZW5vX2dwdV93cml0ZTY0KGFkcmVub19ncHUsIFJFR19BRFJFTk9fQ1BfUkJf UlBUUl9BRERSLAogCQkJUkVHX0FEUkVOT19DUF9SQl9SUFRSX0FERFJfSEksCi0JCQlyYm1lbXB0 cihhZHJlbm9fZ3B1LCBycHRyKSk7CisJCQlyYm1lbXB0cihhZHJlbm9fZ3B1LCAwLCBycHRyKSk7 CiAJfQogCiAJcmV0dXJuIDA7CkBAIC05NCwzNSArOTcsNTggQEAgc3RhdGljIHVpbnQzMl90IGdl dF93cHRyKHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykKIH0KIAogLyogVXNlIHRoaXMgaGVs cGVyIHRvIHJlYWQgcnB0ciwgc2luY2UgYTQzMCBkb2Vzbid0IHVwZGF0ZSBycHRyIGluIG1lbW9y eSAqLwotc3RhdGljIHVpbnQzMl90IGdldF9ycHRyKHN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9f Z3B1KQorc3RhdGljIHVpbnQzMl90IGdldF9ycHRyKHN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9f Z3B1LAorCQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7Ci0JaWYgKGFkcmVub19pc19h NDMwKGFkcmVub19ncHUpKQotCQlyZXR1cm4gYWRyZW5vX2dwdS0+bWVtcHRycy0+cnB0ciA9IGFk cmVub19ncHVfcmVhZCgKKwlpZiAoYWRyZW5vX2lzX2E0MzAoYWRyZW5vX2dwdSkpIHsKKwkJLyoK KwkJICogSWYgaW5kZXggaXMgYW55dGhpbmcgYnV0IDAgdGhpcyB3aWxsIHByb2JhYmx5IGJyZWFr IGhvcnJpYmx5LAorCQkgKiBidXQgSSB0aGluayB0aGF0IHdlIGhhdmUgZW5vdWdoIGluZnJhc3Ry dWN0dXJlIGluIHBsYWNlIHRvCisJCSAqIGVuc3VyZSB0aGF0IGl0IHdvbid0IGJlLiBJZiBub3Qg dGhlbiB0aGlzIGlzIHdoeSB5b3VyCisJCSAqIGE0MzAgc3RvcHBlZCB3b3JraW5nLgorCQkgKi8K KwkJcmV0dXJuIGFkcmVub19ncHUtPm1lbXB0cnMtPnJwdHJbcmluZy0+aWRdID0gYWRyZW5vX2dw dV9yZWFkKAogCQkJYWRyZW5vX2dwdSwgUkVHX0FEUkVOT19DUF9SQl9SUFRSKTsKLQllbHNlCi0J CXJldHVybiBhZHJlbm9fZ3B1LT5tZW1wdHJzLT5ycHRyOworCX0gZWxzZQorCQlyZXR1cm4gYWRy ZW5vX2dwdS0+bWVtcHRycy0+cnB0cltyaW5nLT5pZF07CiB9CiAKLXVpbnQzMl90IGFkcmVub19s YXN0X2ZlbmNlKHN0cnVjdCBtc21fZ3B1ICpncHUpCitzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKmFk cmVub19hY3RpdmVfcmluZyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQoreworCXJldHVybiBncHUtPnJi WzBdOworfQorCit1aW50MzJfdCBhZHJlbm9fbGFzdF9mZW5jZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1 LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFk cmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7Ci0JcmV0dXJuIGFkcmVub19ncHUtPm1lbXB0 cnMtPmZlbmNlOworCisJaWYgKCFyaW5nKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBhZHJlbm9f Z3B1LT5tZW1wdHJzLT5mZW5jZVtyaW5nLT5pZF07CiB9CiAKIHZvaWQgYWRyZW5vX3JlY292ZXIo c3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9 IHRvX2FkcmVub19ncHUoZ3B1KTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7 Ci0JaW50IHJldDsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmc7CisJaW50IHJldCwgaTsK IAogCWdwdS0+ZnVuY3MtPnBtX3N1c3BlbmQoZ3B1KTsKIAotCS8qIHJlc2V0IHJpbmdidWZmZXI6 ICovCi0JZ3B1LT5yYi0+Y3VyID0gZ3B1LT5yYi0+c3RhcnQ7CisJLyogcmVzZXQgcmluZ2J1ZmZl cihzKTogKi8KKworCUZPUl9FQUNIX1JJTkcoZ3B1LCByaW5nLCBpKSB7CisJCWlmICghcmluZykK KwkJCWNvbnRpbnVlOworCisJCXJpbmctPmN1ciA9IHJpbmctPnN0YXJ0OwogCi0JLyogcmVzZXQg Y29tcGxldGVkIGZlbmNlIHNlcW5vOiAqLwotCWFkcmVub19ncHUtPm1lbXB0cnMtPmZlbmNlID0g Z3B1LT5mY3R4LT5jb21wbGV0ZWRfZmVuY2U7Ci0JYWRyZW5vX2dwdS0+bWVtcHRycy0+cnB0ciAg PSAwOworCQkvKiByZXNldCBjb21wbGV0ZWQgZmVuY2Ugc2Vxbm8sIGRpc2NhcmQgYW55dGhpbmcg cGVuZGluZzogKi8KKwkJYWRyZW5vX2dwdS0+bWVtcHRycy0+ZmVuY2VbcmluZy0+aWRdID0gcmlu Zy0+Y29tcGxldGVkX2ZlbmNlOworCQlhZHJlbm9fZ3B1LT5tZW1wdHJzLT5ycHRyW3JpbmctPmlk XSAgPSAwOworCX0KIAogCWdwdS0+ZnVuY3MtPnBtX3Jlc3VtZShncHUpOwogCkBAIC0xNDAsNyAr MTY2LDcgQEAgdm9pZCBhZHJlbm9fc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBt c21fZ2VtX3N1Ym1pdCAqc3VibWl0LAogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1 ID0gdG9fYWRyZW5vX2dwdShncHUpOwogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBn cHUtPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1 LT5yYjsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBzdWJtaXQtPnJpbmc7CiAJdW5z aWduZWQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBzdWJtaXQtPm5yX2NtZHM7IGkrKykgewpAQCAt MTc5LDcgKzIwNSw3IEBAIHZvaWQgYWRyZW5vX3N1Ym1pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBz dHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAogCU9VVF9QS1QzKHJpbmcsIENQX0VWRU5U X1dSSVRFLCAzKTsKIAlPVVRfUklORyhyaW5nLCBDQUNIRV9GTFVTSF9UUyk7Ci0JT1VUX1JJTkco cmluZywgcmJtZW1wdHIoYWRyZW5vX2dwdSwgZmVuY2UpKTsKKwlPVVRfUklORyhyaW5nLCByYm1l bXB0cihhZHJlbm9fZ3B1LCByaW5nLT5pZCwgZmVuY2UpKTsKIAlPVVRfUklORyhyaW5nLCBzdWJt aXQtPmZlbmNlLT5zZXFubyk7CiAKIAkvKiB3ZSBjb3VsZCBtYXliZSBiZSBjbGV2ZXIgYW5kIG9u bHkgQ1BfQ09ORF9FWEVDIHRoZSBpbnRlcnJ1cHQ6ICovCkBAIC0yMDYsMTAgKzIzMiwxMCBAQCB2 b2lkIGFkcmVub19zdWJtaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3Vi bWl0ICpzdWJtaXQsCiAJfQogI2VuZGlmCiAKLQlncHUtPmZ1bmNzLT5mbHVzaChncHUpOworCWdw dS0+ZnVuY3MtPmZsdXNoKGdwdSwgcmluZyk7CiB9CiAKLXZvaWQgYWRyZW5vX2ZsdXNoKHN0cnVj dCBtc21fZ3B1ICpncHUpCit2b2lkIGFkcmVub19mbHVzaChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBz dHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFkcmVu b19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CiAJdWludDMyX3Qgd3B0cjsKQEAgLTIxOSw3ICsy NDUsNyBAQCB2b2lkIGFkcmVub19mbHVzaChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCSAqIHRvIGFj Y291bnQgZm9yIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBsYXN0IGNvbW1hbmQgZml0IGV4YWN0 bHkgaW50bwogCSAqIHRoZSByaW5nYnVmZmVyIGFuZCByYi0+bmV4dCBoYXNuJ3Qgd3JhcHBlZCB0 byB6ZXJvIHlldAogCSAqLwotCXdwdHIgPSBnZXRfd3B0cihncHUtPnJiKSAmICgoZ3B1LT5yYi0+ c2l6ZSAvIDQpIC0gMSk7CisJd3B0ciA9IGdldF93cHRyKHJpbmcpICUgKE1TTV9HUFVfUklOR0JV RkZFUl9TWiA+PiAyKTsKIAogCS8qIGVuc3VyZSB3cml0ZXMgdG8gcmluZ2J1ZmZlciBoYXZlIGhp dCBzeXN0ZW0gbWVtb3J5OiAqLwogCW1iKCk7CkBAIC0yMjcsMTcgKzI1MywxOCBAQCB2b2lkIGFk cmVub19mbHVzaChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCWFkcmVub19ncHVfd3JpdGUoYWRyZW5v X2dwdSwgUkVHX0FEUkVOT19DUF9SQl9XUFRSLCB3cHRyKTsKIH0KIAotYm9vbCBhZHJlbm9faWRs ZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQorYm9vbCBhZHJlbm9faWRsZShzdHJ1Y3QgbXNtX2dwdSAq Z3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7CiAJc3RydWN0IGFkcmVub19ncHUg KmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7Ci0JdWludDMyX3Qgd3B0ciA9IGdldF93 cHRyKGdwdS0+cmIpOworCXVpbnQzMl90IHdwdHIgPSBnZXRfd3B0cihyaW5nKTsKIAogCS8qIHdh aXQgZm9yIENQIHRvIGRyYWluIHJpbmdidWZmZXI6ICovCi0JaWYgKCFzcGluX3VudGlsKGdldF9y cHRyKGFkcmVub19ncHUpID09IHdwdHIpKQorCWlmICghc3Bpbl91bnRpbChnZXRfcnB0cihhZHJl bm9fZ3B1LCByaW5nKSA9PSB3cHRyKSkKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBUT0RPIG1heWJl IHdlIG5lZWQgdG8gcmVzZXQgR1BVIGhlcmUgdG8gcmVjb3ZlciBmcm9tIGhhbmc/ICovCi0JRFJN X0VSUk9SKCIlczogdGltZW91dCB3YWl0aW5nIHRvIGRyYWluIHJpbmdidWZmZXIhXG4iLCBncHUt Pm5hbWUpOworCURSTV9FUlJPUigiJXM6IHRpbWVvdXQgd2FpdGluZyB0byBkcmFpbiByaW5nYnVm ZmVyICVkIVxuIiwgZ3B1LT5uYW1lLAorCQlyaW5nLT5pZCk7CiAJcmV0dXJuIGZhbHNlOwogfQog CkBAIC0yNDUsNiArMjcyLDcgQEAgYm9vbCBhZHJlbm9faWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1 KQogdm9pZCBhZHJlbm9fc2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3Qgc2VxX2ZpbGUg Km0pCiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdw dSk7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nOwogCWludCBpOwogCiAJc2VxX3ByaW50 ZihtLCAicmV2aXNpb246ICVkICglZC4lZC4lZC4lZClcbiIsCkBAIC0yNTIsMTAgKzI4MCwxOCBA QCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBzZXFfZmlsZSAq bSkKIAkJCWFkcmVub19ncHUtPnJldi5tYWpvciwgYWRyZW5vX2dwdS0+cmV2Lm1pbm9yLAogCQkJ YWRyZW5vX2dwdS0+cmV2LnBhdGNoaWQpOwogCi0Jc2VxX3ByaW50ZihtLCAiZmVuY2U6ICAgICVk LyVkXG4iLCBhZHJlbm9fZ3B1LT5tZW1wdHJzLT5mZW5jZSwKLQkJCWdwdS0+ZmN0eC0+bGFzdF9m ZW5jZSk7Ci0Jc2VxX3ByaW50ZihtLCAicnB0cjogICAgICVkXG4iLCBnZXRfcnB0cihhZHJlbm9f Z3B1KSk7Ci0Jc2VxX3ByaW50ZihtLCAicmIgd3B0cjogICVkXG4iLCBnZXRfd3B0cihncHUtPnJi KSk7CisJRk9SX0VBQ0hfUklORyhncHUsIHJpbmcsIGkpIHsKKwkJaWYgKCFyaW5nKQorCQkJY29u dGludWU7CisKKwkJc2VxX3ByaW50ZihtLCAicmIgJWQ6IGZlbmNlOiAgICAlZC8lZFxuIiwgaSwK KwkJCWFkcmVub19sYXN0X2ZlbmNlKGdwdSwgcmluZyksCisJCQlyaW5nLT5jb21wbGV0ZWRfZmVu Y2UpOworCisJCXNlcV9wcmludGYobSwgIiAgICAgIHJwdHI6ICAgICAlZFxuIiwKKwkJCWdldF9y cHRyKGFkcmVub19ncHUsIHJpbmcpKTsKKwkJc2VxX3ByaW50ZihtLCAicmIgd3B0cjogICVkXG4i LCBnZXRfd3B0cihyaW5nKSk7CisJfQogCiAJZ3B1LT5mdW5jcy0+cG1fcmVzdW1lKGdwdSk7CiAK QEAgLTI4NSwxNiArMzIxLDI1IEBAIHZvaWQgYWRyZW5vX3Nob3coc3RydWN0IG1zbV9ncHUgKmdw dSwgc3RydWN0IHNlcV9maWxlICptKQogdm9pZCBhZHJlbm9fZHVtcF9pbmZvKHN0cnVjdCBtc21f Z3B1ICpncHUpCiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9f Z3B1KGdwdSk7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nOworCWludCBpOwogCiAJcHJp bnRrKCJyZXZpc2lvbjogJWQgKCVkLiVkLiVkLiVkKVxuIiwKIAkJCWFkcmVub19ncHUtPmluZm8t PnJldm4sIGFkcmVub19ncHUtPnJldi5jb3JlLAogCQkJYWRyZW5vX2dwdS0+cmV2Lm1ham9yLCBh ZHJlbm9fZ3B1LT5yZXYubWlub3IsCiAJCQlhZHJlbm9fZ3B1LT5yZXYucGF0Y2hpZCk7CiAKLQlw cmludGsoImZlbmNlOiAgICAlZC8lZFxuIiwgYWRyZW5vX2dwdS0+bWVtcHRycy0+ZmVuY2UsCi0J CQlncHUtPmZjdHgtPmxhc3RfZmVuY2UpOwotCXByaW50aygicnB0cjogICAgICVkXG4iLCBnZXRf cnB0cihhZHJlbm9fZ3B1KSk7Ci0JcHJpbnRrKCJyYiB3cHRyOiAgJWRcbiIsIGdldF93cHRyKGdw dS0+cmIpKTsKKwlGT1JfRUFDSF9SSU5HKGdwdSwgcmluZywgaSkgeworCQlpZiAoIXJpbmcpCisJ CQljb250aW51ZTsKKworCQlwcmludGsoInJiICVkOiBmZW5jZTogICAgJWQvJWRcbiIsIGksCisJ CQlhZHJlbm9fbGFzdF9mZW5jZShncHUsIHJpbmcpLAorCQkJcmluZy0+Y29tcGxldGVkX2ZlbmNl KTsKKworCQlwcmludGsoInJwdHI6ICAgICAlZFxuIiwgZ2V0X3JwdHIoYWRyZW5vX2dwdSwgcmlu ZykpOworCQlwcmludGsoInJiIHdwdHI6ICAlZFxuIiwgZ2V0X3dwdHIocmluZykpOworCX0KIH0K IAogLyogd291bGQgYmUgbmljZSB0byBub3QgaGF2ZSB0byBkdXBsaWNhdGUgdGhlIF9zaG93KCkg c3R1ZmYgd2l0aCBwcmludGsoKTogKi8KQEAgLTMxNywxOSArMzYyLDIxIEBAIHZvaWQgYWRyZW5v X2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAl9CiB9CiAKLXN0YXRpYyB1aW50MzJfdCByaW5n X2ZyZWV3b3JkcyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQorc3RhdGljIHVpbnQzMl90IHJpbmdfZnJl ZXdvcmRzKHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykKIHsKLQlzdHJ1Y3QgYWRyZW5vX2dw dSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKLQl1aW50MzJfdCBzaXplID0gZ3B1 LT5yYi0+c2l6ZSAvIDQ7Ci0JdWludDMyX3Qgd3B0ciA9IGdldF93cHRyKGdwdS0+cmIpOwotCXVp bnQzMl90IHJwdHIgPSBnZXRfcnB0cihhZHJlbm9fZ3B1KTsKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAq YWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUocmluZy0+Z3B1KTsKKwl1aW50MzJfdCBzaXplID0g TVNNX0dQVV9SSU5HQlVGRkVSX1NaID4+IDI7CisJdWludDMyX3Qgd3B0ciA9IGdldF93cHRyKHJp bmcpOworCXVpbnQzMl90IHJwdHIgPSBnZXRfcnB0cihhZHJlbm9fZ3B1LCByaW5nKTsKIAlyZXR1 cm4gKHJwdHIgKyAoc2l6ZSAtIDEpIC0gd3B0cikgJSBzaXplOwogfQogCi12b2lkIGFkcmVub193 YWl0X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMyX3QgbmR3b3JkcykKK3ZvaWQgYWRy ZW5vX3dhaXRfcmluZyhzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsIHVpbnQzMl90IG5kd29y ZHMpCiB7Ci0JaWYgKHNwaW5fdW50aWwocmluZ19mcmVld29yZHMoZ3B1KSA+PSBuZHdvcmRzKSkK LQkJRFJNX0VSUk9SKCIlczogdGltZW91dCB3YWl0aW5nIGZvciByaW5nYnVmZmVyIHNwYWNlXG4i LCBncHUtPm5hbWUpOworCWlmIChzcGluX3VudGlsKHJpbmdfZnJlZXdvcmRzKHJpbmcpID49IG5k d29yZHMpKQorCQlEUk1fREVWX0VSUk9SKHJpbmctPmdwdS0+ZGV2LT5kZXYsCisJCQkidGltZW91 dCB3YWl0aW5nIGZvciBzcGFjZSBpbiByaW5ndWJmZmVyICVkXG4iLAorCQkJcmluZy0+aWQpOwog fQogCiBzdGF0aWMgY29uc3QgY2hhciAqaW9tbXVfcG9ydHNbXSA9IHsKQEAgLTMzOCw3ICszODUs OCBAQCB2b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMyX3Qg bmR3b3JkcykKIH07CiAKIGludCBhZHJlbm9fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRy bSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKLQkJc3RydWN0IGFkcmVub19ncHUgKmFk cmVub19ncHUsIGNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNzICpmdW5jcykKKwkJc3RydWN0 IGFkcmVub19ncHUgKmFkcmVub19ncHUsCisJCWNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNz ICpmdW5jcywgaW50IG5yX3JpbmdzKQogewogCXN0cnVjdCBhZHJlbm9fcGxhdGZvcm1fY29uZmln ICpjb25maWcgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKIAlzdHJ1Y3QgbXNtX2dwdV9jb25m aWcgYWRyZW5vX2dwdV9jb25maWcgID0geyAwIH07CkBAIC0zNjcsNyArNDE1LDcgQEAgaW50IGFk cmVub19ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2LAogCWFkcmVub19ncHVfY29uZmlnLnZhX3N0YXJ0ID0gU1pfMTZNOwogCWFkcmVu b19ncHVfY29uZmlnLnZhX2VuZCA9IDB4ZmZmZmZmZmY7CiAKLQlhZHJlbm9fZ3B1X2NvbmZpZy5y aW5nc3ogPSBSQl9TSVpFOworCWFkcmVub19ncHVfY29uZmlnLm5yX3JpbmdzID0gbnJfcmluZ3M7 CiAKIAlyZXQgPSBtc21fZ3B1X2luaXQoZHJtLCBwZGV2LCAmYWRyZW5vX2dwdS0+YmFzZSwgJmZ1 bmNzLT5iYXNlLAogCQkJYWRyZW5vX2dwdS0+aW5mby0+bmFtZSwgJmFkcmVub19ncHVfY29uZmln KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaAppbmRleCBkYTQ3NDY4Li5l MDVmYThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCkBAIC04MSwx MiArODEsMTggQEAgc3RydWN0IGFkcmVub19pbmZvIHsKIAogY29uc3Qgc3RydWN0IGFkcmVub19p bmZvICphZHJlbm9faW5mbyhzdHJ1Y3QgYWRyZW5vX3JldiByZXYpOwogCi0jZGVmaW5lIHJibWVt cHRyKGFkcmVub19ncHUsIG1lbWJlcikgIFwKKyNkZWZpbmUgX3NpemVvZihtZW1iZXIpIFwKKwlz aXplb2YoKChzdHJ1Y3QgYWRyZW5vX3JibWVtcHRycyAqKSAwKS0+bWVtYmVyWzBdKQorCisjZGVm aW5lIF9iYXNlKGFkcmVub19ncHUsIG1lbWJlcikgIFwKIAkoKGFkcmVub19ncHUpLT5tZW1wdHJz X2lvdmEgKyBvZmZzZXRvZihzdHJ1Y3QgYWRyZW5vX3JibWVtcHRycywgbWVtYmVyKSkKIAorI2Rl ZmluZSByYm1lbXB0cihhZHJlbm9fZ3B1LCBpbmRleCwgbWVtYmVyKSBcCisJKF9iYXNlKChhZHJl bm9fZ3B1KSwgbWVtYmVyKSArICgoaW5kZXgpICogX3NpemVvZihtZW1iZXIpKSkKKwogc3RydWN0 IGFkcmVub19yYm1lbXB0cnMgewotCXZvbGF0aWxlIHVpbnQzMl90IHJwdHI7Ci0Jdm9sYXRpbGUg dWludDMyX3QgZmVuY2U7CisJdm9sYXRpbGUgdWludDMyX3QgcnB0cltNU01fR1BVX01BWF9SSU5H U107CisJdm9sYXRpbGUgdWludDMyX3QgZmVuY2VbTVNNX0dQVV9NQVhfUklOR1NdOwogfTsKIAog c3RydWN0IGFkcmVub19ncHUgewpAQCAtMTk2LDIxICsyMDIsMjUgQEAgc3RhdGljIGlubGluZSBp bnQgYWRyZW5vX2lzX2E1MzAoc3RydWN0IGFkcmVub19ncHUgKmdwdSkKIAogaW50IGFkcmVub19n ZXRfcGFyYW0oc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMyX3QgcGFyYW0sIHVpbnQ2NF90ICp2 YWx1ZSk7CiBpbnQgYWRyZW5vX2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSk7Ci11aW50MzJf dCBhZHJlbm9fbGFzdF9mZW5jZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3VpbnQzMl90IGFkcmVu b19sYXN0X2ZlbmNlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZyk7Cit1aW50MzJfdCBhZHJlbm9fc3VibWl0dGVkX2ZlbmNlKHN0cnVjdCBtc21fZ3B1ICpn cHUsCisJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7CiB2b2lkIGFkcmVub19yZWNvdmVy KHN0cnVjdCBtc21fZ3B1ICpncHUpOwogdm9pZCBhZHJlbm9fc3VibWl0KHN0cnVjdCBtc21fZ3B1 ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LAogCQlzdHJ1Y3QgbXNtX2ZpbGVf cHJpdmF0ZSAqY3R4KTsKLXZvaWQgYWRyZW5vX2ZsdXNoKHN0cnVjdCBtc21fZ3B1ICpncHUpOwot Ym9vbCBhZHJlbm9faWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3ZvaWQgYWRyZW5vX2ZsdXNo KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7Citib29s IGFkcmVub19pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZyk7CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBzZXFfZmlsZSAqbSk7CiAjZW5kaWYKIHZvaWQgYWRyZW5vX2R1 bXBfaW5mbyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKIHZvaWQgYWRyZW5vX2R1bXAoc3RydWN0IG1z bV9ncHUgKmdwdSk7Ci12b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSwg dWludDMyX3QgbmR3b3Jkcyk7Cit2b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9yaW5n YnVmZmVyICpyaW5nLCB1aW50MzJfdCBuZHdvcmRzKTsKK3N0cnVjdCBtc21fcmluZ2J1ZmZlciAq YWRyZW5vX2FjdGl2ZV9yaW5nKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogCiBpbnQgYWRyZW5vX2dw dV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYsCi0JCXN0cnVjdCBhZHJlbm9fZ3B1ICpncHUsIGNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1 bmNzICpmdW5jcyk7CisJCXN0cnVjdCBhZHJlbm9fZ3B1ICpncHUsIGNvbnN0IHN0cnVjdCBhZHJl bm9fZ3B1X2Z1bmNzICpmdW5jcywKKwkJaW50IG5yX3JpbmdzKTsKIHZvaWQgYWRyZW5vX2dwdV9j bGVhbnVwKHN0cnVjdCBhZHJlbm9fZ3B1ICpncHUpOwogCiAKQEAgLTIxOSw3ICsyMjksNyBAQCBp bnQgYWRyZW5vX2dwdV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsCiBzdGF0aWMgaW5saW5lIHZvaWQKIE9VVF9QS1QwKHN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZywgdWludDE2X3QgcmVnaW5keCwgdWludDE2X3QgY250KQogewotCWFk cmVub193YWl0X3JpbmcocmluZy0+Z3B1LCBjbnQrMSk7CisJYWRyZW5vX3dhaXRfcmluZyhyaW5n LCBjbnQrMSk7CiAJT1VUX1JJTkcocmluZywgQ1BfVFlQRTBfUEtUIHwgKChjbnQtMSkgPDwgMTYp IHwgKHJlZ2luZHggJiAweDdGRkYpKTsKIH0KIApAQCAtMjI3LDE0ICsyMzcsMTQgQEAgaW50IGFk cmVub19ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2LAogc3RhdGljIGlubGluZSB2b2lkCiBPVVRfUEtUMihzdHJ1Y3QgbXNtX3Jpbmdi dWZmZXIgKnJpbmcpCiB7Ci0JYWRyZW5vX3dhaXRfcmluZyhyaW5nLT5ncHUsIDEpOworCWFkcmVu b193YWl0X3JpbmcocmluZywgMSk7CiAJT1VUX1JJTkcocmluZywgQ1BfVFlQRTJfUEtUKTsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkCiBPVVRfUEtUMyhzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJp bmcsIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MTZfdCBjbnQpCiB7Ci0JYWRyZW5vX3dhaXRfcmluZyhy aW5nLT5ncHUsIGNudCsxKTsKKwlhZHJlbm9fd2FpdF9yaW5nKHJpbmcsIGNudCsxKTsKIAlPVVRf UklORyhyaW5nLCBDUF9UWVBFM19QS1QgfCAoKGNudC0xKSA8PCAxNikgfCAoKG9wY29kZSAmIDB4 RkYpIDw8IDgpKTsKIH0KIApAQCAtMjU2LDE0ICsyNjYsMTQgQEAgc3RhdGljIGlubGluZSB1MzIg UE00X1BBUklUWSh1MzIgdmFsKQogc3RhdGljIGlubGluZSB2b2lkCiBPVVRfUEtUNChzdHJ1Y3Qg bXNtX3JpbmdidWZmZXIgKnJpbmcsIHVpbnQxNl90IHJlZ2luZHgsIHVpbnQxNl90IGNudCkKIHsK LQlhZHJlbm9fd2FpdF9yaW5nKHJpbmctPmdwdSwgY250ICsgMSk7CisJYWRyZW5vX3dhaXRfcmlu ZyhyaW5nLCBjbnQgKyAxKTsKIAlPVVRfUklORyhyaW5nLCBQS1Q0KHJlZ2luZHgsIGNudCkpOwog fQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIE9VVF9QS1Q3KHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZywgdWludDhfdCBvcGNvZGUsIHVpbnQxNl90IGNudCkKIHsKLQlhZHJlbm9fd2FpdF9yaW5n KHJpbmctPmdwdSwgY250ICsgMSk7CisJYWRyZW5vX3dhaXRfcmluZyhyaW5nLCBjbnQgKyAxKTsK IAlPVVRfUklORyhyaW5nLCBDUF9UWVBFN19QS1QgfCAoY250IDw8IDApIHwgKFBNNF9QQVJJVFko Y250KSA8PCAxNSkgfAogCQkoKG9wY29kZSAmIDB4N0YpIDw8IDE2KSB8IChQTTRfUEFSSVRZKG9w Y29kZSkgPDwgMjMpKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggOTk2MjI3Yy4uNjAwYzM5 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKQEAgLTc4LDYgKzc4LDggQEAgc3RydWN0IG1zbV92Ymxh bmtfY3RybCB7CiAJc3BpbmxvY2tfdCBsb2NrOwogfTsKIAorI2RlZmluZSBNU01fR1BVX01BWF9S SU5HUyAxCisKIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewogCiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9mZW5jZS5jCmluZGV4IDNmMjk5YzUuLmMxZTc2MTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZmVuY2UuYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgIm1zbV9kcnYu aCIKICNpbmNsdWRlICJtc21fZmVuY2UuaCIKIAotCiBzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRleHQg KgogbXNtX2ZlbmNlX2NvbnRleHRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3Qg Y2hhciAqbmFtZSkKIHsKQEAgLTMyLDkgKzMxLDEwIEBAIHN0cnVjdCBtc21fZmVuY2VfY29udGV4 dCAqCiAKIAlmY3R4LT5kZXYgPSBkZXY7CiAJZmN0eC0+bmFtZSA9IG5hbWU7Ci0JZmN0eC0+Y29u dGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOworCWZjdHgtPmNvbnRleHQgPSBkbWFf ZmVuY2VfY29udGV4dF9hbGxvYyhNU01fR1BVX01BWF9SSU5HUyk7CiAJaW5pdF93YWl0cXVldWVf aGVhZCgmZmN0eC0+ZXZlbnQpOwogCXNwaW5fbG9ja19pbml0KCZmY3R4LT5zcGlubG9jayk7CisJ aGFzaF9pbml0KGZjdHgtPmhhc2gpOwogCiAJcmV0dXJuIGZjdHg7CiB9CkBAIC00NCw2NCArNDQs OTQgQEAgdm9pZCBtc21fZmVuY2VfY29udGV4dF9mcmVlKHN0cnVjdCBtc21fZmVuY2VfY29udGV4 dCAqZmN0eCkKIAlrZnJlZShmY3R4KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGZlbmNlX2Nv bXBsZXRlZChzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRleHQgKmZjdHgsIHVpbnQzMl90IGZlbmNlKQor c3RhdGljIGlubGluZSBib29sIGZlbmNlX2NvbXBsZXRlZChzdHJ1Y3QgbXNtX3JpbmdidWZmZXIg KnJpbmcsIHVpbnQzMl90IGZlbmNlKQoreworCXJldHVybiAoaW50MzJfdCkocmluZy0+Y29tcGxl dGVkX2ZlbmNlIC0gZmVuY2UpID49IDA7Cit9CisKK3N0cnVjdCBtc21fZmVuY2UgeworCXN0cnVj dCBtc21fZmVuY2VfY29udGV4dCAqZmN0eDsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmc7 CisJc3RydWN0IGRtYV9mZW5jZSBiYXNlOworCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7CisJdTMy IGZlbmNlX2lkOworfTsKKworc3RhdGljIHN0cnVjdCBtc21fZmVuY2UgKmZlbmNlX2Zyb21faWQo c3RydWN0IG1zbV9mZW5jZV9jb250ZXh0ICpmY3R4LAorCQl1aW50MzJfdCBpZCkKIHsKLQlyZXR1 cm4gKGludDMyX3QpKGZjdHgtPmNvbXBsZXRlZF9mZW5jZSAtIGZlbmNlKSA+PSAwOworCXN0cnVj dCBtc21fZmVuY2UgKmY7CisKKwloYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlX3JjdShmY3R4LT5oYXNo LCBmLCBub2RlLCBpZCkgeworCQlpZiAoZi0+ZmVuY2VfaWQgPT0gaWQpIHsKKwkJCWlmIChkbWFf ZmVuY2VfZ2V0X3JjdSgmZi0+YmFzZSkpCisJCQkJcmV0dXJuIGY7CisJCX0KKwl9CisKKwlyZXR1 cm4gTlVMTDsKIH0KIAogLyogbGVnYWN5IHBhdGggZm9yIFdBSVRfRkVOQ0UgaW9jdGw6ICovCiBp bnQgbXNtX3dhaXRfZmVuY2Uoc3RydWN0IG1zbV9mZW5jZV9jb250ZXh0ICpmY3R4LCB1aW50MzJf dCBmZW5jZSwKIAkJa3RpbWVfdCAqdGltZW91dCwgYm9vbCBpbnRlcnJ1cHRpYmxlKQogeworCXN0 cnVjdCBtc21fZmVuY2UgKmYgPSBmZW5jZV9mcm9tX2lkKGZjdHgsIGZlbmNlKTsKIAlpbnQgcmV0 OwogCi0JaWYgKGZlbmNlID4gZmN0eC0+bGFzdF9mZW5jZSkgewotCQlEUk1fRVJST1IoIiVzOiB3 YWl0aW5nIG9uIGludmFsaWQgZmVuY2U6ICV1IChvZiAldSlcbiIsCi0JCQkJZmN0eC0+bmFtZSwg ZmVuY2UsIGZjdHgtPmxhc3RfZmVuY2UpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkvKiBJZiBubyBh Y3RpdmUgZmVuY2Ugd2FzIGZvdW5kLCB0aGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgKi8KKwlp ZiAoIWYpIHsKKwkJLyogVGhlIHJlcXVlc3RlZCBJRCBpcyBuZXdlciB0aGFuIGxhc3QgaXNzdWVk IC0gcmV0dXJuIGVycm9yICovCisJCWlmIChmZW5jZSA+IGZjdHgtPmZlbmNlX2lkKSB7CisJCQlE Uk1fRVJST1IoIiVzOiB3YWl0aW5nIG9uIGludmFsaWQgZmVuY2U6ICV1IChvZiAldSlcbiIsCisJ CQkJZmN0eC0+bmFtZSwgZmVuY2UsIGZjdHgtPmZlbmNlX2lkKTsKKwkJCXJldHVybiAtRUlOVkFM OworCQl9CisKKwkJLyogSWYgdGhlIGlkIGhhcyBiZWVuIGlzc3VlZCBhc3N1bWUgZmVuY2UgaGFz IGJlZW4gcmV0aXJlZCAqLworCQlyZXR1cm4gMDsKIAl9CiAKIAlpZiAoIXRpbWVvdXQpIHsKIAkJ Lyogbm8td2FpdDogKi8KLQkJcmV0ID0gZmVuY2VfY29tcGxldGVkKGZjdHgsIGZlbmNlKSA/IDAg OiAtRUJVU1k7CisJCXJldCA9IGZlbmNlX2NvbXBsZXRlZChmLT5yaW5nLCBmLT5iYXNlLnNlcW5v KSA/IDAgOiAtRUJVU1k7CiAJfSBlbHNlIHsKIAkJdW5zaWduZWQgbG9uZyByZW1haW5pbmdfamlm ZmllcyA9IHRpbWVvdXRfdG9famlmZmllcyh0aW1lb3V0KTsKIAogCQlpZiAoaW50ZXJydXB0aWJs ZSkKIAkJCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0KGZjdHgtPmV2ZW50 LAotCQkJCWZlbmNlX2NvbXBsZXRlZChmY3R4LCBmZW5jZSksCisJCQkJZmVuY2VfY29tcGxldGVk KGYtPnJpbmcsIGYtPmJhc2Uuc2Vxbm8pLAogCQkJCXJlbWFpbmluZ19qaWZmaWVzKTsKIAkJZWxz ZQogCQkJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KGZjdHgtPmV2ZW50LAotCQkJCWZlbmNlX2Nv bXBsZXRlZChmY3R4LCBmZW5jZSksCisJCQkJZmVuY2VfY29tcGxldGVkKGYtPnJpbmcsIGYtPmJh c2Uuc2Vxbm8pLAogCQkJCXJlbWFpbmluZ19qaWZmaWVzKTsKIAogCQlpZiAocmV0ID09IDApIHsK IAkJCURCRygidGltZW91dCB3YWl0aW5nIGZvciBmZW5jZTogJXUgKGNvbXBsZXRlZDogJXUpIiwK LQkJCQkJZmVuY2UsIGZjdHgtPmNvbXBsZXRlZF9mZW5jZSk7CisJCQkJZi0+YmFzZS5zZXFubywg Zi0+cmluZy0+Y29tcGxldGVkX2ZlbmNlKTsKIAkJCXJldCA9IC1FVElNRURPVVQ7CiAJCX0gZWxz ZSBpZiAocmV0ICE9IC1FUkVTVEFSVFNZUykgewogCQkJcmV0ID0gMDsKIAkJfQogCX0KIAorCWRt YV9mZW5jZV9wdXQoJmYtPmJhc2UpOworCiAJcmV0dXJuIHJldDsKIH0KIAogLyogY2FsbGVkIGZy b20gd29ya3F1ZXVlICovCi12b2lkIG1zbV91cGRhdGVfZmVuY2Uoc3RydWN0IG1zbV9mZW5jZV9j b250ZXh0ICpmY3R4LCB1aW50MzJfdCBmZW5jZSkKK3ZvaWQgbXNtX3VwZGF0ZV9mZW5jZShzdHJ1 Y3QgbXNtX2ZlbmNlX2NvbnRleHQgKmZjdHgsCisJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmlu ZywgdWludDMyX3QgZmVuY2UpCiB7CiAJc3Bpbl9sb2NrKCZmY3R4LT5zcGlubG9jayk7Ci0JZmN0 eC0+Y29tcGxldGVkX2ZlbmNlID0gbWF4KGZlbmNlLCBmY3R4LT5jb21wbGV0ZWRfZmVuY2UpOwor CXJpbmctPmNvbXBsZXRlZF9mZW5jZSA9IG1heChmZW5jZSwgcmluZy0+Y29tcGxldGVkX2ZlbmNl KTsKIAlzcGluX3VubG9jaygmZmN0eC0+c3BpbmxvY2spOwogCiAJd2FrZV91cF9hbGwoJmZjdHgt PmV2ZW50KTsKIH0KIAotc3RydWN0IG1zbV9mZW5jZSB7Ci0Jc3RydWN0IG1zbV9mZW5jZV9jb250 ZXh0ICpmY3R4OwotCXN0cnVjdCBkbWFfZmVuY2UgYmFzZTsKLX07CiAKIHN0YXRpYyBpbmxpbmUg c3RydWN0IG1zbV9mZW5jZSAqdG9fbXNtX2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQog ewpAQCAtMTI3LDEyICsxNTcsMTcgQEAgc3RhdGljIGJvb2wgbXNtX2ZlbmNlX2VuYWJsZV9zaWdu YWxpbmcoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiBzdGF0aWMgYm9vbCBtc21fZmVuY2Vfc2ln bmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiB7CiAJc3RydWN0IG1zbV9mZW5jZSAqZiA9 IHRvX21zbV9mZW5jZShmZW5jZSk7Ci0JcmV0dXJuIGZlbmNlX2NvbXBsZXRlZChmLT5mY3R4LCBm LT5iYXNlLnNlcW5vKTsKKwlyZXR1cm4gZmVuY2VfY29tcGxldGVkKGYtPnJpbmcsIGYtPmJhc2Uu c2Vxbm8pOwogfQogCiBzdGF0aWMgdm9pZCBtc21fZmVuY2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKIHsKIAlzdHJ1Y3QgbXNtX2ZlbmNlICpmID0gdG9fbXNtX2ZlbmNlKGZlbmNl KTsKKworCXNwaW5fbG9jaygmZi0+ZmN0eC0+c3BpbmxvY2spOworCWhhc2hfZGVsX3JjdSgmZi0+ bm9kZSk7CisJc3Bpbl91bmxvY2soJmYtPmZjdHgtPnNwaW5sb2NrKTsKKwogCWtmcmVlX3JjdShm LCBiYXNlLnJjdSk7CiB9CiAKQEAgLTE0Niw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCBtc21fZmVu Y2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKIH07CiAKIHN0cnVjdCBkbWFfZmVu Y2UgKgotbXNtX2ZlbmNlX2FsbG9jKHN0cnVjdCBtc21fZmVuY2VfY29udGV4dCAqZmN0eCkKK21z bV9mZW5jZV9hbGxvYyhzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRleHQgKmZjdHgsIHN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZykKIHsKIAlzdHJ1Y3QgbXNtX2ZlbmNlICpmOwogCkBAIC0xNTUsOSAr MTkwLDE3IEBAIHN0cnVjdCBkbWFfZmVuY2UgKgogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK IAogCWYtPmZjdHggPSBmY3R4OworCWYtPnJpbmcgPSByaW5nOworCisJLyogTWFrZSBhIHVzZXIg ZmVuY2UgSUQgdG8gcGFzcyBiYWNrIGZvciB0aGUgbGVnYWN5IGZ1bmN0aW9ucyAqLworCWYtPmZl bmNlX2lkID0gKytmY3R4LT5mZW5jZV9pZDsKKworCXNwaW5fbG9jaygmZmN0eC0+c3BpbmxvY2sp OworCWhhc2hfYWRkKGZjdHgtPmhhc2gsICZmLT5ub2RlLCBmLT5mZW5jZV9pZCk7CisJc3Bpbl91 bmxvY2soJmZjdHgtPnNwaW5sb2NrKTsKIAogCWRtYV9mZW5jZV9pbml0KCZmLT5iYXNlLCAmbXNt X2ZlbmNlX29wcywgJmZjdHgtPnNwaW5sb2NrLAotCQkgICAgICAgZmN0eC0+Y29udGV4dCwgKytm Y3R4LT5sYXN0X2ZlbmNlKTsKKwkJCWZjdHgtPmNvbnRleHQgKyByaW5nLT5pZCwgKytyaW5nLT5s YXN0X2ZlbmNlKTsKIAogCXJldHVybiAmZi0+YmFzZTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2ZlbmNlLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9mZW5jZS5o CmluZGV4IDU2MDYxYWEuLjU0MGRjNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2ZlbmNlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmVuY2UuaApAQCAtMTgs MTcgKzE4LDE4IEBACiAjaWZuZGVmIF9fTVNNX0ZFTkNFX0hfXwogI2RlZmluZSBfX01TTV9GRU5D RV9IX18KIAorI2luY2x1ZGUgPGxpbnV4L2hhc2h0YWJsZS5oPgogI2luY2x1ZGUgIm1zbV9kcnYu aCIKKyNpbmNsdWRlICJtc21fcmluZ2J1ZmZlci5oIgogCiBzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRl eHQgewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl1bnNp Z25lZCBjb250ZXh0OwotCS8qIGxhc3RfZmVuY2UgPT0gY29tcGxldGVkX2ZlbmNlIC0tPiBubyBw ZW5kaW5nIHdvcmsgKi8KLQl1aW50MzJfdCBsYXN0X2ZlbmNlOyAgICAgICAgICAvKiBsYXN0IGFz c2lnbmVkIGZlbmNlICovCi0JdWludDMyX3QgY29tcGxldGVkX2ZlbmNlOyAgICAgLyogbGFzdCBj b21wbGV0ZWQgZmVuY2UgKi8KKwl1MzIgZmVuY2VfaWQ7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgZXZl bnQ7CiAJc3BpbmxvY2tfdCBzcGlubG9jazsKKwlERUNMQVJFX0hBU0hUQUJMRShoYXNoLCA0KTsK IH07CiAKIHN0cnVjdCBtc21fZmVuY2VfY29udGV4dCAqIG1zbV9mZW5jZV9jb250ZXh0X2FsbG9j KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCkBAIC0zOSw4ICs0MCwxMCBAQCBpbnQgbXNtX3dhaXRf ZmVuY2Uoc3RydWN0IG1zbV9mZW5jZV9jb250ZXh0ICpmY3R4LCB1aW50MzJfdCBmZW5jZSwKIAkJ a3RpbWVfdCAqdGltZW91dCwgYm9vbCBpbnRlcnJ1cHRpYmxlKTsKIGludCBtc21fcXVldWVfZmVu Y2VfY2Ioc3RydWN0IG1zbV9mZW5jZV9jb250ZXh0ICpmY3R4LAogCQlzdHJ1Y3QgbXNtX2ZlbmNl X2NiICpjYiwgdWludDMyX3QgZmVuY2UpOwotdm9pZCBtc21fdXBkYXRlX2ZlbmNlKHN0cnVjdCBt c21fZmVuY2VfY29udGV4dCAqZmN0eCwgdWludDMyX3QgZmVuY2UpOwordm9pZCBtc21fdXBkYXRl X2ZlbmNlKHN0cnVjdCBtc21fZmVuY2VfY29udGV4dCAqZmN0eCwKKwkJc3RydWN0IG1zbV9yaW5n YnVmZmVyICpyaW5nLCB1aW50MzJfdCBmZW5jZSk7CiAKLXN0cnVjdCBkbWFfZmVuY2UgKiBtc21f ZmVuY2VfYWxsb2Moc3RydWN0IG1zbV9mZW5jZV9jb250ZXh0ICpmY3R4KTsKK3N0cnVjdCBkbWFf ZmVuY2UgKm1zbV9mZW5jZV9hbGxvYyhzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRleHQgKmZjdHgsCisJ CXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0u aAppbmRleCA0MGNkMGI2Li42MzNiNWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaApAQCAtMTIwLDYg KzEyMCw3IEBAIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCB7CiAJc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2U7CiAJc3RydWN0IHBpZCAqcGlkOyAgICAvKiBzdWJtaXR0aW5nIHByb2Nlc3MgKi8KIAlib29s IHZhbGlkOyAgICAgICAgIC8qIHRydWUgaWYgbm8gY21kc3RyZWFtIHBhdGNoaW5nIG5lZWRlZCAq LworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZzsKIAl1bnNpZ25lZCBpbnQgbnJfY21kczsK IAl1bnNpZ25lZCBpbnQgbnJfYm9zOwogCXN0cnVjdCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1f c3VibWl0LmMKaW5kZXggODQxOTY4MC4uZDgwMjFhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dl bV9zdWJtaXQuYwpAQCAtMzkwLDcgKzM5MCw3IEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBzeW5jX2ZpbGUgKnN5 bmNfZmlsZSA9IE5VTEw7CiAJaW50IG91dF9mZW5jZV9mZCA9IC0xOwogCXVuc2lnbmVkIGk7Ci0J aW50IHJldDsKKwlpbnQgcmV0LCByaW5nOwogCiAJaWYgKCFncHUpCiAJCXJldHVybiAtRU5YSU87 CkBAIC01MjIsNyArNTIyLDEzIEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJc3VibWl0LT5ucl9jbWRzID0gaTsKIAotCXN1 Ym1pdC0+ZmVuY2UgPSBtc21fZmVuY2VfYWxsb2MoZ3B1LT5mY3R4KTsKKwlyaW5nID0gY2xhbXBf dCh1aW50MzJfdCwKKwkJKGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1JVF9SSU5HX01BU0spID4+IE1T TV9TVUJNSVRfUklOR19TSElGVCwKKwkJMCwgZ3B1LT5ucl9yaW5ncyAtIDEpOworCisJc3VibWl0 LT5yaW5nID0gZ3B1LT5yYltyaW5nXTsKKworCXN1Ym1pdC0+ZmVuY2UgPSBtc21fZmVuY2VfYWxs b2MoZ3B1LT5mY3R4LCBzdWJtaXQtPnJpbmcpOwogCWlmIChJU19FUlIoc3VibWl0LT5mZW5jZSkp IHsKIAkJcmV0ID0gUFRSX0VSUihzdWJtaXQtPmZlbmNlKTsKIAkJc3VibWl0LT5mZW5jZSA9IE5V TEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5jCmluZGV4IDA1MGQ5OTQuLmM3OTY5ZjUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2dwdS5jCkBAIC0yNzQsMTUgKzI3NCwzNyBAQCBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtl cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3RydWN0IG1zbV9ncHUgKmdwdSA9IGNvbnRh aW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXNtX2dwdSwgcmVjb3Zlcl93b3JrKTsKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7CiAJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQ7 Ci0JdWludDMyX3QgZmVuY2UgPSBncHUtPmZ1bmNzLT5sYXN0X2ZlbmNlKGdwdSk7CisJc3RydWN0 IG1zbV9yaW5nYnVmZmVyICpyaW5nOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqY3VyX3Jpbmcg PSBncHUtPmZ1bmNzLT5hY3RpdmVfcmluZyhncHUpOworCWludCBpOworCisJLyogVXBkYXRlIGFs bCB0aGUgcmluZ3Mgd2l0aCB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdCBmZW5jZSAqLworCUZPUl9F QUNIX1JJTkcoZ3B1LCByaW5nLCBpKSB7CisJCXVpbnQzMl90IGZlbmNlID0gZ3B1LT5mdW5jcy0+ bGFzdF9mZW5jZShncHUsIHJpbmcpOwogCi0JbXNtX3VwZGF0ZV9mZW5jZShncHUtPmZjdHgsIGZl bmNlICsgMSk7CisJCS8qCisJCSAqIEZvciB0aGUgY3VycmVudCAoZmF1bHRpbmc/KSByaW5nL3N1 Ym1pdCBhZHZhbmNlIHRoZSBmZW5jZSBieQorCQkgKiBvbmUgbW9yZSB0byBjbGVhciB0aGUgZmF1 bHRpbmcgc3VibWl0CisJCSAqLworCQlpZiAocmluZyA9PSBjdXJfcmluZykKKwkJCWZlbmNlID0g ZmVuY2UgKyAxOworCisJCW1zbV91cGRhdGVfZmVuY2UoZ3B1LT5mY3R4LCBjdXJfcmluZywgZmVu Y2UpOworCX0KIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCWRldl9lcnIo ZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIHJlY292ZXIhXG4iLCBncHUtPm5hbWUpOwogCWxpc3Rf Zm9yX2VhY2hfZW50cnkoc3VibWl0LCAmZ3B1LT5zdWJtaXRfbGlzdCwgbm9kZSkgewotCQlpZiAo c3VibWl0LT5mZW5jZS0+c2Vxbm8gPT0gKGZlbmNlICsgMSkpIHsKKwkJdWludDMyX3QgZmVuY2U7 CisKKwkJLyogT25seSBjb25zaWRlciBzdWJtaXRzIGZvciB0aGUgY3VycmVudCByaW5nICovCisJ CWlmIChzdWJtaXQtPnJpbmcgIT0gY3VyX3JpbmcpCisJCQljb250aW51ZTsKKworCQlmZW5jZSA9 IGdwdS0+ZnVuY3MtPmxhc3RfZmVuY2UoZ3B1LCByaW5nKSArIDE7CisKKwkJaWYgKHN1Ym1pdC0+ ZmVuY2UtPnNlcW5vID09IGZlbmNlKSB7CiAJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAK IAkJCXJjdV9yZWFkX2xvY2soKTsKQEAgLTMwMywxMCArMzI1LDkgQEAgc3RhdGljIHZvaWQgcmVj b3Zlcl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQlpbmFjdGl2ZV9jYW5jZWwo Z3B1KTsKIAkJZ3B1LT5mdW5jcy0+cmVjb3ZlcihncHUpOwogCi0JCS8qIHJlcGxheSB0aGUgcmVt YWluaW5nIHN1Ym1pdHMgYWZ0ZXIgdGhlIG9uZSB0aGF0IGh1bmc6ICovCi0JCWxpc3RfZm9yX2Vh Y2hfZW50cnkoc3VibWl0LCAmZ3B1LT5zdWJtaXRfbGlzdCwgbm9kZSkgeworCQkvKiByZXBsYXkg dGhlIHJlbWFpbmluZyBzdWJtaXRzIGZvciBhbGwgcmluZ3M6ICovCisJCWxpc3RfZm9yX2VhY2hf ZW50cnkoc3VibWl0LCAmZ3B1LT5zdWJtaXRfbGlzdCwgbm9kZSkKIAkJCWdwdS0+ZnVuY3MtPnN1 Ym1pdChncHUsIHN1Ym1pdCwgTlVMTCk7Ci0JCX0KIAl9CiAKIAltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKQEAgLTMyNiwyNSArMzQ3LDI3IEBAIHN0YXRpYyB2b2lkIGhhbmdjaGVj a19oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gKHN0 cnVjdCBtc21fZ3B1ICopZGF0YTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7 CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JdWlu dDMyX3QgZmVuY2UgPSBncHUtPmZ1bmNzLT5sYXN0X2ZlbmNlKGdwdSk7CisJc3RydWN0IG1zbV9y aW5nYnVmZmVyICpyaW5nID0gZ3B1LT5mdW5jcy0+YWN0aXZlX3JpbmcoZ3B1KTsKKwl1aW50MzJf dCBmZW5jZSA9IGdwdS0+ZnVuY3MtPmxhc3RfZmVuY2UoZ3B1LCByaW5nKTsKIAotCWlmIChmZW5j ZSAhPSBncHUtPmhhbmdjaGVja19mZW5jZSkgeworCWlmIChmZW5jZSAhPSBncHUtPmhhbmdjaGVj a19mZW5jZVtyaW5nLT5pZF0pIHsKIAkJLyogc29tZSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlLi4g eWEhICovCi0JCWdwdS0+aGFuZ2NoZWNrX2ZlbmNlID0gZmVuY2U7Ci0JfSBlbHNlIGlmIChmZW5j ZSA8IGdwdS0+ZmN0eC0+bGFzdF9mZW5jZSkgeworCQlncHUtPmhhbmdjaGVja19mZW5jZVtyaW5n LT5pZF0gPSBmZW5jZTsKKwl9IGVsc2UgaWYgKGZlbmNlIDwgcmluZy0+bGFzdF9mZW5jZSkgewog CQkvKiBubyBwcm9ncmVzcyBhbmQgbm90IGRvbmUuLiBodW5nISAqLwotCQlncHUtPmhhbmdjaGVj a19mZW5jZSA9IGZlbmNlOwotCQlkZXZfZXJyKGRldi0+ZGV2LCAiJXM6IGhhbmdjaGVjayBkZXRl Y3RlZCBncHUgbG9ja3VwIVxuIiwKLQkJCQlncHUtPm5hbWUpOworCQlncHUtPmhhbmdjaGVja19m ZW5jZVtyaW5nLT5pZF0gPSBmZW5jZTsKKwkJZGV2X2VycihkZXYtPmRldiwgIiVzOiBoYW5nY2hl Y2sgZGV0ZWN0ZWQgZ3B1IGxvY2t1cCByYiAlZCFcbiIsCisJCQkJZ3B1LT5uYW1lLCByaW5nLT5p ZCk7CiAJCWRldl9lcnIoZGV2LT5kZXYsICIlczogICAgIGNvbXBsZXRlZCBmZW5jZTogJXVcbiIs CiAJCQkJZ3B1LT5uYW1lLCBmZW5jZSk7CiAJCWRldl9lcnIoZGV2LT5kZXYsICIlczogICAgIHN1 Ym1pdHRlZCBmZW5jZTogJXVcbiIsCi0JCQkJZ3B1LT5uYW1lLCBncHUtPmZjdHgtPmxhc3RfZmVu Y2UpOworCQkJCWdwdS0+bmFtZSwgcmluZy0+bGFzdF9mZW5jZSk7CisKIAkJcXVldWVfd29yayhw cml2LT53cSwgJmdwdS0+cmVjb3Zlcl93b3JrKTsKIAl9CiAKIAkvKiBpZiBzdGlsbCBtb3JlIHBl bmRpbmcgd29yaywgcmVzZXQgdGhlIGhhbmdjaGVjayB0aW1lcjogKi8KLQlpZiAoZ3B1LT5mY3R4 LT5sYXN0X2ZlbmNlID4gZ3B1LT5oYW5nY2hlY2tfZmVuY2UpCisJaWYgKHJpbmctPmxhc3RfZmVu Y2UgPiBncHUtPmhhbmdjaGVja19mZW5jZVtyaW5nLT5pZF0pCiAJCWhhbmdjaGVja190aW1lcl9y ZXNldChncHUpOwogCiAJLyogd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBpcnE6ICovCkBAIC00Njgs MjAgKzQ5MSwxMyBAQCBzdGF0aWMgdm9pZCByZXRpcmVfc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpn cHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0KQogc3RhdGljIHZvaWQgcmV0aXJlX3N1 Ym1pdHMoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Z3B1LT5kZXY7CisJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsICp0bXA7CiAKIAlXQVJO X09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CiAKLQl3aGlsZSAoIWxp c3RfZW1wdHkoJmdwdS0+c3VibWl0X2xpc3QpKSB7Ci0JCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAq c3VibWl0OwotCi0JCXN1Ym1pdCA9IGxpc3RfZmlyc3RfZW50cnkoJmdwdS0+c3VibWl0X2xpc3Qs Ci0JCQkJc3RydWN0IG1zbV9nZW1fc3VibWl0LCBub2RlKTsKLQotCQlpZiAoZG1hX2ZlbmNlX2lz X3NpZ25hbGVkKHN1Ym1pdC0+ZmVuY2UpKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN1 Ym1pdCwgdG1wLCAmZ3B1LT5zdWJtaXRfbGlzdCwgbm9kZSkgeworCQlpZiAoZG1hX2ZlbmNlX2lz X3NpZ25hbGVkKHN1Ym1pdC0+ZmVuY2UpKQogCQkJcmV0aXJlX3N1Ym1pdChncHUsIHN1Ym1pdCk7 Ci0JCX0gZWxzZSB7Ci0JCQlicmVhazsKLQkJfQogCX0KIH0KIApAQCAtNDg5LDkgKzUwNSwxMiBA QCBzdGF0aWMgdm9pZCByZXRpcmVfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsK IAlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtc21fZ3B1 LCByZXRpcmVfd29yayk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGdwdS0+ZGV2OwotCXVp bnQzMl90IGZlbmNlID0gZ3B1LT5mdW5jcy0+bGFzdF9mZW5jZShncHUpOworCXN0cnVjdCBtc21f cmluZ2J1ZmZlciAqcmluZzsKKwlpbnQgaTsKIAotCW1zbV91cGRhdGVfZmVuY2UoZ3B1LT5mY3R4 LCBmZW5jZSk7CisJRk9SX0VBQ0hfUklORyhncHUsIHJpbmcsIGkpCisJCW1zbV91cGRhdGVfZmVu Y2UoZ3B1LT5mY3R4LCByaW5nLAorCQkJZ3B1LT5mdW5jcy0+bGFzdF9mZW5jZShncHUsIHJpbmcp KTsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlyZXRpcmVfc3VibWl0cyhn cHUpOwpAQCAtNTcyLDcgKzU5MSw3IEBAIGludCBtc21fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRybSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAkJY29uc3QgY2hhciAqbmFt ZSwgc3RydWN0IG1zbV9ncHVfY29uZmlnICpjb25maWcpCiB7CiAJc3RydWN0IGlvbW11X2RvbWFp biAqaW9tbXU7Ci0JaW50IGksIHJldDsKKwlpbnQgaSwgcmV0LCBucl9yaW5ncyA9IGNvbmZpZy0+ bnJfcmluZ3M7CiAKIAlpZiAoV0FSTl9PTihncHUtPm51bV9wZXJmY250cnMgPiBBUlJBWV9TSVpF KGdwdS0+bGFzdF9jbnRycykpKQogCQlncHUtPm51bV9wZXJmY250cnMgPSBBUlJBWV9TSVpFKGdw dS0+bGFzdF9jbnRycyk7CkBAIC02NzQsMzcgKzY5Myw1OSBAQCBpbnQgbXNtX2dwdV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCWRl dl9pbmZvKGRybS0+ZGV2LCAiJXM6IG5vIElPTU1VLCBmYWxsYmFjayB0byBWUkFNIGNhcnZlb3V0 IVxuIiwgbmFtZSk7CiAJfQogCi0JLyogQ3JlYXRlIHJpbmdidWZmZXI6ICovCi0JbXV0ZXhfbG9j aygmZHJtLT5zdHJ1Y3RfbXV0ZXgpOwotCWdwdS0+cmIgPSBtc21fcmluZ2J1ZmZlcl9uZXcoZ3B1 LCBjb25maWctPnJpbmdzeik7Ci0JbXV0ZXhfdW5sb2NrKCZkcm0tPnN0cnVjdF9tdXRleCk7Ci0J aWYgKElTX0VSUihncHUtPnJiKSkgewotCQlyZXQgPSBQVFJfRVJSKGdwdS0+cmIpOwotCQlncHUt PnJiID0gTlVMTDsKLQkJZGV2X2Vycihkcm0tPmRldiwgImNvdWxkIG5vdCBjcmVhdGUgcmluZ2J1 ZmZlcjogJWRcbiIsIHJldCk7Ci0JCWdvdG8gZmFpbDsKKwlpZiAobnJfcmluZ3MgPiBBUlJBWV9T SVpFKGdwdS0+cmIpKSB7CisJCURSTV9ERVZfSU5GT19PTkNFKGRybS0+ZGV2LCAiT25seSBjcmVh dGluZyAlbHUgcmluZ2J1ZmZlcnNcbiIsCisJCQlBUlJBWV9TSVpFKGdwdS0+cmIpKTsKKwkJbnJf cmluZ3MgPSBBUlJBWV9TSVpFKGdwdS0+cmIpOworCX0KKworCS8qIENyZWF0ZSByaW5nYnVmZmVy KHMpOiAqLworCWZvciAoaSA9IDA7IGkgPCBucl9yaW5nczsgaSsrKSB7CisJCW11dGV4X2xvY2so JmRybS0+c3RydWN0X211dGV4KTsKKwkJZ3B1LT5yYltpXSA9IG1zbV9yaW5nYnVmZmVyX25ldyhn cHUsIGkpOworCQltdXRleF91bmxvY2soJmRybS0+c3RydWN0X211dGV4KTsKKworCQlpZiAoSVNf RVJSKGdwdS0+cmJbaV0pKSB7CisJCQlyZXQgPSBQVFJfRVJSKGdwdS0+cmJbaV0pOworCQkJZ3B1 LT5yYltpXSA9IE5VTEw7CisJCQlkZXZfZXJyKGRybS0+ZGV2LAorCQkJCSJjb3VsZCBub3QgY3Jl YXRlIHJpbmdidWZmZXIgJWQ6ICVkXG4iLCBpLCByZXQpOworCQkJZ290byBmYWlsOworCQl9CiAJ fQogCisJZ3B1LT5ucl9yaW5ncyA9IG5yX3JpbmdzOwogCWJzX2luaXQoZ3B1KTsKIAogCXJldHVy biAwOwogCiBmYWlsOgorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdwdS0+cmIpOyBpKysp IHsKKwkJaWYgKGdwdS0+cmJbaV0pCisJCQltc21fcmluZ2J1ZmZlcl9kZXN0cm95KGdwdS0+cmJb aV0pOworCX0KKwogCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgbXNtX2dwdV9jbGVhbnVwKHN0cnVj dCBtc21fZ3B1ICpncHUpCiB7CisJaW50IGk7CisKIAlEQkcoIiVzIiwgZ3B1LT5uYW1lKTsKIAog CVdBUk5fT04oIWxpc3RfZW1wdHkoJmdwdS0+YWN0aXZlX2xpc3QpKTsKIAogCWJzX2ZpbmkoZ3B1 KTsKIAotCWlmIChncHUtPnJiKSB7Ci0JCWlmIChncHUtPnJiX2lvdmEpCi0JCQltc21fZ2VtX3B1 dF9pb3ZhKGdwdS0+cmItPmJvLCBncHUtPmFzcGFjZSk7Ci0JCW1zbV9yaW5nYnVmZmVyX2Rlc3Ry b3koZ3B1LT5yYik7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ3B1LT5yYik7IGkrKykg eworCQlpZiAoIWdwdS0+cmJbaV0pCisJCQljb250aW51ZTsKKworCQlpZiAoZ3B1LT5yYltpXS0+ aW92YSkKKwkJCW1zbV9nZW1fcHV0X2lvdmEoZ3B1LT5yYltpXS0+Ym8sIGdwdS0+YXNwYWNlKTsK KworCQltc21fcmluZ2J1ZmZlcl9kZXN0cm95KGdwdS0+cmJbaV0pOwogCX0KIAogCWlmIChncHUt PmZjdHgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCmluZGV4IGNjNjUzMGYuLjM4ZDgyNmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dwdS5oCkBAIC0zMyw3ICszMyw3IEBAIHN0cnVjdCBtc21fZ3B1X2NvbmZpZyB7CiAJ Y29uc3QgY2hhciAqaXJxbmFtZTsKIAl1aW50NjRfdCB2YV9zdGFydDsKIAl1aW50NjRfdCB2YV9l bmQ7Ci0JdW5zaWduZWQgaW50IHJpbmdzejsKKwl1bnNpZ25lZCBpbnQgbnJfcmluZ3M7CiB9Owog CiAvKiBTbyBmYXIsIHdpdGggaGFyZHdhcmUgdGhhdCBJJ3ZlIHNlZW4gdG8gZGF0ZSwgd2UgY2Fu IGhhdmU6CkBAIC01Nyw5ICs1NywxMSBAQCBzdHJ1Y3QgbXNtX2dwdV9mdW5jcyB7CiAJaW50ICgq cG1fcmVzdW1lKShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKIAl2b2lkICgqc3VibWl0KShzdHJ1Y3Qg bXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAkJCXN0cnVjdCBt c21fZmlsZV9wcml2YXRlICpjdHgpOwotCXZvaWQgKCpmbHVzaCkoc3RydWN0IG1zbV9ncHUgKmdw dSk7CisJdm9pZCAoKmZsdXNoKShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3Jpbmdi dWZmZXIgKnJpbmcpOwogCWlycXJldHVybl90ICgqaXJxKShzdHJ1Y3QgbXNtX2dwdSAqaXJxKTsK LQl1aW50MzJfdCAoKmxhc3RfZmVuY2UpKHN0cnVjdCBtc21fZ3B1ICpncHUpOworCXVpbnQzMl90 ICgqbGFzdF9mZW5jZSkoc3RydWN0IG1zbV9ncHUgKmdwdSwKKwkJCXN0cnVjdCBtc21fcmluZ2J1 ZmZlciAqcmluZyk7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICooKmFjdGl2ZV9yaW5nKShzdHJ1 Y3QgbXNtX2dwdSAqZ3B1KTsKIAl2b2lkICgqcmVjb3Zlcikoc3RydWN0IG1zbV9ncHUgKmdwdSk7 CiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogI2lmZGVmIENPTkZJR19E RUJVR19GUwpAQCAtODUsOSArODcsOCBAQCBzdHJ1Y3QgbXNtX2dwdSB7CiAJY29uc3Qgc3RydWN0 IG1zbV9ncHVfcGVyZmNudHIgKnBlcmZjbnRyczsKIAl1aW50MzJfdCBudW1fcGVyZmNudHJzOwog Ci0JLyogcmluZ2J1ZmZlcjogKi8KLQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJiOwotCXVpbnQ2 NF90IHJiX2lvdmE7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyYltNU01fR1BVX01BWF9SSU5H U107CisJaW50IG5yX3JpbmdzOwogCiAJLyogbGlzdCBvZiBHRU0gYWN0aXZlIG9iamVjdHM6ICov CiAJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlzdDsKQEAgLTEyNiwxNSArMTI3LDM2IEBAIHN0 cnVjdCBtc21fZ3B1IHsKICNkZWZpbmUgRFJNX01TTV9IQU5HQ0hFQ0tfUEVSSU9EIDUwMCAvKiBp biBtcyAqLwogI2RlZmluZSBEUk1fTVNNX0hBTkdDSEVDS19KSUZGSUVTIG1zZWNzX3RvX2ppZmZp ZXMoRFJNX01TTV9IQU5HQ0hFQ0tfUEVSSU9EKQogCXN0cnVjdCB0aW1lcl9saXN0IGhhbmdjaGVj a190aW1lcjsKLQl1aW50MzJfdCBoYW5nY2hlY2tfZmVuY2U7CisJdWludDMyX3QgaGFuZ2NoZWNr X2ZlbmNlW01TTV9HUFVfTUFYX1JJTkdTXTsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVjb3Zlcl93 b3JrOwogCiAJc3RydWN0IGxpc3RfaGVhZCBzdWJtaXRfbGlzdDsKIH07CiAKKy8qIEl0IHR1cm5z IG91dCB0aGF0IGFsbCB0YXJnZXRzIHVzZSB0aGUgc2FtZSByaW5nYnVmZmVyIHNpemUgKi8KKyNk ZWZpbmUgTVNNX0dQVV9SSU5HQlVGRkVSX1NaIFNaXzMySworCitzdGF0aWMgaW5saW5lIHN0cnVj dCBtc21fcmluZ2J1ZmZlciAqX19nZXRfcmluZyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBpbnQgaW5k ZXgpCit7CisJcmV0dXJuIChpbmRleCA8IEFSUkFZX1NJWkUoZ3B1LT5yYikgPyBncHUtPnJiW2lu ZGV4XSA6IE5VTEwpOworfQorCisjZGVmaW5lIEZPUl9FQUNIX1JJTkcoZ3B1LCByaW5nLCBpbmRl eCkgXAorCWZvciAoaW5kZXggPSAwLCByaW5nID0gKGdwdSktPnJiWzBdOyBcCisJCWluZGV4IDwg KGdwdSktPm5yX3JpbmdzICYmIGluZGV4IDwgQVJSQVlfU0laRSgoZ3B1KS0+cmIpOyBcCisJCWlu ZGV4KyssIHJpbmcgPSBfX2dldF9yaW5nKGdwdSwgaW5kZXgpKQorCiBzdGF0aWMgaW5saW5lIGJv b2wgbXNtX2dwdV9hY3RpdmUoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKLQlyZXR1cm4gZ3B1LT5m Y3R4LT5sYXN0X2ZlbmNlID4gZ3B1LT5mdW5jcy0+bGFzdF9mZW5jZShncHUpOworCXN0cnVjdCBt c21fcmluZ2J1ZmZlciAqcmluZzsKKwlpbnQgaTsKKworCUZPUl9FQUNIX1JJTkcoZ3B1LCByaW5n LCBpKSB7CisJCWlmIChyaW5nLT5sYXN0X2ZlbmNlID4gZ3B1LT5mdW5jcy0+bGFzdF9mZW5jZShn cHUsIHJpbmcpKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOwogfQogCiAv KiBQZXJmLUNvdW50ZXJzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmlu Z2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5jCmluZGV4IDY3 YjM0ZTAuLjJhYjMxYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3Jpbmdi dWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKQEAgLTE4 LDEzICsxOCwxMyBAQAogI2luY2x1ZGUgIm1zbV9yaW5nYnVmZmVyLmgiCiAjaW5jbHVkZSAibXNt X2dwdS5oIgogCi1zdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKm1zbV9yaW5nYnVmZmVyX25ldyhzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LCBpbnQgc2l6ZSkKK3N0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3Jp bmdidWZmZXJfbmV3KHN0cnVjdCBtc21fZ3B1ICpncHUsIGludCBpZCkKIHsKIAlzdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKnJpbmc7CiAJaW50IHJldDsKIAotCWlmIChXQVJOX09OKCFpc19wb3dlcl9v Zl8yKHNpemUpKSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJLyogV2UgYXNzdW1lIGV2 ZXJ3aGVyZSB0aGF0IE1TTV9HUFVfUklOR0JVRkZFUl9TWiBpcyBhIHBvd2VyIG9mIDIgKi8KKwlC VUlMRF9CVUdfT04oIWlzX3Bvd2VyX29mXzIoTVNNX0dQVV9SSU5HQlVGRkVSX1NaKSk7CiAKIAly aW5nID0ga3phbGxvYyhzaXplb2YoKnJpbmcpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXJpbmcpIHsK QEAgLTMzLDcgKzMzLDggQEAgc3RydWN0IG1zbV9yaW5nYnVmZmVyICptc21fcmluZ2J1ZmZlcl9u ZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwgaW50IHNpemUpCiAJfQogCiAJcmluZy0+Z3B1ID0gZ3B1 OwotCXJpbmctPmJvID0gbXNtX2dlbV9uZXcoZ3B1LT5kZXYsIHNpemUsIE1TTV9CT19XQyk7CisJ cmluZy0+aWQgPSBpZDsKKwlyaW5nLT5ibyA9IG1zbV9nZW1fbmV3KGdwdS0+ZGV2LCBNU01fR1BV X1JJTkdCVUZGRVJfU1osIE1TTV9CT19XQyk7CiAJaWYgKElTX0VSUihyaW5nLT5ibykpIHsKIAkJ cmV0ID0gUFRSX0VSUihyaW5nLT5ibyk7CiAJCXJpbmctPmJvID0gTlVMTDsKQEAgLTQ1LDExICs0 Niw5IEBAIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3JpbmdidWZmZXJfbmV3KHN0cnVjdCBt c21fZ3B1ICpncHUsIGludCBzaXplKQogCQlyZXQgPSBQVFJfRVJSKHJpbmctPnN0YXJ0KTsKIAkJ Z290byBmYWlsOwogCX0KLQlyaW5nLT5lbmQgICA9IHJpbmctPnN0YXJ0ICsgKHNpemUgLyA0KTsK KwlyaW5nLT5lbmQgICA9IHJpbmctPnN0YXJ0ICsgKE1TTV9HUFVfUklOR0JVRkZFUl9TWiA+PiAy KTsKIAlyaW5nLT5jdXIgICA9IHJpbmctPnN0YXJ0OwogCi0JcmluZy0+c2l6ZSA9IHNpemU7Ci0K IAlyZXR1cm4gcmluZzsKIAogZmFpbDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaApp bmRleCA2ZTBlMTA0Li40ZWIwNWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5o CkBAIC0yMiwxMiArMjIsMTYgQEAKIAogc3RydWN0IG1zbV9yaW5nYnVmZmVyIHsKIAlzdHJ1Y3Qg bXNtX2dwdSAqZ3B1OwotCWludCBzaXplOworCWludCBpZDsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmJvOwogCXVpbnQzMl90ICpzdGFydCwgKmVuZCwgKmN1cjsKKwl1aW50NjRfdCBpb3ZhOwor CS8qIGxhc3RfZmVuY2UgPT0gY29tcGxldGVkX2ZlbmNlIC0tPiBubyBwZW5kaW5nIHdvcmsgKi8K Kwl1aW50MzJfdCBsYXN0X2ZlbmNlOworCXVpbnQzMl90IGNvbXBsZXRlZF9mZW5jZTsKIH07CiAK LXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3JpbmdidWZmZXJfbmV3KHN0cnVjdCBtc21fZ3B1 ICpncHUsIGludCBzaXplKTsKK3N0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3JpbmdidWZmZXJf bmV3KHN0cnVjdCBtc21fZ3B1ICpncHUsIGludCBpZCk7CiB2b2lkIG1zbV9yaW5nYnVmZmVyX2Rl c3Ryb3koc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKTsKIAogLyogcmluZ2J1ZmZlciBoZWxw ZXJzICh0aGUgcGFydHMgdGhhdCBhcmUgc2FtZSBmb3IgYTN4eC9hMnh4L3oxODAuLikgKi8KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9t c21fZHJtLmgKaW5kZXggMDVkYzViMy4uOTE1NjM0YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBp L2RybS9tc21fZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmgKQEAgLTE5OSwx MCArMTk5LDE1IEBAIHN0cnVjdCBkcm1fbXNtX2dlbV9zdWJtaXRfYm8gewogI2RlZmluZSBNU01f U1VCTUlUX05PX0lNUExJQ0lUICAgMHg4MDAwMDAwMCAvKiBkaXNhYmxlIGltcGxpY2l0IHN5bmMg Ki8KICNkZWZpbmUgTVNNX1NVQk1JVF9GRU5DRV9GRF9JTiAgIDB4NDAwMDAwMDAgLyogZW5hYmxl IGlucHV0IGZlbmNlX2ZkICovCiAjZGVmaW5lIE1TTV9TVUJNSVRfRkVOQ0VfRkRfT1VUICAweDIw MDAwMDAwIC8qIGVuYWJsZSBvdXRwdXQgZmVuY2VfZmQgKi8KKworI2RlZmluZSBNU01fU1VCTUlU X1JJTkdfTUFTSyAweDAwMEYwMDAwCisjZGVmaW5lIE1TTV9TVUJNSVRfUklOR19TSElGVCAxNgor CiAjZGVmaW5lIE1TTV9TVUJNSVRfRkxBR1MgICAgICAgICAgICAgICAgKCBcCiAJCU1TTV9TVUJN SVRfTk9fSU1QTElDSVQgICB8IFwKIAkJTVNNX1NVQk1JVF9GRU5DRV9GRF9JTiAgIHwgXAogCQlN U01fU1VCTUlUX0ZFTkNFX0ZEX09VVCAgfCBcCisJCU1TTV9TVUJNSVRfUklOR19NQVNLCSB8IFwK IAkJMCkKIAogLyogRWFjaCBjbWRzdHJlYW0gc3VibWl0IGNvbnNpc3RzIG9mIGEgdGFibGUgb2Yg YnVmZmVycyBpbnZvbHZlZCwgYW5kCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9A bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZnJlZWRyZW5vCg==