From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Implement inter-engine read-read optimisations Date: Tue, 17 Mar 2015 09:54:58 +0000 Message-ID: <1426586098-12124-1-git-send-email-chris@chris-wilson.co.uk> References: <1426520751-1703-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay.fireflyinternet.com (hostedrelay.fireflyinternet.com [109.228.30.76]) by gabe.freedesktop.org (Postfix) with ESMTP id 821626E1D6 for ; Tue, 17 Mar 2015 02:55:21 -0700 (PDT) In-Reply-To: <1426520751-1703-1-git-send-email-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 Cc: Lionel Landwerlin List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5LCB3ZSBvbmx5IHRyYWNrIHRoZSBsYXN0IHJlcXVlc3QgZ2xvYmFsbHkgYWNyb3Nz IGFsbCBlbmdpbmVzLgpUaGlzIHByZXZlbnRzIHVzIGZyb20gaXNzdWluZyBjb25jdXJyZW50IHJl YWQgcmVxdWVzdHMgb24gZS5nLiB0aGUgUkNTCmFuZCBCQ1MgZW5naW5lcyAob3IgbW9yZSBsaWtl bHkgdGhlIHJlbmRlciBhbmQgbWVkaWEgZW5naW5lcykuIFdpdGhvdXQKc2VtYXBob3Jlcywgd2Ug aW5jdXIgY29zdGx5IHN0YWxscyBhcyB3ZSBzeW5jaHJvbmlzZSBiZXR3ZWVuIHJpbmdzIC0KZ3Jl YXRseSBpbXBhY3RpbmcgdGhlIGN1cnJlbnQgcGVyZm9ybWFuY2Ugb2YgQnJvYWR3ZWxsIHZlcnN1 cyBIYXN3ZWxsIGluCmNlcnRhaW4gd29ya2xvYWRzIChsaWtlIHZpZGVvIGRlY29kZSkuIFdpdGgg dGhlIGludHJvZHVjdGlvbiBvZgpyZWZlcmVuY2UgY291bnRlZCByZXF1ZXN0cywgaXQgaXMgbXVj aCBlYXNpZXIgdG8gdHJhY2sgdGhlIGxhc3QgcmVxdWVzdApwZXIgcmluZywgYXMgd2VsbCBhcyB0 aGUgbGFzdCBnbG9iYWwgd3JpdGUgcmVxdWVzdCBzbyB0aGF0IHdlIGNhbgpvcHRpbWlzZSBpbnRl ci1lbmdpbmUgcmVhZCByZWFkIHJlcXVlc3RzIChhcyB3ZWxsIGFzIGJldHRlciBvcHRpbWlzZQpj ZXJ0YWluIENQVSB3YWl0cykuCgp2MjogRml4IGludmVydGVkIHJlYWRvbmx5IGNvbmRpdGlvbiBm b3Igbm9uYmxvY2tpbmcgd2FpdHMuCgpCZW5jaG1hcms6IGlndC9nZW1fcmVhZF9yZWFkX3NwZWVk CmhzdzpndDNlICh3aXRoIHNlbWFwaG9yZXMpOgpCZWZvcmU6IFRpbWUgdG8gcmVhZC1yZWFkIDEw MjRrOgkJMjc1Ljc5NMK1cwpBZnRlcjogIFRpbWUgdG8gcmVhZC1yZWFkIDEwMjRrOgkJMTIzLjI2 MMK1cwoKaHN3Omd0M2UgKHcvbyBzZW1hcGhvcmVzKToKQmVmb3JlOiBUaW1lIHRvIHJlYWQtcmVh ZCAxMDI0azoJCTIzMC40MzPCtXMKQWZ0ZXI6ICBUaW1lIHRvIHJlYWQtcmVhZCAxMDI0azoJCTEy NC41OTPCtXMKClRlc3RjYXNlOiBpZ3QvZ2VtX2NvbmN1cnJlbnRfYmxpdApDYzogTGlvbmVsIExh bmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAgMTYgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgICAgIHwgMzUxICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgIDIgLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgIHwgIDE5ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMSArCiA3IGZpbGVzIGNoYW5nZWQsIDIyOCBpbnNlcnRp b25zKCspLCAxNzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCBhZDRmYzJiZjcwYjYuLmFhY2FkYTg0YjUzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTEyMCwxMCArMTIwLDEzIEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAq Z2V0X2dsb2JhbF9mbGFnKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMg dm9pZAogZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KG9iai0+YmFzZS5kZXYpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7CiAJ c3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHBpbl9jb3VudCA9IDA7CisJaW50IGk7CiAKLQlz ZXFfcHJpbnRmKG0sICIlcEs6ICVzJXMlcyVzICU4emRLaUIgJTAyeCAlMDJ4ICV4ICV4ICV4JXMl cyVzIiwKKwlzZXFfcHJpbnRmKG0sICIlcEs6ICVzJXMlcyVzICU4emRLaUIgJTAyeCAlMDJ4IFsg IiwKIAkJICAgJm9iai0+YmFzZSwKIAkJICAgb2JqLT5hY3RpdmUgPyAiKiIgOiAiICIsCiAJCSAg IGdldF9waW5fZmxhZyhvYmopLApAQCAtMTMxLDggKzEzNCwxMSBAQCBkZXNjcmliZV9vYmooc3Ry dWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkgICBn ZXRfZ2xvYmFsX2ZsYWcob2JqKSwKIAkJICAgb2JqLT5iYXNlLnNpemUgLyAxMDI0LAogCQkgICBv YmotPmJhc2UucmVhZF9kb21haW5zLAotCQkgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluLAotCQkg ICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9yZXEpLAorCQkgICBv YmotPmJhc2Uud3JpdGVfZG9tYWluKTsKKwlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBp KQorCQlzZXFfcHJpbnRmKG0sICIleCAiLAorCQkJCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5v KG9iai0+bGFzdF9yZWFkX3JlcVtpXSkpOworCXNlcV9wcmludGYobSwgIl0gJXggJXglcyVzJXMi LAogCQkgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3Rfd3JpdGVfcmVxKSwK IAkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X2ZlbmNlZF9yZXEpLAog CQkgICBpOTE1X2NhY2hlX2xldmVsX3N0cih0b19pOTE1KG9iai0+YmFzZS5kZXYpLCBvYmotPmNh Y2hlX2xldmVsKSwKQEAgLTE2OSw5ICsxNzUsOSBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9m aWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkqdCA9ICdcMCc7CiAJ CXNlcV9wcmludGYobSwgIiAoJXMgbWFwcGFibGUpIiwgcyk7CiAJfQotCWlmIChvYmotPmxhc3Rf cmVhZF9yZXEgIT0gTlVMTCkKKwlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSAhPSBOVUxMKQogCQlz ZXFfcHJpbnRmKG0sICIgKCVzKSIsCi0JCQkgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9i ai0+bGFzdF9yZWFkX3JlcSktPm5hbWUpOworCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmlu ZyhvYmotPmxhc3Rfd3JpdGVfcmVxKS0+bmFtZSk7CiAJaWYgKG9iai0+ZnJvbnRidWZmZXJfYml0 cykKIAkJc2VxX3ByaW50ZihtLCAiIChmcm9udGJ1ZmZlcjogMHglMDN4KSIsIG9iai0+ZnJvbnRi dWZmZXJfYml0cyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBhMGY3Nzg0YmU1ODku LmE1ZmFmNjY5ZjdiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00OTgsNyArNDk4LDcg QEAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf YnVmZmVyIHsKIAkJdTMyIHNpemU7CiAJCXUzMiBuYW1lOwotCQl1MzIgcnNlcW5vLCB3c2Vxbm87 CisJCXUzMiByc2Vxbm9bSTkxNV9OVU1fUklOR1NdLCB3c2Vxbm87CiAJCXUzMiBndHRfb2Zmc2V0 OwogCQl1MzIgcmVhZF9kb21haW5zOwogCQl1MzIgd3JpdGVfZG9tYWluOwpAQCAtMTkwMyw3ICsx OTAzLDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBkcm1fbW1fbm9k ZSAqc3RvbGVuOwogCXN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAKLQlzdHJ1Y3QgbGlz dF9oZWFkIHJpbmdfbGlzdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHJpbmdfbGlzdFtJOTE1X05VTV9S SU5HU107CiAJLyoqIFVzZWQgaW4gZXhlY2J1ZiB0byB0ZW1wb3JhcmlseSBob2xkIGEgcmVmICov CiAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwogCkBAIC0xOTE0LDcgKzE5MTQsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJICogcmVuZGVyaW5nIGFuZCBzbyBhIG5v bi16ZXJvIHNlcW5vKSwgYW5kIGlzIG5vdCBzZXQgaWYgaXQgaSBzIG9uCiAJICogaW5hY3RpdmUg KHJlYWR5IHRvIGJlIHVuYm91bmQpIGxpc3QuCiAJICovCi0JdW5zaWduZWQgaW50IGFjdGl2ZTox OworCXVuc2lnbmVkIGludCBhY3RpdmU6STkxNV9NQVhfUklOR19CSVQ7CiAKIAkvKioKIAkgKiBU aGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgbGFzdCBi b3VuZApAQCAtMTk4Niw3ICsxOTg2LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewog CWludCB2bWFwcGluZ19jb3VudDsKIAogCS8qKiBCcmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5n IHRvIHRoZSBidWZmZXIuICovCi0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpsYXN0X3Jl YWRfcmVxOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdF9yZWFkX3JlcVtJOTE1 X05VTV9SSU5HU107CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpsYXN0X3dyaXRlX3Jl cTsKIAkvKiogQnJlYWRjcnVtYiBvZiBsYXN0IGZlbmNlZCBHUFUgYWNjZXNzIHRvIHRoZSBidWZm ZXIuICovCiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpsYXN0X2ZlbmNlZF9yZXE7CkBA IC0yMTI0LDEwICsyMTI0LDExIEBAIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJcmV0dXJuIHJlcSA/IHJlcS0+cmluZyA6IE5VTEw7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKgogaTkxNV9nZW1fcmVxdWVzdF9yZWZlcmVuY2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJa3JlZl9nZXQoJnJlcS0+cmVmKTsKKwlyZXR1cm4gcmVx OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDlj YWU3YzdjZDU2Mi4uM2FiOGRlYTIzNzM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQx LDEyICs0MSwxMiBAQAogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfZ3R0X3dy aXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOworc3RhdGljIHZvaWQKK2k5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2lu YWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJIGludCByaW5nKTsK IHN0YXRpYyBfX211c3RfY2hlY2sgaW50CiBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmco c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgICAgICBib29sIHJlYWRvbmx5 KTsKLXN0YXRpYyB2b2lkCi1pOTE1X2dlbV9vYmplY3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwotCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV93cml0ZV9mZW5jZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVnLAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF91cGRhdGVfZmVuY2Uoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKQEAgLTUyOCw4ICs1MjgsNiBAQCBpbnQgaTkx NV9nZW1fb2JqX3ByZXBhcmVfc2htZW1fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCB0cnVlKTsK IAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7Ci0KLQkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZShv YmopOwogCX0KIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKQEAgLTk0 OSw4ICs5NDcsNiBAQCBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9iaiwgZmFsc2UpOwog CQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQotCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlKG9i aik7CiAJfQogCS8qIFNhbWUgdHJpY2sgYXBwbGllcyB0byBpbnZhbGlkYXRlIHBhcnRpYWxseSB3 cml0dGVuIGNhY2hlbGluZXMgcmVhZAogCSAqIGJlZm9yZSB3cml0aW5nLiAqLwpAQCAtMTM4OSwy NCArMTM4NSw2IEBAIGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQKLWk5MTVfZ2VtX29iamVjdF93 YWl0X3JlbmRlcmluZ19fdGFpbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewot CWlmICghb2JqLT5hY3RpdmUpCi0JCXJldHVybiAwOwotCi0JLyogTWFudWFsbHkgbWFuYWdlIHRo ZSB3cml0ZSBmbHVzaCBhcyB3ZSBtYXkgaGF2ZSBub3QgeWV0Ci0JICogcmV0aXJlZCB0aGUgYnVm ZmVyLgotCSAqCi0JICogTm90ZSB0aGF0IHRoZSBsYXN0X3dyaXRlX3JlcSBpcyBhbHdheXMgdGhl IGVhcmxpZXIgb2YKLQkgKiB0aGUgdHdvIChyZWFkL3dyaXRlKSByZXF1ZXN0cywgc28gaWYgd2Ug aGF2ZWQgc3VjY2Vzc2Z1bGx5IHdhaXRlZCwKLQkgKiB3ZSBrbm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBsYXN0IHdyaXRlLgotCSAqLwotCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3Rf d3JpdGVfcmVxLCBOVUxMKTsKLQotCXJldHVybiAwOwotfQotCiAvKioKICAqIEVuc3VyZXMgdGhh dCBhbGwgcmVuZGVyaW5nIHRvIHRoZSBvYmplY3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIG9iamVj dCBpcwogICogc2FmZSB0byB1bmJpbmQgZnJvbSB0aGUgR1RUIG9yIGFjY2VzcyBmcm9tIHRoZSBD UFUuCkBAIC0xNDE1LDE4ICsxMzkzLDM4IEBAIHN0YXRpYyBfX211c3RfY2hlY2sgaW50CiBpOTE1 X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJCSAgICAgICBib29sIHJlYWRvbmx5KQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxOwotCWludCByZXQ7CisJaW50IHJldCwgaTsKIAotCXJlcSA9IHJlYWRvbmx5ID8g b2JqLT5sYXN0X3dyaXRlX3JlcSA6IG9iai0+bGFzdF9yZWFkX3JlcTsKLQlpZiAoIXJlcSkKKwlp ZiAoIW9iai0+YWN0aXZlKQogCQlyZXR1cm4gMDsKIAotCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0 KHJlcSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlpZiAocmVhZG9ubHkpIHsKKwkJaWYg KG9iai0+bGFzdF93cml0ZV9yZXEgIT0gTlVMTCkgeworCQkJcmV0ID0gaTkxNV93YWl0X3JlcXVl c3Qob2JqLT5sYXN0X3dyaXRlX3JlcSk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisK KwkJCWkgPSBvYmotPmxhc3Rfd3JpdGVfcmVxLT5yaW5nLT5pZDsKKwkJCWlmIChvYmotPmxhc3Rf cmVhZF9yZXFbaV0gPT0gb2JqLT5sYXN0X3dyaXRlX3JlcSkKKwkJCQlpOTE1X2dlbV9vYmplY3Rf bW92ZV90b19pbmFjdGl2ZShvYmosIGkpOworCisJCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigm b2JqLT5sYXN0X3dyaXRlX3JlcSwgTlVMTCk7CisJCX0KKwl9IGVsc2UgeworCQlmb3IgKGkgPSAw OyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgeworCQkJaWYgKG9iai0+bGFzdF9yZWFkX3JlcVtp XSA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCisJCQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChv YmotPmxhc3RfcmVhZF9yZXFbaV0pOworCQkJaWYgKHJldCkKKwkJCQlyZXR1cm4gcmV0OworCisJ CQlpOTE1X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2ZShvYmosIGkpOworCQl9CisJfQorCisJ cmV0dXJuIDA7CiAKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nX190YWls KG9iaik7CiB9CiAKIC8qIEEgbm9uYmxvY2tpbmcgdmFyaWFudCBvZiB0aGUgYWJvdmUgd2FpdC4g VGhpcyBpcyBhIGhpZ2hseSBkYW5nZXJvdXMgcm91dGluZQpAQCAtMTQzNywzNyArMTQzNSw2MyBA QCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmdfX25vbmJsb2NraW5nKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2 YXRlICpmaWxlX3ByaXYsCiAJCQkJCSAgICBib29sIHJlYWRvbmx5KQogewotCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJh c2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXFbSTkxNV9OVU1fUklOR1Nd OwogCXVuc2lnbmVkIHJlc2V0X2NvdW50ZXI7Ci0JaW50IHJldDsKKwlpbnQgcmV0LCBpLCBuID0g MDsKIAogCUJVR19PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOwogCUJV R19PTighZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUpOwogCi0JcmVxID0gcmVhZG9ubHkgPyBv YmotPmxhc3Rfd3JpdGVfcmVxIDogb2JqLT5sYXN0X3JlYWRfcmVxOwotCWlmICghcmVxKQorCWlm ICghb2JqLT5hY3RpdmUpCiAJCXJldHVybiAwOwogCiAJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2Vk Z2UoJmRldl9wcml2LT5ncHVfZXJyb3IsIHRydWUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKLQlyZXQgPSBpOTE1X2dlbV9jaGVja19vbHIocmVxKTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OwotCiAJcmVzZXRfY291bnRlciA9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9y LnJlc2V0X2NvdW50ZXIpOwotCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNlKHJlcSk7CisKKwlp ZiAocmVhZG9ubHkpIHsKKwkJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEgPT0gTlVMTCkKKwkJCXJl dHVybiAwOworCisJCXJlcVtuKytdID0gaTkxNV9nZW1fcmVxdWVzdF9yZWZlcmVuY2Uob2JqLT5s YXN0X3dyaXRlX3JlcSk7CisKKwkJcmV0ID0gaTkxNV9nZW1fY2hlY2tfb2xyKHJlcVtuLTFdKTsK KwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyOworCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBJ OTE1X05VTV9SSU5HUzsgaSsrKSB7CisJCQlpZiAob2JqLT5sYXN0X3JlYWRfcmVxW2ldID09IE5V TEwpCisJCQkJY29udGludWU7CisKKwkJCXJlcVtuKytdID0gaTkxNV9nZW1fcmVxdWVzdF9yZWZl cmVuY2Uob2JqLT5sYXN0X3JlYWRfcmVxW2ldKTsKKwkJCXJldCA9IGk5MTVfZ2VtX2NoZWNrX29s cihyZXFbbi0xXSk7CisJCQlpZiAocmV0KQorCQkJCWdvdG8gZXJyOworCQl9CisJfQorCiAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVz dChyZXEsIHJlc2V0X2NvdW50ZXIsIHRydWUsIE5VTEwsIGZpbGVfcHJpdik7CisJZm9yIChpID0g MDsgcmV0ID09IDAgJiYgaSA8IG47IGkrKykKKwkJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChy ZXFbaV0sIHJlc2V0X2NvdW50ZXIsIHRydWUsCisJCQkJCSAgTlVMTCwgZmlsZV9wcml2KTsKIAlt dXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVy ZW5jZShyZXEpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiAKLQlyZXR1cm4gaTkxNV9nZW1f b2JqZWN0X3dhaXRfcmVuZGVyaW5nX190YWlsKG9iaik7CitlcnI6CisJZm9yIChpID0gMDsgaSA8 IG47IGkrKykgeworCQlpZiAocmV0ID09IDApIHsKKwkJCWlmIChvYmotPmxhc3RfcmVhZF9yZXFb aV0gPT0gcmVxW2ldKQorCQkJCWk5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2luYWN0aXZlKG9iaiwg aSk7CisJCQlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSA9PSByZXFbaV0pCisJCQkJaTkxNV9nZW1f cmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF93cml0ZV9yZXEsIE5VTEwpOworCQl9CisJCWk5MTVf Z2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxW2ldKTsKKwl9CisKKwlyZXR1cm4gcmV0OwogfQog CiAvKioKQEAgLTIzMDMsNDkgKzIzMjcsNDQgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMg dm9pZAotaTkxNV9nZW1fb2JqZWN0X21vdmVfdG9fYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCi0JCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3Zv aWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCisJCQkgICAg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXE7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqb2xkX3Jpbmc7Ci0KLQlCVUdf T04ocmluZyA9PSBOVUxMKTsKLQotCXJlcSA9IGludGVsX3JpbmdfZ2V0X3JlcXVlc3QocmluZyk7 Ci0Jb2xkX3JpbmcgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9iai0+bGFzdF9yZWFkX3Jl cSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOworCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gaW50ZWxfcmluZ19nZXRfcmVxdWVzdChyaW5n KTsKIAotCWlmIChvbGRfcmluZyAhPSByaW5nICYmIG9iai0+bGFzdF93cml0ZV9yZXEpIHsKLQkJ LyogS2VlcCB0aGUgcmVxdWVzdCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCByaW5nICovCi0JCWk5 MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3Rfd3JpdGVfcmVxLCByZXEpOwotCX0KKwls aXN0X21vdmVfdGFpbCgmdm1hLT5tbV9saXN0LCAmdm1hLT52bS0+YWN0aXZlX2xpc3QpOwogCiAJ LyogQWRkIGEgcmVmZXJlbmNlIGlmIHdlJ3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3RpdmUgbGlz dC4gKi8KLQlpZiAoIW9iai0+YWN0aXZlKSB7CisJaWYgKG9iai0+bGFzdF9yZWFkX3JlcVtyaW5n LT5pZF0gPT0gTlVMTCAmJiBvYmotPmFjdGl2ZSsrID09IDApCiAJCWRybV9nZW1fb2JqZWN0X3Jl ZmVyZW5jZSgmb2JqLT5iYXNlKTsKLQkJb2JqLT5hY3RpdmUgPSAxOwotCX0KIAotCWxpc3RfbW92 ZV90YWlsKCZvYmotPnJpbmdfbGlzdCwgJnJpbmctPmFjdGl2ZV9saXN0KTsKLQotCWk5MTVfZ2Vt X3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3RfcmVhZF9yZXEsIHJlcSk7Ci19Ci0KLXZvaWQgaTkx NV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCi0JCQkgICAgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCi17Ci0JbGlzdF9tb3ZlX3RhaWwoJnZtYS0+bW1fbGlz dCwgJnZtYS0+dm0tPmFjdGl2ZV9saXN0KTsKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X21vdmVf dG9fYWN0aXZlKHZtYS0+b2JqLCByaW5nKTsKKwlsaXN0X21vdmVfdGFpbCgmb2JqLT5yaW5nX2xp c3RbcmluZy0+aWRdLCAmcmluZy0+YWN0aXZlX2xpc3QpOworCWk5MTVfZ2VtX3JlcXVlc3RfYXNz aWduKCZvYmotPmxhc3RfcmVhZF9yZXFbcmluZy0+aWRdLCByZXEpOwogfQogCiBzdGF0aWMgdm9p ZAotaTkxNV9nZW1fb2JqZWN0X21vdmVfdG9faW5hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKK2k5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2luYWN0aXZlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJIGludCByaW5nKQogewogCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwogCi0JQlVHX09OKG9iai0+YmFzZS53cml0ZV9kb21haW4gJiB+STkxNV9HRU1fR1BV X0RPTUFJTlMpOworCVdBUk5fT05DRShvYmotPmJhc2Uud3JpdGVfZG9tYWluICYgfkk5MTVfR0VN X0dQVV9ET01BSU5TLAorCQkgICJpbnZhbGlkIHdyaXRlIGRvbWFpbnM6ICV4XG4iLAorCQkgIG9i ai0+YmFzZS53cml0ZV9kb21haW4gJiB+STkxNV9HRU1fR1BVX0RPTUFJTlMpOwogCUJVR19PTigh b2JqLT5hY3RpdmUpOwogCisJbGlzdF9kZWxfaW5pdCgmb2JqLT5yaW5nX2xpc3RbcmluZ10pOwor CWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3RfcmVhZF9yZXFbcmluZ10sIE5VTEwp OworCisJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEgJiYgb2JqLT5sYXN0X3dyaXRlX3JlcS0+cmlu Zy0+aWQgPT0gcmluZykgeworCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3dy aXRlX3JlcSwgTlVMTCk7CisJCW9iai0+YmFzZS53cml0ZV9kb21haW4gPSAwOworCX0KKworCWlm ICgtLW9iai0+YWN0aXZlKQorCQlyZXR1cm47CisKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7CiAJCWlmICghbGlzdF9lbXB0eSgmdm1hLT5tbV9s aXN0KSkKIAkJCWxpc3RfbW92ZV90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bWEtPnZtLT5pbmFjdGl2 ZV9saXN0KTsKQEAgLTIzNTMsMzAgKzIzNzIsMTIgQEAgaTkxNV9nZW1fb2JqZWN0X21vdmVfdG9f aW5hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogCWludGVsX2ZiX29i al9mbHVzaChvYmosIHRydWUpOwogCi0JbGlzdF9kZWxfaW5pdCgmb2JqLT5yaW5nX2xpc3QpOwot Ci0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9yZWFkX3JlcSwgTlVMTCk7Ci0J aTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF93cml0ZV9yZXEsIE5VTEwpOwotCW9i ai0+YmFzZS53cml0ZV9kb21haW4gPSAwOwotCiAJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9i ai0+bGFzdF9mZW5jZWRfcmVxLCBOVUxMKTsKIAotCW9iai0+YWN0aXZlID0gMDsKIAlkcm1fZ2Vt X29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKLQogCVdBUk5fT04oaTkxNV92ZXJpZnlf bGlzdHMoZGV2KSk7CiB9CiAKLXN0YXRpYyB2b2lkCi1pOTE1X2dlbV9vYmplY3RfcmV0aXJlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCi17Ci0JaWYgKG9iai0+bGFzdF9yZWFkX3Jl cSA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQo b2JqLT5sYXN0X3JlYWRfcmVxLCB0cnVlKSkKLQkJaTkxNV9nZW1fb2JqZWN0X21vdmVfdG9faW5h Y3RpdmUob2JqKTsKLX0KLQogc3RhdGljIGludAogaTkxNV9nZW1faW5pdF9zZXFubyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCiB7CkBAIC0yNjgyLDkgKzI2ODMsOSBAQCBzdGF0 aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9yaW5nX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCiAJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmFjdGl2ZV9s aXN0LAogCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKLQkJCQkgICAgICAg cmluZ19saXN0KTsKKwkJCQkgICAgICAgcmluZ19saXN0W3JpbmctPmlkXSk7CiAKLQkJaTkxNV9n ZW1fb2JqZWN0X21vdmVfdG9faW5hY3RpdmUob2JqKTsKKwkJaTkxNV9nZW1fb2JqZWN0X21vdmVf dG9faW5hY3RpdmUob2JqLCByaW5nLT5pZCk7CiAJfQogCiAJLyoKQEAgLTI3OTEsMTIgKzI3OTIs MTMgQEAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKIAogCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZyaW5nLT5hY3RpdmVfbGlzdCwK IAkJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKLQkJCQkgICAgICByaW5nX2xp c3QpOworCQkJCSAgICAgIHJpbmdfbGlzdFtyaW5nLT5pZF0pOwogCi0JCWlmICghaTkxNV9nZW1f cmVxdWVzdF9jb21wbGV0ZWQob2JqLT5sYXN0X3JlYWRfcmVxLCB0cnVlKSkKKwkJaWYgKCFpOTE1 X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChvYmotPmxhc3RfcmVhZF9yZXFbcmluZy0+aWRdLAorCQkJ CQkJdHJ1ZSkpCiAJCQlicmVhazsKIAotCQlpOTE1X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2 ZShvYmopOworCQlpOTE1X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2ZShvYmosIHJpbmctPmlk KTsKIAl9CiAKIApAQCAtMjkwOCwxNyArMjkxMCwyMCBAQCBpOTE1X2dlbV9pZGxlX3dvcmtfaGFu ZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiBzdGF0aWMgaW50CiBpOTE1X2dlbV9vYmpl Y3RfZmx1c2hfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKLQlpbnQgcmV0OworCWludCByZXQsIGk7CiAKLQlp ZiAob2JqLT5hY3RpdmUpIHsKLQkJcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcob2Jq LT5sYXN0X3JlYWRfcmVxKTsKKwlpZiAoIW9iai0+YWN0aXZlKQorCQlyZXR1cm4gMDsKKworCWZv ciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKSB7CisJCWlmIChvYmotPmxhc3RfcmVh ZF9yZXFbaV0gPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwogCi0JCXJldCA9IGk5MTVfZ2VtX2NoZWNr X29scihvYmotPmxhc3RfcmVhZF9yZXEpOworCQlyZXQgPSBpOTE1X2dlbV9jaGVja19vbHIob2Jq LT5sYXN0X3JlYWRfcmVxW2ldKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAKLQkJaTkx NV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7CisJCWk5MTVfZ2VtX3JldGlyZV9yZXF1 ZXN0c19yaW5nKCZ0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5yaW5nW2ldKTsKIAl9CiAKIAlyZXR1 cm4gMDsKQEAgLTI5NTIsOSArMjk1NywxMCBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVj dCBkcm1faTkxNV9nZW1fd2FpdCAqYXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcVtJOTE1X05VTV9SSU5HU107CiAJdW5zaWduZWQgcmVz ZXRfY291bnRlcjsKLQlpbnQgcmV0ID0gMDsKKwlpbnQgaSwgbiA9IDA7CisJaW50IHJldDsKIAog CWlmIChhcmdzLT5mbGFncyAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTI5NzQsMTEgKzI5 ODAsOSBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAot CWlmICghb2JqLT5hY3RpdmUgfHwgIW9iai0+bGFzdF9yZWFkX3JlcSkKKwlpZiAoIW9iai0+YWN0 aXZlKQogCQlnb3RvIG91dDsKIAotCXJlcSA9IG9iai0+bGFzdF9yZWFkX3JlcTsKLQogCS8qIERv IHRoaXMgYWZ0ZXIgT0xSIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBtYWtlIGZvcndhcmQgcHJvZ3Jl c3MgcG9sbGluZwogCSAqIG9uIHRoaXMgSU9DVEwgd2l0aCBhIHRpbWVvdXQgPT0gMCAobGlrZSBi dXN5IGlvY3RsKQogCSAqLwpAQCAtMjk4OSwxMyArMjk5MywyMyBAQCBpOTE1X2dlbV93YWl0X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKIAogCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwogCXJlc2V0 X2NvdW50ZXIgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVy KTsKLQlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShyZXEpOworCisJZm9yIChpID0gMDsgaSA8 IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJaWYgKG9iai0+bGFzdF9yZWFkX3JlcVtpXSA9PSBO VUxMKQorCQkJY29udGludWU7CisKKwkJcmVxW24rK10gPSBpOTE1X2dlbV9yZXF1ZXN0X3JlZmVy ZW5jZShvYmotPmxhc3RfcmVhZF9yZXFbaV0pOworCX0KKwogCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwogCi0JcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChyZXEsIHJlc2V0X2Nv dW50ZXIsIHRydWUsCi0JCQkJICBhcmdzLT50aW1lb3V0X25zID4gMCA/ICZhcmdzLT50aW1lb3V0 X25zIDogTlVMTCwKLQkJCQkgIGZpbGUtPmRyaXZlcl9wcml2KTsKLQlpOTE1X2dlbV9yZXF1ZXN0 X3VucmVmZXJlbmNlX191bmxvY2tlZChyZXEpOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsK KwkJaWYgKHJldCA9PSAwKQorCQkJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChyZXFbaV0sIHJl c2V0X2NvdW50ZXIsIHRydWUsCisJCQkJCQkgIGFyZ3MtPnRpbWVvdXRfbnMgPiAwID8gJmFyZ3Mt PnRpbWVvdXRfbnMgOiBOVUxMLAorCQkJCQkJICBmaWxlLT5kcml2ZXJfcHJpdik7CisJCWk5MTVf Z2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3VubG9ja2VkKHJlcVtpXSk7CisJfQogCXJldHVybiBy ZXQ7CiAKIG91dDoKQEAgLTMwMDQsNTUgKzMwMTgsODAgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9 CiAKLS8qKgotICogaTkxNV9nZW1fb2JqZWN0X3N5bmMgLSBzeW5jIGFuIG9iamVjdCB0byBhIHJp bmcuCi0gKgotICogQG9iajogb2JqZWN0IHdoaWNoIG1heSBiZSBpbiB1c2Ugb24gYW5vdGhlciBy aW5nLgotICogQHRvOiByaW5nIHdlIHdpc2ggdG8gdXNlIHRoZSBvYmplY3Qgb24uIE1heSBiZSBO VUxMLgotICoKLSAqIFRoaXMgY29kZSBpcyBtZWFudCB0byBhYnN0cmFjdCBvYmplY3Qgc3luY2hy b25pemF0aW9uIHdpdGggdGhlIEdQVS4KLSAqIENhbGxpbmcgd2l0aCBOVUxMIGltcGxpZXMgc3lu Y2hyb25pemluZyB0aGUgb2JqZWN0IHdpdGggdGhlIENQVQotICogcmF0aGVyIHRoYW4gYSBwYXJ0 aWN1bGFyIEdQVSByaW5nLgotICoKLSAqIFJldHVybnMgMCBpZiBzdWNjZXNzZnVsLCBlbHNlIHBy b3BhZ2F0ZXMgdXAgdGhlIGxvd2VyIGxheWVyIGVycm9yLgotICovCi1pbnQKLWk5MTVfZ2VtX29i amVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCSAgICAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqdG8pCitzdGF0aWMgaW50CitfX2k5MTVfZ2VtX29iamVjdF9zeW5j KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICp0bywKKwkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEp CiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZnJvbTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpmcm9tID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhycSk7CiAJdTMyIHNlcW5vOwog CWludCByZXQsIGlkeDsKIAotCWZyb20gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9iai0+ bGFzdF9yZWFkX3JlcSk7Ci0KIAlpZiAoZnJvbSA9PSBOVUxMIHx8IHRvID09IGZyb20pCiAJCXJl dHVybiAwOwogCisJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJxLCB0cnVlKSkKKwkJ cmV0dXJuIDA7CisKIAlpZiAodG8gPT0gTlVMTCB8fCAhaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxl ZChvYmotPmJhc2UuZGV2KSkKLQkJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmlu ZyhvYmosIGZhbHNlKTsKKwkJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhv YmosIG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbiA9PSAwKTsKIAogCWlkeCA9IGludGVs X3Jpbmdfc3luY19pbmRleChmcm9tLCB0byk7CiAKLQlzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3Rf Z2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcSk7CisJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0 X2dldF9zZXFubyhycSk7CiAJLyogT3B0aW1pemF0aW9uOiBBdm9pZCBzZW1hcGhvcmUgc3luYyB3 aGVuIHdlIGFyZSBzdXJlIHdlIGFscmVhZHkKIAkgKiB3YWl0ZWQgZm9yIGFuIG9iamVjdCB3aXRo IGhpZ2hlciBzZXFubyAqLwogCWlmIChzZXFubyA8PSBmcm9tLT5zZW1hcGhvcmUuc3luY19zZXFu b1tpZHhdKQogCQlyZXR1cm4gMDsKIAotCXJldCA9IGk5MTVfZ2VtX2NoZWNrX29scihvYmotPmxh c3RfcmVhZF9yZXEpOworCXJldCA9IGk5MTVfZ2VtX2NoZWNrX29scihycSk7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCXRyYWNlX2k5MTVfZ2VtX3Jpbmdfc3luY190byhmcm9tLCB0bywg b2JqLT5sYXN0X3JlYWRfcmVxKTsKKwl0cmFjZV9pOTE1X2dlbV9yaW5nX3N5bmNfdG8oZnJvbSwg dG8sIHJxKTsKIAlyZXQgPSB0by0+c2VtYXBob3JlLnN5bmNfdG8odG8sIGZyb20sIHNlcW5vKTsK IAlpZiAoIXJldCkKIAkJLyogV2UgdXNlIGxhc3RfcmVhZF9yZXEgYmVjYXVzZSBzeW5jX3RvKCkK IAkJICogbWlnaHQgaGF2ZSBqdXN0IGNhdXNlZCBzZXFubyB3cmFwIHVuZGVyCiAJCSAqIHRoZSBy YWRhci4KIAkJICovCi0JCWZyb20tPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lkeF0gPQotCQkJCWk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcSk7CisJCWZyb20tPnNl bWFwaG9yZS5zeW5jX3NlcW5vW2lkeF0gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhycSk7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGk5MTVfZ2VtX29iamVjdF9zeW5jIC0gc3lu YyBhbiBvYmplY3QgdG8gYSByaW5nLgorICoKKyAqIEBvYmo6IG9iamVjdCB3aGljaCBtYXkgYmUg aW4gdXNlIG9uIGFub3RoZXIgcmluZy4KKyAqIEB0bzogcmluZyB3ZSB3aXNoIHRvIHVzZSB0aGUg b2JqZWN0IG9uLiBNYXkgYmUgTlVMTC4KKyAqCisgKiBUaGlzIGNvZGUgaXMgbWVhbnQgdG8gYWJz dHJhY3Qgb2JqZWN0IHN5bmNocm9uaXphdGlvbiB3aXRoIHRoZSBHUFUuCisgKiBDYWxsaW5nIHdp dGggTlVMTCBpbXBsaWVzIHN5bmNocm9uaXppbmcgdGhlIG9iamVjdCB3aXRoIHRoZSBDUFUKKyAq IHJhdGhlciB0aGFuIGEgcGFydGljdWxhciBHUFUgcmluZy4KKyAqCisgKiBSZXR1cm5zIDAgaWYg c3VjY2Vzc2Z1bCwgZWxzZSBwcm9wYWdhdGVzIHVwIHRoZSBsb3dlciBsYXllciBlcnJvci4KKyAq LworaW50CitpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAorCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnRvKQoreworCWludCByZXQgPSAw LCBpOworCisJaWYgKG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbiA9PSAwKSB7CisJCWlm IChvYmotPmxhc3Rfd3JpdGVfcmVxKQorCQkJcmV0ID0gX19pOTE1X2dlbV9vYmplY3Rfc3luYyhv YmosIHRvLAorCQkJCQkJICAgICBvYmotPmxhc3Rfd3JpdGVfcmVxKTsKKwl9IGVsc2UgeworCQlm b3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgeworCQkJaWYgKG9iai0+bGFzdF9y ZWFkX3JlcVtpXSA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCisJCQlyZXQgPSBfX2k5MTVfZ2Vt X29iamVjdF9zeW5jKG9iaiwgdG8sIG9iai0+bGFzdF9yZWFkX3JlcVtpXSk7CisJCQlpZiAocmV0 KQorCQkJCWJyZWFrOworCQl9CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTMxMzksMTAgKzMx NzgsNiBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCS8qIFNp bmNlIHRoZSB1bmJvdW5kIGxpc3QgaXMgZ2xvYmFsLCBvbmx5IG1vdmUgdG8gdGhhdCBsaXN0IGlm CiAJICogbm8gbW9yZSBWTUFzIGV4aXN0LiAqLwogCWlmIChsaXN0X2VtcHR5KCZvYmotPnZtYV9s aXN0KSkgewotCQkvKiBUaHJvdyBhd2F5IHRoZSBhY3RpdmUgcmVmZXJlbmNlIGJlZm9yZQotCQkg KiBtb3ZpbmcgdG8gdGhlIHVuYm91bmQgbGlzdC4gKi8KLQkJaTkxNV9nZW1fb2JqZWN0X3JldGly ZShvYmopOwotCiAJCWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7CiAJCWxpc3RfbW92 ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAJ fQpAQCAtMzc5Miw4ICszODI3LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCWk5MTVfZ2VtX29iamVjdF9yZXRpcmUob2JqKTsKLQogCS8qIEZs dXNoIGFuZCBhY3F1aXJlIG9iai0+cGFnZXMgc28gdGhhdCB3ZSBhcmUgY29oZXJlbnQgdGhyb3Vn aAogCSAqIGRpcmVjdCBhY2Nlc3MgaW4gbWVtb3J5IHdpdGggcHJldmlvdXMgY2FjaGVkIHdyaXRl cyB0aHJvdWdoCiAJICogc2htZW1mcyBhbmQgdGhhdCBvdXIgY2FjaGUgZG9tYWluIHRyYWNraW5n IHJlbWFpbnMgdmFsaWQuCkBAIC00MDE4LDExICs0MDUxLDkgQEAgaTkxNV9nZW1fb2JqZWN0X3Bp bl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJYm9v bCB3YXNfcGluX2Rpc3BsYXk7CiAJaW50IHJldDsKIAotCWlmIChwaXBlbGluZWQgIT0gaTkxNV9n ZW1fcmVxdWVzdF9nZXRfcmluZyhvYmotPmxhc3RfcmVhZF9yZXEpKSB7Ci0JCXJldCA9IGk5MTVf Z2VtX29iamVjdF9zeW5jKG9iaiwgcGlwZWxpbmVkKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiBy ZXQ7Ci0JfQorCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcGlwZWxpbmVkKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJLyogTWFyayB0aGUgcGluX2Rpc3BsYXkgZWFybHkg c28gdGhhdCB3ZSBhY2NvdW50IGZvciB0aGUKIAkgKiBkaXNwbGF5IGNvaGVyZW5jeSB3aGlsc3Qg c2V0dGluZyB1cCB0aGUgY2FjaGUgZG9tYWlucy4KQEAgLTQxMTgsNyArNDE0OSw2IEBAIGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLCBib29sIHdyaXRlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpOTE1X2dlbV9v YmplY3RfcmV0aXJlKG9iaik7CiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21h aW4ob2JqKTsKIAogCW9sZF93cml0ZV9kb21haW4gPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluOwpA QCAtNDM4NSwxMSArNDQxNSwxNyBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAqIG5lY2Vzc2FyeSBmbHVzaGVzIGhlcmUuCiAJCSAq LwogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZmx1c2hfYWN0aXZlKG9iaik7Ci0JCWlmIChvYmot Pmxhc3RfcmVhZF9yZXEpIHsKLQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7CisJCWlm IChvYmotPmFjdGl2ZSkgeworCQkJaW50IGk7CisKIAkJCUJVSUxEX0JVR19PTihJOTE1X05VTV9S SU5HUyA+IDE2KTsKLQkJCXJpbmcgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKG9iai0+bGFz dF9yZWFkX3JlcSk7Ci0JCQlhcmdzLT5idXN5ID0gaW50ZWxfcmluZ19mbGFnKHJpbmcpIDw8IDE2 IHwgMTsKKworCQkJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJCQlp ZiAob2JqLT5sYXN0X3JlYWRfcmVxW2ldID09IE5VTEwpCisJCQkJCWNvbnRpbnVlOworCisJCQkJ YXJncy0+YnVzeSB8PSAxIDw8ICgxNiArIGkpIHwgMTsKKwkJCX0KIAkJfQogCiAJCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwpAQCAtNDQ2OCw4ICs0NTA0LDExIEBAIHVu bG9jazoKIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAkJCSAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMp CiB7CisJaW50IGk7CisKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5nbG9iYWxfbGlzdCk7Ci0JSU5J VF9MSVNUX0hFQUQoJm9iai0+cmluZ19saXN0KTsKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1f UklOR1M7IGkrKykKKwkJSU5JVF9MSVNUX0hFQUQoJm9iai0+cmluZ19saXN0W2ldKTsKIAlJTklU X0xJU1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5rKTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52 bWFfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+YmF0Y2hfcG9vbF9saW5rKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA3MDM0NmIwMDI4ZjkuLjMxODI2 ZTdlOTA0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNjcz LDggKzY3Myw2IEBAIHN0YXRpYyBpbnQgZG9fc3dpdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCiAJCSAqIHN3YXBwZWQsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZG8gdGhhdCB5ZXQu CiAJCSAqLwogCQlmcm9tLT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZS0+ZGlydHkgPSAxOwotCQlC VUdfT04oaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZygKLQkJCWZyb20tPmxlZ2FjeV9od19jdHgu cmNzX3N0YXRlLT5sYXN0X3JlYWRfcmVxKSAhPSByaW5nKTsKIAogCQkvKiBvYmogaXMga2VwdCBh bGl2ZSB1bnRpbCB0aGUgbmV4dCByZXF1ZXN0IGJ5IGl0cyBhY3RpdmUgcmVmICovCiAJCWk5MTVf Z2VtX29iamVjdF9nZ3R0X3VucGluKGZyb20tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IGE5ODI4NDlhNWVkZC4uZmE1ZDUz ZjEyNDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTE5MiwxNSAr MTkyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50X2Vycm9yX2J1ZmZlcnMoc3RydWN0IGRybV9pOTE1 X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICpl cnIsCiAJCQkJaW50IGNvdW50KQogeworCWludCBpOworCiAJZXJyX3ByaW50ZihtLCAiICAlcyBb JWRdOlxuIiwgbmFtZSwgY291bnQpOwogCiAJd2hpbGUgKGNvdW50LS0pIHsKLQkJZXJyX3ByaW50 ZihtLCAiICAgICUwOHggJTh1ICUwMnggJTAyeCAleCAleCIsCisJCWVycl9wcmludGYobSwgIiAg ICAlMDh4ICU4dSAlMDJ4ICUwMnggWyAiLAogCQkJICAgZXJyLT5ndHRfb2Zmc2V0LAogCQkJICAg ZXJyLT5zaXplLAogCQkJICAgZXJyLT5yZWFkX2RvbWFpbnMsCi0JCQkgICBlcnItPndyaXRlX2Rv bWFpbiwKLQkJCSAgIGVyci0+cnNlcW5vLCBlcnItPndzZXFubyk7CisJCQkgICBlcnItPndyaXRl X2RvbWFpbik7CisJCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQorCQkJZXJy X3ByaW50ZihtLCAiJTAyeCAiLCBlcnItPnJzZXFub1tpXSk7CisKKwkJZXJyX3ByaW50ZihtLCAi XSAlMDJ4IiwgZXJyLT53c2Vxbm8pOwogCQllcnJfcHV0cyhtLCBwaW5fZmxhZyhlcnItPnBpbm5l ZCkpOwogCQllcnJfcHV0cyhtLCB0aWxpbmdfZmxhZyhlcnItPnRpbGluZykpOwogCQllcnJfcHV0 cyhtLCBkaXJ0eV9mbGFnKGVyci0+ZGlydHkpKTsKQEAgLTY2NywxMCArNjcyLDEyIEBAIHN0YXRp YyB2b2lkIGNhcHR1cmVfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAogCQkg ICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiA9IHZtYS0+b2JqOworCWludCBpOwogCiAJZXJyLT5zaXplID0gb2JqLT5iYXNlLnNp emU7CiAJZXJyLT5uYW1lID0gb2JqLT5iYXNlLm5hbWU7Ci0JZXJyLT5yc2Vxbm8gPSBpOTE1X2dl bV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9yZXEpOworCWZvciAoaSA9IDA7IGkg PCBJOTE1X05VTV9SSU5HUzsgaSsrKQorCQllcnItPnJzZXFub1tpXSA9IGk5MTVfZ2VtX3JlcXVl c3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtpXSk7CiAJZXJyLT53c2Vxbm8gPSBpOTE1 X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3Rfd3JpdGVfcmVxKTsKIAllcnItPmd0dF9v ZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQ7CiAJZXJyLT5yZWFkX2RvbWFpbnMgPSBvYmotPmJhc2Uu cmVhZF9kb21haW5zOwpAQCAtNjgzLDggKzY5MCw4IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfYm8o c3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAogCWVyci0+ZGlydHkgPSBvYmotPmRp cnR5OwogCWVyci0+cHVyZ2VhYmxlID0gb2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRDsK IAllcnItPnVzZXJwdHIgPSBvYmotPnVzZXJwdHIubW0gIT0gTlVMTDsKLQllcnItPnJpbmcgPSBv YmotPmxhc3RfcmVhZF9yZXEgPwotCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhvYmotPmxh c3RfcmVhZF9yZXEpLT5pZCA6IC0xOworCWVyci0+cmluZyA9IG9iai0+bGFzdF93cml0ZV9yZXEg PworCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhvYmotPmxhc3Rfd3JpdGVfcmVxKS0+aWQg OiAtMTsKIAllcnItPmNhY2hlX2xldmVsID0gb2JqLT5jYWNoZV9sZXZlbDsKIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGQzNmVjNmI4ZmQwYS4uZDYyMWViZWNkMzNl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC05Njc0LDcgKzk2NzQsNyBA QCBzdGF0aWMgYm9vbCB1c2VfbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcs CiAJZWxzZSBpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQogCQlyZXR1cm4gdHJ1ZTsKIAllbHNl Ci0JCXJldHVybiByaW5nICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcob2JqLT5sYXN0X3Jl YWRfcmVxKTsKKwkJcmV0dXJuIHJpbmcgIT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhvYmot Pmxhc3Rfd3JpdGVfcmVxKTsKIH0KIAogc3RhdGljIHZvaWQgc2tsX2RvX21taW9fZmxpcChzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKQEAgLTk5NzcsNyArOTk3Nyw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0gZWxzZSBp ZiAoSVNfSVZZQlJJREdFKGRldikgfHwgSVNfSEFTV0VMTChkZXYpKSB7CiAJCXJpbmcgPSAmZGV2 X3ByaXYtPnJpbmdbQkNTXTsKIAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcp IHsKLQkJcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcob2JqLT5sYXN0X3JlYWRfcmVx KTsKKwkJcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmcob2JqLT5sYXN0X3dyaXRlX3Jl cSk7CiAJCWlmIChyaW5nID09IE5VTEwgfHwgcmluZy0+aWQgIT0gUkNTKQogCQkJcmluZyA9ICZk ZXZfcHJpdi0+cmluZ1tCQ1NdOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKaW5kZXggMWQwOGQ4ZjkxNDlkLi5hNGEyNWM5MzJiMGIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTEyOSw2ICsxMjksNyBAQCBzdHJ1Y3Qg IGludGVsX2VuZ2luZV9jcyB7CiAJCVZDUzIKIAl9IGlkOwogI2RlZmluZSBJOTE1X05VTV9SSU5H UyA1CisjZGVmaW5lIEk5MTVfTUFYX1JJTkdfQklUIDMKICNkZWZpbmUgTEFTVF9VU0VSX1JJTkcg KFZFQ1MgKyAxKQogCXUzMgkJbW1pb19iYXNlOwogCXN0cnVjdAkJZHJtX2RldmljZSAqZGV2Owot LSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==