From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 3/9] drm/msm: Support multiple ringbuffers Date: Fri, 20 Oct 2017 11:06:57 -0600 Message-ID: <1508519223-10631-4-git-send-email-jcrouse@codeaurora.org> References: <1508519223-10631-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: <1508519223-10631-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: linux-arm-msm@vger.kernel.org QWRkIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoZSBpZGVhIG9mIG11bHRpcGxlIHJp bmdidWZmZXJzLgpBc3NpZ24gZWFjaCByaW5nYnVmZmVyIGFuIGlkIGFuZCB1c2UgdGhhdCBhcyBh biBpbmRleCBmb3IgdGhlIHZhcmlvdXMKcmluZyBzcGVjaWZpYyBvcGVyYXRpb25zLgoKVGhlIGJp Z2dlc3QgZGVsdGEgaXMgdG8gc3VwcG9ydCBsZWdhY3kgZmVuY2VzLiBFYWNoIGZlbmNlIGdldHMg aXRzIG93bgpzZXF1ZW5jZSBudW1iZXIgYnV0IHRoZSBsZWdhY3kgZnVuY3Rpb25zIGV4cGVjdCB0 byB1c2UgYSB1bmlxdWUgaW50ZWdlci4KVG8gaGFuZGxlIHRoaXMgd2UgcmV0dXJuIGEgdW5pcXVl IGlkZW50aWZpZXIgZm9yIGVhY2ggc3VibWlzc2lvbiBidXQKbWFwIGl0IHRvIGEgc3BlY2lmaWMg cmluZy9zZXF1ZW5jZSB1bmRlciB0aGUgY292ZXJzLiBOZXdlciB1c2VycyB1c2UKYSBkbWFfZmVu Y2UgcG9pbnRlciBhbnl3YXkgc28gdGhleSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwgc2Vx dWVuY2UKSUQgb3IgcmluZy4KClRoZSBhY3R1YWwgbWVjaGFuaWNzIGZvciBtdWx0aXBsZSByaW5n YnVmZmVycyBhcmUgdmVyeSB0YXJnZXQgc3BlY2lmaWMKc28gdGhpcyBjb2RlIGp1c3QgYWxsb3dz IGZvciB0aGUgcG9zc2liaWxpdHkgYnV0IHN0aWxsIG9ubHkgZGVmaW5lcwpvbmUgcmluZ2J1ZmZl ciBmb3IgZWFjaCB0YXJnZXQgZmFtaWx5LgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8 amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9h M3h4X2dwdS5jICAgfCAgIDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1 LmMgICB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYyAgIHwg IDU0ICsrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5oICAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfcG93ZXIuYyB8ICAgNiAr LQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIHwgMTM3ICsrKysrKysr KysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dw dS5oIHwgIDIwICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jICAgICAgICAgICB8 ICAyMyArKystLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAgICAgICAgIHwgICA4 ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9mZW5jZS5jICAgICAgICAgfCAgIDIgKy0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmggICAgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZ2VtLmggICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9nZW1fc3VibWl0LmMgICAgfCAgMTIgKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9ncHUuYyAgICAgICAgICAgfCAxNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oICAgICAgICAgICB8ICA0MiArKysrLS0tLQog ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5jICAgIHwgIDM1ICsrKysrLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaCAgICB8ICAyMCArKystCiBkcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jICAgfCAgMjcgKysrKystCiBpbmNsdWRlL3Vh cGkvZHJtL21zbV9kcm0uaCAgICAgICAgICAgICAgfCAgIDEgKwogMTkgZmlsZXMgY2hhbmdlZCwg MzY2IGluc2VydGlvbnMoKyksIDIxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYTN4eF9ncHUuYwppbmRleCA3ODlmN2ZiLi40YmFlZjI3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2EzeHhfZ3B1LmMKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogc3RhdGljIGJvb2wgYTN4eF9t ZV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiB7Ci0Jc3RydWN0IG1zbV9yaW5nYnVmZmVyICpy aW5nID0gZ3B1LT5yYjsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUtPnJiWzBd OwogCiAJT1VUX1BLVDMocmluZywgQ1BfTUVfSU5JVCwgMTcpOwogCU9VVF9SSU5HKHJpbmcsIDB4 MDAwMDAzZjcpOwpAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgYm9vbCBhM3h4X21lX2luaXQoc3Ry dWN0IG1zbV9ncHUgKmdwdSkKIAlPVVRfUklORyhyaW5nLCAweDAwMDAwMDAwKTsKIAlPVVRfUklO RyhyaW5nLCAweDAwMDAwMDAwKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNoKGdwdSk7CisJZ3B1LT5m dW5jcy0+Zmx1c2goZ3B1LCByaW5nKTsKIAlyZXR1cm4gYTN4eF9pZGxlKGdwdSk7CiB9CiAKQEAg LTMzOSw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCBhM3h4X2Rlc3Ryb3koc3RydWN0IG1zbV9ncHUg KmdwdSkKIHN0YXRpYyBib29sIGEzeHhfaWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewogCS8q IHdhaXQgZm9yIHJpbmdidWZmZXIgdG8gZHJhaW46ICovCi0JaWYgKCFhZHJlbm9faWRsZShncHUp KQorCWlmICghYWRyZW5vX2lkbGUoZ3B1LCBncHUtPnJiWzBdKSkKIAkJcmV0dXJuIGZhbHNlOwog CiAJLyogdGhlbiB3YWl0IGZvciBHUFUgdG8gZmluaXNoOiAqLwpAQCAtNDQ2LDYgKzQ0Niw3IEBA IHN0YXRpYyB2b2lkIGEzeHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCQkucmVjb3ZlciA9 IGEzeHhfcmVjb3ZlciwKIAkJLnN1Ym1pdCA9IGFkcmVub19zdWJtaXQsCiAJCS5mbHVzaCA9IGFk cmVub19mbHVzaCwKKwkJLmFjdGl2ZV9yaW5nID0gYWRyZW5vX2FjdGl2ZV9yaW5nLAogCQkuaXJx ID0gYTN4eF9pcnEsCiAJCS5kZXN0cm95ID0gYTN4eF9kZXN0cm95LAogI2lmZGVmIENPTkZJR19E RUJVR19GUwpAQCAtNDkxLDcgKzQ5Miw3IEBAIHN0cnVjdCBtc21fZ3B1ICphM3h4X2dwdV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJYWRyZW5vX2dwdS0+cmVnaXN0ZXJzID0gYTN4eF9y ZWdpc3RlcnM7CiAJYWRyZW5vX2dwdS0+cmVnX29mZnNldHMgPSBhM3h4X3JlZ2lzdGVyX29mZnNl dHM7CiAKLQlyZXQgPSBhZHJlbm9fZ3B1X2luaXQoZGV2LCBwZGV2LCBhZHJlbm9fZ3B1LCAmZnVu Y3MpOworCXJldCA9IGFkcmVub19ncHVfaW5pdChkZXYsIHBkZXYsIGFkcmVub19ncHUsICZmdW5j cywgMSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YTR4eF9ncHUuYwppbmRleCBmODdjNDMxMi4uODE5OWE0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hNHh4X2dwdS5jCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgYTR4eF9lbmFi bGVfaHdjZyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCiBzdGF0aWMgYm9vbCBhNHh4X21lX2luaXQo c3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKLQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBn cHUtPnJiOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmJbMF07CiAKIAlP VVRfUEtUMyhyaW5nLCBDUF9NRV9JTklULCAxNyk7CiAJT1VUX1JJTkcocmluZywgMHgwMDAwMDNm Nyk7CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIGJvb2wgYTR4eF9tZV9pbml0KHN0cnVjdCBt c21fZ3B1ICpncHUpCiAJT1VUX1JJTkcocmluZywgMHgwMDAwMDAwMCk7CiAJT1VUX1JJTkcocmlu ZywgMHgwMDAwMDAwMCk7CiAKLQlncHUtPmZ1bmNzLT5mbHVzaChncHUpOworCWdwdS0+ZnVuY3Mt PmZsdXNoKGdwdSwgcmluZyk7CiAJcmV0dXJuIGE0eHhfaWRsZShncHUpOwogfQogCkBAIC0zMzcs NyArMzM3LDcgQEAgc3RhdGljIHZvaWQgYTR4eF9kZXN0cm95KHN0cnVjdCBtc21fZ3B1ICpncHUp CiBzdGF0aWMgYm9vbCBhNHh4X2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAkvKiB3YWl0 IGZvciByaW5nYnVmZmVyIHRvIGRyYWluOiAqLwotCWlmICghYWRyZW5vX2lkbGUoZ3B1KSkKKwlp ZiAoIWFkcmVub19pZGxlKGdwdSwgZ3B1LT5yYlswXSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IHRoZW4gd2FpdCBmb3IgR1BVIHRvIGZpbmlzaDogKi8KQEAgLTUzNCw2ICs1MzQsNyBAQCBzdGF0 aWMgaW50IGE0eHhfZ2V0X3RpbWVzdGFtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50NjRfdCAq dmFsdWUpCiAJCS5yZWNvdmVyID0gYTR4eF9yZWNvdmVyLAogCQkuc3VibWl0ID0gYWRyZW5vX3N1 Ym1pdCwKIAkJLmZsdXNoID0gYWRyZW5vX2ZsdXNoLAorCQkuYWN0aXZlX3JpbmcgPSBhZHJlbm9f YWN0aXZlX3JpbmcsCiAJCS5pcnEgPSBhNHh4X2lycSwKIAkJLmRlc3Ryb3kgPSBhNHh4X2Rlc3Ry b3ksCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCkBAIC01NzMsNyArNTc0LDcgQEAgc3RydWN0IG1z bV9ncHUgKmE0eHhfZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlhZHJlbm9fZ3B1 LT5yZWdpc3RlcnMgPSBhNHh4X3JlZ2lzdGVyczsKIAlhZHJlbm9fZ3B1LT5yZWdfb2Zmc2V0cyA9 IGE0eHhfcmVnaXN0ZXJfb2Zmc2V0czsKIAotCXJldCA9IGFkcmVub19ncHVfaW5pdChkZXYsIHBk ZXYsIGFkcmVub19ncHUsICZmdW5jcyk7CisJcmV0ID0gYWRyZW5vX2dwdV9pbml0KGRldiwgcGRl diwgYWRyZW5vX2dwdSwgJmZ1bmNzLCAxKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCmluZGV4IDMyYTViNTUuLmI3YjlmNGYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYwpAQCAtOTksNyArOTksNyBAQCBzdGF0 aWMgdm9pZCBhNXh4X3N1Ym1pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9z dWJtaXQgKnN1Ym1pdCwKIAlzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4KQogewogCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBncHUtPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0 IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1LT5yYjsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIg KnJpbmcgPSBzdWJtaXQtPnJpbmc7CiAJdW5zaWduZWQgaW50IGksIGlicyA9IDA7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgc3VibWl0LT5ucl9jbWRzOyBpKyspIHsKQEAgLTEyMCwxNSArMTIwLDE1IEBA IHN0YXRpYyB2b2lkIGE1eHhfc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21f Z2VtX3N1Ym1pdCAqc3VibWl0LAogCX0KIAogCU9VVF9QS1Q0KHJpbmcsIFJFR19BNVhYX0NQX1ND UkFUQ0hfUkVHKDIpLCAxKTsKLQlPVVRfUklORyhyaW5nLCBzdWJtaXQtPmZlbmNlLT5zZXFubyk7 CisJT1VUX1JJTkcocmluZywgc3VibWl0LT5zZXFubyk7CiAKIAlPVVRfUEtUNyhyaW5nLCBDUF9F VkVOVF9XUklURSwgNCk7CiAJT1VUX1JJTkcocmluZywgQ0FDSEVfRkxVU0hfVFMgfCAoMSA8PCAz MSkpOwotCU9VVF9SSU5HKHJpbmcsIGxvd2VyXzMyX2JpdHMocmJtZW1wdHIoZ3B1LCBmZW5jZSkp KTsKLQlPVVRfUklORyhyaW5nLCB1cHBlcl8zMl9iaXRzKHJibWVtcHRyKGdwdSwgZmVuY2UpKSk7 Ci0JT1VUX1JJTkcocmluZywgc3VibWl0LT5mZW5jZS0+c2Vxbm8pOworCU9VVF9SSU5HKHJpbmcs IGxvd2VyXzMyX2JpdHMocmJtZW1wdHIocmluZywgZmVuY2UpKSk7CisJT1VUX1JJTkcocmluZywg dXBwZXJfMzJfYml0cyhyYm1lbXB0cihyaW5nLCBmZW5jZSkpKTsKKwlPVVRfUklORyhyaW5nLCBz dWJtaXQtPnNlcW5vKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNoKGdwdSk7CisJZ3B1LT5mdW5jcy0+ Zmx1c2goZ3B1LCByaW5nKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCB7CkBAIC0yNDQsNyAr MjQ0LDcgQEAgdm9pZCBhNXh4X3NldF9od2NnKHN0cnVjdCBtc21fZ3B1ICpncHUsIGJvb2wgc3Rh dGUpCiBzdGF0aWMgaW50IGE1eHhfbWVfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewogCXN0 cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwotCXN0cnVj dCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVy ICpyaW5nID0gZ3B1LT5yYlswXTsKIAogCU9VVF9QS1Q3KHJpbmcsIENQX01FX0lOSVQsIDgpOwog CkBAIC0yNzUsOSArMjc1LDggQEAgc3RhdGljIGludCBhNXh4X21lX2luaXQoc3RydWN0IG1zbV9n cHUgKmdwdSkKIAlPVVRfUklORyhyaW5nLCAweDAwMDAwMDAwKTsKIAlPVVRfUklORyhyaW5nLCAw eDAwMDAwMDAwKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNoKGdwdSk7Ci0KLQlyZXR1cm4gYTV4eF9p ZGxlKGdwdSkgPyAwIDogLUVJTlZBTDsKKwlncHUtPmZ1bmNzLT5mbHVzaChncHUsIHJpbmcpOwor CXJldHVybiBhNXh4X2lkbGUoZ3B1LCByaW5nKSA/IDAgOiAtRUlOVkFMOwogfQogCiBzdGF0aWMg c3RydWN0IGRybV9nZW1fb2JqZWN0ICphNXh4X3Vjb2RlX2xvYWRfYm8oc3RydWN0IG1zbV9ncHUg KmdwdSwKQEAgLTU2NCwxMSArNTYzLDExIEBAIHN0YXRpYyBpbnQgYTV4eF9od19pbml0KHN0cnVj dCBtc21fZ3B1ICpncHUpCiAJICogdGlja2luZyBjb3JyZWN0bHkKIAkgKi8KIAlpZiAoYWRyZW5v X2lzX2E1MzAoYWRyZW5vX2dwdSkpIHsKLQkJT1VUX1BLVDcoZ3B1LT5yYiwgQ1BfRVZFTlRfV1JJ VEUsIDEpOwotCQlPVVRfUklORyhncHUtPnJiLCAweDBGKTsKKwkJT1VUX1BLVDcoZ3B1LT5yYlsw XSwgQ1BfRVZFTlRfV1JJVEUsIDEpOworCQlPVVRfUklORyhncHUtPnJiWzBdLCAweDBGKTsKIAot CQlncHUtPmZ1bmNzLT5mbHVzaChncHUpOwotCQlpZiAoIWE1eHhfaWRsZShncHUpKQorCQlncHUt PmZ1bmNzLT5mbHVzaChncHUsIGdwdS0+cmJbMF0pOworCQlpZiAoIWE1eHhfaWRsZShncHUsIGdw dS0+cmJbMF0pKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC01ODEsMTEgKzU4MCwxMSBA QCBzdGF0aWMgaW50IGE1eHhfaHdfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCSAqLwogCXJl dCA9IGE1eHhfemFwX3NoYWRlcl9pbml0KGdwdSk7CiAJaWYgKCFyZXQpIHsKLQkJT1VUX1BLVDco Z3B1LT5yYiwgQ1BfU0VUX1NFQ1VSRV9NT0RFLCAxKTsKLQkJT1VUX1JJTkcoZ3B1LT5yYiwgMHgw MDAwMDAwMCk7CisJCU9VVF9QS1Q3KGdwdS0+cmJbMF0sIENQX1NFVF9TRUNVUkVfTU9ERSwgMSk7 CisJCU9VVF9SSU5HKGdwdS0+cmJbMF0sIDB4MDAwMDAwMDApOwogCi0JCWdwdS0+ZnVuY3MtPmZs dXNoKGdwdSk7Ci0JCWlmICghYTV4eF9pZGxlKGdwdSkpCisJCWdwdS0+ZnVuY3MtPmZsdXNoKGdw dSwgZ3B1LT5yYlswXSk7CisJCWlmICghYTV4eF9pZGxlKGdwdSwgZ3B1LT5yYlswXSkpCiAJCQly ZXR1cm4gLUVJTlZBTDsKIAl9IGVsc2UgewogCQkvKiBQcmludCBhIHdhcm5pbmcgc28gaWYgd2Ug ZGllLCB3ZSBrbm93IHdoeSAqLwpAQCAtNjU5LDE4ICs2NTgsMTkgQEAgc3RhdGljIGlubGluZSBi b29sIF9hNXh4X2NoZWNrX2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAkJQTVYWF9SQkJNX0lO VF8wX01BU0tfTUlTQ19IQU5HX0RFVEVDVCk7CiB9CiAKLWJvb2wgYTV4eF9pZGxlKHN0cnVjdCBt c21fZ3B1ICpncHUpCitib29sIGE1eHhfaWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3Qg bXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7CiAJLyogd2FpdCBmb3IgQ1AgdG8gZHJhaW4gcmluZ2J1 ZmZlcjogKi8KLQlpZiAoIWFkcmVub19pZGxlKGdwdSkpCisJaWYgKCFhZHJlbm9faWRsZShncHUs IHJpbmcpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoc3Bpbl91bnRpbChfYTV4eF9jaGVja19p ZGxlKGdwdSkpKSB7Ci0JCURSTV9FUlJPUigiJXM6ICVwczogdGltZW91dCB3YWl0aW5nIGZvciBH UFUgdG8gaWRsZTogc3RhdHVzICU4LjhYIGlycSAlOC44WFxuIiwKKwkJRFJNX0VSUk9SKCIlczog JXBzOiB0aW1lb3V0IHdhaXRpbmcgZm9yIEdQVSB0byBpZGxlOiBzdGF0dXMgJTguOFggaXJxICU4 LjhYIHJwdHIvd3B0ciAlZC8lZFxuIiwKIAkJCWdwdS0+bmFtZSwgX19idWlsdGluX3JldHVybl9h ZGRyZXNzKDApLAogCQkJZ3B1X3JlYWQoZ3B1LCBSRUdfQTVYWF9SQkJNX1NUQVRVUyksCi0JCQln cHVfcmVhZChncHUsIFJFR19BNVhYX1JCQk1fSU5UXzBfU1RBVFVTKSk7Ci0KKwkJCWdwdV9yZWFk KGdwdSwgUkVHX0E1WFhfUkJCTV9JTlRfMF9TVEFUVVMpLAorCQkJZ3B1X3JlYWQoZ3B1LCBSRUdf QTVYWF9DUF9SQl9SUFRSKSwKKwkJCWdwdV9yZWFkKGdwdSwgUkVHX0E1WFhfQ1BfUkJfV1BUUikp OwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC04MDEsOSArODAxLDEwIEBAIHN0YXRpYyB2b2lk IGE1eHhfZmF1bHRfZGV0ZWN0X2lycShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBncHUtPmRldjsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUt PmZ1bmNzLT5hY3RpdmVfcmluZyhncHUpOwogCi0JZGV2X2VycihkZXYtPmRldiwgImdwdSBmYXVs dCBmZW5jZSAleCBzdGF0dXMgJTguOFggcmIgJTQuNHgvJTQuNHggaWIxICUxNi4xNmxsWC8lNC40 eCBpYjIgJTE2LjE2bGxYLyU0LjR4XG4iLAotCQlncHUtPm1lbXB0cnMtPmZlbmNlLAorCWRldl9l cnIoZGV2LT5kZXYsICJncHUgZmF1bHQgcmluZyAlZCBmZW5jZSAleCBzdGF0dXMgJTguOFggcmIg JTQuNHgvJTQuNHggaWIxICUxNi4xNmxsWC8lNC40eCBpYjIgJTE2LjE2bGxYLyU0LjR4XG4iLAor CQlyaW5nID8gcmluZy0+aWQgOiAtMSwgcmluZyA/IHJpbmctPnNlcW5vIDogMCwKIAkJZ3B1X3Jl YWQoZ3B1LCBSRUdfQTVYWF9SQkJNX1NUQVRVUyksCiAJCWdwdV9yZWFkKGdwdSwgUkVHX0E1WFhf Q1BfUkJfUlBUUiksCiAJCWdwdV9yZWFkKGdwdSwgUkVHX0E1WFhfQ1BfUkJfV1BUUiksCkBAIC05 OTMsNiArOTk0LDcgQEAgc3RhdGljIHZvaWQgYTV4eF9zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUs IHN0cnVjdCBzZXFfZmlsZSAqbSkKIAkJLnJlY292ZXIgPSBhNXh4X3JlY292ZXIsCiAJCS5zdWJt aXQgPSBhNXh4X3N1Ym1pdCwKIAkJLmZsdXNoID0gYWRyZW5vX2ZsdXNoLAorCQkuYWN0aXZlX3Jp bmcgPSBhZHJlbm9fYWN0aXZlX3JpbmcsCiAJCS5pcnEgPSBhNXh4X2lycSwKIAkJLmRlc3Ryb3kg PSBhNXh4X2Rlc3Ryb3ksCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCkBAIC0xMDI4LDcgKzEwMzAs NyBAQCBzdHJ1Y3QgbXNtX2dwdSAqYTV4eF9ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCiAJYTV4eF9ncHUtPmxtX2xlYWthZ2UgPSAweDRFMDAxQTsKIAotCXJldCA9IGFkcmVub19n cHVfaW5pdChkZXYsIHBkZXYsIGFkcmVub19ncHUsICZmdW5jcyk7CisJcmV0ID0gYWRyZW5vX2dw dV9pbml0KGRldiwgcGRldiwgYWRyZW5vX2dwdSwgJmZ1bmNzLCAxKTsKIAlpZiAocmV0KSB7CiAJ CWE1eHhfZGVzdHJveSgmKGE1eHhfZ3B1LT5iYXNlLmJhc2UpKTsKIAkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5oCmluZGV4IGU5NDQ1MTYuLjQ0 ZGI0OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuaApAQCAtNTUsNyArNTUs NyBAQCBzdGF0aWMgaW5saW5lIGludCBzcGluX3VzZWNzKHN0cnVjdCBtc21fZ3B1ICpncHUsIHVp bnQzMl90IHVzZWNzLAogCXJldHVybiAtRVRJTUVET1VUOwogfQogCi1ib29sIGE1eHhfaWRsZShz dHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK2Jvb2wgYTV4eF9pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUs IHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7CiB2b2lkIGE1eHhfc2V0X2h3Y2coc3RydWN0 IG1zbV9ncHUgKmdwdSwgYm9vbCBzdGF0ZSk7CiAKICNlbmRpZiAvKiBfX0E1WFhfR1BVX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wb3dlci5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wb3dlci5jCmluZGV4IDA0YWFiMWQuLmQw OWE3MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfcG93ZXIu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3Bvd2VyLmMKQEAgLTE3Myw3 ICsxNzMsNyBAQCBzdGF0aWMgaW50IGE1eHhfZ3BtdV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUp CiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7 CiAJc3RydWN0IGE1eHhfZ3B1ICphNXh4X2dwdSA9IHRvX2E1eHhfZ3B1KGFkcmVub19ncHUpOwot CXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5n YnVmZmVyICpyaW5nID0gZ3B1LT5yYlswXTsKIAogCWlmICghYTV4eF9ncHUtPmdwbXVfZHdvcmRz KQogCQlyZXR1cm4gMDsKQEAgLTE5Miw5ICsxOTIsOSBAQCBzdGF0aWMgaW50IGE1eHhfZ3BtdV9p bml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJT1VUX1BLVDcocmluZywgQ1BfU0VUX1BST1RFQ1RF RF9NT0RFLCAxKTsKIAlPVVRfUklORyhyaW5nLCAxKTsKIAotCWdwdS0+ZnVuY3MtPmZsdXNoKGdw dSk7CisJZ3B1LT5mdW5jcy0+Zmx1c2goZ3B1LCByaW5nKTsKIAotCWlmICghYTV4eF9pZGxlKGdw dSkpIHsKKwlpZiAoIWE1eHhfaWRsZShncHUsIHJpbmcpKSB7CiAJCURSTV9FUlJPUigiJXM6IFVu YWJsZSB0byBsb2FkIEdQTVUgZmlybXdhcmUuIEdQTVUgd2lsbCBub3QgYmUgYWN0aXZlXG4iLAog CQkJZ3B1LT5uYW1lKTsKIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hZHJlbm9fZ3B1LmMKaW5kZXggYjkyMzhhYy4uZmFkOTQ2OTQ2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAibXNt X2dlbS5oIgogI2luY2x1ZGUgIm1zbV9tbXUuaCIKIAotI2RlZmluZSBSQl9TSVpFICAgIFNaXzMy SwogI2RlZmluZSBSQl9CTEtTSVpFIDMyCiAKIGludCBhZHJlbm9fZ2V0X3BhcmFtKHN0cnVjdCBt c21fZ3B1ICpncHUsIHVpbnQzMl90IHBhcmFtLCB1aW50NjRfdCAqdmFsdWUpCkBAIC02NywzOCAr NjYsNDcgQEAgaW50IGFkcmVub19nZXRfcGFyYW0oc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMy X3QgcGFyYW0sIHVpbnQ2NF90ICp2YWx1ZSkKIGludCBhZHJlbm9faHdfaW5pdChzdHJ1Y3QgbXNt X2dwdSAqZ3B1KQogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5v X2dwdShncHUpOwotCWludCByZXQ7CisJaW50IGk7CiAKIAlEQkcoIiVzIiwgZ3B1LT5uYW1lKTsK IAotCXJldCA9IG1zbV9nZW1fZ2V0X2lvdmEoZ3B1LT5yYi0+Ym8sIGdwdS0+YXNwYWNlLCAmZ3B1 LT5yYl9pb3ZhKTsKLQlpZiAocmV0KSB7Ci0JCWdwdS0+cmJfaW92YSA9IDA7Ci0JCWRldl9lcnIo Z3B1LT5kZXYtPmRldiwgImNvdWxkIG5vdCBtYXAgcmluZ2J1ZmZlcjogJWRcbiIsIHJldCk7Ci0J CXJldHVybiByZXQ7Ci0JfQorCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBpKyspIHsK KwkJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1LT5yYltpXTsKKwkJaW50IHJldDsK KworCQlpZiAoIXJpbmcpCisJCQljb250aW51ZTsKIAotCS8qIHJlc2V0IHJpbmdidWZmZXI6ICov Ci0JZ3B1LT5yYi0+Y3VyID0gZ3B1LT5yYi0+c3RhcnQ7CisJCXJldCA9IG1zbV9nZW1fZ2V0X2lv dmEocmluZy0+Ym8sIGdwdS0+YXNwYWNlLCAmcmluZy0+aW92YSk7CisJCWlmIChyZXQpIHsKKwkJ CXJpbmctPmlvdmEgPSAwOworCQkJZGV2X2VycihncHUtPmRldi0+ZGV2LAorCQkJCSJjb3VsZCBu b3QgbWFwIHJpbmdidWZmZXIgJWQ6ICVkXG4iLCBpLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCisJCXJpbmctPmN1ciA9IHJpbmctPnN0YXJ0OwogCi0JLyogcmVzZXQgY29tcGxldGVkIGZl bmNlIHNlcW5vOiAqLwotCWdwdS0+bWVtcHRycy0+ZmVuY2UgPSBncHUtPmZjdHgtPmNvbXBsZXRl ZF9mZW5jZTsKLQlncHUtPm1lbXB0cnMtPnJwdHIgID0gMDsKKwkJLyogcmVzZXQgY29tcGxldGVk IGZlbmNlIHNlcW5vOiAqLworCQlyaW5nLT5tZW1wdHJzLT5mZW5jZSA9IHJpbmctPnNlcW5vOwor CQlyaW5nLT5tZW1wdHJzLT5ycHRyID0gMDsKKwl9CiAKIAkvKiBTZXR1cCBSRUdfQ1BfUkJfQ05U TDogKi8KIAlhZHJlbm9fZ3B1X3dyaXRlKGFkcmVub19ncHUsIFJFR19BRFJFTk9fQ1BfUkJfQ05U TCwKLQkJCS8qIHNpemUgaXMgbG9nMihxdWFkLXdvcmRzKTogKi8KLQkJCUFYWFhfQ1BfUkJfQ05U TF9CVUZTWihpbG9nMihncHUtPnJiLT5zaXplIC8gOCkpIHwKLQkJCUFYWFhfQ1BfUkJfQ05UTF9C TEtTWihpbG9nMihSQl9CTEtTSVpFIC8gOCkpIHwKLQkJCShhZHJlbm9faXNfYTQzMChhZHJlbm9f Z3B1KSA/IEFYWFhfQ1BfUkJfQ05UTF9OT19VUERBVEUgOiAwKSk7CisJCS8qIHNpemUgaXMgbG9n MihxdWFkLXdvcmRzKTogKi8KKwkJQVhYWF9DUF9SQl9DTlRMX0JVRlNaKGlsb2cyKE1TTV9HUFVf UklOR0JVRkZFUl9TWiAvIDgpKSB8CisJCUFYWFhfQ1BfUkJfQ05UTF9CTEtTWihpbG9nMihSQl9C TEtTSVpFIC8gOCkpIHwKKwkJKGFkcmVub19pc19hNDMwKGFkcmVub19ncHUpID8gQVhYWF9DUF9S Ql9DTlRMX05PX1VQREFURSA6IDApKTsKIAotCS8qIFNldHVwIHJpbmdidWZmZXIgYWRkcmVzczog Ki8KKwkvKiBTZXR1cCByaW5nYnVmZmVyIGFkZHJlc3MgLSB1c2UgcmluZ2J1ZmZlclswXSBmb3Ig R1BVIGluaXQgKi8KIAlhZHJlbm9fZ3B1X3dyaXRlNjQoYWRyZW5vX2dwdSwgUkVHX0FEUkVOT19D UF9SQl9CQVNFLAotCQlSRUdfQURSRU5PX0NQX1JCX0JBU0VfSEksIGdwdS0+cmJfaW92YSk7CisJ CVJFR19BRFJFTk9fQ1BfUkJfQkFTRV9ISSwgZ3B1LT5yYlswXS0+aW92YSk7CiAKIAlpZiAoIWFk cmVub19pc19hNDMwKGFkcmVub19ncHUpKSB7CiAJCWFkcmVub19ncHVfd3JpdGU2NChhZHJlbm9f Z3B1LCBSRUdfQURSRU5PX0NQX1JCX1JQVFJfQUREUiwKLQkJCVJFR19BRFJFTk9fQ1BfUkJfUlBU Ul9BRERSX0hJLCByYm1lbXB0cihncHUsIHJwdHIpKTsKKwkJCVJFR19BRFJFTk9fQ1BfUkJfUlBU Ul9BRERSX0hJLAorCQkJcmJtZW1wdHIoZ3B1LT5yYlswXSwgcnB0cikpOwogCX0KIAogCXJldHVy biAwOwpAQCAtMTEwLDE1ICsxMTgsMTkgQEAgc3RhdGljIHVpbnQzMl90IGdldF93cHRyKHN0cnVj dCBtc21fcmluZ2J1ZmZlciAqcmluZykKIH0KIAogLyogVXNlIHRoaXMgaGVscGVyIHRvIHJlYWQg cnB0ciwgc2luY2UgYTQzMCBkb2Vzbid0IHVwZGF0ZSBycHRyIGluIG1lbW9yeSAqLwotc3RhdGlj IHVpbnQzMl90IGdldF9ycHRyKHN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1KQorc3RhdGlj IHVpbnQzMl90IGdldF9ycHRyKHN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1LAorCQlzdHJ1 Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiB7Ci0Jc3RydWN0IG1zbV9ncHUgKmdwdSA9ICZhZHJl bm9fZ3B1LT5iYXNlOwotCiAJaWYgKGFkcmVub19pc19hNDMwKGFkcmVub19ncHUpKQotCQlyZXR1 cm4gZ3B1LT5tZW1wdHJzLT5ycHRyID0gYWRyZW5vX2dwdV9yZWFkKAorCQlyZXR1cm4gcmluZy0+ bWVtcHRycy0+cnB0ciA9IGFkcmVub19ncHVfcmVhZCgKIAkJCWFkcmVub19ncHUsIFJFR19BRFJF Tk9fQ1BfUkJfUlBUUik7CiAJZWxzZQotCQlyZXR1cm4gZ3B1LT5tZW1wdHJzLT5ycHRyOworCQly ZXR1cm4gcmluZy0+bWVtcHRycy0+cnB0cjsKK30KKworc3RydWN0IG1zbV9yaW5nYnVmZmVyICph ZHJlbm9fYWN0aXZlX3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSkKK3sKKwlyZXR1cm4gZ3B1LT5y YlswXTsKIH0KIAogdm9pZCBhZHJlbm9fcmVjb3ZlcihzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQpAQCAt MTQ0LDcgKzE1Niw3IEBAIHZvaWQgYWRyZW5vX3N1Ym1pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBz dHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIHsKIAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRy ZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpw cml2ID0gZ3B1LT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmlu ZyA9IGdwdS0+cmI7CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gc3VibWl0LT5yaW5n OwogCXVuc2lnbmVkIGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9jbWRzOyBpKysp IHsKQEAgLTE2Nyw3ICsxNzksNyBAQCB2b2lkIGFkcmVub19zdWJtaXQoc3RydWN0IG1zbV9ncHUg KmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJfQogCiAJT1VUX1BLVDAocmlu ZywgUkVHX0FYWFhfQ1BfU0NSQVRDSF9SRUcyLCAxKTsKLQlPVVRfUklORyhyaW5nLCBzdWJtaXQt PmZlbmNlLT5zZXFubyk7CisJT1VUX1JJTkcocmluZywgc3VibWl0LT5zZXFubyk7CiAKIAlpZiAo YWRyZW5vX2lzX2EzeHgoYWRyZW5vX2dwdSkgfHwgYWRyZW5vX2lzX2E0eHgoYWRyZW5vX2dwdSkp IHsKIAkJLyogRmx1c2ggSExTUSBsYXp5IHVwZGF0ZXMgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIG5v dGhpbmcKQEAgLTE4Myw4ICsxOTUsOCBAQCB2b2lkIGFkcmVub19zdWJtaXQoc3RydWN0IG1zbV9n cHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAKIAlPVVRfUEtUMyhyaW5n LCBDUF9FVkVOVF9XUklURSwgMyk7CiAJT1VUX1JJTkcocmluZywgQ0FDSEVfRkxVU0hfVFMpOwot CU9VVF9SSU5HKHJpbmcsIHJibWVtcHRyKGdwdSwgZmVuY2UpKTsKLQlPVVRfUklORyhyaW5nLCBz dWJtaXQtPmZlbmNlLT5zZXFubyk7CisJT1VUX1JJTkcocmluZywgcmJtZW1wdHIocmluZywgZmVu Y2UpKTsKKwlPVVRfUklORyhyaW5nLCBzdWJtaXQtPnNlcW5vKTsKIAogCS8qIHdlIGNvdWxkIG1h eWJlIGJlIGNsZXZlciBhbmQgb25seSBDUF9DT05EX0VYRUMgdGhlIGludGVycnVwdDogKi8KIAlP VVRfUEtUMyhyaW5nLCBDUF9JTlRFUlJVUFQsIDEpOwpAQCAtMjEwLDEwICsyMjIsMTAgQEAgdm9p ZCBhZHJlbm9fc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1p dCAqc3VibWl0LAogCX0KICNlbmRpZgogCi0JZ3B1LT5mdW5jcy0+Zmx1c2goZ3B1KTsKKwlncHUt PmZ1bmNzLT5mbHVzaChncHUsIHJpbmcpOwogfQogCi12b2lkIGFkcmVub19mbHVzaChzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KQordm9pZCBhZHJlbm9fZmx1c2goc3RydWN0IG1zbV9ncHUgKmdwdSwgc3Ry dWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9f Z3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwogCXVpbnQzMl90IHdwdHI7CkBAIC0yMjMsNyArMjM1 LDcgQEAgdm9pZCBhZHJlbm9fZmx1c2goc3RydWN0IG1zbV9ncHUgKmdwdSkKIAkgKiB0byBhY2Nv dW50IGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgbGFzdCBjb21tYW5kIGZpdCBleGFjdGx5 IGludG8KIAkgKiB0aGUgcmluZ2J1ZmZlciBhbmQgcmItPm5leHQgaGFzbid0IHdyYXBwZWQgdG8g emVybyB5ZXQKIAkgKi8KLQl3cHRyID0gZ2V0X3dwdHIoZ3B1LT5yYikgJiAoKGdwdS0+cmItPnNp emUgLyA0KSAtIDEpOworCXdwdHIgPSBnZXRfd3B0cihyaW5nKSAlIChNU01fR1BVX1JJTkdCVUZG RVJfU1ogPj4gMik7CiAKIAkvKiBlbnN1cmUgd3JpdGVzIHRvIHJpbmdidWZmZXIgaGF2ZSBoaXQg c3lzdGVtIG1lbW9yeTogKi8KIAltYigpOwpAQCAtMjMxLDE3ICsyNDMsMTggQEAgdm9pZCBhZHJl bm9fZmx1c2goc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlhZHJlbm9fZ3B1X3dyaXRlKGFkcmVub19n cHUsIFJFR19BRFJFTk9fQ1BfUkJfV1BUUiwgd3B0cik7CiB9CiAKLWJvb2wgYWRyZW5vX2lkbGUo c3RydWN0IG1zbV9ncHUgKmdwdSkKK2Jvb2wgYWRyZW5vX2lkbGUoc3RydWN0IG1zbV9ncHUgKmdw dSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICph ZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwotCXVpbnQzMl90IHdwdHIgPSBnZXRfd3B0 cihncHUtPnJiKTsKKwl1aW50MzJfdCB3cHRyID0gZ2V0X3dwdHIocmluZyk7CiAKIAkvKiB3YWl0 IGZvciBDUCB0byBkcmFpbiByaW5nYnVmZmVyOiAqLwotCWlmICghc3Bpbl91bnRpbChnZXRfcnB0 cihhZHJlbm9fZ3B1KSA9PSB3cHRyKSkKKwlpZiAoIXNwaW5fdW50aWwoZ2V0X3JwdHIoYWRyZW5v X2dwdSwgcmluZykgPT0gd3B0cikpCiAJCXJldHVybiB0cnVlOwogCiAJLyogVE9ETyBtYXliZSB3 ZSBuZWVkIHRvIHJlc2V0IEdQVSBoZXJlIHRvIHJlY292ZXIgZnJvbSBoYW5nPyAqLwotCURSTV9F UlJPUigiJXM6IHRpbWVvdXQgd2FpdGluZyB0byBkcmFpbiByaW5nYnVmZmVyIVxuIiwgZ3B1LT5u YW1lKTsKKwlEUk1fRVJST1IoIiVzOiB0aW1lb3V0IHdhaXRpbmcgdG8gZHJhaW4gcmluZ2J1ZmZl ciAlZCFcbiIsIGdwdS0+bmFtZSwKKwkJcmluZy0+aWQpOwogCXJldHVybiBmYWxzZTsKIH0KIApA QCAtMjU2LDEwICsyNjksMTYgQEAgdm9pZCBhZHJlbm9fc2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1 LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJCQlhZHJlbm9fZ3B1LT5yZXYubWFqb3IsIGFkcmVub19n cHUtPnJldi5taW5vciwKIAkJCWFkcmVub19ncHUtPnJldi5wYXRjaGlkKTsKIAotCXNlcV9wcmlu dGYobSwgImZlbmNlOiAgICAlZC8lZFxuIiwgZ3B1LT5tZW1wdHJzLT5mZW5jZSwKLQkJCWdwdS0+ ZmN0eC0+bGFzdF9mZW5jZSk7Ci0Jc2VxX3ByaW50ZihtLCAicnB0cjogICAgICVkXG4iLCBnZXRf cnB0cihhZHJlbm9fZ3B1KSk7Ci0Jc2VxX3ByaW50ZihtLCAicmIgd3B0cjogICVkXG4iLCBnZXRf d3B0cihncHUtPnJiKSk7CisJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmluZ3M7IGkrKykgewor CQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUtPnJiW2ldOworCisJCXNlcV9wcmlu dGYobSwgInJiICVkOiBmZW5jZTogICAgJWQvJWRcbiIsIGksCisJCQlyaW5nLT5tZW1wdHJzLT5m ZW5jZSwgcmluZy0+c2Vxbm8pOworCisJCXNlcV9wcmludGYobSwgIiAgICAgIHJwdHI6ICAgICAl ZFxuIiwKKwkJCWdldF9ycHRyKGFkcmVub19ncHUsIHJpbmcpKTsKKwkJc2VxX3ByaW50ZihtLCAi cmIgd3B0cjogICVkXG4iLCBnZXRfd3B0cihyaW5nKSk7CisJfQogCiAJLyogZHVtcCB0aGVzZSBv dXQgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBkZW1zbTogKi8KIAlzZXFfcHJpbnRm KG0sICJJTzpyZWdpb24gJXMgMDAwMDAwMDAgMDAwMjAwMDBcbiIsIGdwdS0+bmFtZSk7CkBAIC0y ODUsMTYgKzMwNCwyMyBAQCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0 cnVjdCBzZXFfZmlsZSAqbSkKIHZvaWQgYWRyZW5vX2R1bXBfaW5mbyhzdHJ1Y3QgbXNtX2dwdSAq Z3B1KQogewogCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShn cHUpOworCWludCBpOwogCiAJcHJpbnRrKCJyZXZpc2lvbjogJWQgKCVkLiVkLiVkLiVkKVxuIiwK IAkJCWFkcmVub19ncHUtPmluZm8tPnJldm4sIGFkcmVub19ncHUtPnJldi5jb3JlLAogCQkJYWRy ZW5vX2dwdS0+cmV2Lm1ham9yLCBhZHJlbm9fZ3B1LT5yZXYubWlub3IsCiAJCQlhZHJlbm9fZ3B1 LT5yZXYucGF0Y2hpZCk7CiAKLQlwcmludGsoImZlbmNlOiAgICAlZC8lZFxuIiwgZ3B1LT5tZW1w dHJzLT5mZW5jZSwKLQkJCWdwdS0+ZmN0eC0+bGFzdF9mZW5jZSk7Ci0JcHJpbnRrKCJycHRyOiAg ICAgJWRcbiIsIGdldF9ycHRyKGFkcmVub19ncHUpKTsKLQlwcmludGsoInJiIHdwdHI6ICAlZFxu IiwgZ2V0X3dwdHIoZ3B1LT5yYikpOworCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBp KyspIHsKKwkJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1LT5yYltpXTsKKworCQlw cmludGsoInJiICVkOiBmZW5jZTogICAgJWQvJWRcbiIsIGksCisJCQlyaW5nLT5tZW1wdHJzLT5m ZW5jZSwKKwkJCXJpbmctPnNlcW5vKTsKKworCQlwcmludGsoInJwdHI6ICAgICAlZFxuIiwgZ2V0 X3JwdHIoYWRyZW5vX2dwdSwgcmluZykpOworCQlwcmludGsoInJiIHdwdHI6ICAlZFxuIiwgZ2V0 X3dwdHIocmluZykpOworCX0KIH0KIAogLyogd291bGQgYmUgbmljZSB0byBub3QgaGF2ZSB0byBk dXBsaWNhdGUgdGhlIF9zaG93KCkgc3R1ZmYgd2l0aCBwcmludGsoKTogKi8KQEAgLTMxNywyMyAr MzQzLDI2IEBAIHZvaWQgYWRyZW5vX2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAl9CiB9CiAK LXN0YXRpYyB1aW50MzJfdCByaW5nX2ZyZWV3b3JkcyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQorc3Rh dGljIHVpbnQzMl90IHJpbmdfZnJlZXdvcmRzKHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykK IHsKLQlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsK LQl1aW50MzJfdCBzaXplID0gZ3B1LT5yYi0+c2l6ZSAvIDQ7Ci0JdWludDMyX3Qgd3B0ciA9IGdl dF93cHRyKGdwdS0+cmIpOwotCXVpbnQzMl90IHJwdHIgPSBnZXRfcnB0cihhZHJlbm9fZ3B1KTsK KwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUocmluZy0+Z3B1 KTsKKwl1aW50MzJfdCBzaXplID0gTVNNX0dQVV9SSU5HQlVGRkVSX1NaID4+IDI7CisJdWludDMy X3Qgd3B0ciA9IGdldF93cHRyKHJpbmcpOworCXVpbnQzMl90IHJwdHIgPSBnZXRfcnB0cihhZHJl bm9fZ3B1LCByaW5nKTsKIAlyZXR1cm4gKHJwdHIgKyAoc2l6ZSAtIDEpIC0gd3B0cikgJSBzaXpl OwogfQogCi12b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMy X3QgbmR3b3JkcykKK3ZvaWQgYWRyZW5vX3dhaXRfcmluZyhzdHJ1Y3QgbXNtX3JpbmdidWZmZXIg KnJpbmcsIHVpbnQzMl90IG5kd29yZHMpCiB7Ci0JaWYgKHNwaW5fdW50aWwocmluZ19mcmVld29y ZHMoZ3B1KSA+PSBuZHdvcmRzKSkKLQkJRFJNX0VSUk9SKCIlczogdGltZW91dCB3YWl0aW5nIGZv ciByaW5nYnVmZmVyIHNwYWNlXG4iLCBncHUtPm5hbWUpOworCWlmIChzcGluX3VudGlsKHJpbmdf ZnJlZXdvcmRzKHJpbmcpID49IG5kd29yZHMpKQorCQlEUk1fREVWX0VSUk9SKHJpbmctPmdwdS0+ ZGV2LT5kZXYsCisJCQkidGltZW91dCB3YWl0aW5nIGZvciBzcGFjZSBpbiByaW5ndWJmZmVyICVk XG4iLAorCQkJcmluZy0+aWQpOwogfQogCiBpbnQgYWRyZW5vX2dwdV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCXN0cnVjdCBhZHJl bm9fZ3B1ICphZHJlbm9fZ3B1LCBjb25zdCBzdHJ1Y3QgYWRyZW5vX2dwdV9mdW5jcyAqZnVuY3Mp CisJCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1LAorCQljb25zdCBzdHJ1Y3QgYWRyZW5v X2dwdV9mdW5jcyAqZnVuY3MsIGludCBucl9yaW5ncykKIHsKIAlzdHJ1Y3QgYWRyZW5vX3BsYXRm b3JtX2NvbmZpZyAqY29uZmlnID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CiAJc3RydWN0IG1z bV9ncHVfY29uZmlnIGFkcmVub19ncHVfY29uZmlnICA9IHsgMCB9OwpAQCAtMzYxLDcgKzM5MCw3 IEBAIGludCBhZHJlbm9fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwKIAlhZHJlbm9fZ3B1X2NvbmZpZy52YV9zdGFydCA9IFNaXzE2 TTsKIAlhZHJlbm9fZ3B1X2NvbmZpZy52YV9lbmQgPSAweGZmZmZmZmZmOwogCi0JYWRyZW5vX2dw dV9jb25maWcucmluZ3N6ID0gUkJfU0laRTsKKwlhZHJlbm9fZ3B1X2NvbmZpZy5ucl9yaW5ncyA9 IG5yX3JpbmdzOwogCiAJcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoJnBkZXYtPmRl diwgRFJNX01TTV9JTkFDVElWRV9QRVJJT0QpOwogCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5k KCZwZGV2LT5kZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRy ZW5vX2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCmluZGV4 IDVlZTFkNmEuLjJhNTFhYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2FkcmVub19ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmgKQEAgLTE4NSwxNyArMTg1LDE5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFkcmVub19pc19hNTMw KHN0cnVjdCBhZHJlbm9fZ3B1ICpncHUpCiB2b2lkIGFkcmVub19yZWNvdmVyKHN0cnVjdCBtc21f Z3B1ICpncHUpOwogdm9pZCBhZHJlbm9fc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVj dCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LAogCQlzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4 KTsKLXZvaWQgYWRyZW5vX2ZsdXNoKHN0cnVjdCBtc21fZ3B1ICpncHUpOwotYm9vbCBhZHJlbm9f aWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3ZvaWQgYWRyZW5vX2ZsdXNoKHN0cnVjdCBtc21f Z3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7Citib29sIGFkcmVub19pZGxl KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7CiAjaWZk ZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUs IHN0cnVjdCBzZXFfZmlsZSAqbSk7CiAjZW5kaWYKIHZvaWQgYWRyZW5vX2R1bXBfaW5mbyhzdHJ1 Y3QgbXNtX2dwdSAqZ3B1KTsKIHZvaWQgYWRyZW5vX2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSk7 Ci12b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSwgdWludDMyX3QgbmR3 b3Jkcyk7Cit2b2lkIGFkcmVub193YWl0X3Jpbmcoc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5n LCB1aW50MzJfdCBuZHdvcmRzKTsKK3N0cnVjdCBtc21fcmluZ2J1ZmZlciAqYWRyZW5vX2FjdGl2 ZV9yaW5nKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogCiBpbnQgYWRyZW5vX2dwdV9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCXN0cnVj dCBhZHJlbm9fZ3B1ICpncHUsIGNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNzICpmdW5jcyk7 CisJCXN0cnVjdCBhZHJlbm9fZ3B1ICpncHUsIGNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNz ICpmdW5jcywKKwkJaW50IG5yX3JpbmdzKTsKIHZvaWQgYWRyZW5vX2dwdV9jbGVhbnVwKHN0cnVj dCBhZHJlbm9fZ3B1ICpncHUpOwogCiAKQEAgLTIwNCw3ICsyMDYsNyBAQCBpbnQgYWRyZW5vX2dw dV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYsCiBzdGF0aWMgaW5saW5lIHZvaWQKIE9VVF9QS1QwKHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZywgdWludDE2X3QgcmVnaW5keCwgdWludDE2X3QgY250KQogewotCWFkcmVub193YWl0X3Jp bmcocmluZy0+Z3B1LCBjbnQrMSk7CisJYWRyZW5vX3dhaXRfcmluZyhyaW5nLCBjbnQrMSk7CiAJ T1VUX1JJTkcocmluZywgQ1BfVFlQRTBfUEtUIHwgKChjbnQtMSkgPDwgMTYpIHwgKHJlZ2luZHgg JiAweDdGRkYpKTsKIH0KIApAQCAtMjEyLDE0ICsyMTQsMTQgQEAgaW50IGFkcmVub19ncHVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAog c3RhdGljIGlubGluZSB2b2lkCiBPVVRfUEtUMihzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcp CiB7Ci0JYWRyZW5vX3dhaXRfcmluZyhyaW5nLT5ncHUsIDEpOworCWFkcmVub193YWl0X3Jpbmco cmluZywgMSk7CiAJT1VUX1JJTkcocmluZywgQ1BfVFlQRTJfUEtUKTsKIH0KIAogc3RhdGljIGlu bGluZSB2b2lkCiBPVVRfUEtUMyhzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsIHVpbnQ4X3Qg b3Bjb2RlLCB1aW50MTZfdCBjbnQpCiB7Ci0JYWRyZW5vX3dhaXRfcmluZyhyaW5nLT5ncHUsIGNu dCsxKTsKKwlhZHJlbm9fd2FpdF9yaW5nKHJpbmcsIGNudCsxKTsKIAlPVVRfUklORyhyaW5nLCBD UF9UWVBFM19QS1QgfCAoKGNudC0xKSA8PCAxNikgfCAoKG9wY29kZSAmIDB4RkYpIDw8IDgpKTsK IH0KIApAQCAtMjQxLDE0ICsyNDMsMTQgQEAgc3RhdGljIGlubGluZSB1MzIgUE00X1BBUklUWSh1 MzIgdmFsKQogc3RhdGljIGlubGluZSB2b2lkCiBPVVRfUEtUNChzdHJ1Y3QgbXNtX3JpbmdidWZm ZXIgKnJpbmcsIHVpbnQxNl90IHJlZ2luZHgsIHVpbnQxNl90IGNudCkKIHsKLQlhZHJlbm9fd2Fp dF9yaW5nKHJpbmctPmdwdSwgY250ICsgMSk7CisJYWRyZW5vX3dhaXRfcmluZyhyaW5nLCBjbnQg KyAxKTsKIAlPVVRfUklORyhyaW5nLCBQS1Q0KHJlZ2luZHgsIGNudCkpOwogfQogCiBzdGF0aWMg aW5saW5lIHZvaWQKIE9VVF9QS1Q3KHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZywgdWludDhf dCBvcGNvZGUsIHVpbnQxNl90IGNudCkKIHsKLQlhZHJlbm9fd2FpdF9yaW5nKHJpbmctPmdwdSwg Y250ICsgMSk7CisJYWRyZW5vX3dhaXRfcmluZyhyaW5nLCBjbnQgKyAxKTsKIAlPVVRfUklORyhy aW5nLCBDUF9UWVBFN19QS1QgfCAoY250IDw8IDApIHwgKFBNNF9QQVJJVFkoY250KSA8PCAxNSkg fAogCQkoKG9wY29kZSAmIDB4N0YpIDw8IDE2KSB8IChQTTRfUEFSSVRZKG9wY29kZSkgPDwgMjMp KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggY2Y3NDNjNy4uNDVmMTE3MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZHJ2LmMKQEAgLTUxNyw3ICs1MTcsNyBAQCBzdGF0aWMgdm9pZCBsb2FkX2dwdShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCW11dGV4X3VubG9jaygmaW5pdF9sb2NrKTsKIH0KIAotc3Rh dGljIGludCBjb250ZXh0X2luaXQoc3RydWN0IGRybV9maWxlICpmaWxlKQorc3RhdGljIGludCBj b250ZXh0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxl KQogewogCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHg7CiAKQEAgLTUyNSw3ICs1MjUsNyBA QCBzdGF0aWMgaW50IGNvbnRleHRfaW5pdChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJaWYgKCFj dHgpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbXNtX3N1Ym1pdHF1ZXVlX2luaXQoY3R4KTsKKwlt c21fc3VibWl0cXVldWVfaW5pdChkZXYsIGN0eCk7CiAKIAlmaWxlLT5kcml2ZXJfcHJpdiA9IGN0 eDsKIApAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBpbnQgbXNtX29wZW4oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCSAqLwogCWxvYWRfZ3B1KGRldik7 CiAKLQlyZXR1cm4gY29udGV4dF9pbml0KGZpbGUpOworCXJldHVybiBjb250ZXh0X2luaXQoZGV2 LCBmaWxlKTsKIH0KIAogc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1Y3QgbXNtX2ZpbGVf cHJpdmF0ZSAqY3R4KQpAQCAtNzUzLDE2ICs3NTMsMjcgQEAgc3RhdGljIGludCBtc21faW9jdGxf d2FpdF9mZW5jZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBt c21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fbXNt X3dhaXRfZmVuY2UgKmFyZ3MgPSBkYXRhOwogCWt0aW1lX3QgdGltZW91dCA9IHRvX2t0aW1lKGFy Z3MtPnRpbWVvdXQpOworCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZTsKKwlzdHJ1 Y3QgbXNtX2dwdSAqZ3B1ID0gcHJpdi0+Z3B1OworCWludCByZXQ7CiAKIAlpZiAoYXJncy0+cGFk KSB7CiAJCURSTV9FUlJPUigiaW52YWxpZCBwYWQ6ICUwOHhcbiIsIGFyZ3MtPnBhZCk7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIAotCWlmICghcHJpdi0+Z3B1KQorCWlmICghZ3B1KQogCQlyZXR1 cm4gMDsKIAotCXJldHVybiBtc21fd2FpdF9mZW5jZShwcml2LT5ncHUtPmZjdHgsIGFyZ3MtPmZl bmNlLCAmdGltZW91dCwgdHJ1ZSk7CisJcXVldWUgPSBtc21fc3VibWl0cXVldWVfZ2V0KGZpbGUt PmRyaXZlcl9wcml2LCBhcmdzLT5xdWV1ZWlkKTsKKwlpZiAoIXF1ZXVlKQorCQlyZXR1cm4gLUVO T0VOVDsKKworCXJldCA9IG1zbV93YWl0X2ZlbmNlKGdwdS0+cmJbcXVldWUtPnByaW9dLT5mY3R4 LCBhcmdzLT5mZW5jZSwgJnRpbWVvdXQsCisJCXRydWUpOworCisJbXNtX3N1Ym1pdHF1ZXVlX3B1 dChxdWV1ZSk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBtc21faW9jdGxfZ2VtX21h ZHZpc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKQEAgLTgxMiw3ICs4MjMs NyBAQCBzdGF0aWMgaW50IG1zbV9pb2N0bF9zdWJtaXRxdWV1ZV9uZXcoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoYXJncy0+ZmxhZ3MgJiB+TVNNX1NVQk1JVFFVRVVF X0ZMQUdTKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVybiBtc21fc3VibWl0cXVldWVfY3Jl YXRlKGZpbGUtPmRyaXZlcl9wcml2LCBhcmdzLT5wcmlvLAorCXJldHVybiBtc21fc3VibWl0cXVl dWVfY3JlYXRlKGRldiwgZmlsZS0+ZHJpdmVyX3ByaXYsIGFyZ3MtPnByaW8sCiAJCWFyZ3MtPmZs YWdzLCAmYXJncy0+aWQpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IGIzYjhmMjAuLjI4 MjFmNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC03NCw2ICs3NCw4IEBAIHN0cnVjdCBtc21f dmJsYW5rX2N0cmwgewogCXNwaW5sb2NrX3QgbG9jazsKIH07CiAKKyNkZWZpbmUgTVNNX0dQVV9N QVhfUklOR1MgMQorCiBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlIHsKIAogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXY7CkBAIC0zMTgsMTEgKzMyMCwxMSBAQCB2b2lkIF9faW9tZW0gKm1zbV9pb3JlbWFw KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCiB1MzIgbXNt X3JlYWRsKGNvbnN0IHZvaWQgX19pb21lbSAqYWRkcik7CiAKIHN0cnVjdCBtc21fZ3B1X3N1Ym1p dHF1ZXVlOwotaW50IG1zbV9zdWJtaXRxdWV1ZV9pbml0KHN0cnVjdCBtc21fZmlsZV9wcml2YXRl ICpjdHgpOworaW50IG1zbV9zdWJtaXRxdWV1ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0s IHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgpOwogc3RydWN0IG1zbV9ncHVfc3VibWl0cXVl dWUgKm1zbV9zdWJtaXRxdWV1ZV9nZXQoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCwKIAkJ dTMyIGlkKTsKLWludCBtc21fc3VibWl0cXVldWVfY3JlYXRlKHN0cnVjdCBtc21fZmlsZV9wcml2 YXRlICpjdHgsIHUzMiBwcmlvLAotCQl1MzIgZmxhZ3MsIHUzMiAqaWQpOworaW50IG1zbV9zdWJt aXRxdWV1ZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IG1zbV9maWxlX3By aXZhdGUgKmN0eCwKKwkJdTMyIHByaW8sIHUzMiBmbGFncywgdTMyICppZCk7CiBpbnQgbXNtX3N1 Ym1pdHF1ZXVlX3JlbW92ZShzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4LCB1MzIgaWQpOwog dm9pZCBtc21fc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCk7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9mZW5jZS5jCmluZGV4IGEyZjg5YmEuLjM0OWMxMmYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZmVuY2UuYwpAQCAtMzEsNyArMzEsNyBAQCBzdHJ1Y3QgbXNtX2ZlbmNlX2NvbnRl eHQgKgogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAogCWZjdHgtPmRldiA9IGRldjsKLQlm Y3R4LT5uYW1lID0gbmFtZTsKKwlzdHJuY3B5KGZjdHgtPm5hbWUsIG5hbWUsIHNpemVvZihmY3R4 LT5uYW1lKSk7CiAJZmN0eC0+Y29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwog CWluaXRfd2FpdHF1ZXVlX2hlYWQoJmZjdHgtPmV2ZW50KTsKIAlzcGluX2xvY2tfaW5pdCgmZmN0 eC0+c3BpbmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmVuY2Uu aCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZlbmNlLmgKaW5kZXggNTYwNjFhYS4uMWFhNmE0 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmVuY2UuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9mZW5jZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAKIHN0cnVjdCBt c21fZmVuY2VfY29udGV4dCB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKLQljb25zdCBjaGFy ICpuYW1lOworCWNoYXIgbmFtZVszMl07CiAJdW5zaWduZWQgY29udGV4dDsKIAkvKiBsYXN0X2Zl bmNlID09IGNvbXBsZXRlZF9mZW5jZSAtLT4gbm8gcGVuZGluZyB3b3JrICovCiAJdWludDMyX3Qg bGFzdF9mZW5jZTsgICAgICAgICAgLyogbGFzdCBhc3NpZ25lZCBmZW5jZSAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9nZW0uaAppbmRleCAxN2Y4YTZjLi45MzIwZTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaApAQCAt MTM4LDEzICsxMzgsMTUgQEAgZW51bSBtc21fZ2VtX2xvY2sgewogc3RydWN0IG1zbV9nZW1fc3Vi bWl0IHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwogCXN0cnVjdCBtc21fZ3B1ICpncHU7Ci0J c3RydWN0IGxpc3RfaGVhZCBub2RlOyAgIC8qIG5vZGUgaW4gZ3B1IHN1Ym1pdF9saXN0ICovCisJ c3RydWN0IGxpc3RfaGVhZCBub2RlOyAgIC8qIG5vZGUgaW4gcmluZyBzdWJtaXQgbGlzdCAqLwog CXN0cnVjdCBsaXN0X2hlYWQgYm9fbGlzdDsKIAlzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggdGlja2V0 OworCXVpbnQzMl90IHNlcW5vOwkJLyogU2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBzdWJtaXQgb24g dGhlIHJpbmcgKi8KIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlzdHJ1Y3QgbXNtX2dwdV9z dWJtaXRxdWV1ZSAqcXVldWU7CiAJc3RydWN0IHBpZCAqcGlkOyAgICAvKiBzdWJtaXR0aW5nIHBy b2Nlc3MgKi8KIAlib29sIHZhbGlkOyAgICAgICAgIC8qIHRydWUgaWYgbm8gY21kc3RyZWFtIHBh dGNoaW5nIG5lZWRlZCAqLworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZzsKIAl1bnNpZ25l ZCBpbnQgbnJfY21kczsKIAl1bnNpZ25lZCBpbnQgbnJfYm9zOwogCXN0cnVjdCB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9nZW1fc3VibWl0LmMKaW5kZXggMDk3Mzg4NC4uOWUwODdjZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2dlbV9zdWJtaXQuYwpAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0 IG1zbV9nZW1fc3VibWl0ICpzdWJtaXRfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ c3VibWl0LT5waWQgPSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJlbnQpKTsKIAlzdWJtaXQtPmNtZCA9 ICh2b2lkICopJnN1Ym1pdC0+Ym9zW25yX2Jvc107CiAJc3VibWl0LT5xdWV1ZSA9IHF1ZXVlOwor CXN1Ym1pdC0+cmluZyA9IGdwdS0+cmJbcXVldWUtPnByaW9dOwogCiAJLyogaW5pdGlhbGx5LCB1 bnRpbCBjb3B5X2Zyb21fdXNlcigpIGFuZCBibyBsb29rdXAgc3VjY2VlZHM6ICovCiAJc3VibWl0 LT5ucl9ib3MgPSAwOwpAQCAtMjMzLDcgKzIzNCw4IEBAIHN0YXRpYyBpbnQgc3VibWl0X2ZlbmNl X3N5bmMoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCiAJCXN0cnVjdCBtc21fZ2VtX29i amVjdCAqbXNtX29iaiA9IHN1Ym1pdC0+Ym9zW2ldLm9iajsKIAkJYm9vbCB3cml0ZSA9IHN1Ym1p dC0+Ym9zW2ldLmZsYWdzICYgTVNNX1NVQk1JVF9CT19XUklURTsKIAotCQlyZXQgPSBtc21fZ2Vt X3N5bmNfb2JqZWN0KCZtc21fb2JqLT5iYXNlLCBzdWJtaXQtPmdwdS0+ZmN0eCwgd3JpdGUpOwor CQlyZXQgPSBtc21fZ2VtX3N5bmNfb2JqZWN0KCZtc21fb2JqLT5iYXNlLCBzdWJtaXQtPnJpbmct PmZjdHgsCisJCQl3cml0ZSk7CiAJCWlmIChyZXQpCiAJCQlicmVhazsKIAl9CkBAIC0zOTYsNiAr Mzk4LDcgQEAgaW50IG1zbV9pb2N0bF9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVuY2UgPSBOVUxMOwogCXN0cnVj dCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSA9IE5VTEw7CiAJc3RydWN0IG1zbV9ncHVfc3VibWl0cXVl dWUgKnF1ZXVlOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZzsKIAlpbnQgb3V0X2ZlbmNl X2ZkID0gLTE7CiAJdW5zaWduZWQgaTsKIAlpbnQgcmV0OwpAQCAtNDE2LDYgKzQxOSw4IEBAIGlu dCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCWlmICghcXVldWUpCiAJCXJldHVybiAtRU5PRU5UOwogCisJcmluZyA9IGdwdS0+cmJbcXVl dWUtPnByaW9dOworCiAJaWYgKGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1JVF9GRU5DRV9GRF9JTikg ewogCQlpbl9mZW5jZSA9IHN5bmNfZmlsZV9nZXRfZmVuY2UoYXJncy0+ZmVuY2VfZmQpOwogCkBA IC00MjYsNyArNDMxLDcgQEAgaW50IG1zbV9pb2N0bF9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqIFdhaXQgaWYgdGhlIGZlbmNlIGlzIGZyb20gYSBm b3JlaWduIGNvbnRleHQsIG9yIGlmIHRoZSBmZW5jZQogCQkgKiBhcnJheSBjb250YWlucyBhbnkg ZmVuY2UgZnJvbSBhIGZvcmVpZ24gY29udGV4dC4KIAkJICovCi0JCWlmICghZG1hX2ZlbmNlX21h dGNoX2NvbnRleHQoaW5fZmVuY2UsIGdwdS0+ZmN0eC0+Y29udGV4dCkpIHsKKwkJaWYgKCFkbWFf ZmVuY2VfbWF0Y2hfY29udGV4dChpbl9mZW5jZSwgcmluZy0+ZmN0eC0+Y29udGV4dCkpIHsKIAkJ CXJldCA9IGRtYV9mZW5jZV93YWl0KGluX2ZlbmNlLCB0cnVlKTsKIAkJCWlmIChyZXQpCiAJCQkJ cmV0dXJuIHJldDsKQEAgLTUzMSw4ICs1MzYsNyBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCXN1Ym1pdC0+bnJfY21kcyA9 IGk7CiAKLQlzdWJtaXQtPmZlbmNlID0gbXNtX2ZlbmNlX2FsbG9jKGdwdS0+ZmN0eCk7Ci0KKwlz dWJtaXQtPmZlbmNlID0gbXNtX2ZlbmNlX2FsbG9jKHJpbmctPmZjdHgpOwogCWlmIChJU19FUlIo c3VibWl0LT5mZW5jZSkpIHsKIAkJcmV0ID0gUFRSX0VSUihzdWJtaXQtPmZlbmNlKTsKIAkJc3Vi bWl0LT5mZW5jZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9n cHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCmluZGV4IDllNjQ1Y2EuLjY5YzYy YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCkBAIC0yMjEsNiArMjIxLDIwIEBAIGludCBtc21fZ3B1 X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKICAqIEhhbmdjaGVjayBkZXRlY3Rpb24gZm9y IGxvY2tlZCBncHU6CiAgKi8KIAorc3RhdGljIHZvaWQgdXBkYXRlX2ZlbmNlcyhzdHJ1Y3QgbXNt X2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsCisJCXVpbnQzMl90IGZlbmNl KQoreworCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0OworCisJbGlzdF9mb3JfZWFjaF9l bnRyeShzdWJtaXQsICZyaW5nLT5zdWJtaXRzLCBub2RlKSB7CisJCWlmIChzdWJtaXQtPnNlcW5v ID4gZmVuY2UpCisJCQlicmVhazsKKworCQltc21fdXBkYXRlX2ZlbmNlKHN1Ym1pdC0+cmluZy0+ ZmN0eCwKKwkJCXN1Ym1pdC0+ZmVuY2UtPnNlcW5vKTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHJl dGlyZV9zdWJtaXRzKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogCiBzdGF0aWMgdm9pZCByZWNvdmVy X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC0yMjgsMTUgKzI0MiwzNCBAQCBz dGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3Ry dWN0IG1zbV9ncHUgKmdwdSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXNtX2dwdSwgcmVj b3Zlcl93b3JrKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7CiAJc3RydWN0 IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQ7Ci0JdWludDMyX3QgZmVuY2UgPSBncHUtPm1lbXB0cnMt PmZlbmNlOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqY3VyX3JpbmcgPSBncHUtPmZ1bmNzLT5h Y3RpdmVfcmluZyhncHUpOworCXVpbnQ2NF90IGZlbmNlOworCWludCBpOworCisJLyogVXBkYXRl IGFsbCB0aGUgcmluZ3Mgd2l0aCB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdCBmZW5jZSAqLworCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdwdS0+cmIpOyBpKyspIHsKKwkJc3RydWN0IG1zbV9y aW5nYnVmZmVyICpyaW5nID0gZ3B1LT5yYltpXTsKIAotCW1zbV91cGRhdGVfZmVuY2UoZ3B1LT5m Y3R4LCBmZW5jZSArIDEpOworCQlmZW5jZSA9IHJpbmctPm1lbXB0cnMtPmZlbmNlOworCisJCS8q CisJCSAqIEZvciB0aGUgY3VycmVudCAoZmF1bHRpbmc/KSByaW5nL3N1Ym1pdCBhZHZhbmNlIHRo ZSBmZW5jZSBieQorCQkgKiBvbmUgbW9yZSB0byBjbGVhciB0aGUgZmF1bHRpbmcgc3VibWl0CisJ CSAqLworCQlpZiAocmluZyA9PSBjdXJfcmluZykKKwkJCWZlbmNlID0gZmVuY2UgKyAxOworCisJ CXVwZGF0ZV9mZW5jZXMoZ3B1LCByaW5nLCBmZW5jZSk7CisJfQogCiAJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCisKIAlkZXZfZXJyKGRldi0+ZGV2LCAiJXM6IGhhbmdjaGVjayBy ZWNvdmVyIVxuIiwgZ3B1LT5uYW1lKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1Ym1pdCwgJmdw dS0+c3VibWl0X2xpc3QsIG5vZGUpIHsKLQkJaWYgKHN1Ym1pdC0+ZmVuY2UtPnNlcW5vID09IChm ZW5jZSArIDEpKSB7CisJZmVuY2UgPSBjdXJfcmluZy0+bWVtcHRycy0+ZmVuY2UgKyAxOworCisJ bGlzdF9mb3JfZWFjaF9lbnRyeShzdWJtaXQsICZjdXJfcmluZy0+c3VibWl0cywgbm9kZSkgewor CQlpZiAoc3VibWl0LT5zZXFubyA9PSBmZW5jZSkgewogCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrOwogCiAJCQlyY3VfcmVhZF9sb2NrKCk7CkBAIC0yNTgsOSArMjkxLDE2IEBAIHN0YXRpYyB2 b2lkIHJlY292ZXJfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJZ3B1LT5mdW5j cy0+cmVjb3ZlcihncHUpOwogCQlwbV9ydW50aW1lX3B1dF9zeW5jKCZncHUtPnBkZXYtPmRldik7 CiAKLQkJLyogcmVwbGF5IHRoZSByZW1haW5pbmcgc3VibWl0cyBhZnRlciB0aGUgb25lIHRoYXQg aHVuZzogKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShzdWJtaXQsICZncHUtPnN1Ym1pdF9saXN0 LCBub2RlKSB7Ci0JCQlncHUtPmZ1bmNzLT5zdWJtaXQoZ3B1LCBzdWJtaXQsIE5VTEwpOworCQkv KgorCQkgKiBSZXBsYXkgYWxsIHJlbWFpbmluZyBzdWJtaXRzIHN0YXJ0aW5nIHdpdGggaGlnaGVz dCBwcmlvcml0eQorCQkgKiByaW5nCisJCSAqLworCisJCWZvciAoaSA9IGdwdS0+bnJfcmluZ3Mg LSAxOyBpID49IDA7IGktLSkgeworCQkJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gZ3B1 LT5yYltpXTsKKworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShzdWJtaXQsICZyaW5nLT5zdWJtaXRz LCBub2RlKQorCQkJCWdwdS0+ZnVuY3MtPnN1Ym1pdChncHUsIHN1Ym1pdCwgTlVMTCk7CiAJCX0K IAl9CiAKQEAgLTI4MSwyNSArMzIxLDI3IEBAIHN0YXRpYyB2b2lkIGhhbmdjaGVja19oYW5kbGVy KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gKHN0cnVjdCBtc21f Z3B1ICopZGF0YTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7CiAJc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JdWludDMyX3QgZmVu Y2UgPSBncHUtPm1lbXB0cnMtPmZlbmNlOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9 IGdwdS0+ZnVuY3MtPmFjdGl2ZV9yaW5nKGdwdSk7CisJdWludDMyX3QgZmVuY2UgPSByaW5nLT5t ZW1wdHJzLT5mZW5jZTsKIAotCWlmIChmZW5jZSAhPSBncHUtPmhhbmdjaGVja19mZW5jZSkgewor CWlmIChmZW5jZSAhPSByaW5nLT5oYW5nY2hlY2tfZmVuY2UpIHsKIAkJLyogc29tZSBwcm9ncmVz cyBoYXMgYmVlbiBtYWRlLi4geWEhICovCi0JCWdwdS0+aGFuZ2NoZWNrX2ZlbmNlID0gZmVuY2U7 Ci0JfSBlbHNlIGlmIChmZW5jZSA8IGdwdS0+ZmN0eC0+bGFzdF9mZW5jZSkgeworCQlyaW5nLT5o YW5nY2hlY2tfZmVuY2UgPSBmZW5jZTsKKwl9IGVsc2UgaWYgKGZlbmNlIDwgcmluZy0+c2Vxbm8p IHsKIAkJLyogbm8gcHJvZ3Jlc3MgYW5kIG5vdCBkb25lLi4gaHVuZyEgKi8KLQkJZ3B1LT5oYW5n Y2hlY2tfZmVuY2UgPSBmZW5jZTsKLQkJZGV2X2VycihkZXYtPmRldiwgIiVzOiBoYW5nY2hlY2sg ZGV0ZWN0ZWQgZ3B1IGxvY2t1cCFcbiIsCi0JCQkJZ3B1LT5uYW1lKTsKKwkJcmluZy0+aGFuZ2No ZWNrX2ZlbmNlID0gZmVuY2U7CisJCWRldl9lcnIoZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIGRl dGVjdGVkIGdwdSBsb2NrdXAgcmIgJWQhXG4iLAorCQkJCWdwdS0+bmFtZSwgcmluZy0+aWQpOwog CQlkZXZfZXJyKGRldi0+ZGV2LCAiJXM6ICAgICBjb21wbGV0ZWQgZmVuY2U6ICV1XG4iLAogCQkJ CWdwdS0+bmFtZSwgZmVuY2UpOwogCQlkZXZfZXJyKGRldi0+ZGV2LCAiJXM6ICAgICBzdWJtaXR0 ZWQgZmVuY2U6ICV1XG4iLAotCQkJCWdwdS0+bmFtZSwgZ3B1LT5mY3R4LT5sYXN0X2ZlbmNlKTsK KwkJCQlncHUtPm5hbWUsIHJpbmctPnNlcW5vKTsKKwogCQlxdWV1ZV93b3JrKHByaXYtPndxLCAm Z3B1LT5yZWNvdmVyX3dvcmspOwogCX0KIAogCS8qIGlmIHN0aWxsIG1vcmUgcGVuZGluZyB3b3Jr LCByZXNldCB0aGUgaGFuZ2NoZWNrIHRpbWVyOiAqLwotCWlmIChncHUtPmZjdHgtPmxhc3RfZmVu Y2UgPiBncHUtPmhhbmdjaGVja19mZW5jZSkKKwlpZiAocmluZy0+c2Vxbm8gPiByaW5nLT5oYW5n Y2hlY2tfZmVuY2UpCiAJCWhhbmdjaGVja190aW1lcl9yZXNldChncHUpOwogCiAJLyogd29ya2Fy b3VuZCBmb3IgbWlzc2luZyBpcnE6ICovCkBAIC00MjgsMTkgKzQ3MCwxOCBAQCBzdGF0aWMgdm9p ZCByZXRpcmVfc3VibWl0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1p dCAqc3VibWl0KQogc3RhdGljIHZvaWQgcmV0aXJlX3N1Ym1pdHMoc3RydWN0IG1zbV9ncHUgKmdw dSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5kZXY7CisJc3RydWN0IG1zbV9n ZW1fc3VibWl0ICpzdWJtaXQsICp0bXA7CisJaW50IGk7CiAKIAlXQVJOX09OKCFtdXRleF9pc19s b2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CiAKLQl3aGlsZSAoIWxpc3RfZW1wdHkoJmdwdS0+ c3VibWl0X2xpc3QpKSB7Ci0JCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0OwotCi0JCXN1 Ym1pdCA9IGxpc3RfZmlyc3RfZW50cnkoJmdwdS0+c3VibWl0X2xpc3QsCi0JCQkJc3RydWN0IG1z bV9nZW1fc3VibWl0LCBub2RlKTsKKwkvKiBSZXRpcmUgdGhlIGNvbW1pdHMgc3RhcnRpbmcgd2l0 aCBoaWdoZXN0IHByaW9yaXR5ICovCisJZm9yIChpID0gZ3B1LT5ucl9yaW5ncyAtIDE7IGkgPj0g MDsgaS0tKSB7CisJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmJbaV07CiAK LQkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZChzdWJtaXQtPmZlbmNlKSkgewotCQkJcmV0aXJl X3N1Ym1pdChncHUsIHN1Ym1pdCk7Ci0JCX0gZWxzZSB7Ci0JCQlicmVhazsKKwkJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHN1Ym1pdCwgdG1wLCAmcmluZy0+c3VibWl0cywgbm9kZSkgeworCQkJ aWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZChzdWJtaXQtPmZlbmNlKSkKKwkJCQlyZXRpcmVfc3Vi bWl0KGdwdSwgc3VibWl0KTsKIAkJfQogCX0KIH0KQEAgLTQ0OSw5ICs0OTAsMTAgQEAgc3RhdGlj IHZvaWQgcmV0aXJlX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0 IG1zbV9ncHUgKmdwdSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXNtX2dwdSwgcmV0aXJl X3dvcmspOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBncHUtPmRldjsKLQl1aW50MzJfdCBm ZW5jZSA9IGdwdS0+bWVtcHRycy0+ZmVuY2U7CisJaW50IGk7CiAKLQltc21fdXBkYXRlX2ZlbmNl KGdwdS0+ZmN0eCwgZmVuY2UpOworCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBpKysp CisJCXVwZGF0ZV9mZW5jZXMoZ3B1LCBncHUtPnJiW2ldLCBncHUtPnJiW2ldLT5tZW1wdHJzLT5m ZW5jZSk7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmV0aXJlX3N1Ym1p dHMoZ3B1KTsKQEAgLTQ3Miw2ICs1MTQsNyBAQCB2b2lkIG1zbV9ncHVfc3VibWl0KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LAogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBncHUtPmRldjsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBzdWJt aXQtPnJpbmc7CiAJaW50IGk7CiAKIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3Ry dWN0X211dGV4KSk7CkBAIC00ODAsNyArNTIzLDkgQEAgdm9pZCBtc21fZ3B1X3N1Ym1pdChzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAogCW1zbV9n cHVfaHdfaW5pdChncHUpOwogCi0JbGlzdF9hZGRfdGFpbCgmc3VibWl0LT5ub2RlLCAmZ3B1LT5z dWJtaXRfbGlzdCk7CisJc3VibWl0LT5zZXFubyA9ICsrcmluZy0+c2Vxbm87CisKKwlsaXN0X2Fk ZF90YWlsKCZzdWJtaXQtPm5vZGUsICZyaW5nLT5zdWJtaXRzKTsKIAogCW1zbV9yZF9kdW1wX3N1 Ym1pdChzdWJtaXQpOwogCkBAIC02MDUsNyArNjUwLDkgQEAgaW50IG1zbV9ncHVfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQlzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LCBjb25zdCBzdHJ1Y3QgbXNtX2dwdV9mdW5jcyAqZnVuY3MsCiAJCWNv bnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBtc21fZ3B1X2NvbmZpZyAqY29uZmlnKQogewotCWludCBy ZXQ7CisJaW50IGksIHJldCwgbnJfcmluZ3MgPSBjb25maWctPm5yX3JpbmdzOworCXZvaWQgKm1l bXB0cnM7CisJdWludDY0X3QgbWVtcHRyc19pb3ZhOwogCiAJaWYgKFdBUk5fT04oZ3B1LT5udW1f cGVyZmNudHJzID4gQVJSQVlfU0laRShncHUtPmxhc3RfY250cnMpKSkKIAkJZ3B1LT5udW1fcGVy ZmNudHJzID0gQVJSQVlfU0laRShncHUtPmxhc3RfY250cnMpOwpAQCAtNjEzLDE4ICs2NjAsMTEg QEAgaW50IG1zbV9ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2LAogCWdwdS0+ZGV2ID0gZHJtOwogCWdwdS0+ZnVuY3MgPSBmdW5jczsK IAlncHUtPm5hbWUgPSBuYW1lOwotCWdwdS0+ZmN0eCA9IG1zbV9mZW5jZV9jb250ZXh0X2FsbG9j KGRybSwgbmFtZSk7Ci0JaWYgKElTX0VSUihncHUtPmZjdHgpKSB7Ci0JCXJldCA9IFBUUl9FUlIo Z3B1LT5mY3R4KTsKLQkJZ3B1LT5mY3R4ID0gTlVMTDsKLQkJZ290byBmYWlsOwotCX0KIAogCUlO SVRfTElTVF9IRUFEKCZncHUtPmFjdGl2ZV9saXN0KTsKIAlJTklUX1dPUksoJmdwdS0+cmV0aXJl X3dvcmssIHJldGlyZV93b3JrZXIpOwogCUlOSVRfV09SSygmZ3B1LT5yZWNvdmVyX3dvcmssIHJl Y292ZXJfd29ya2VyKTsKIAotCUlOSVRfTElTVF9IRUFEKCZncHUtPnN1Ym1pdF9saXN0KTsKIAog CXNldHVwX3RpbWVyKCZncHUtPmhhbmdjaGVja190aW1lciwgaGFuZ2NoZWNrX2hhbmRsZXIsCiAJ CQkodW5zaWduZWQgbG9uZylncHUpOwpAQCAtNjg5LDI5ICs3MjksNDcgQEAgaW50IG1zbV9ncHVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 LAogCQlnb3RvIGZhaWw7CiAJfQogCi0JZ3B1LT5tZW1wdHJzID0gbXNtX2dlbV9rZXJuZWxfbmV3 KGRybSwgc2l6ZW9mKCpncHUtPm1lbXB0cnNfYm8pLAorCW1lbXB0cnMgPSBtc21fZ2VtX2tlcm5l bF9uZXcoZHJtLCBzaXplb2YoKmdwdS0+bWVtcHRyc19ibyksCiAJCU1TTV9CT19VTkNBQ0hFRCwg Z3B1LT5hc3BhY2UsICZncHUtPm1lbXB0cnNfYm8sCi0JCSZncHUtPm1lbXB0cnNfaW92YSk7CisJ CSZtZW1wdHJzX2lvdmEpOwogCi0JaWYgKElTX0VSUihncHUtPm1lbXB0cnMpKSB7Ci0JCXJldCA9 IFBUUl9FUlIoZ3B1LT5tZW1wdHJzKTsKLQkJZ3B1LT5tZW1wdHJzID0gTlVMTDsKKwlpZiAoSVNf RVJSKG1lbXB0cnMpKSB7CisJCXJldCA9IFBUUl9FUlIobWVtcHRycyk7CiAJCWRldl9lcnIoZHJt LT5kZXYsICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtcHRyczogJWRcbiIsIHJldCk7CiAJCWdvdG8g ZmFpbDsKIAl9CiAKLQkvKiBDcmVhdGUgcmluZ2J1ZmZlcjogKi8KLQlncHUtPnJiID0gbXNtX3Jp bmdidWZmZXJfbmV3KGdwdSwgY29uZmlnLT5yaW5nc3opOwotCWlmIChJU19FUlIoZ3B1LT5yYikp IHsKLQkJcmV0ID0gUFRSX0VSUihncHUtPnJiKTsKLQkJZ3B1LT5yYiA9IE5VTEw7Ci0JCWRldl9l cnIoZHJtLT5kZXYsICJjb3VsZCBub3QgY3JlYXRlIHJpbmdidWZmZXI6ICVkXG4iLCByZXQpOwot CQlnb3RvIGZhaWw7CisJaWYgKG5yX3JpbmdzID4gQVJSQVlfU0laRShncHUtPnJiKSkgeworCQlE Uk1fREVWX0lORk9fT05DRShkcm0tPmRldiwgIk9ubHkgY3JlYXRpbmcgJWx1IHJpbmdidWZmZXJz XG4iLAorCQkJQVJSQVlfU0laRShncHUtPnJiKSk7CisJCW5yX3JpbmdzID0gQVJSQVlfU0laRShn cHUtPnJiKTsKIAl9CiAKKwkvKiBDcmVhdGUgcmluZ2J1ZmZlcihzKTogKi8KKwlmb3IgKGkgPSAw OyBpIDwgbnJfcmluZ3M7IGkrKykgeworCQlncHUtPnJiW2ldID0gbXNtX3JpbmdidWZmZXJfbmV3 KGdwdSwgaSwgbWVtcHRycywgbWVtcHRyc19pb3ZhKTsKKworCQlpZiAoSVNfRVJSKGdwdS0+cmJb aV0pKSB7CisJCQlyZXQgPSBQVFJfRVJSKGdwdS0+cmJbaV0pOworCQkJZGV2X2Vycihkcm0tPmRl diwKKwkJCQkiY291bGQgbm90IGNyZWF0ZSByaW5nYnVmZmVyICVkOiAlZFxuIiwgaSwgcmV0KTsK KwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCW1lbXB0cnMgKz0gc2l6ZW9mKHN0cnVjdCBtc21fcmJt ZW1wdHJzKTsKKwkJbWVtcHRyc19pb3ZhICs9IHNpemVvZihzdHJ1Y3QgbXNtX3JibWVtcHRycyk7 CisJfQorCisJZ3B1LT5ucl9yaW5ncyA9IG5yX3JpbmdzOworCiAJcmV0dXJuIDA7CiAKIGZhaWw6 CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ3B1LT5yYik7IGkrKykgIHsKKwkJbXNtX3Jp bmdidWZmZXJfZGVzdHJveShncHUtPnJiW2ldKTsKKwkJZ3B1LT5yYltpXSA9IE5VTEw7CisJfQor CiAJaWYgKGdwdS0+bWVtcHRyc19ibykgewogCQltc21fZ2VtX3B1dF92YWRkcihncHUtPm1lbXB0 cnNfYm8pOwogCQltc21fZ2VtX3B1dF9pb3ZhKGdwdS0+bWVtcHRyc19ibywgZ3B1LT5hc3BhY2Up OwpAQCAtNzI0LDE2ICs3ODIsMTcgQEAgaW50IG1zbV9ncHVfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCiB2b2lkIG1zbV9ncHVfY2xl YW51cChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogeworCWludCBpOworCiAJREJHKCIlcyIsIGdwdS0+ bmFtZSk7CiAKIAlXQVJOX09OKCFsaXN0X2VtcHR5KCZncHUtPmFjdGl2ZV9saXN0KSk7CiAKIAli c19maW5pKGdwdSk7CiAKLQlpZiAoZ3B1LT5yYikgewotCQlpZiAoZ3B1LT5yYl9pb3ZhKQotCQkJ bXNtX2dlbV9wdXRfaW92YShncHUtPnJiLT5ibywgZ3B1LT5hc3BhY2UpOwotCQltc21fcmluZ2J1 ZmZlcl9kZXN0cm95KGdwdS0+cmIpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGdwdS0+ cmIpOyBpKyspIHsKKwkJbXNtX3JpbmdidWZmZXJfZGVzdHJveShncHUtPnJiW2ldKTsKKwkJZ3B1 LT5yYltpXSA9IE5VTEw7CiAJfQogCiAJaWYgKGdwdS0+bWVtcHRyc19ibykgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9ncHUuaAppbmRleCA4ZGRkYTA1Li4xYmUwMzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaApAQCAt MzMsNyArMzMsNyBAQCBzdHJ1Y3QgbXNtX2dwdV9jb25maWcgewogCWNvbnN0IGNoYXIgKmlycW5h bWU7CiAJdWludDY0X3QgdmFfc3RhcnQ7CiAJdWludDY0X3QgdmFfZW5kOwotCXVuc2lnbmVkIGlu dCByaW5nc3o7CisJdW5zaWduZWQgaW50IG5yX3JpbmdzOwogfTsKIAogLyogU28gZmFyLCB3aXRo IGhhcmR3YXJlIHRoYXQgSSd2ZSBzZWVuIHRvIGRhdGUsIHdlIGNhbiBoYXZlOgpAQCAtNTcsOCAr NTcsOSBAQCBzdHJ1Y3QgbXNtX2dwdV9mdW5jcyB7CiAJaW50ICgqcG1fcmVzdW1lKShzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KTsKIAl2b2lkICgqc3VibWl0KShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1 Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAkJCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpj dHgpOwotCXZvaWQgKCpmbHVzaCkoc3RydWN0IG1zbV9ncHUgKmdwdSk7CisJdm9pZCAoKmZsdXNo KShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpOwogCWly cXJldHVybl90ICgqaXJxKShzdHJ1Y3QgbXNtX2dwdSAqaXJxKTsKKwlzdHJ1Y3QgbXNtX3Jpbmdi dWZmZXIgKigqYWN0aXZlX3JpbmcpKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogCXZvaWQgKCpyZWNv dmVyKShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKIAl2b2lkICgqZGVzdHJveSkoc3RydWN0IG1zbV9n cHUgKmdwdSk7CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCkBAIC02NywxNCArNjgsNiBAQCBzdHJ1 Y3QgbXNtX2dwdV9mdW5jcyB7CiAjZW5kaWYKIH07CiAKLSNkZWZpbmUgcmJtZW1wdHIoZ3B1LCBt ZW1iZXIpICBcCi0JKChncHUpLT5tZW1wdHJzX2lvdmEgKyBvZmZzZXRvZihzdHJ1Y3QgbXNtX3Ji bWVtcHRycywgbWVtYmVyKSkKLQotc3RydWN0IG1zbV9yYm1lbXB0cnMgewotCXZvbGF0aWxlIHVp bnQzMl90IHJwdHI7Ci0Jdm9sYXRpbGUgdWludDMyX3QgZmVuY2U7Ci19OwotCiBzdHJ1Y3QgbXNt X2dwdSB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwpAQCAt OTMsMTYgKzg2LDEyIEBAIHN0cnVjdCBtc21fZ3B1IHsKIAljb25zdCBzdHJ1Y3QgbXNtX2dwdV9w ZXJmY250ciAqcGVyZmNudHJzOwogCXVpbnQzMl90IG51bV9wZXJmY250cnM7CiAKLQkvKiByaW5n YnVmZmVyOiAqLwotCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmI7Ci0JdWludDY0X3QgcmJfaW92 YTsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJiW01TTV9HUFVfTUFYX1JJTkdTXTsKKwlpbnQg bnJfcmluZ3M7CiAKIAkvKiBsaXN0IG9mIEdFTSBhY3RpdmUgb2JqZWN0czogKi8KIAlzdHJ1Y3Qg bGlzdF9oZWFkIGFjdGl2ZV9saXN0OwogCi0JLyogZmVuY2luZzogKi8KLQlzdHJ1Y3QgbXNtX2Zl bmNlX2NvbnRleHQgKmZjdHg7Ci0KIAkvKiBkb2VzIGdwdSBuZWVkIGh3X2luaXQ/ICovCiAJYm9v bCBuZWVkc19od19pbml0OwogCkBAIC0xMzMsMjEgKzEyMiwyNiBAQCBzdHJ1Y3QgbXNtX2dwdSB7 CiAjZGVmaW5lIERSTV9NU01fSEFOR0NIRUNLX1BFUklPRCA1MDAgLyogaW4gbXMgKi8KICNkZWZp bmUgRFJNX01TTV9IQU5HQ0hFQ0tfSklGRklFUyBtc2Vjc190b19qaWZmaWVzKERSTV9NU01fSEFO R0NIRUNLX1BFUklPRCkKIAlzdHJ1Y3QgdGltZXJfbGlzdCBoYW5nY2hlY2tfdGltZXI7Ci0JdWlu dDMyX3QgaGFuZ2NoZWNrX2ZlbmNlOwogCXN0cnVjdCB3b3JrX3N0cnVjdCByZWNvdmVyX3dvcms7 CiAKLQlzdHJ1Y3QgbGlzdF9oZWFkIHN1Ym1pdF9saXN0OwotCi0Jc3RydWN0IG1zbV9yYm1lbXB0 cnMgKm1lbXB0cnM7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICptZW1wdHJzX2JvOwotCXVpbnQ2 NF90IG1lbXB0cnNfaW92YTsKLQotCiB9OwogCisvKiBJdCB0dXJucyBvdXQgdGhhdCBhbGwgdGFy Z2V0cyB1c2UgdGhlIHNhbWUgcmluZ2J1ZmZlciBzaXplICovCisjZGVmaW5lIE1TTV9HUFVfUklO R0JVRkZFUl9TWiBTWl8zMksKKwogc3RhdGljIGlubGluZSBib29sIG1zbV9ncHVfYWN0aXZlKHN0 cnVjdCBtc21fZ3B1ICpncHUpCiB7Ci0JcmV0dXJuIGdwdS0+ZmN0eC0+bGFzdF9mZW5jZSA+IGdw dS0+bWVtcHRycy0+ZmVuY2U7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9y aW5nczsgaSsrKSB7CisJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9IGdwdS0+cmJbaV07 CisKKwkJaWYgKHJpbmctPnNlcW5vID4gcmluZy0+bWVtcHRycy0+ZmVuY2UpCisJCQlyZXR1cm4g dHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qIFBlcmYtQ291bnRlcnM6CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKaW5kZXggYmYwNjVhNS4uZmViZjI1NDEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKQEAgLTE4LDEzICsxOCwxNSBAQAogI2luY2x1 ZGUgIm1zbV9yaW5nYnVmZmVyLmgiCiAjaW5jbHVkZSAibXNtX2dwdS5oIgogCi1zdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKm1zbV9yaW5nYnVmZmVyX25ldyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBpbnQg c2l6ZSkKK3N0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3JpbmdidWZmZXJfbmV3KHN0cnVjdCBt c21fZ3B1ICpncHUsIGludCBpZCwKKwkJdm9pZCAqbWVtcHRycywgdWludDY0X3QgbWVtcHRyc19p b3ZhKQogewogCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZzsKKwljaGFyIG5hbWVbMzJdOwog CWludCByZXQ7CiAKLQlpZiAoV0FSTl9PTighaXNfcG93ZXJfb2ZfMihzaXplKSkpCi0JCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOworCS8qIFdlIGFzc3VtZSBldmVyd2hlcmUgdGhhdCBNU01fR1BV X1JJTkdCVUZGRVJfU1ogaXMgYSBwb3dlciBvZiAyICovCisJQlVJTERfQlVHX09OKCFpc19wb3dl cl9vZl8yKE1TTV9HUFVfUklOR0JVRkZFUl9TWikpOwogCiAJcmluZyA9IGt6YWxsb2Moc2l6ZW9m KCpyaW5nKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFyaW5nKSB7CkBAIC0zMywzMiArMzUsNDUgQEAg c3RydWN0IG1zbV9yaW5nYnVmZmVyICptc21fcmluZ2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUg KmdwdSwgaW50IHNpemUpCiAJfQogCiAJcmluZy0+Z3B1ID0gZ3B1OwotCisJcmluZy0+aWQgPSBp ZDsKIAkvKiBQYXNzIE5VTEwgZm9yIHRoZSBpb3ZhIHBvaW50ZXIgLSB3ZSB3aWxsIG1hcCBpdCBs YXRlciAqLwotCXJpbmctPnN0YXJ0ID0gbXNtX2dlbV9rZXJuZWxfbmV3KGdwdS0+ZGV2LCBzaXpl LCBNU01fQk9fV0MsCi0JCWdwdS0+YXNwYWNlLCAmcmluZy0+Ym8sIE5VTEwpOworCXJpbmctPnN0 YXJ0ID0gbXNtX2dlbV9rZXJuZWxfbmV3KGdwdS0+ZGV2LCBNU01fR1BVX1JJTkdCVUZGRVJfU1os CisJCU1TTV9CT19XQywgZ3B1LT5hc3BhY2UsICZyaW5nLT5ibywgTlVMTCk7CiAKIAlpZiAoSVNf RVJSKHJpbmctPnN0YXJ0KSkgewogCQlyZXQgPSBQVFJfRVJSKHJpbmctPnN0YXJ0KTsKIAkJcmlu Zy0+c3RhcnQgPSAwOwogCQlnb3RvIGZhaWw7CiAJfQotCXJpbmctPmVuZCAgID0gcmluZy0+c3Rh cnQgKyAoc2l6ZSAvIDQpOworCXJpbmctPmVuZCAgID0gcmluZy0+c3RhcnQgKyAoTVNNX0dQVV9S SU5HQlVGRkVSX1NaID4+IDIpOwogCXJpbmctPmN1ciAgID0gcmluZy0+c3RhcnQ7CiAKLQlyaW5n LT5zaXplID0gc2l6ZTsKKwlyaW5nLT5tZW1wdHJzID0gbWVtcHRyczsKKwlyaW5nLT5tZW1wdHJz X2lvdmEgPSBtZW1wdHJzX2lvdmE7CisKKwlJTklUX0xJU1RfSEVBRCgmcmluZy0+c3VibWl0cyk7 CisKKwlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICJncHUtcmluZy0lZCIsIHJpbmctPmlk KTsKKworCS8qIEZJWE1FOiBuZWVkIHN0cnVjdCBkcm1fZGV2aWNlICovCisJcmluZy0+ZmN0eCA9 IG1zbV9mZW5jZV9jb250ZXh0X2FsbG9jKGdwdS0+ZGV2LCBuYW1lKTsKIAogCXJldHVybiByaW5n OwogCiBmYWlsOgotCWlmIChyaW5nKQotCQltc21fcmluZ2J1ZmZlcl9kZXN0cm95KHJpbmcpOwor CW1zbV9yaW5nYnVmZmVyX2Rlc3Ryb3kocmluZyk7CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAogdm9pZCBtc21fcmluZ2J1ZmZlcl9kZXN0cm95KHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmlu ZykKIHsKKwlpZiAoSVNfRVJSX09SX05VTEwocmluZykpCisJCXJldHVybjsKKworCW1zbV9mZW5j ZV9jb250ZXh0X2ZyZWUocmluZy0+ZmN0eCk7CisKIAlpZiAocmluZy0+Ym8pIHsKKwkJbXNtX2dl bV9wdXRfaW92YShyaW5nLT5ibywgcmluZy0+Z3B1LT5hc3BhY2UpOwogCQltc21fZ2VtX3B1dF92 YWRkcihyaW5nLT5ibyk7CiAJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHJp bmctPmJvKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmgKaW5kZXggNmUwZTEw NC4uZWM0NDI1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZl ci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaApAQCAtMjAsMTQg KzIwLDMwIEBACiAKICNpbmNsdWRlICJtc21fZHJ2LmgiCiAKKyNkZWZpbmUgcmJtZW1wdHIocmlu ZywgbWVtYmVyKSAgXAorCSgocmluZyktPm1lbXB0cnNfaW92YSArIG9mZnNldG9mKHN0cnVjdCBt c21fcmJtZW1wdHJzLCBtZW1iZXIpKQorCitzdHJ1Y3QgbXNtX3JibWVtcHRycyB7CisJdm9sYXRp bGUgdWludDMyX3QgcnB0cjsKKwl2b2xhdGlsZSB1aW50MzJfdCBmZW5jZTsKK307CisKIHN0cnVj dCBtc21fcmluZ2J1ZmZlciB7CiAJc3RydWN0IG1zbV9ncHUgKmdwdTsKLQlpbnQgc2l6ZTsKKwlp bnQgaWQ7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpibzsKIAl1aW50MzJfdCAqc3RhcnQsICpl bmQsICpjdXI7CisJc3RydWN0IGxpc3RfaGVhZCBzdWJtaXRzOworCXVpbnQ2NF90IGlvdmE7CisJ dWludDMyX3Qgc2Vxbm87CisJdWludDMyX3QgaGFuZ2NoZWNrX2ZlbmNlOworCXN0cnVjdCBtc21f cmJtZW1wdHJzICptZW1wdHJzOworCXVpbnQ2NF90IG1lbXB0cnNfaW92YTsKKwlzdHJ1Y3QgbXNt X2ZlbmNlX2NvbnRleHQgKmZjdHg7CiB9OwogCi1zdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKm1zbV9y aW5nYnVmZmVyX25ldyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBpbnQgc2l6ZSk7CitzdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKm1zbV9yaW5nYnVmZmVyX25ldyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBpbnQg aWQsCisJCXZvaWQgKm1lbXB0cnMsIHVpbnQ2NF90IG1lbXB0cnNfaW92YSk7CiB2b2lkIG1zbV9y aW5nYnVmZmVyX2Rlc3Ryb3koc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKTsKIAogLyogcmlu Z2J1ZmZlciBoZWxwZXJzICh0aGUgcGFydHMgdGhhdCBhcmUgc2FtZSBmb3IgYTN4eC9hMnh4L3ox ODAuLikgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVl LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCmluZGV4IDU5M2MzYjUu LjUxMTVmNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3VibWl0cXVldWUuYwpAQCAtNjAsOSAr NjAsMTAgQEAgdm9pZCBtc21fc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IG1zbV9maWxlX3ByaXZh dGUgKmN0eCkKIAkJbXNtX3N1Ym1pdHF1ZXVlX3B1dChlbnRyeSk7CiB9CiAKLWludCBtc21fc3Vi bWl0cXVldWVfY3JlYXRlKHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgsIHUzMiBwcmlvLCB1 MzIgZmxhZ3MsCi0JCXUzMiAqaWQpCitpbnQgbXNtX3N1Ym1pdHF1ZXVlX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4LAorCQl1MzIgcHJp bywgdTMyIGZsYWdzLCB1MzIgKmlkKQogeworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYg PSBkcm0tPmRldl9wcml2YXRlOwogCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZTsK IAogCWlmICghY3R4KQpAQCAtNzUsNyArNzYsMTMgQEAgaW50IG1zbV9zdWJtaXRxdWV1ZV9jcmVh dGUoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCwgdTMyIHByaW8sIHUzMiBmbGFncywKIAog CWtyZWZfaW5pdCgmcXVldWUtPnJlZik7CiAJcXVldWUtPmZsYWdzID0gZmxhZ3M7Ci0JcXVldWUt PnByaW8gPSBwcmlvOworCisJaWYgKHByaXYtPmdwdSkgeworCQlpZiAocHJpbyA+PSBwcml2LT5n cHUtPm5yX3JpbmdzKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJcXVldWUtPnByaW8gPSBwcmlv OworCX0KIAogCXdyaXRlX2xvY2soJmN0eC0+cXVldWVsb2NrKTsKIApAQCAtOTEsMTYgKzk4LDI2 IEBAIGludCBtc21fc3VibWl0cXVldWVfY3JlYXRlKHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpj dHgsIHUzMiBwcmlvLCB1MzIgZmxhZ3MsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBtc21fc3VibWl0 cXVldWVfaW5pdChzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4KQoraW50IG1zbV9zdWJtaXRx dWV1ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBtc21fZmlsZV9wcml2YXRl ICpjdHgpCiB7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRybS0+ZGV2X3ByaXZh dGU7CisJaW50IGRlZmF1bHRfcHJpbzsKKwogCWlmICghY3R4KQogCQlyZXR1cm4gMDsKIAorCS8q CisJICogU2VsZWN0IHByaW9yaXR5IDIgYXMgdGhlICJkZWZhdWx0IHByaW9yaXR5IiB1bmxlc3Mg bnJfcmluZ3MgaXMgbGVzcworCSAqIHRoYW4gMiBhbmQgdGhlbiBwaWNrIHRoZSBsb3dlc3QgcGly b3JpdHkKKwkgKi8KKwlkZWZhdWx0X3ByaW8gPSBwcml2LT5ncHUgPworCQljbGFtcF90KHVpbnQz Ml90LCAyLCAwLCBwcml2LT5ncHUtPm5yX3JpbmdzIC0gMSkgOiAwOworCiAJSU5JVF9MSVNUX0hF QUQoJmN0eC0+c3VibWl0cXVldWVzKTsKIAogCXJ3bG9ja19pbml0KCZjdHgtPnF1ZXVlbG9jayk7 CiAKLQlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX2NyZWF0ZShjdHgsIDIsIDAsIE5VTEwpOworCXJl dHVybiBtc21fc3VibWl0cXVldWVfY3JlYXRlKGRybSwgY3R4LCBkZWZhdWx0X3ByaW8sIDAsIE5V TEwpOwogfQogCiBpbnQgbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShzdHJ1Y3QgbXNtX2ZpbGVfcHJp dmF0ZSAqY3R4LCB1MzIgaWQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL21zbV9kcm0u aCBiL2luY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oCmluZGV4IDlmYjRiODEuLjQyZmE3ODEgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9k cm0vbXNtX2RybS5oCkBAIC0yMzIsNiArMjMyLDcgQEAgc3RydWN0IGRybV9tc21fd2FpdF9mZW5j ZSB7CiAJX191MzIgZmVuY2U7ICAgICAgICAgIC8qIGluICovCiAJX191MzIgcGFkOwogCXN0cnVj dCBkcm1fbXNtX3RpbWVzcGVjIHRpbWVvdXQ7ICAgLyogaW4gKi8KKwlfX3UzMiBxdWV1ZWlkOyAg ICAgICAgIC8qIGluLCBzdWJtaXRxdWV1ZSBpZCAqLwogfTsKIAogLyogbWFkdmlzZSBwcm92aWRl cyBhIHdheSB0byB0ZWxsIHRoZSBrZXJuZWwgaW4gY2FzZSBhIGJ1ZmZlcnMgY29udGVudHMKLS0g CjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpG cmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K