From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 049/262] drm/i915: Move all the RPS irq handlers to intel_gt_pm Date: Thu, 17 May 2018 07:04:05 +0100 Message-ID: <20180517060738.19193-49-chris@chris-wilson.co.uk> References: <20180517060738.19193-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BCD96E639 for ; Thu, 17 May 2018 06:09:31 +0000 (UTC) In-Reply-To: <20180517060738.19193-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U2luY2UgYWxsIHRoZSBSUFMgaGFuZGxpbmcgY29kZSBpcyBpbiBpbnRlbF9ndF9wbSwgbW92ZSB0 aGUgaXJxIGhhbmRsZXJzCnRoZXJlIGFzIHdlbGwgc28gdGhhdCBpdCBhbGwgY29udGFpbmVkIHdp dGhpbiBvbmUgZmlsZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAzMTQg KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d0X3BtLmMgICAg ICB8IDIzNiArKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d0 X3BtLmggICAgICB8ICAxMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgfCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMjk5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGFmMGFjODU2MTVkMC4uNjFlZTQ0 ODY4ZTlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE1ODQsMTAgKzE1ODQsNiBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCXUzMiBkZV9pcnFfbWFza1tJOTE1X01BWF9QSVBF U107CiAJfTsKIAl1MzIgZ3RfaXJxX21hc2s7Ci0JdTMyIHBtX2ltcjsKLQl1MzIgcG1faWVyOwot CXUzMiBwbV9ycHNfZXZlbnRzOwotCXUzMiBwbV9ndWNfZXZlbnRzOwogCXUzMiBwaXBlc3RhdF9p cnFfbWFza1tJOTE1X01BWF9QSVBFU107CiAKIAlzdHJ1Y3QgaTkxNV9ob3RwbHVnIGhvdHBsdWc7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCAyNGYxMGMxZTk4ODkuLjU2ODVkODYxMGU2OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0yMDQsNyArMjA0LDYgQEAgc3RhdGljIHZvaWQg Z2VuMl9hc3NlcnRfaWlyX2lzX3plcm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCVBPU1RJTkdfUkVBRDE2KHR5cGUjI0lNUik7IFwKIH0gd2hpbGUgKDApCiAKLXN0YXRpYyB2 b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIHBtX2lpcik7CiBzdGF0aWMgdm9pZCBnZW45X2d1Y19pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9paXIpOwogCiAvKiBGb3IgZGlzcGxh eSBob3RwbHVnIGludGVycnVwdCAqLwpAQCAtMzQzLDIyMCArMzQyLDYgQEAgdm9pZCBnZW41X2Rp c2FibGVfZ3RfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMyX3Qg bWFzaykKIAlpbGtfdXBkYXRlX2d0X2lycShkZXZfcHJpdiwgbWFzaywgMCk7CiB9CiAKLXN0YXRp YyBpOTE1X3JlZ190IGdlbjZfcG1faWlyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKLXsKLQlXQVJOX09OX09OQ0UoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSk7Ci0KLQlyZXR1 cm4gSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlS OwotfQotCi1zdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2ltcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCi17Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCi0JCXJl dHVybiBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfTUFTSzsKLQllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpCi0JCXJldHVybiBHRU44X0dUX0lNUigyKTsKLQllbHNlCi0JCXJldHVy biBHRU42X1BNSU1SOwotfQotCi1zdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2llcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTEpCi0JCXJldHVybiBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfRU5BQkxFOwotCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKLQkJcmV0dXJuIEdFTjhfR1RfSUVSKDIpOwot CWVsc2UKLQkJcmV0dXJuIEdFTjZfUE1JRVI7Ci19Ci0KLS8qKgotICogc25iX3VwZGF0ZV9wbV9p cnEgLSB1cGRhdGUgR0VONl9QTUlNUgotICogQGRldl9wcml2OiBkcml2ZXIgcHJpdmF0ZQotICog QGludGVycnVwdF9tYXNrOiBtYXNrIG9mIGludGVycnVwdCBiaXRzIHRvIHVwZGF0ZQotICogQGVu YWJsZWRfaXJxX21hc2s6IG1hc2sgb2YgaW50ZXJydXB0IGJpdHMgdG8gZW5hYmxlCi0gKi8KLXN0 YXRpYyB2b2lkIHNuYl91cGRhdGVfcG1faXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJCSAgICAgIHVpbnQzMl90IGludGVycnVwdF9tYXNrLAotCQkJICAgICAgdWludDMy X3QgZW5hYmxlZF9pcnFfbWFzaykKLXsKLQl1aW50MzJfdCBuZXdfdmFsOwotCi0JV0FSTl9PTihl bmFibGVkX2lycV9tYXNrICYgfmludGVycnVwdF9tYXNrKTsKLQotCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmRldl9wcml2LT5pcnFfbG9jayk7Ci0KLQluZXdfdmFsID0gZGV2X3ByaXYtPnBtX2ltcjsK LQluZXdfdmFsICY9IH5pbnRlcnJ1cHRfbWFzazsKLQluZXdfdmFsIHw9ICh+ZW5hYmxlZF9pcnFf bWFzayAmIGludGVycnVwdF9tYXNrKTsKLQotCWlmIChuZXdfdmFsICE9IGRldl9wcml2LT5wbV9p bXIpIHsKLQkJZGV2X3ByaXYtPnBtX2ltciA9IG5ld192YWw7Ci0JCUk5MTVfV1JJVEUoZ2VuNl9w bV9pbXIoZGV2X3ByaXYpLCBkZXZfcHJpdi0+cG1faW1yKTsKLQkJUE9TVElOR19SRUFEKGdlbjZf cG1faW1yKGRldl9wcml2KSk7Ci0JfQotfQotCi12b2lkIGdlbjZfdW5tYXNrX3BtX2lycShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXNrKQotewotCWlmIChXQVJOX09O KCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKLQkJcmV0dXJuOwotCi0Jc25iX3VwZGF0 ZV9wbV9pcnEoZGV2X3ByaXYsIG1hc2ssIG1hc2spOwotfQotCi1zdGF0aWMgdm9pZCBfX2dlbjZf bWFza19wbV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzaykK LXsKLQlzbmJfdXBkYXRlX3BtX2lycShkZXZfcHJpdiwgbWFzaywgMCk7Ci19Ci0KLXZvaWQgZ2Vu Nl9tYXNrX3BtX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXNr KQotewotCWlmIChXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKLQkJcmV0 dXJuOwotCi0JX19nZW42X21hc2tfcG1faXJxKGRldl9wcml2LCBtYXNrKTsKLX0KLQotc3RhdGlj IHZvaWQgZ2VuNl9yZXNldF9wbV9paXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1MzIgcmVzZXRfbWFzaykKLXsKLQlpOTE1X3JlZ190IHJlZyA9IGdlbjZfcG1faWlyKGRldl9w cml2KTsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5pcnFfbG9jayk7Ci0KLQlJ OTE1X1dSSVRFKHJlZywgcmVzZXRfbWFzayk7Ci0JSTkxNV9XUklURShyZWcsIHJlc2V0X21hc2sp OwotCVBPU1RJTkdfUkVBRChyZWcpOwotfQotCi1zdGF0aWMgdm9pZCBnZW42X2VuYWJsZV9wbV9p cnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZW5hYmxlX21hc2spCi17 Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKLQotCWRldl9wcml2 LT5wbV9pZXIgfD0gZW5hYmxlX21hc2s7Ci0JSTkxNV9XUklURShnZW42X3BtX2llcihkZXZfcHJp diksIGRldl9wcml2LT5wbV9pZXIpOwotCWdlbjZfdW5tYXNrX3BtX2lycShkZXZfcHJpdiwgZW5h YmxlX21hc2spOwotCS8qIHVubWFza19wbV9pcnEgcHJvdmlkZXMgYW4gaW1wbGljaXQgYmFycmll ciAoUE9TVElOR19SRUFEKSAqLwotfQotCi1zdGF0aWMgdm9pZCBnZW42X2Rpc2FibGVfcG1faXJx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGRpc2FibGVfbWFzaykKLXsK LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+aXJxX2xvY2spOwotCi0JZGV2X3ByaXYt PnBtX2llciAmPSB+ZGlzYWJsZV9tYXNrOwotCV9fZ2VuNl9tYXNrX3BtX2lycShkZXZfcHJpdiwg ZGlzYWJsZV9tYXNrKTsKLQlJOTE1X1dSSVRFKGdlbjZfcG1faWVyKGRldl9wcml2KSwgZGV2X3By aXYtPnBtX2llcik7Ci0JLyogdGhvdWdoIGEgYmFycmllciBpcyBtaXNzaW5nIGhlcmUsIGJ1dCBk b24ndCByZWFsbHkgbmVlZCBhIG9uZSAqLwotfQotCi12b2lkIGdlbjExX3Jlc2V0X3Jwc19pbnRl cnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlzcGluX2xvY2tf aXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwotCi0Jd2hpbGUgKGdlbjExX3Jlc2V0X29uZV9paXIo ZGV2X3ByaXYsIDAsIEdFTjExX0dUUE0pKQotCQk7Ci0KLQlkZXZfcHJpdi0+Z3RfcG0ucnBzLnBt X2lpciA9IDA7Ci0KLQlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Ci19Ci0K LXZvaWQgZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCi17Ci0Jc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKLQlnZW42 X3Jlc2V0X3BtX2lpcihkZXZfcHJpdiwgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwotCWRldl9w cml2LT5ndF9wbS5ycHMucG1faWlyID0gMDsKLQlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5p cnFfbG9jayk7Ci19Ci0KLXZvaWQgZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotewotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZk ZXZfcHJpdi0+Z3RfcG0ucnBzOwotCi0JaWYgKFJFQURfT05DRShycHMtPmludGVycnVwdHNfZW5h YmxlZCkpCi0JCXJldHVybjsKLQotCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7 Ci0JV0FSTl9PTl9PTkNFKHJwcy0+cG1faWlyKTsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDExKQotCQlXQVJOX09OX09OQ0UoZ2VuMTFfcmVzZXRfb25lX2lpcihkZXZfcHJpdiwgMCwg R0VOMTFfR1RQTSkpOwotCWVsc2UKLQkJV0FSTl9PTl9PTkNFKEk5MTVfUkVBRChnZW42X3BtX2lp cihkZXZfcHJpdikpICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwotCi0JcnBzLT5pbnRlcnJ1 cHRzX2VuYWJsZWQgPSB0cnVlOwotCWdlbjZfZW5hYmxlX3BtX2lycShkZXZfcHJpdiwgZGV2X3By aXYtPnBtX3Jwc19ldmVudHMpOwotCi0Jc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xv Y2spOwotfQotCi12b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9w cml2LT5ndF9wbS5ycHM7Ci0KLQlpZiAoIVJFQURfT05DRShycHMtPmludGVycnVwdHNfZW5hYmxl ZCkpCi0JCXJldHVybjsKLQotCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Ci0J cnBzLT5pbnRlcnJ1cHRzX2VuYWJsZWQgPSBmYWxzZTsKLQotCUk5MTVfV1JJVEUoR0VONl9QTUlO VFJNU0ssIGdlbjZfc2FuaXRpemVfcnBzX3BtX21hc2soZGV2X3ByaXYsIH4wdSkpOwotCi0JZ2Vu Nl9kaXNhYmxlX3BtX2lycShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwotCi0J c3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwotCXN5bmNocm9uaXplX2lycShk ZXZfcHJpdi0+ZHJtLmlycSk7Ci0KLQkvKiBOb3cgdGhhdCB3ZSB3aWxsIG5vdCBiZSBnZW5lcmF0 aW5nIGFueSBtb3JlIHdvcmssIGZsdXNoIGFueQotCSAqIG91dHN0YW5kaW5nIHRhc2tzLiBBcyB3 ZSBhcmUgY2FsbGVkIG9uIHRoZSBSUFMgaWRsZSBwYXRoLAotCSAqIHdlIHdpbGwgcmVzZXQgdGhl IEdQVSB0byBtaW5pbXVtIGZyZXF1ZW5jaWVzLCBzbyB0aGUgY3VycmVudAotCSAqIHN0YXRlIG9m IHRoZSB3b3JrZXIgY2FuIGJlIGRpc2NhcmRlZC4KLQkgKi8KLQljYW5jZWxfd29ya19zeW5jKCZy cHMtPndvcmspOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQotCQlnZW4xMV9yZXNl dF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7Ci0JZWxzZQotCQlnZW42X3Jlc2V0X3Jwc19pbnRl cnJ1cHRzKGRldl9wcml2KTsKLX0KLQotdm9pZCBnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlhc3NlcnRfcnBtX3dha2Vsb2Nr X2hlbGQoZGV2X3ByaXYpOwotCi0Jc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsK LQlnZW42X3Jlc2V0X3BtX2lpcihkZXZfcHJpdiwgZGV2X3ByaXYtPnBtX2d1Y19ldmVudHMpOwot CXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKLX0KLQotdm9pZCBnZW45X2Vu YWJsZV9ndWNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17 Ci0JYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKLQotCXNwaW5fbG9ja19pcnEo JmRldl9wcml2LT5pcnFfbG9jayk7Ci0JaWYgKCFkZXZfcHJpdi0+Z3VjLmludGVycnVwdHNfZW5h YmxlZCkgewotCQlXQVJOX09OX09OQ0UoSTkxNV9SRUFEKGdlbjZfcG1faWlyKGRldl9wcml2KSkg JgotCQkJCSAgICAgICBkZXZfcHJpdi0+cG1fZ3VjX2V2ZW50cyk7Ci0JCWRldl9wcml2LT5ndWMu aW50ZXJydXB0c19lbmFibGVkID0gdHJ1ZTsKLQkJZ2VuNl9lbmFibGVfcG1faXJxKGRldl9wcml2 LCBkZXZfcHJpdi0+cG1fZ3VjX2V2ZW50cyk7Ci0JfQotCXNwaW5fdW5sb2NrX2lycSgmZGV2X3By aXYtPmlycV9sb2NrKTsKLX0KLQotdm9pZCBnZW45X2Rpc2FibGVfZ3VjX2ludGVycnVwdHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotewotCWFzc2VydF9ycG1fd2FrZWxvY2tf aGVsZChkZXZfcHJpdik7Ci0KLQlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwot CWRldl9wcml2LT5ndWMuaW50ZXJydXB0c19lbmFibGVkID0gZmFsc2U7Ci0KLQlnZW42X2Rpc2Fi bGVfcG1faXJxKGRldl9wcml2LCBkZXZfcHJpdi0+cG1fZ3VjX2V2ZW50cyk7Ci0KLQlzcGluX3Vu bG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Ci0Jc3luY2hyb25pemVfaXJxKGRldl9wcml2 LT5kcm0uaXJxKTsKLQotCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwotfQot CiAvKioKICAqIGJkd191cGRhdGVfcG9ydF9pcnEgLSB1cGRhdGUgREUgcG9ydCBpbnRlcnJ1cHQK ICAqIEBkZXZfcHJpdjogZHJpdmVyIHByaXZhdGUKQEAgLTEzODUsMTIgKzExNzAsMTMgQEAgc3Rh dGljIHZvaWQgZ2VuOF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdTMyIG1hc3Rlcl9jdGwpCiAKIAlpZiAobWFzdGVyX2N0bCAmIChHRU44X0dUX1BNX0lSUSB8 IEdFTjhfR1RfR1VDX0lSUSkpIHsKIAkJaWlyID0gcmF3X3JlZ19yZWFkKHJlZ3MsIEdFTjhfR1Rf SUlSKDIpKTsKLQkJaWYgKGxpa2VseShpaXIgJiAoaTkxNS0+cG1fcnBzX2V2ZW50cyB8IGk5MTUt PnBtX2d1Y19ldmVudHMpKSkgeworCQlpZiAobGlrZWx5KGlpciAmIChpOTE1LT5ndF9wbS5ycHMu cG1fZXZlbnRzIHwKKwkJCQkgIGk5MTUtPmd0X3BtLnJwcy5ndWNfZXZlbnRzKSkpIHsKIAkJCXJh d19yZWdfd3JpdGUocmVncywgR0VOOF9HVF9JSVIoMiksCi0JCQkJICAgICAgaWlyICYgKGk5MTUt PnBtX3Jwc19ldmVudHMgfAotCQkJCQkgICAgIGk5MTUtPnBtX2d1Y19ldmVudHMpKTsKKwkJCQkg ICAgICBpaXIgJiAoaTkxNS0+Z3RfcG0ucnBzLnBtX2V2ZW50cyB8CisJCQkJCSAgICAgaTkxNS0+ Z3RfcG0ucnBzLmd1Y19ldmVudHMpKTsKIAotCQkJZ2VuNl9ycHNfaXJxX2hhbmRsZXIoaTkxNSwg aWlyKTsKKwkJCWludGVsX2d0X3BtX2lycV9oYW5kbGVyKGk5MTUsIGlpcik7CiAJCQlnZW45X2d1 Y19pcnFfaGFuZGxlcihpOTE1LCBpaXIpOwogCQl9CiAJfQpAQCAtMTY0MiwzNSArMTQyOCw2IEBA IHN0YXRpYyB2b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQkJCSAgICAgcmVzMSwgcmVzMik7CiB9CiAKLS8qIFRoZSBSUFMg ZXZlbnRzIG5lZWQgZm9yY2V3YWtlLCBzbyB3ZSBhZGQgdGhlbSB0byBhIHdvcmsgcXVldWUgYW5k IG1hc2sgdGhlaXIKLSAqIElNUiBiaXRzIHVudGlsIHRoZSB3b3JrIGlzIGRvbmUuIE90aGVyIGlu dGVycnVwdHMgY2FuIGJlIHByb2Nlc3NlZCB3aXRob3V0Ci0gKiB0aGUgd29yayBxdWV1ZS4gKi8K LXN0YXRpYyB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHBtX2lpcikKLXsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2 X3ByaXYtPmd0X3BtLnJwczsKLQotCWlmIChwbV9paXIgJiBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50 cykgewotCQlzcGluX2xvY2soJmRldl9wcml2LT5pcnFfbG9jayk7Ci0JCWdlbjZfbWFza19wbV9p cnEoZGV2X3ByaXYsIHBtX2lpciAmIGRldl9wcml2LT5wbV9ycHNfZXZlbnRzKTsKLQkJaWYgKHJw cy0+aW50ZXJydXB0c19lbmFibGVkKSB7Ci0JCQlycHMtPnBtX2lpciB8PSBwbV9paXIgJiBkZXZf cHJpdi0+cG1fcnBzX2V2ZW50czsKLQkJCXNjaGVkdWxlX3dvcmsoJnJwcy0+d29yayk7Ci0JCX0K LQkJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9jayk7Ci0JfQotCi0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOCkKLQkJcmV0dXJuOwotCi0JaWYgKEhBU19WRUJPWChkZXZfcHJpdikp IHsKLQkJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUKQotCQkJbm90aWZ5X3Jp bmcoZGV2X3ByaXYtPmVuZ2luZVtWRUNTXSk7Ci0KLQkJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX0NT X0VSUk9SX0lOVEVSUlVQVCkKLQkJCURSTV9ERUJVRygiQ29tbWFuZCBwYXJzZXIgZXJyb3IsIHBt X2lpciAweCUwOHhcbiIsIHBtX2lpcik7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBnZW45X2d1Y19p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBndF9paXIp CiB7CiAJaWYgKGd0X2lpciAmIEdFTjlfR1VDX1RPX0hPU1RfSU5UX0VWRU5UKQpAQCAtMTg3OCw2 ICsxNjM1LDE5IEBAIHN0YXRpYyB2b2lkIGk5eHhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIGdlbjZfcG1fZXh0 cmFfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAg ICAgIHUzMiBwbV9paXIpCit7CisJaWYgKEhBU19WRUJPWChkZXZfcHJpdikpIHsKKwkJaWYgKHBt X2lpciAmIFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUKQorCQkJbm90aWZ5X3JpbmcoZGV2X3ByaXYt PmVuZ2luZVtWRUNTXSk7CisKKwkJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX0NTX0VSUk9SX0lOVEVS UlVQVCkKKwkJCURSTV9ERUJVRygiQ29tbWFuZCBwYXJzZXIgZXJyb3IsIHBtX2lpciAweCUwOHhc biIsCisJCQkJICBwbV9paXIpOworCX0KK30KKwogc3RhdGljIGlycXJldHVybl90IHZhbGxleXZp ZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBhcmc7CkBAIC0xOTUyLDcgKzE3MjIsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdmFs bGV5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCWlmIChndF9paXIpCiAJ CQlzbmJfZ3RfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGd0X2lpcik7CiAJCWlmIChwbV9paXIpCi0J CQlnZW42X3Jwc19pcnFfaGFuZGxlcihkZXZfcHJpdiwgcG1faWlyKTsKKwkJCWludGVsX2d0X3Bt X2lycV9oYW5kbGVyKGRldl9wcml2LCBwbV9paXIpOwogCiAJCWlmIChob3RwbHVnX3N0YXR1cykK IAkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBob3RwbHVnX3N0YXR1cyk7CkBAIC0y NDAxLDcgKzIxNzEsOCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIo aW50IGlycSwgdm9pZCAqYXJnKQogCQlpZiAocG1faWlyKSB7CiAJCQlJOTE1X1dSSVRFKEdFTjZf UE1JSVIsIHBtX2lpcik7CiAJCQlyZXQgPSBJUlFfSEFORExFRDsKLQkJCWdlbjZfcnBzX2lycV9o YW5kbGVyKGRldl9wcml2LCBwbV9paXIpOworCQkJaW50ZWxfZ3RfcG1faXJxX2hhbmRsZXIoZGV2 X3ByaXYsIHBtX2lpcik7CisJCQlnZW42X3BtX2V4dHJhX2lycV9oYW5kbGVyKGRldl9wcml2LCBw bV9paXIpOwogCQl9CiAJfQogCkBAIC0yNjk0LDcgKzI0NjUsNyBAQCBnZW4xMV9vdGhlcl9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqIGNvbnN0IGk5MTUsCiAJCQljb25zdCB1 OCBpbnN0YW5jZSwgY29uc3QgdTE2IGlpcikKIHsKIAlpZiAoaW5zdGFuY2UgPT0gT1RIRVJfR1RQ TV9JTlNUQU5DRSkKLQkJcmV0dXJuIGdlbjZfcnBzX2lycV9oYW5kbGVyKGk5MTUsIGlpcik7CisJ CXJldHVybiBpbnRlbF9ndF9wbV9pcnFfaGFuZGxlcihpOTE1LCBpaXIpOwogCiAJV0FSTl9PTkNF KDEsICJ1bmhhbmRsZWQgb3RoZXIgaW50ZXJydXB0IGluc3RhbmNlPTB4JXgsIGlpcj0weCV4XG4i LAogCQkgIGluc3RhbmNlLCBpaXIpOwpAQCAtMzYwNCwxMSArMzM3NSwxMSBAQCBzdGF0aWMgdm9p ZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkgKi8K IAkJaWYgKEhBU19WRUJPWChkZXZfcHJpdikpIHsKIAkJCXBtX2lycXMgfD0gUE1fVkVCT1hfVVNF Ul9JTlRFUlJVUFQ7Ci0JCQlkZXZfcHJpdi0+cG1faWVyIHw9IFBNX1ZFQk9YX1VTRVJfSU5URVJS VVBUOworCQkJZGV2X3ByaXYtPmd0X3BtLmllciB8PSBQTV9WRUJPWF9VU0VSX0lOVEVSUlVQVDsK IAkJfQogCi0JCWRldl9wcml2LT5wbV9pbXIgPSAweGZmZmZmZmZmOwotCQlHRU4zX0lSUV9JTklU KEdFTjZfUE0sIGRldl9wcml2LT5wbV9pbXIsIHBtX2lycXMpOworCQlkZXZfcHJpdi0+Z3RfcG0u aW1yID0gMHhmZmZmZmZmZjsKKwkJR0VOM19JUlFfSU5JVChHRU42X1BNLCBkZXZfcHJpdi0+Z3Rf cG0uaW1yLCBwbV9pcnFzKTsKIAl9CiB9CiAKQEAgLTM3MzAsMTUgKzM1MDEsMTUgQEAgc3RhdGlj IHZvaWQgZ2VuOF9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSkKIAkJZ3RfaW50ZXJydXB0c1swXSB8 PSBHVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lOVEVSUlVQVDsKIAotCWRldl9wcml2LT5wbV9p ZXIgPSAweDA7Ci0JZGV2X3ByaXYtPnBtX2ltciA9IH5kZXZfcHJpdi0+cG1faWVyOworCWRldl9w cml2LT5ndF9wbS5pZXIgPSAweDA7CisJZGV2X3ByaXYtPmd0X3BtLmltciA9IH5kZXZfcHJpdi0+ Z3RfcG0uaWVyOwogCUdFTjhfSVJRX0lOSVRfTkRYKEdULCAwLCB+Z3RfaW50ZXJydXB0c1swXSwg Z3RfaW50ZXJydXB0c1swXSk7CiAJR0VOOF9JUlFfSU5JVF9ORFgoR1QsIDEsIH5ndF9pbnRlcnJ1 cHRzWzFdLCBndF9pbnRlcnJ1cHRzWzFdKTsKIAkvKgogCSAqIFJQUyBpbnRlcnJ1cHRzIHdpbGwg Z2V0IGVuYWJsZWQvZGlzYWJsZWQgb24gZGVtYW5kIHdoZW4gUlBTIGl0c2VsZgogCSAqIGlzIGVu YWJsZWQvZGlzYWJsZWQuIFNhbWUgd2lsIGJlIHRoZSBjYXNlIGZvciBHdUMgaW50ZXJydXB0cy4K IAkgKi8KLQlHRU44X0lSUV9JTklUX05EWChHVCwgMiwgZGV2X3ByaXYtPnBtX2ltciwgZGV2X3By aXYtPnBtX2llcik7CisJR0VOOF9JUlFfSU5JVF9ORFgoR1QsIDIsIGRldl9wcml2LT5ndF9wbS5p bXIsIGRldl9wcml2LT5ndF9wbS5pZXIpOwogCUdFTjhfSVJRX0lOSVRfTkRYKEdULCAzLCB+Z3Rf aW50ZXJydXB0c1szXSwgZ3RfaW50ZXJydXB0c1szXSk7CiB9CiAKQEAgLTM4MzUsOCArMzYwNiw4 IEBAIHN0YXRpYyB2b2lkIGdlbjExX2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogUlBTIGludGVycnVwdHMgd2lsbCBnZXQgZW5hYmxlZC9k aXNhYmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMgaXRzZWxmCiAJICogaXMgZW5hYmxlZC9kaXNhYmxl ZC4KIAkgKi8KLQlkZXZfcHJpdi0+cG1faWVyID0gMHgwOwotCWRldl9wcml2LT5wbV9pbXIgPSB+ ZGV2X3ByaXYtPnBtX2llcjsKKwlkZXZfcHJpdi0+Z3RfcG0uaWVyID0gMHgwOworCWRldl9wcml2 LT5ndF9wbS5pbXIgPSB+ZGV2X3ByaXYtPmd0X3BtLmllcjsKIAlJOTE1X1dSSVRFKEdFTjExX0dQ TV9XR0JPWFBFUkZfSU5UUl9FTkFCTEUsIDApOwogCUk5MTVfV1JJVEUoR0VOMTFfR1BNX1dHQk9Y UEVSRl9JTlRSX01BU0ssICB+MCk7CiB9CkBAIC00MjE5LDcgKzM5OTAsNiBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgaTk2NV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiB2b2lkIGludGVs X2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Ci0Jc3RydWN0IGludGVsX3JwcyAqcnBz ID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CiAJaW50IGk7CiAKIAlpbnRlbF9ocGRfaW5pdF93b3Jr KGRldl9wcml2KTsKQEAgLTQyMjgsMzAgKzM5OTgsNiBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX0wz X1NMSUNFUzsgKytpKQogCQlkZXZfcHJpdi0+bDNfcGFyaXR5LnJlbWFwX2luZm9baV0gPSBOVUxM OwogCi0JaWYgKEhBU19HVUNfU0NIRUQoZGV2X3ByaXYpKQotCQlkZXZfcHJpdi0+cG1fZ3VjX2V2 ZW50cyA9IEdFTjlfR1VDX1RPX0hPU1RfSU5UX0VWRU5UOwotCi0JLyogTGV0J3MgdHJhY2sgdGhl IGVuYWJsZWQgcnBzIGV2ZW50cyAqLwotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKLQkJ LyogV2FHc3ZSQzBSZXNpZGVuY3lNZXRob2Q6dmx2ICovCi0JCWRldl9wcml2LT5wbV9ycHNfZXZl bnRzID0gR0VONl9QTV9SUF9VUF9FSV9FWFBJUkVEOwotCWVsc2UKLQkJZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMgPSBHRU42X1BNX1JQU19FVkVOVFM7Ci0KLQlycHMtPnBtX2ludHJtc2tfbWJ6ID0g MDsKLQotCS8qCi0JICogU05CLElWQixIU1cgY2FuIHdoaWxlIFZMVixDSFYgbWF5IGhhcmQgaGFu ZyBvbiBsb29waW5nIGJhdGNoYnVmZmVyCi0JICogaWYgR0VONl9QTV9VUF9FSV9FWFBJUkVEIGlz IG1hc2tlZC4KLQkgKgotCSAqIFRPRE86IHZlcmlmeSBpZiB0aGlzIGNhbiBiZSByZXByb2R1Y2Vk IG9uIFZMVixDSFYuCi0JICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNykKLQkJcnBz LT5wbV9pbnRybXNrX21ieiB8PSBHRU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7Ci0KLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KQotCQlycHMtPnBtX2ludHJtc2tfbWJ6IHw9IEdFTjhfUE1J TlRSX0RJU0FCTEVfUkVESVJFQ1RfVE9fR1VDOwotCiAJaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7 CiAJCS8qIEdlbjIgZG9lc24ndCBoYXZlIGEgaGFyZHdhcmUgZnJhbWUgY291bnRlciAqLwogCQlk ZXYtPm1heF92YmxhbmtfY291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA3 Y2ZiNzFhZGUwOTYuLjZiZjhkZDUyMDcwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAg LTEzNDMsMTIgKzEzNDMsMTAgQEAgYm9vbCBnZW4xMV9yZXNldF9vbmVfaWlyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICogY29uc3QgaTkxNSwKIAkJCSBjb25zdCB1bnNpZ25lZCBpbnQgYml0KTsK IHZvaWQgZ2VuNV9lbmFibGVfZ3RfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdWludDMyX3QgbWFzayk7CiB2b2lkIGdlbjVfZGlzYWJsZV9ndF9pcnEoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBtYXNrKTsKLXZvaWQgZ2VuNl9tYXNrX3Bt X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXNrKTsKLXZvaWQg Z2VuNl91bm1hc2tfcG1faXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IG1hc2spOwotdm9pZCBnZW4xMV9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwotdm9pZCBnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci12b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRl cnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci12b2lkIGdlbjZfZGlz YWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwor Citib29sIGdlbjExX3Jlc2V0X29uZV9paXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKiBjb25z dCBpOTE1LAorCQkJIGNvbnN0IHVuc2lnbmVkIGludCBiYW5rLAorCQkJIGNvbnN0IHVuc2lnbmVk IGludCBiaXQpOwogCiBzdGF0aWMgaW5saW5lIHUzMiBnZW42X3Nhbml0aXplX3Jwc19wbV9tYXNr KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCQkgICAgdTMyIG1hc2sp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3RfcG0uYwppbmRleCBjNTFiNDBjNzkxZjguLjc5Y2I0ZGJh ZmJlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3RfcG0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9wbS5jCkBAIC0zMTUsNyArMzE1LDcgQEAg c3RhdGljIHUzMiBnZW42X3Jwc19wbV9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1OCB2YWwpCiAJCW1hc2sgfD0gKEdFTjZfUE1fUlBfVVBfRUlfRVhQSVJFRCB8CiAJCQkgR0VO Nl9QTV9SUF9VUF9USFJFU0hPTEQpOwogCi0JbWFzayAmPSBpOTE1LT5wbV9ycHNfZXZlbnRzOwor CW1hc2sgJj0gcnBzLT5wbV9ldmVudHM7CiAKIAlyZXR1cm4gZ2VuNl9zYW5pdGl6ZV9ycHNfcG1f bWFzayhpOTE1LCB+bWFzayk7CiB9CkBAIC00NDMsNiArNDQzLDE0NSBAQCBzdGF0aWMgaW50IGlu dGVsX3NldF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IHZhbCkKIAlyZXR1 cm4gZXJyOwogfQogCitzdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2lpcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0g OCA/IEdFTjhfR1RfSUlSKDIpIDogR0VONl9QTUlJUjsKK30KKworc3RhdGljIGk5MTVfcmVnX3Qg Z2VuNl9wbV9pZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXJldHVy biBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggPyBHRU44X0dUX0lFUigyKSA6IEdFTjZfUE1JRVI7 Cit9CisKK3N0YXRpYyBpOTE1X3JlZ190IGdlbjZfcG1faW1yKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwlyZXR1cm4gSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ID8gR0VO OF9HVF9JTVIoMikgOiBHRU42X1BNSU1SOworfQorCitzdGF0aWMgdm9pZCBnZW42X3VwZGF0ZV9w bV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgIHUzMiBp bnRlcnJ1cHRfbWFzaywKKwkJCSAgICAgICB1MzIgZW5hYmxlZF9pcnFfbWFzaykKK3sKKwl1MzIg bmV3X3ZhbDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5pcnFfbG9jayk7CisJ R0VNX0JVR19PTihlbmFibGVkX2lycV9tYXNrICYgfmludGVycnVwdF9tYXNrKTsKKworCW5ld192 YWwgPSBkZXZfcHJpdi0+Z3RfcG0uaW1yOworCW5ld192YWwgJj0gfmludGVycnVwdF9tYXNrOwor CW5ld192YWwgfD0gfmVuYWJsZWRfaXJxX21hc2sgJiBpbnRlcnJ1cHRfbWFzazsKKworCWlmIChu ZXdfdmFsICE9IGRldl9wcml2LT5ndF9wbS5pbXIpIHsKKwkJZGV2X3ByaXYtPmd0X3BtLmltciA9 IG5ld192YWw7CisJCUk5MTVfV1JJVEUoZ2VuNl9wbV9pbXIoZGV2X3ByaXYpLCBkZXZfcHJpdi0+ Z3RfcG0uaW1yKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGdlbjZfcmVzZXRfcG1faWlyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgIHUzMiByZXNldF9tYXNrKQor eworCWk5MTVfcmVnX3QgcmVnID0gZ2VuNl9wbV9paXIoZGV2X3ByaXYpOworCisJbG9ja2RlcF9h c3NlcnRfaGVsZCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKKworCUk5MTVfV1JJVEUocmVnLCByZXNl dF9tYXNrKTsKKwlJOTE1X1dSSVRFKHJlZywgcmVzZXRfbWFzayk7CisJUE9TVElOR19SRUFEKHJl Zyk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3BtX2lycShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgICAgdTMyIGVuYWJsZV9tYXNrKQoreworCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5pcnFfbG9jayk7CisKKwlkZXZfcHJpdi0+Z3RfcG0u aWVyIHw9IGVuYWJsZV9tYXNrOworCUk5MTVfV1JJVEUoZ2VuNl9wbV9pZXIoZGV2X3ByaXYpLCBk ZXZfcHJpdi0+Z3RfcG0uaWVyKTsKKwlnZW42X3VubWFza19wbV9pcnEoZGV2X3ByaXYsIGVuYWJs ZV9tYXNrKTsKKwkvKiB1bm1hc2tfcG1faXJxIHByb3ZpZGVzIGFuIGltcGxpY2l0IGJhcnJpZXIg KFBPU1RJTkdfUkVBRCkgKi8KK30KKworc3RhdGljIHZvaWQgZ2VuNl9kaXNhYmxlX3BtX2lycShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJdTMyIGRpc2FibGVfbWFzaykK K3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+aXJxX2xvY2spOworCisJZGV2X3By aXYtPmd0X3BtLmllciAmPSB+ZGlzYWJsZV9tYXNrOworCWdlbjZfdXBkYXRlX3BtX2lycShkZXZf cHJpdiwgZGlzYWJsZV9tYXNrLCAwKTsKKwlJOTE1X1dSSVRFKGdlbjZfcG1faWVyKGRldl9wcml2 KSwgZGV2X3ByaXYtPmd0X3BtLmllcik7CisJLyogdGhvdWdoIGEgYmFycmllciBpcyBtaXNzaW5n IGhlcmUsIGJ1dCBkb24ndCByZWFsbHkgbmVlZCBhIG9uZSAqLworfQorCitzdGF0aWMgdm9pZCBn ZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3sKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsKKwor CXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CisJZ2VuNl9yZXNldF9wbV9paXIo ZGV2X3ByaXYsIHJwcy0+cG1fZXZlbnRzKTsKKwlycHMtPnBtX2lpciA9IDA7CisJc3Bpbl91bmxv Y2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOworfQorCitzdGF0aWMgdm9pZCBnZW4xMV9yZXNl dF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJ c3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CisKKwlzcGluX2xv Y2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOworCisJd2hpbGUgKGdlbjExX3Jlc2V0X29uZV9p aXIoZGV2X3ByaXYsIDAsIEdFTjExX0dUUE0pKQorCQljcHVfcmVsYXgoKTsKKwlycHMtPnBtX2lp ciA9IDA7CisKKwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cit9CisKK3N0 YXRpYyB2b2lkIGVuYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5y cHM7CisKKwlpZiAoUkVBRF9PTkNFKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSkKKwkJcmV0dXJu OworCisJaWYgKFdBUk5fT05fT05DRShJU19HRU4xMShkZXZfcHJpdikpKQorCQlyZXR1cm47CisK KwlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOworCVdBUk5fT05fT05DRShycHMt PnBtX2lpcik7CisJV0FSTl9PTl9PTkNFKEk5MTVfUkVBRChnZW42X3BtX2lpcihkZXZfcHJpdikp ICYgcnBzLT5wbV9ldmVudHMpOworCXJwcy0+aW50ZXJydXB0c19lbmFibGVkID0gdHJ1ZTsKKwln ZW42X2VuYWJsZV9wbV9pcnEoZGV2X3ByaXYsIHJwcy0+cG1fZXZlbnRzKTsKKworCXNwaW5fdW5s b2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKK30KKworc3RhdGljIHZvaWQgZGlzYWJsZV9y cHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3Ry dWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CisKKwlpZiAoIVJFQURf T05DRShycHMtPmludGVycnVwdHNfZW5hYmxlZCkpCisJCXJldHVybjsKKworCWlmIChXQVJOX09O X09OQ0UoSVNfR0VOMTEoZGV2X3ByaXYpKSkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycSgm ZGV2X3ByaXYtPmlycV9sb2NrKTsKKwlycHMtPmludGVycnVwdHNfZW5hYmxlZCA9IGZhbHNlOwor CisJSTkxNV9XUklURShHRU42X1BNSU5UUk1TSywgZ2VuNl9zYW5pdGl6ZV9ycHNfcG1fbWFzayhk ZXZfcHJpdiwgfjB1KSk7CisKKwlnZW42X2Rpc2FibGVfcG1faXJxKGRldl9wcml2LCBycHMtPnBt X2V2ZW50cyk7CisKKwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CisJc3lu Y2hyb25pemVfaXJxKGRldl9wcml2LT5kcm0uaXJxKTsKKworCS8qIE5vdyB0aGF0IHdlIHdpbGwg bm90IGJlIGdlbmVyYXRpbmcgYW55IG1vcmUgd29yaywgZmx1c2ggYW55CisJICogb3V0c3RhbmRp bmcgdGFza3MuIEFzIHdlIGFyZSBjYWxsZWQgb24gdGhlIFJQUyBpZGxlIHBhdGgsCisJICogd2Ug d2lsbCByZXNldCB0aGUgR1BVIHRvIG1pbmltdW0gZnJlcXVlbmNpZXMsIHNvIHRoZSBjdXJyZW50 CisJICogc3RhdGUgb2YgdGhlIHdvcmtlciBjYW4gYmUgZGlzY2FyZGVkLgorCSAqLworCWNhbmNl bF93b3JrX3N5bmMoJnJwcy0+d29yayk7CisJZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZf cHJpdik7Cit9CisKIHN0YXRpYyB2b2lkIHZsdl9jMF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCXN0cnVjdCBpbnRlbF9ycHNfZWkgKmVpKQogewpAQCAtNTAwLDcg KzYzOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKIAlib29sIGNsaWVudF9ib29zdDsKIAl1MzIgcG1faWlyOwogCi0JcG1faWlyID0geGNo ZygmcnBzLT5wbV9paXIsIDApICYgfmk5MTUtPnBtX3Jwc19ldmVudHM7CisJcG1faWlyID0geGNo ZygmcnBzLT5wbV9paXIsIDApICYgfnJwcy0+cG1fZXZlbnRzOwogCXBtX2lpciB8PSB2bHZfd2Ff YzBfZWkoaTkxNSwgcG1faWlyKTsKIAogCWNsaWVudF9ib29zdCA9IGF0b21pY19yZWFkKCZycHMt Pm51bV93YWl0ZXJzKTsKQEAgLTU2MCwxMiArNjk5LDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jw c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAocG1faWlyKSB7CiAJCXNwaW5f bG9ja19pcnEoJmk5MTUtPmlycV9sb2NrKTsKIAkJaWYgKHJwcy0+aW50ZXJydXB0c19lbmFibGVk KQotCQkJZ2VuNl91bm1hc2tfcG1faXJxKGk5MTUsIGk5MTUtPnBtX3Jwc19ldmVudHMpOworCQkJ Z2VuNl91bm1hc2tfcG1faXJxKGk5MTUsIHJwcy0+cG1fZXZlbnRzKTsKIAkJc3Bpbl91bmxvY2tf aXJxKCZpOTE1LT5pcnFfbG9jayk7CiAJCXJwcy0+bGFzdF9hZGogPSBhZGo7CiAJfQogfQogCit2 b2lkIGludGVsX2d0X3BtX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIHBtX2lpcikKK3sKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYt Pmd0X3BtLnJwczsKKworCWlmIChwbV9paXIgJiBycHMtPnBtX2V2ZW50cykgeworCQlzcGluX2xv Y2soJmRldl9wcml2LT5pcnFfbG9jayk7CisJCWdlbjZfbWFza19wbV9pcnEoZGV2X3ByaXYsIHBt X2lpciAmIHJwcy0+cG1fZXZlbnRzKTsKKwkJaWYgKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSB7 CisJCQlycHMtPnBtX2lpciB8PSBwbV9paXIgJiBycHMtPnBtX2V2ZW50czsKKwkJCXNjaGVkdWxl X3dvcmsoJnJwcy0+d29yayk7CisJCX0KKwkJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9j ayk7CisJfQorfQorCiB2b2lkIGdlbjZfcnBzX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3RfcG0u cnBzOwpAQCAtNTc3LDcgKzczMSw3IEBAIHZvaWQgZ2VuNl9ycHNfYnVzeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCUk5MTVfV1JJVEUoR0VONl9QTUlOVFJNU0ssCiAJCQkg ICBnZW42X3Jwc19wbV9tYXNrKGRldl9wcml2LCBycHMtPmN1cl9mcmVxKSk7CiAKLQkJZ2VuNl9l bmFibGVfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOworCQllbmFibGVfcnBzX2ludGVycnVwdHMo ZGV2X3ByaXYpOwogCQltZW1zZXQoJnJwcy0+ZWksIDAsIHNpemVvZihycHMtPmVpKSk7CiAKIAkJ LyoKQEAgLTYwNSw3ICs3NTksNyBAQCB2b2lkIGdlbjZfcnBzX2lkbGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIG91ciBycG0gd2FrZXJlZi4gQW5kIHRoZW4gZGlzYWJs ZSB0aGUgaW50ZXJydXB0cyB0byBzdG9wIGFueQogCSAqIGZ1dGhlciBSUFMgcmVjbG9ja2luZyB3 aGlsc3Qgd2UgYXJlIGFzbGVlcC4KIAkgKi8KLQlnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMo ZGV2X3ByaXYpOworCWRpc2FibGVfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOwogCiAJbXV0ZXhf bG9jaygmcnBzLT5sb2NrKTsKIAlpZiAocnBzLT5lbmFibGVkKSB7CkBAIC0yMjQyLDYgKzIzOTYs MzAgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAltdXRleF9pbml0KCZycHMtPmxvY2spOwogCUlOSVRfV09SSygmcnBzLT53b3Jr LCBpbnRlbF9ycHNfd29yayk7CiAKKwlpZiAoSEFTX0dVQ19TQ0hFRChpOTE1KSkKKwkJcnBzLT5n dWNfZXZlbnRzID0gR0VOOV9HVUNfVE9fSE9TVF9JTlRfRVZFTlQ7CisKKwkvKiBMZXQncyB0cmFj ayB0aGUgZW5hYmxlZCBycHMgZXZlbnRzICovCisJaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkpCisJ CS8qIFdhR3N2UkMwUmVzaWRlbmN5TWV0aG9kOnZsdiAqLworCQlycHMtPnBtX2V2ZW50cyA9IEdF TjZfUE1fUlBfVVBfRUlfRVhQSVJFRDsKKwllbHNlCisJCXJwcy0+cG1fZXZlbnRzID0gR0VONl9Q TV9SUFNfRVZFTlRTOworCisJcnBzLT5wbV9pbnRybXNrX21ieiA9IDA7CisKKwkvKgorCSAqIFNO QixJVkIsSFNXIGNhbiB3aGlsZSBWTFYsQ0hWIG1heSBoYXJkIGhhbmcgb24gbG9vcGluZyBiYXRj aGJ1ZmZlcgorCSAqIGlmIEdFTjZfUE1fVVBfRUlfRVhQSVJFRCBpcyBtYXNrZWQuCisJICoKKwkg KiBUT0RPOiB2ZXJpZnkgaWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBWTFYsQ0hWLgorCSAq LworCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykKKwkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBH RU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJ CXJwcy0+cG1faW50cm1za19tYnogfD0gR0VOOF9QTUlOVFJfRElTQUJMRV9SRURJUkVDVF9UT19H VUM7CisKIAkvKgogCSAqIFJQTSBkZXBlbmRzIG9uIFJDNiB0byBzYXZlIHJlc3RvcmUgdGhlIEdU IEhXIGNvbnRleHQsIHNvIG1ha2UgUkM2IGEKIAkgKiByZXF1aXJlbWVudC4KQEAgLTI1MzksMyAr MjcxNyw1MSBAQCBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIGludCB2YWwpCiAJZWxzZQogCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1Qo dmFsLCBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUik7CiB9CisKK3ZvaWQgZ2VuNl91bm1hc2tfcG1f aXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWFzaykKK3sKKwlnZW42X3Vw ZGF0ZV9wbV9pcnEoaTkxNSwgbWFzaywgbWFzayk7Cit9CisKK3ZvaWQgZ2VuNl9tYXNrX3BtX2ly cShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIG1hc2spCit7CisJZ2VuNl91cGRh dGVfcG1faXJxKGk5MTUsIG1hc2ssIDApOworfQorCit2b2lkIGdlbjlfcmVzZXRfZ3VjX2ludGVy cnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJYXNzZXJ0X3JwbV93YWtl bG9ja19oZWxkKGk5MTUpOworCisJc3Bpbl9sb2NrX2lycSgmaTkxNS0+aXJxX2xvY2spOworCWdl bjZfcmVzZXRfcG1faWlyKGk5MTUsIGk5MTUtPmd0X3BtLnJwcy5ndWNfZXZlbnRzKTsKKwlzcGlu X3VubG9ja19pcnEoJmk5MTUtPmlycV9sb2NrKTsKK30KKwordm9pZCBnZW45X2VuYWJsZV9ndWNf aW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJYXNzZXJ0 X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKKworCXNwaW5fbG9ja19pcnEoJmRldl9wcml2 LT5pcnFfbG9jayk7CisJaWYgKCFkZXZfcHJpdi0+Z3VjLmludGVycnVwdHNfZW5hYmxlZCkgewor CQlXQVJOX09OX09OQ0UoSTkxNV9SRUFEKGdlbjZfcG1faWlyKGRldl9wcml2KSkgJgorCQkJCSAg ICAgICBkZXZfcHJpdi0+Z3RfcG0ucnBzLmd1Y19ldmVudHMpOworCQlkZXZfcHJpdi0+Z3VjLmlu dGVycnVwdHNfZW5hYmxlZCA9IHRydWU7CisJCWdlbjZfZW5hYmxlX3BtX2lycShkZXZfcHJpdiwg ZGV2X3ByaXYtPmd0X3BtLnJwcy5ndWNfZXZlbnRzKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxKCZk ZXZfcHJpdi0+aXJxX2xvY2spOworfQorCit2b2lkIGdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJYXNzZXJ0X3JwbV93YWtl bG9ja19oZWxkKGRldl9wcml2KTsKKworCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9j ayk7CisJZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJsZWQgPSBmYWxzZTsKKworCWdlbjZf ZGlzYWJsZV9wbV9pcnEoZGV2X3ByaXYsIGRldl9wcml2LT5ndF9wbS5ycHMuZ3VjX2V2ZW50cyk7 CisKKwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CisJc3luY2hyb25pemVf aXJxKGRldl9wcml2LT5kcm0uaXJxKTsKKworCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2 X3ByaXYpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3RfcG0u aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d0X3BtLmgKaW5kZXggNWM1MmNhMjA4ZGYx Li43YTE0YTJlMTRiMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d0 X3BtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3RfcG0uaApAQCAtMzEsNiAr MzEsOSBAQCBzdHJ1Y3QgaW50ZWxfcnBzIHsKIAkvKiBQTSBpbnRlcnJ1cHQgYml0cyB0aGF0IHNo b3VsZCBuZXZlciBiZSBtYXNrZWQgKi8KIAl1MzIgcG1faW50cm1za19tYno7CiAKKwl1MzIgcG1f ZXZlbnRzOworCXUzMiBndWNfZXZlbnRzOworCiAJLyoKIAkgKiBGcmVxdWVuY2llcyBhcmUgc3Rv cmVkIGluIHBvdGVudGlhbGx5IHBsYXRmb3JtIGRlcGVuZGVudCBtdWx0aXBsZXMuCiAJICogSW4g b3RoZXIgd29yZHMsICpfZnJlcSBuZWVkcyB0byBiZSBtdWx0aXBsaWVkIGJ5IFggdG8gYmUgaW50 ZXJlc3RpbmcuCkBAIC04Miw2ICs4NSw5IEBAIHN0cnVjdCBpbnRlbF9ndF9wbSB7CiAJc3RydWN0 IGludGVsX3JwcyBycHM7CiAJc3RydWN0IGludGVsX3JjNiByYzY7CiAJc3RydWN0IGludGVsX2xs Y19wc3RhdGUgbGxjX3BzdGF0ZTsKKworCXUzMiBpbXI7CisJdTMyIGllcjsKIH07CiAKIHZvaWQg aW50ZWxfZ3B1X2lwc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKQEAgLTk0 LDYgKzEwMCw4IEBAIHZvaWQgaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIHZvaWQgaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNh dmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogCit2b2lkIGludGVsX2d0X3BtX2ly cV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgcG1faWlyKTsKKwog dm9pZCBnZW42X3Jwc19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIHZvaWQg Z2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiB2b2lkIGdlbjZf cnBzX2Jvb3N0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVu dCAqcnBzKTsKQEAgLTEwMSw0ICsxMDksNyBAQCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKTsKIGludCBpbnRl bF9ncHVfZnJlcShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHZhbCk7 CiBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGludCB2YWwpOwogCit2b2lkIGdlbjZfdW5tYXNrX3BtX2lycShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgdTMyIG1hc2spOwordm9pZCBnZW42X21hc2tfcG1faXJxKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgbWFzayk7CisKICNlbmRpZiAvKiBfX0lOVEVMX0dU X1BNX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDQ3 NTkxNzU4MDY5YS4uMTY2M2MxM2VjNjhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiaTkxNV9nZW1fcmVuZGVyX3N0 YXRlLmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgor I2luY2x1ZGUgImludGVsX2d0X3BtLmgiCiAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIK IAogLyogUm91Z2ggZXN0aW1hdGUgb2YgdGhlIHR5cGljYWwgcmVxdWVzdCBzaXplLCBwZXJmb3Jt aW5nIGEgZmx1c2gsCi0tIAoyLjE3LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=