From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: [PATCH v3] drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl Date: Fri, 13 Oct 2017 16:22:01 +0200 Message-ID: <20171013142201.18425-1-boris.brezillon@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 672926EB45 for ; Fri, 13 Oct 2017 14:22:06 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: Boris Brezillon , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBpb2N0bCB3aWxsIGFsbG93IHVzIHRvIHB1cmdlIGluYWN0aXZlIHVzZXJzcGFjZSBidWZm ZXJzIHdoZW4gdGhlCnN5c3RlbSBpcyBydW5uaW5nIG91dCBvZiBjb250aWd1b3VzIG1lbW9yeS4K CkZvciBub3csIHRoZSBwdXJnZSBsb2dpYyBpcyByYXRoZXIgZHVtYiBpbiB0aGF0IGl0IGRvZXMg bm90IHRyeSB0bwpyZWxlYXNlIG9ubHkgdGhlIGFtb3VudCBvZiBCTyBuZWVkZWQgdG8gbWVldCB0 aGUgbGFzdCBDTUEgYWxsb2MgcmVxdWVzdApidXQgaW5zdGVhZCBwdXJnZXMgYWxsIG9iamVjdHMg cGxhY2VkIGluIHRoZSBwdXJnZWFibGUgcG9vbCBhcyBzb29uIGFzCndlIGV4cGVyaWVuY2UgYSBD TUEgYWxsb2NhdGlvbiBmYWlsdXJlLgoKTm90ZSB0aGF0IHRoZSBpbi1rZXJuZWwgQk8gY2FjaGUg aXMgYWx3YXlzIHB1cmdlZCBiZWZvcmUgdGhlIHB1cmdlYWJsZQpjYWNoZSBiZWNhdXNlIHRob3Nl IG9iamVjdHMgYXJlIGtub3duIHRvIGJlIHVudXNlZCB3aGlsZSBvYmplY3RzIG1hcmtlZAphcyBw dXJnZWFibGUgYnkgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24vbGlicmFyeSBtaWdodCBoYXZlIHRv IGJlCnJlc3RvcmVkIHdoZW4gdGhleSBhcmUgbWFya2VkIGJhY2sgYXMgdW5wdXJnZWFibGUsIHdo aWNoIGNhbiBiZQpleHBlbnNpdmUuCgpTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJv cmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+Ci0tLQpIZWxsbywKClVwZGF0ZXMgdG8g bGliZHJtLCBtZXNhIGFuZCBpZ3QgbWFraW5nIHVzZSBvZiB0aGlzIGtlcm5lbCBmZWF0dXJlIGNh bgpiZSBmb3VuZCBvbiBteSBnaXRodWIgcmVwb3MgWzFdWzJdWzNdLgoKVGhlcmUncyBjdXJyZW50 bHkgbm8gZGVidWdmcyBob29rIHRvIG1hbnVhbGx5IGZvcmNlIGEgcHVyZ2UsIGJ1dCB0aGlzCmlz IGJlaW5nIGRpc2N1c3NlZCBhbmQgbWlnaHQgYmUgYWRkZWQgbGF0ZXIgb24uCgpSZWdhcmRzLAoK Qm9yaXMKClsxXWh0dHBzOi8vZ2l0aHViLmNvbS9iYnJlemlsbG9uL2RybS90cmVlL3ZjNC9wdXJn ZWFibGUKWzJdaHR0cHM6Ly9naXRodWIuY29tL2JicmV6aWxsb24vbWVzYS90cmVlL3ZjNC9wdXJn ZWFibGUKWzNdaHR0cHM6Ly9naXRodWIuY29tL2JicmV6aWxsb24vaWd0L3RyZWUvdmM0L3B1cmdl YWJsZQoKQ2hhbmdlcyBpbiB2MzoKLSBVc2UgJXpkIGZvcm1hdHRlcnMgd2hlbiBwcmludGluZyBz aXplX3QgdmFsdWVzCi0gcmV3b3JrIGRldGVjdGlvbiBvZiBCT3MgdGhhdCBkbyBub3Qgc3VwcG9y dCB0aGUgTUFEViBpb2N0bAotIHJlcGxhY2UgRFJNX0VSUk9SIGJ5IERSTV9ERUJVRyBpbiB0aGUg aW9jdGwgcGF0aAotIGRvIG5vdCBleHBsaWNpdGx5IG1lbXplcm8gcHVyZ2VkIEJPIG1lbQotIGNo ZWNrIHRoYXQgcGFkIGlzIHNldCB0byB6ZXJvIGluIHRoZSBtYWR2IGlvY3RsIGZ1bmN0aW9uCgpD aGFuZ2VzIGluIHYyOgotIERvIG5vdCByZS1hbGxvY2F0ZSBCTydzIG1lbW9yeSBhZnRlciB3aGVu IFdJTExORUVEIGlzIGFza2VkIGFmdGVyIGEgcHVyZ2UKLSBBZGQgcHVyZ2VhYmxlL3B1cmdlZCBz dGF0cyB0byBkZWJ1Z2ZzIGFuZCBkdW1wc3RhdHMKLSBQYWQgdGhlIGRybV92YzRfZ2VtX21hZHZp c2UgdG8gbWFrZSBpdCA2NC1iaXQgYWxpZ25lZAotIEZvcmJpZCBtYWR2aXNlIGNhbGxzIG9uIGlu dGVybmFsIEJPIG9iamVjdHMgKGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QKICBtZWFudCB0byBiZSBl eHBvc2VkIHRvIHVzZXJzcGFjZSkKLSBEbyBub3QgaW5jcmVtZW50L2RlY3JlbWVudCB1c2VjbnQg b24gaW50ZXJuYWwgQk9zICh0aGV5IGNhbm5vdCBiZSBtYXJrZWQKICBwdXJnZWFibGUsIHNvIGRv aW5nIHRoYXQgaXMgdXNlbGVzcyBhbmQgZXJyb3IgcHJvbmUpCi0gRml4IGEgZmV3IGJ1Z3MgcmVs YXRlZCB0byB1c2VjbnQgcmVmY291bnRpbmcKLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9i by5jICAgIHwgMjkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIGRy aXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2Rydi5oICAgfCAgMzAgKysrKysKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5j ICAgfCAxNTYgKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9w bGFuZS5jIHwgIDIwICsrKwogaW5jbHVkZS91YXBpL2RybS92YzRfZHJtLmggICAgICB8ICAxOSAr KysKIDYgZmlsZXMgY2hhbmdlZCwgNTEyIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMgYi9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9iby5jCmluZGV4IDNhZmRiZjRiYzEwYi4uZTRkMTNiYmVmNTRmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2JvLmMKQEAgLTQyLDYgKzQyLDggQEAgc3RhdGljIGJvb2wgaXNfdXNlcl9sYWJlbChp bnQgbGFiZWwpCiAKIHN0YXRpYyB2b2lkIHZjNF9ib19zdGF0c19kdW1wKHN0cnVjdCB2YzRfZGV2 ICp2YzQpCiB7CisJc2l6ZV90IHB1cmdlYWJsZV9zaXplLCBwdXJnZWRfc2l6ZTsKKwl1bnNpZ25l ZCBpbnQgbnB1cmdlYWJsZSwgbnB1cmdlZDsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCB2 YzQtPm51bV9sYWJlbHM7IGkrKykgewpAQCAtNTMsNiArNTUsMjEgQEAgc3RhdGljIHZvaWQgdmM0 X2JvX3N0YXRzX2R1bXAoc3RydWN0IHZjNF9kZXYgKnZjNCkKIAkJCSB2YzQtPmJvX2xhYmVsc1tp XS5zaXplX2FsbG9jYXRlZCAvIDEwMjQsCiAJCQkgdmM0LT5ib19sYWJlbHNbaV0ubnVtX2FsbG9j YXRlZCk7CiAJfQorCisJbXV0ZXhfbG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7CisJbnB1cmdl YWJsZSA9IHZjNC0+cHVyZ2VhYmxlLm51bTsKKwlwdXJnZWFibGVfc2l6ZSA9IHZjNC0+cHVyZ2Vh YmxlLnNpemU7CisJcHVyZ2VkX3NpemUgPSB2YzQtPnB1cmdlYWJsZS5wdXJnZWRfc2l6ZTsKKwlu cHVyZ2VkID0gdmM0LT5wdXJnZWFibGUucHVyZ2VkX251bTsKKwltdXRleF91bmxvY2soJnZjNC0+ cHVyZ2VhYmxlLmxvY2spOworCisJaWYgKG5wdXJnZWFibGUpCisJCURSTV9JTkZPKCIlMzBzOiAl Nnpka2IgQk9zICglZClcbiIsICJ1c2Vyc3BhY2UgQk8gY2FjaGUiLAorCQkJIHB1cmdlYWJsZV9z aXplIC8gMTAyNCwgbnB1cmdlYWJsZSk7CisKKwlpZiAobnB1cmdlZCkKKwkJRFJNX0lORk8oIiUz MHM6ICU2emRrYiBCT3MgKCVkKVxuIiwgInRvdGFsIHB1cmdlZCBCTyIsCisJCQkgcHVyZ2VkX3Np emUgLyAxMDI0LCBucHVyZ2VkKTsKIH0KIAogI2lmZGVmIENPTkZJR19ERUJVR19GUwpAQCAtNjEs NiArNzgsOCBAQCBpbnQgdmM0X2JvX3N0YXRzX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9p bmZvX25vZGUgKiltLT5wcml2YXRlOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5t aW5vci0+ZGV2OwogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CisJc2l6 ZV90IHB1cmdlYWJsZV9zaXplLCBwdXJnZWRfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgbnB1cmdlYWJs ZSwgbnB1cmdlZDsKIAlpbnQgaTsKIAogCW11dGV4X2xvY2soJnZjNC0+Ym9fbG9jayk7CkBAIC03 NSw2ICs5NCwyMSBAQCBpbnQgdmM0X2JvX3N0YXRzX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCiAJfQogCW11dGV4X3VubG9jaygmdmM0LT5ib19sb2NrKTsKIAorCW11 dGV4X2xvY2soJnZjNC0+cHVyZ2VhYmxlLmxvY2spOworCW5wdXJnZWFibGUgPSB2YzQtPnB1cmdl YWJsZS5udW07CisJcHVyZ2VhYmxlX3NpemUgPSB2YzQtPnB1cmdlYWJsZS5zaXplOworCXB1cmdl ZF9zaXplID0gdmM0LT5wdXJnZWFibGUucHVyZ2VkX3NpemU7CisJbnB1cmdlZCA9IHZjNC0+cHVy Z2VhYmxlLnB1cmdlZF9udW07CisJbXV0ZXhfdW5sb2NrKCZ2YzQtPnB1cmdlYWJsZS5sb2NrKTsK KworCWlmIChucHVyZ2VhYmxlKQorCQlzZXFfcHJpbnRmKG0sICIlMzBzOiAlNmRrYiBCT3MgKCVk KVxuIiwgInVzZXJzcGFjZSBCTyBjYWNoZSIsCisJCQkgICBwdXJnZWFibGVfc2l6ZSAvIDEwMjQs IG5wdXJnZWFibGUpOworCisJaWYgKG5wdXJnZWQpCisJCXNlcV9wcmludGYobSwgIiUzMHM6ICU2 ZGtiIEJPcyAoJWQpXG4iLCAidG90YWwgcHVyZ2VkIEJPIiwKKwkJCSAgIHB1cmdlZF9zaXplIC8g MTAyNCwgbnB1cmdlZCk7CisKIAlyZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtMjQ3LDYgKzI4MSwx MDIgQEAgc3RhdGljIHZvaWQgdmM0X2JvX2NhY2hlX3B1cmdlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJbXV0ZXhfdW5sb2NrKCZ2YzQtPmJvX2xvY2spOwogfQogCit2b2lkIHZjNF9ib19hZGRf dG9fcHVyZ2VhYmxlX3Bvb2woc3RydWN0IHZjNF9ibyAqYm8pCit7CisJc3RydWN0IHZjNF9kZXYg KnZjNCA9IHRvX3ZjNF9kZXYoYm8tPmJhc2UuYmFzZS5kZXYpOworCisJbXV0ZXhfbG9jaygmdmM0 LT5wdXJnZWFibGUubG9jayk7CisJbGlzdF9hZGRfdGFpbCgmYm8tPnNpemVfaGVhZCwgJnZjNC0+ cHVyZ2VhYmxlLmxpc3QpOworCXZjNC0+cHVyZ2VhYmxlLm51bSsrOworCXZjNC0+cHVyZ2VhYmxl LnNpemUgKz0gYm8tPmJhc2UuYmFzZS5zaXplOworCW11dGV4X3VubG9jaygmdmM0LT5wdXJnZWFi bGUubG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIHZjNF9ib19yZW1vdmVfZnJvbV9wdXJnZWFibGVf cG9vbF9sb2NrZWQoc3RydWN0IHZjNF9ibyAqYm8pCit7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9 IHRvX3ZjNF9kZXYoYm8tPmJhc2UuYmFzZS5kZXYpOworCisJLyogbGlzdF9kZWxfaW5pdCgpIGlz IHVzZWQgaGVyZSBiZWNhdXNlIHRoZSBjYWxsZXIgbWlnaHQgcmVsZWFzZQorCSAqIHRoZSBwdXJn ZWFibGUgbG9jayBpbiBvcmRlciB0byBhY3F1aXJlIHRoZSBtYWR2IG9uZSBhbmQgdXBkYXRlIHRo ZQorCSAqIG1hZHYgc3RhdHVzLgorCSAqIER1cmluZyB0aGlzIHNob3J0IHBlcmlvZCBvZiB0aW1l IGEgdXNlciBtaWdodCBkZWNpZGUgdG8gbWFyaworCSAqIHRoZSBCTyBhcyB1bnB1cmdlYWJsZSwg YW5kIGlmIGJvLT5tYWR2IGlzIHNldCB0bworCSAqIFZDNF9NQURWX0RPTlRORUVEIGl0IHdpbGwg dHJ5IHRvIHJlbW92ZSB0aGUgQk8gZnJvbSB0aGUKKwkgKiBwdXJnZWFibGUgbGlzdCB3aGljaCB3 aWxsIGZhaWwgaWYgdGhlIC0+bmV4dC9wcmV2IGZpZWxkcworCSAqIGFyZSBzZXQgdG8gTElTVF9Q T0lTT04xL0xJU1RfUE9JU09OMiAod2hpY2ggaXMgd2hhdAorCSAqIGxpc3RfZGVsKCkgZG9lcyku CisJICogUmUtaW5pdGlhbGl6aW5nIHRoZSBsaXN0IGVsZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGxp c3RfZGVsKCkKKwkgKiB3aWxsIHdvcmsgY29ycmVjdGx5IGV2ZW4gaWYgaXQncyBhIE5PUC4KKwkg Ki8KKwlsaXN0X2RlbF9pbml0KCZiby0+c2l6ZV9oZWFkKTsKKwl2YzQtPnB1cmdlYWJsZS5udW0t LTsKKwl2YzQtPnB1cmdlYWJsZS5zaXplIC09IGJvLT5iYXNlLmJhc2Uuc2l6ZTsKK30KKwordm9p ZCB2YzRfYm9fcmVtb3ZlX2Zyb21fcHVyZ2VhYmxlX3Bvb2woc3RydWN0IHZjNF9ibyAqYm8pCit7 CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoYm8tPmJhc2UuYmFzZS5kZXYpOwor CisJbXV0ZXhfbG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7CisJdmM0X2JvX3JlbW92ZV9mcm9t X3B1cmdlYWJsZV9wb29sX2xvY2tlZChibyk7CisJbXV0ZXhfdW5sb2NrKCZ2YzQtPnB1cmdlYWJs ZS5sb2NrKTsKK30KKworc3RhdGljIHZvaWQgdmM0X2JvX3B1cmdlKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKQoreworCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKG9iaik7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9j a2VkKCZiby0+bWFkdl9sb2NrKSk7CisJV0FSTl9PTihiby0+bWFkdiAhPSBWQzRfTUFEVl9ET05U TkVFRCk7CisKKwlkcm1fdm1hX25vZGVfdW5tYXAoJm9iai0+dm1hX25vZGUsIGRldi0+YW5vbl9p bm9kZS0+aV9tYXBwaW5nKTsKKworCWRtYV9mcmVlX3djKGRldi0+ZGV2LCBvYmotPnNpemUsIGJv LT5iYXNlLnZhZGRyLCBiby0+YmFzZS5wYWRkcik7CisJYm8tPmJhc2UudmFkZHIgPSBOVUxMOwor CWJvLT5tYWR2ID0gX19WQzRfTUFEVl9QVVJHRUQ7Cit9CisKK3N0YXRpYyB2b2lkIHZjNF9ib191 c2Vyc3BhY2VfY2FjaGVfcHVyZ2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qg dmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOworCisJbXV0ZXhfbG9jaygmdmM0LT5wdXJn ZWFibGUubG9jayk7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZ2YzQtPnB1cmdlYWJsZS5saXN0KSkg eworCQlzdHJ1Y3QgdmM0X2JvICpibyA9IGxpc3RfZmlyc3RfZW50cnkoJnZjNC0+cHVyZ2VhYmxl Lmxpc3QsCisJCQkJCQkgICAgIHN0cnVjdCB2YzRfYm8sIHNpemVfaGVhZCk7CisJCXN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqID0gJmJvLT5iYXNlLmJhc2U7CisJCXNpemVfdCBwdXJnZWRfc2l6 ZSA9IDA7CisKKwkJdmM0X2JvX3JlbW92ZV9mcm9tX3B1cmdlYWJsZV9wb29sX2xvY2tlZChibyk7 CisKKwkJLyogUmVsZWFzZSB0aGUgcHVyZ2VhYmxlIGxvY2sgd2hpbGUgd2UncmUgcHVyZ2luZyB0 aGUgQk8gc28KKwkJICogdGhhdCBvdGhlciBwZW9wbGUgY2FuIGNvbnRpbnVlIGluc2VydGluZyB0 aGluZ3MgaW4gdGhlCisJCSAqIHB1cmdlYWJsZSBwb29sIHdpdGhvdXQgaGF2aW5nIHRvIHdhaXQg Zm9yIGFsbCBCT3MgdG8gYmUKKwkJICogcHVyZ2VkLgorCQkgKi8KKwkJbXV0ZXhfdW5sb2NrKCZ2 YzQtPnB1cmdlYWJsZS5sb2NrKTsKKwkJbXV0ZXhfbG9jaygmYm8tPm1hZHZfbG9jayk7CisKKwkJ LyogU2luY2Ugd2UgcmVsZWFzZWQgdGhlIHB1cmdlYWJsZSBwb29sIGxvY2sgYmVmb3JlIGFjcXVp cmluZworCQkgKiB0aGUgQk8gbWFkdiBvbmUsIHZjNF9nZW1fbWFkdmlzZV9pb2N0bCgpIG1heSBo YXZlIGNoYW5nZWQKKwkJICogdGhlIGJvLT5tYWR2IHN0YXR1cy4gSW4gdGhpcyBjYXNlLCBqdXN0 IHNraXAgdGhpcyBlbnRyeS4KKwkJICovCisJCWlmIChiby0+bWFkdiA9PSBWQzRfTUFEVl9ET05U TkVFRCkgeworCQkJcHVyZ2VkX3NpemUgPSBiby0+YmFzZS5iYXNlLnNpemU7CisJCQl2YzRfYm9f cHVyZ2Uob2JqKTsKKwkJfQorCQltdXRleF91bmxvY2soJmJvLT5tYWR2X2xvY2spOworCQltdXRl eF9sb2NrKCZ2YzQtPnB1cmdlYWJsZS5sb2NrKTsKKworCQlpZiAocHVyZ2VkX3NpemUpIHsKKwkJ CXZjNC0+cHVyZ2VhYmxlLnB1cmdlZF9zaXplICs9IHB1cmdlZF9zaXplOworCQkJdmM0LT5wdXJn ZWFibGUucHVyZ2VkX251bSsrOworCQl9CisJfQorCW11dGV4X3VubG9jaygmdmM0LT5wdXJnZWFi bGUubG9jayk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgdmM0X2JvICp2YzRfYm9fZ2V0X2Zyb21fY2Fj aGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgIHVpbnQzMl90IHNpemUsCiAJCQkJ CSAgICBlbnVtIHZjNF9rZXJuZWxfYm9fdHlwZSB0eXBlKQpAQCAtMjkzLDYgKzQyMyw5IEBAIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqdmM0X2NyZWF0ZV9vYmplY3Qoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc2l6ZV90IHNpemUpCiAJaWYgKCFibykKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKKwliby0+bWFkdiA9IFZDNF9NQURWX1dJTExORUVEOworCXJlZmNvdW50X3NldCgmYm8tPnVz ZWNudCwgMCk7CisJbXV0ZXhfaW5pdCgmYm8tPm1hZHZfbG9jayk7CiAJbXV0ZXhfbG9jaygmdmM0 LT5ib19sb2NrKTsKIAliby0+bGFiZWwgPSBWQzRfQk9fVFlQRV9LRVJORUw7CiAJdmM0LT5ib19s YWJlbHNbVkM0X0JPX1RZUEVfS0VSTkVMXS5udW1fYWxsb2NhdGVkKys7CkBAIC0zMzAsMTYgKzQ2 MywzOCBAQCBzdHJ1Y3QgdmM0X2JvICp2YzRfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHNpemVfdCB1bmFsaWduZWRfc2l6ZSwKIAkJICogQ01BIGFsbG9jYXRpb25zIHdlJ3ZlIGdv dCBsYXlpbmcgYXJvdW5kIGFuZCB0cnkgYWdhaW4uCiAJCSAqLwogCQl2YzRfYm9fY2FjaGVfcHVy Z2UoZGV2KTsKKwkJY21hX29iaiA9IGRybV9nZW1fY21hX2NyZWF0ZShkZXYsIHNpemUpOworCX0K IAorCWlmIChJU19FUlIoY21hX29iaikpIHsKKwkJLyoKKwkJICogU3RpbGwgbm90IGVub3VnaCBD TUEgbWVtb3J5LCBwdXJnZSB0aGUgdXNlcnNwYWNlIEJPCisJCSAqIGNhY2hlIGFuZCByZXRyeS4K KwkJICogVGhpcyBpcyBzdWItb3B0aW1hbCBzaW5jZSB3ZSBwdXJnZSB0aGUgd2hvbGUgdXNlcnNw YWNlCisJCSAqIEJPIGNhY2hlIHdoaWNoIGZvcmNlcyB1c2VyIHRoYXQgd2FudCB0byByZS11c2Ug dGhlIEJPIHRvCisJCSAqIHJlc3RvcmUgaXRzIGluaXRpYWwgY29udGVudC4KKwkJICogSWRlYWxs eSwgd2Ugc2hvdWxkIHB1cmdlIGVudHJpZXMgb25lIGJ5IG9uZSBhbmQgcmV0cnkKKwkJICogYWZ0 ZXIgZWFjaCB0byBzZWUgaWYgQ01BIGFsbG9jYXRpb24gc3VjY2VlZHMuIE9yIGV2ZW4KKwkJICog YmV0dGVyLCB0cnkgdG8gZmluZCBhbiBlbnRyeSB3aXRoIGF0IGxlYXN0IHRoZSBzYW1lCisJCSAq IHNpemUuCisJCSAqLworCQl2YzRfYm9fdXNlcnNwYWNlX2NhY2hlX3B1cmdlKGRldik7CiAJCWNt YV9vYmogPSBkcm1fZ2VtX2NtYV9jcmVhdGUoZGV2LCBzaXplKTsKLQkJaWYgKElTX0VSUihjbWFf b2JqKSkgewotCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgZnJvbSBDTUE6XG4iKTsK LQkJCXZjNF9ib19zdGF0c19kdW1wKHZjNCk7Ci0JCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK LQkJfQorCX0KKworCWlmIChJU19FUlIoY21hX29iaikpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgZnJvbSBDTUE6XG4iKTsKKwkJdmM0X2JvX3N0YXRzX2R1bXAodmM0KTsKKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJfQogCWJvID0gdG9fdmM0X2JvKCZjbWFfb2JqLT5i YXNlKTsKIAorCS8qIEJ5IGRlZmF1bHQsIEJPcyBkbyBub3Qgc3VwcG9ydCB0aGUgTUFEViBpb2N0 bC4gVGhpcyB3aWxsIGJlIGVuYWJsZWQKKwkgKiBvbmx5IG9uIEJPcyB0aGF0IGFyZSBleHBvc2Vk IHRvIHVzZXJzcGFjZSAoVjNELCBWM0RfU0hBREVSIGFuZCBEVU1CCisJICogQk9zKS4KKwkgKi8K Kwliby0+bWFkdiA9IF9fVkM0X01BRFZfTk9UU1VQUDsKKwogCW11dGV4X2xvY2soJnZjNC0+Ym9f bG9jayk7CiAJdmM0X2JvX3NldF9sYWJlbCgmY21hX29iai0+YmFzZSwgdHlwZSk7CiAJbXV0ZXhf dW5sb2NrKCZ2YzQtPmJvX2xvY2spOwpAQCAtMzY1LDYgKzUyMCw4IEBAIGludCB2YzRfZHVtYl9j cmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJaWYgKElTX0VSUihibykpCiAJCXJl dHVybiBQVFJfRVJSKGJvKTsKIAorCWJvLT5tYWR2ID0gVkM0X01BRFZfV0lMTE5FRUQ7CisKIAly ZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZV9wcml2LCAmYm8tPmJhc2UuYmFzZSwgJmFy Z3MtPmhhbmRsZSk7CiAJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZiby0+YmFzZS5iYXNl KTsKIApAQCAtNDAzLDYgKzU2MCwxMiBAQCB2b2lkIHZjNF9mcmVlX29iamVjdChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbV9ibykKIAlzdHJ1Y3QgdmM0X2JvICpibyA9IHRvX3ZjNF9ibyhnZW1f Ym8pOwogCXN0cnVjdCBsaXN0X2hlYWQgKmNhY2hlX2xpc3Q7CiAKKwkvKiBSZW1vdmUgdGhlIEJP IGZyb20gdGhlIHB1cmdlYWJsZSBsaXN0LiAqLworCW11dGV4X2xvY2soJmJvLT5tYWR2X2xvY2sp OworCWlmIChiby0+bWFkdiA9PSBWQzRfTUFEVl9ET05UTkVFRCAmJiAhcmVmY291bnRfcmVhZCgm Ym8tPnVzZWNudCkpCisJCXZjNF9ib19yZW1vdmVfZnJvbV9wdXJnZWFibGVfcG9vbChibyk7CisJ bXV0ZXhfdW5sb2NrKCZiby0+bWFkdl9sb2NrKTsKKwogCW11dGV4X2xvY2soJnZjNC0+Ym9fbG9j ayk7CiAJLyogSWYgdGhlIG9iamVjdCByZWZlcmVuY2VzIHNvbWVvbmUgZWxzZSdzIG1lbW9yeSwg d2UgY2FuJ3QgY2FjaGUgaXQuCiAJICovCkBAIC00MTgsNyArNTgxLDggQEAgdm9pZCB2YzRfZnJl ZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fYm8pCiAJfQogCiAJLyogSWYgdGhp cyBvYmplY3Qgd2FzIHBhcnRpYWxseSBjb25zdHJ1Y3RlZCBidXQgQ01BIGFsbG9jYXRpb24KLQkg KiBoYWQgZmFpbGVkLCBqdXN0IGZyZWUgaXQuCisJICogaGFkIGZhaWxlZCwganVzdCBmcmVlIGl0 LiBDYW4gYWxzbyBoYXBwZW4gd2hlbiB0aGUgQk8gaGFzIGJlZW4KKwkgKiBwdXJnZWQuCiAJICov CiAJaWYgKCFiby0+YmFzZS52YWRkcikgewogCQl2YzRfYm9fZGVzdHJveShibyk7CkBAIC00Mzcs NiArNjAxLDEwIEBAIHZvaWQgdmM0X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq Z2VtX2JvKQogCQliby0+dmFsaWRhdGVkX3NoYWRlciA9IE5VTEw7CiAJfQogCisJLyogUmVzZXQg bWFkdiBhbmQgdXNlY250IGJlZm9yZSBhZGRpbmcgdGhlIEJPIHRvIHRoZSBjYWNoZS4gKi8KKwli by0+bWFkdiA9IF9fVkM0X01BRFZfTk9UU1VQUDsKKwlyZWZjb3VudF9zZXQoJmJvLT51c2VjbnQs IDApOworCiAJYm8tPnRfZm9ybWF0ID0gZmFsc2U7CiAJYm8tPmZyZWVfdGltZSA9IGppZmZpZXM7 CiAJbGlzdF9hZGQoJmJvLT5zaXplX2hlYWQsIGNhY2hlX2xpc3QpOwpAQCAtNDYxLDYgKzYyOSw1 NiBAQCBzdGF0aWMgdm9pZCB2YzRfYm9fY2FjaGVfdGltZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIAltdXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7CiB9CiAKK2ludCB2YzRfYm9f aW5jX3VzZWNudChzdHJ1Y3QgdmM0X2JvICpibykKK3sKKwlpbnQgcmV0OworCisJLyogRmFzdCBw YXRoOiBpZiB0aGUgQk8gaXMgYWxyZWFkeSByZXRhaW5lZCBieSBzb21lb25lLCBubyBuZWVkIHRv CisJICogY2hlY2sgdGhlIG1hZHYgc3RhdHVzLgorCSAqLworCWlmIChyZWZjb3VudF9pbmNfbm90 X3plcm8oJmJvLT51c2VjbnQpKQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmJvLT5tYWR2 X2xvY2spOworCXN3aXRjaCAoYm8tPm1hZHYpIHsKKwljYXNlIFZDNF9NQURWX1dJTExORUVEOgor CQlyZWZjb3VudF9pbmMoJmJvLT51c2VjbnQpOworCQlyZXQgPSAwOworCQlicmVhazsKKwljYXNl IFZDNF9NQURWX0RPTlRORUVEOgorCQkvKiBXZSBzaG91bGRuJ3QgdXNlIGEgQk8gbWFya2VkIGFz IHB1cmdlYWJsZSBpZiBhdCBsZWFzdAorCQkgKiBzb21lb25lIGVsc2UgcmV0YWluZWQgaXRzIGNv bnRlbnQgYnkgaW5jcmVtZW50aW5nIHVzZWNudC4KKwkJICogTHVja2lseSB0aGUgQk8gaGFzbid0 IGJlZW4gcHVyZ2VkIHlldCwgYnV0IHNvbWV0aGluZyB3cm9uZworCQkgKiBpcyBoYXBwZW5pbmcg aGVyZS4gSnVzdCB0aHJvdyBhbiBlcnJvciBpbnN0ZWFkIG9mCisJCSAqIGF1dGhvcml6aW5nIHRo aXMgdXNlIGNhc2UuCisJCSAqLworCWNhc2UgX19WQzRfTUFEVl9QVVJHRUQ6CisJCS8qIFdlIGNh bid0IHVzZSBhIHB1cmdlZCBCTy4gKi8KKwlkZWZhdWx0OgorCQkvKiBJbnZhbGlkIG1hZHYgdmFs dWUuICovCisJCXJldCA9IC1FSU5WQUw7CisJCWJyZWFrOworCX0KKwltdXRleF91bmxvY2soJmJv LT5tYWR2X2xvY2spOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCB2YzRfYm9fZGVjX3VzZWNu dChzdHJ1Y3QgdmM0X2JvICpibykKK3sKKwkvKiBGYXN0IHBhdGg6IGlmIHRoZSBCTyBpcyBzdGls bCByZXRhaW5lZCBieSBzb21lb25lLCBubyBuZWVkIHRvIHRlc3QKKwkgKiB0aGUgbWFkdiB2YWx1 ZS4KKwkgKi8KKwlpZiAocmVmY291bnRfZGVjX25vdF9vbmUoJmJvLT51c2VjbnQpKQorCQlyZXR1 cm47CisKKwltdXRleF9sb2NrKCZiby0+bWFkdl9sb2NrKTsKKwlpZiAocmVmY291bnRfZGVjX2Fu ZF90ZXN0KCZiby0+dXNlY250KSAmJgorCSAgICBiby0+bWFkdiA9PSBWQzRfTUFEVl9ET05UTkVF RCkKKwkJdmM0X2JvX2FkZF90b19wdXJnZWFibGVfcG9vbChibyk7CisJbXV0ZXhfdW5sb2NrKCZi by0+bWFkdl9sb2NrKTsKK30KKwogc3RhdGljIHZvaWQgdmM0X2JvX2NhY2hlX3RpbWVfdGltZXIo dW5zaWduZWQgbG9uZyBkYXRhKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAoc3RydWN0 IGRybV9kZXZpY2UgKilkYXRhOwpAQCAtNDgwLDE4ICs2OTgsNTIgQEAgc3RydWN0IGRtYV9idWYg KgogdmM0X3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKQogewogCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0 X2JvKG9iaik7CisJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKKwlpbnQgcmV0OwogCiAJaWYgKGJv LT52YWxpZGF0ZWRfc2hhZGVyKSB7CiAJCURSTV9ERUJVRygiQXR0ZW1wdGluZyB0byBleHBvcnQg c2hhZGVyIEJPXG4iKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAJfQogCi0JcmV0dXJu IGRybV9nZW1fcHJpbWVfZXhwb3J0KGRldiwgb2JqLCBmbGFncyk7CisJLyogTm90ZTogYXMgc29v biBhcyB0aGUgQk8gaXMgZXhwb3J0ZWQgaXQgYmVjb21lcyB1bnB1cmdlYWJsZSwgYmVjYXVzZQor CSAqIG5vb25lIGV2ZXIgZGVjcmVtZW50cyB0aGUgdXNlY250IGV2ZW4gaWYgdGhlIHJlZmVyZW5j ZSBoZWxkIGJ5IHRoZQorCSAqIGV4cG9ydGVkIEJPIGlzIHJlbGVhc2VkLiBUaGlzIHNob3VsZG4n dCBiZSBhIHByb2JsZW0gc2luY2Ugd2UgZG9uJ3QKKwkgKiBleHBlY3QgZXhwb3J0ZWQgQk9zIHRv IGJlIG1hcmtlZCBhcyBwdXJnZWFibGUuCisJICovCisJcmV0ID0gdmM0X2JvX2luY191c2VjbnQo Ym8pOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5jcmVtZW50IEJPIHVz ZWNudFxuIik7CisJCXJldHVybiBFUlJfUFRSKHJldCk7CisJfQorCisJZG1hYnVmID0gZHJtX2dl bV9wcmltZV9leHBvcnQoZGV2LCBvYmosIGZsYWdzKTsKKwlpZiAoSVNfRVJSKGRtYWJ1ZikpCisJ CXZjNF9ib19kZWNfdXNlY250KGJvKTsKKworCXJldHVybiBkbWFidWY7Cit9CisKK2ludCB2YzRf ZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCit7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEgPSB2bWYtPnZtYTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+dm1fcHJp dmF0ZV9kYXRhOworCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKG9iaik7CisKKwkvKiBU aGUgb25seSByZWFzb24gd2Ugd291bGQgZW5kIHVwIGhlcmUgaXMgd2hlbiB1c2VyLXNwYWNlIGFj Y2Vzc2VzCisJICogQk8ncyBtZW1vcnkgYWZ0ZXIgaXQncyBiZWVuIHB1cmdlZC4KKwkgKi8KKwlt dXRleF9sb2NrKCZiby0+bWFkdl9sb2NrKTsKKwlXQVJOX09OKGJvLT5tYWR2ICE9IF9fVkM0X01B RFZfUFVSR0VEKTsKKwltdXRleF91bmxvY2soJmJvLT5tYWR2X2xvY2spOworCisJcmV0dXJuIFZN X0ZBVUxUX1NJR0JVUzsKIH0KIAogaW50IHZjNF9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9v Ymo7CisJdW5zaWduZWQgbG9uZyB2bV9wZ29mZjsKIAlzdHJ1Y3QgdmM0X2JvICpibzsKIAlpbnQg cmV0OwogCkBAIC01MDcsMTYgKzc1OSwzNiBAQCBpbnQgdmM0X21tYXAoc3RydWN0IGZpbGUgKmZp bHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAK KwlpZiAoYm8tPm1hZHYgIT0gVkM0X01BRFZfV0lMTE5FRUQpIHsKKwkJRFJNX0RFQlVHKCJtbWFw aW5nIG9mICVzIEJPIG5vdCBhbGxvd2VkXG4iLAorCQkJICBiby0+bWFkdiA9PSBWQzRfTUFEVl9E T05UTkVFRCA/CisJCQkgICJwdXJnZWFibGUiIDogInB1cmdlZCIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKIAkvKgogCSAqIENsZWFyIHRoZSBWTV9QRk5NQVAgZmxhZyB0aGF0IHdhcyBzZXQg YnkgZHJtX2dlbV9tbWFwKCksIGFuZCBzZXQgdGhlCiAJICogdm1fcGdvZmYgKHVzZWQgYXMgYSBm YWtlIGJ1ZmZlciBvZmZzZXQgYnkgRFJNKSB0byAwIGFzIHdlIHdhbnQgdG8gbWFwCiAJICogdGhl IHdob2xlIGJ1ZmZlci4KIAkgKi8KIAl2bWEtPnZtX2ZsYWdzICY9IH5WTV9QRk5NQVA7Ci0Jdm1h LT52bV9wZ29mZiA9IDA7CiAKKwkvKiBUaGlzIC0+dm1fcGdvZmYgZGFuY2UgaXMgbmVlZGVkIHRv IG1ha2UgYWxsIHBhcnRpZXMgaGFwcHk6CisJICogLSBkbWFfbW1hcF93YygpIHVzZXMgLT52bV9w Z29mZiBhcyBhbiBvZmZzZXQgd2l0aGluIHRoZSBhbGxvY2F0ZWQKKwkgKiAgIG1lbS1yZWdpb24s IGhlbmNlIHRoZSBuZWVkIHRvIHNldCBpdCB0byB6ZXJvICh0aGUgdmFsdWUgc2V0IGJ5CisJICog ICB0aGUgRFJNIGNvcmUgaXMgYSB2aXJ0dWFsIG9mZnNldCBlbmNvZGluZyB0aGUgR0VNIG9iamVj dC1pZCkKKwkgKiAtIHRoZSBtbWFwKCkgY29yZSBsb2dpYyBuZWVkcyAtPnZtX3Bnb2ZmIHRvIGJl IHJlc3RvcmVkIHRvIGl0cworCSAqICAgaW5pdGlhbCBiZWZvcmUgcmV0dXJuaW5nIGZyb20gdGhp cyBmdW5jdGlvbiBiZWNhdXNlIGl0IGVuY29kZXMgdGhlCisJICogICBvZmZzZXQgb2YgdGhpcyBH RU0gaW4gdGhlIGRldi0+YW5vbl9pbm9kZSBwc2V1ZG8tZmlsZSBhbmQgdGhpcworCSAqICAgaW5m b3JtYXRpb24gd2lsbCBiZSB1c2VkIHdoZW4gd2UgaW52YWxpZGF0ZSB1c2Vyc3BhY2UgbWFwcGlu Z3MKKwkgKiAgIHdpdGggZHJtX3ZtYV9ub2RlX3VubWFwKCkgKGNhbGxlZCBmcm9tIHZjNF9nZW1f cHVyZ2UoKSkuCisJICovCisJdm1fcGdvZmYgPSB2bWEtPnZtX3Bnb2ZmOworCXZtYS0+dm1fcGdv ZmYgPSAwOwogCXJldCA9IGRtYV9tbWFwX3djKGJvLT5iYXNlLmJhc2UuZGV2LT5kZXYsIHZtYSwg Ym8tPmJhc2UudmFkZHIsCiAJCQkgIGJvLT5iYXNlLnBhZGRyLCB2bWEtPnZtX2VuZCAtIHZtYS0+ dm1fc3RhcnQpOworCXZtYS0+dm1fcGdvZmYgPSB2bV9wZ29mZjsKKwogCWlmIChyZXQpCiAJCWRy bV9nZW1fdm1fY2xvc2Uodm1hKTsKIApAQCAtNTgwLDYgKzg1Miw4IEBAIGludCB2YzRfY3JlYXRl X2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKElTX0VS UihibykpCiAJCXJldHVybiBQVFJfRVJSKGJvKTsKIAorCWJvLT5tYWR2ID0gVkM0X01BRFZfV0lM TE5FRUQ7CisKIAlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZV9wcml2LCAmYm8tPmJh c2UuYmFzZSwgJmFyZ3MtPmhhbmRsZSk7CiAJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZi by0+YmFzZS5iYXNlKTsKIApAQCAtNjMzLDYgKzkwNyw4IEBAIHZjNF9jcmVhdGVfc2hhZGVyX2Jv X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKElTX0VSUihi bykpCiAJCXJldHVybiBQVFJfRVJSKGJvKTsKIAorCWJvLT5tYWR2ID0gVkM0X01BRFZfV0lMTE5F RUQ7CisKIAlpZiAoY29weV9mcm9tX3VzZXIoYm8tPmJhc2UudmFkZHIsCiAJCQkgICAgICh2b2lk IF9fdXNlciAqKSh1aW50cHRyX3QpYXJncy0+ZGF0YSwKIAkJCSAgICAgYXJncy0+c2l6ZSkpIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZHJ2LmMKaW5kZXggMWM5NmVkY2IzMDJiLi5lM2MyOTcyOWRhMmUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2Rydi5jCkBAIC0xMDAsNiArMTAwLDcgQEAgc3RhdGljIGludCB2YzRfZ2V0X3Bh cmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJY2FzZSBEUk1f VkM0X1BBUkFNX1NVUFBPUlRTX0VUQzE6CiAJY2FzZSBEUk1fVkM0X1BBUkFNX1NVUFBPUlRTX1RI UkVBREVEX0ZTOgogCWNhc2UgRFJNX1ZDNF9QQVJBTV9TVVBQT1JUU19GSVhFRF9SQ0xfT1JERVI6 CisJY2FzZSBEUk1fVkM0X1BBUkFNX1NVUFBPUlRTX01BRFZJU0U6CiAJCWFyZ3MtPnZhbHVlID0g dHJ1ZTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKQEAgLTExNyw2ICsxMTgsMTIgQEAgc3RhdGljIHZv aWQgdmM0X2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWRybV9mYmRldl9jbWFf cmVzdG9yZV9tb2RlKHZjNC0+ZmJkZXYpOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29w ZXJhdGlvbnNfc3RydWN0IHZjNF92bV9vcHMgPSB7CisJLmZhdWx0ID0gdmM0X2ZhdWx0LAorCS5v cGVuID0gZHJtX2dlbV92bV9vcGVuLAorCS5jbG9zZSA9IGRybV9nZW1fdm1fY2xvc2UsCit9Owor CiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2YzRfZHJtX2ZvcHMgPSB7CiAJ Lm93bmVyID0gVEhJU19NT0RVTEUsCiAJLm9wZW4gPSBkcm1fb3BlbiwKQEAgLTE0Miw2ICsxNDks NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIHZjNF9kcm1faW9jdGxzW10g PSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoVkM0X1NFVF9USUxJTkcsIHZjNF9zZXRfdGlsaW5nX2lv Y3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihWQzRfR0VUX1RJTElO RywgdmM0X2dldF90aWxpbmdfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9E RUZfRFJWKFZDNF9MQUJFTF9CTywgdmM0X2xhYmVsX2JvX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9X KSwKKwlEUk1fSU9DVExfREVGX0RSVihWQzRfR0VNX01BRFZJU0UsIHZjNF9nZW1fbWFkdmlzZV9p b2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiB9OwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIg dmM0X2RybV9kcml2ZXIgPSB7CkBAIC0xNjYsNyArMTc0LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1f ZHJpdmVyIHZjNF9kcm1fZHJpdmVyID0gewogCiAJLmdlbV9jcmVhdGVfb2JqZWN0ID0gdmM0X2Ny ZWF0ZV9vYmplY3QsCiAJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IHZjNF9mcmVlX29iamVj dCwKLQkuZ2VtX3ZtX29wcyA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCisJLmdlbV92bV9vcHMgPSAm dmM0X3ZtX29wcywKIAogCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3ByaW1lX2hhbmRs ZV90b19mZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5k bGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X2Rydi5oCmluZGV4IDg3ZjJkOGU1YzEzNC4uZjU0YzFmNWNlNDdmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9kcnYuaApAQCAtNzQsNiArNzQsMTkgQEAgc3RydWN0IHZjNF9kZXYgewog CS8qIFByb3RlY3RzIGJvX2NhY2hlIGFuZCBib19sYWJlbHMuICovCiAJc3RydWN0IG11dGV4IGJv X2xvY2s7CiAKKwkvKiBQdXJnZWFibGUgQk8gcG9vbC4gQWxsIEJPcyBpbiB0aGlzIHBvb2wgY2Fu IGhhdmUgdGhlaXIgbWVtb3J5CisJICogcmVjbGFpbWVkIGlmIHRoZSBkcml2ZXIgaXMgdW5hYmxl IHRvIGFsbG9jYXRlIG5ldyBCT3MuIFdlIGFsc28KKwkgKiBrZWVwIHN0YXRzIHJlbGF0ZWQgdG8g dGhlIHB1cmdlIG1lY2hhbmlzbSBoZXJlLgorCSAqLworCXN0cnVjdCB7CisJCXN0cnVjdCBsaXN0 X2hlYWQgbGlzdDsKKwkJdW5zaWduZWQgaW50IG51bTsKKwkJc2l6ZV90IHNpemU7CisJCXVuc2ln bmVkIGludCBwdXJnZWRfbnVtOworCQlzaXplX3QgcHVyZ2VkX3NpemU7CisJCXN0cnVjdCBtdXRl eCBsb2NrOworCX0gcHVyZ2VhYmxlOworCiAJdWludDY0X3QgZG1hX2ZlbmNlX2NvbnRleHQ7CiAK IAkvKiBTZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGpvYiBxdWV1ZWQgaW4gYmluX2pvYl9s aXN0LgpAQCAtMTkyLDYgKzIwNSwxNiBAQCBzdHJ1Y3QgdmM0X2JvIHsKIAkgKiBmb3IgdXNlci1h bGxvY2F0ZWQgbGFiZWxzLgogCSAqLwogCWludCBsYWJlbDsKKworCS8qIENvdW50IHRoZSBudW1i ZXIgb2YgYWN0aXZlIHVzZXJzLiBUaGlzIGlzIG5lZWRlZCB0byBkZXRlcm1pbmUKKwkgKiB3aGV0 aGVyIHdlIGNhbiB0aGUgQk8gdG8gdGhlIHB1cmdlYWJsZSBvciBub3QgKHdoZW4gdGhlIEJPIGlz IHVzZWQKKwkgKiBieSB0aGUgR1BVIG9yIHRoZSBkaXNwbGF5IGVuZ2luZSB3ZSBjYW4ndCBwdXJn ZSBpdCkuCisJICovCisJcmVmY291bnRfdCB1c2VjbnQ7CisKKwkvKiBTdG9yZSBwdXJnZWFibGUv cHVyZ2VkIHN0YXRlIGhlcmUgKi8KKwl1MzIgbWFkdjsKKwlzdHJ1Y3QgbXV0ZXggbWFkdl9sb2Nr OwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2JvICoKQEAgLTUwMyw2ICs1MjYsNyBA QCBpbnQgdmM0X2dldF9oYW5nX3N0YXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCB2YzRf bGFiZWxfYm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJICAg ICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCB2YzRfZmF1bHQoc3RydWN0IHZt X2ZhdWx0ICp2bWYpOwogaW50IHZjNF9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSk7CiBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICp2YzRfcHJpbWVf cmVzX29iaihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CiBpbnQgdmM0X3ByaW1lX21tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsK QEAgLTUxMyw2ICs1MzcsMTAgQEAgdm9pZCAqdmM0X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopOwogaW50IHZjNF9ib19jYWNoZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCB2YzRfYm9fY2FjaGVfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IGludCB2YzRfYm9fc3RhdHNfZGVidWdmcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZyk7 CitpbnQgdmM0X2JvX2luY191c2VjbnQoc3RydWN0IHZjNF9ibyAqYm8pOwordm9pZCB2YzRfYm9f ZGVjX3VzZWNudChzdHJ1Y3QgdmM0X2JvICpibyk7Cit2b2lkIHZjNF9ib19hZGRfdG9fcHVyZ2Vh YmxlX3Bvb2woc3RydWN0IHZjNF9ibyAqYm8pOwordm9pZCB2YzRfYm9fcmVtb3ZlX2Zyb21fcHVy Z2VhYmxlX3Bvb2woc3RydWN0IHZjNF9ibyAqYm8pOwogCiAvKiB2YzRfY3J0Yy5jICovCiBleHRl cm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2YzRfY3J0Y19kcml2ZXI7CkBAIC01NTcsNiArNTg1 LDggQEAgdm9pZCB2YzRfam9iX2hhbmRsZV9jb21wbGV0ZWQoc3RydWN0IHZjNF9kZXYgKnZjNCk7 CiBpbnQgdmM0X3F1ZXVlX3NlcW5vX2NiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAg ICBzdHJ1Y3QgdmM0X3NlcW5vX2NiICpjYiwgdWludDY0X3Qgc2Vxbm8sCiAJCSAgICAgICB2b2lk ICgqZnVuYykoc3RydWN0IHZjNF9zZXFub19jYiAqY2IpKTsKK2ludCB2YzRfZ2VtX21hZHZpc2Vf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXYpOwogCiAvKiB2YzRfaGRtaS5jICovCiBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciB2YzRfaGRtaV9kcml2ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5jCmluZGV4IGQw YzZiZmI2OGM0ZS4uNTBhMGIyNjM4YTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYwpAQCAtMTg4LDEx ICsxODgsMjIgQEAgdmM0X3NhdmVfaGFuZ19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CQkJY29udGludWU7CiAKIAkJZm9yIChqID0gMDsgaiA8IGV4ZWNbaV0tPmJvX2NvdW50OyBqKysp IHsKKwkJCWJvID0gdG9fdmM0X2JvKCZleGVjW2ldLT5ib1tqXS0+YmFzZSk7CisKKwkJCS8qIFJl dGFpbiBCT3MganVzdCBpbiBjYXNlIHRoZXkgd2VyZSBtYXJrZWQgcHVyZ2VhYmxlLgorCQkJICog VGhpcyBwcmV2ZW50cyB0aGUgQk8gZnJvbSBiZWluZyBwdXJnZWQgYmVmb3JlCisJCQkgKiBzb21l b25lIGhhZCBhIGNoYW5jZSB0byBkdW1wIHRoZSBoYW5nIHN0YXRlLgorCQkJICovCisJCQlXQVJO X09OKCFyZWZjb3VudF9yZWFkKCZiby0+dXNlY250KSk7CisJCQlyZWZjb3VudF9pbmMoJmJvLT51 c2VjbnQpOwogCQkJZHJtX2dlbV9vYmplY3RfZ2V0KCZleGVjW2ldLT5ib1tqXS0+YmFzZSk7CiAJ CQlrZXJuZWxfc3RhdGUtPmJvW2ogKyBwcmV2X2lkeF0gPSAmZXhlY1tpXS0+Ym9bal0tPmJhc2U7 CiAJCX0KIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmZXhlY1tpXS0+dW5yZWZfbGlzdCwg dW5yZWZfaGVhZCkgeworCQkJLyogTm8gbmVlZCB0byByZXRhaW4gQk9zIGNvbWluZyBmcm9tIHRo ZSAtPnVucmVmX2xpc3QKKwkJCSAqIGJlY2F1c2UgdGhleSBhcmUgbmF0dXJhbGx5IHVucHVyZ2Vh YmxlLgorCQkJICovCiAJCQlkcm1fZ2VtX29iamVjdF9nZXQoJmJvLT5iYXNlLmJhc2UpOwogCQkJ a2VybmVsX3N0YXRlLT5ib1tqICsgcHJldl9pZHhdID0gJmJvLT5iYXNlLmJhc2U7CiAJCQlqKys7 CkBAIC0yMzMsNiArMjQ0LDI2IEBAIHZjNF9zYXZlX2hhbmdfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAlzdGF0ZS0+ZmRiZ3MgPSBWM0RfUkVBRChWM0RfRkRCR1MpOwogCXN0YXRlLT5l cnJzdGF0ID0gVjNEX1JFQUQoVjNEX0VSUlNUQVQpOwogCisJLyogV2UgbmVlZCB0byB0dXJuIHB1 cmdlYWJsZSBCT3MgaW50byB1bnB1cmdlYWJsZSBvbmVzIHNvIHRoYXQKKwkgKiB1c2Vyc3BhY2Ug aGFzIGEgY2hhbmNlIHRvIGR1bXAgdGhlIGhhbmcgc3RhdGUgYmVmb3JlIHRoZSBrZXJuZWwKKwkg KiBkZWNpZGVzIHRvIHB1cmdlIHRob3NlIEJPcy4KKwkgKiBOb3RlIHRoYXQgQk8gY29uc2lzdGVu Y3kgYXQgZHVtcCB0aW1lIGNhbm5vdCBiZSBndWFyYW50ZWVkLiBGb3IKKwkgKiBleGFtcGxlLCBp ZiB0aGUgb3duZXIgb2YgdGhlc2UgQk9zIGRlY2lkZXMgdG8gcmUtdXNlIHRoZW0gb3IgbWFyawor CSAqIHRoZW0gcHVyZ2VhYmxlIGFnYWluIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gdG8gcHJl dmVudCBpdC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwga2VybmVsX3N0YXRlLT51c2VyX3N0YXRl LmJvX2NvdW50OyBpKyspIHsKKwkJc3RydWN0IHZjNF9ibyAqYm8gPSB0b192YzRfYm8oa2VybmVs X3N0YXRlLT5ib1tpXSk7CisKKwkJaWYgKGJvLT5tYWR2ID09IF9fVkM0X01BRFZfTk9UU1VQUCkK KwkJCWNvbnRpbnVlOworCisJCW11dGV4X2xvY2soJmJvLT5tYWR2X2xvY2spOworCQlpZiAoIVdB Uk5fT04oYm8tPm1hZHYgPT0gX19WQzRfTUFEVl9QVVJHRUQpKQorCQkJYm8tPm1hZHYgPSBWQzRf TUFEVl9XSUxMTkVFRDsKKwkJcmVmY291bnRfZGVjKCZiby0+dXNlY250KTsKKwkJbXV0ZXhfdW5s b2NrKCZiby0+bWFkdl9sb2NrKTsKKwl9CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdmM0LT5qb2Jf bG9jaywgaXJxZmxhZ3MpOwogCWlmICh2YzQtPmhhbmdfc3RhdGUpIHsKIAkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmdmM0LT5qb2JfbG9jaywgaXJxZmxhZ3MpOwpAQCAtNjM5LDkgKzY3MCw2IEBA IHZjNF9xdWV1ZV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9leGVj X2luZm8gKmV4ZWMsCiAgKiBUaGUgY29tbWFuZCB2YWxpZGF0b3IgbmVlZHMgdG8gcmVmZXJlbmNl IEJPcyBieSB0aGVpciBpbmRleCB3aXRoaW4KICAqIHRoZSBzdWJtaXR0ZWQgam9iJ3MgQk8gbGlz dC4gIFRoaXMgZG9lcyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgam9iJ3MKICAqIEJPIGxpc3QgYW5k IHJlZmVyZW5jZSBjb3VudGluZyBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBqb2IuCi0gKgotICog Tm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIHVucmVmZXJlbmNlIHRoZSBC T3Mgb24KLSAqIGZhaWx1cmUsIGJlY2F1c2UgdGhhdCB3aWxsIGhhcHBlbiBhdCB2YzRfY29tcGxl dGVfZXhlYygpIHRpbWUuCiAgKi8KIHN0YXRpYyBpbnQKIHZjNF9jbF9sb29rdXBfYm9zKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCkBAIC02OTMsMTYgKzcyMSw0NyBAQCB2YzRfY2xfbG9va3VwX2Jv cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJRFJNX0RFQlVHKCJGYWlsZWQgdG8gbG9vayB1 cCBHRU0gQk8gJWQ6ICVkXG4iLAogCQkJCSAgaSwgaGFuZGxlc1tpXSk7CiAJCQlyZXQgPSAtRUlO VkFMOwotCQkJc3Bpbl91bmxvY2soJmZpbGVfcHJpdi0+dGFibGVfbG9jayk7Ci0JCQlnb3RvIGZh aWw7CisJCQlicmVhazsKIAkJfQorCiAJCWRybV9nZW1fb2JqZWN0X2dldChibyk7CiAJCWV4ZWMt PmJvW2ldID0gKHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKilibzsKIAl9CiAJc3Bpbl91bmxv Y2soJmZpbGVfcHJpdi0+dGFibGVfbG9jayk7CiAKKwlpZiAocmV0KQorCQlnb3RvIGZhaWxfcHV0 X2JvOworCisJZm9yIChpID0gMDsgaSA8IGV4ZWMtPmJvX2NvdW50OyBpKyspIHsKKwkJcmV0ID0g dmM0X2JvX2luY191c2VjbnQodG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+YmFzZSkpOworCQlpZiAo cmV0KQorCQkJZ290byBmYWlsX2RlY191c2VjbnQ7CisJfQorCisJa3ZmcmVlKGhhbmRsZXMpOwor CXJldHVybiAwOworCitmYWlsX2RlY191c2VjbnQ6CisJLyogRGVjcmVhc2UgdXNlY250IG9uIGFj cXVpcmVkIG9iamVjdHMuCisJICogV2UgY2Fubm90IHJlbHkgb24gIHZjNF9jb21wbGV0ZV9leGVj KCkgdG8gcmVsZWFzZSByZXNvdXJjZXMgaGVyZSwKKwkgKiBiZWNhdXNlIHZjNF9jb21wbGV0ZV9l eGVjKCkgaGFzIG5vIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIEJPIGhhcworCSAqIGhhZCBpdHMg LT51c2VjbnQgaW5jcmVtZW50ZWQuCisJICogVG8gbWFrZSB0aGluZ3MgZWFzaWVyIHdlIGp1c3Qg ZnJlZSBldmVyeXRoaW5nIGV4cGxpY2l0bHkgYW5kIHNldAorCSAqIGV4ZWMtPmJvIHRvIE5VTEwg c28gdGhhdCB2YzRfY29tcGxldGVfZXhlYygpIHNraXBzIHRoZSAnQk8gcmVsZWFzZScKKwkgKiBz dGVwLgorCSAqLworCWZvciAoaS0tIDsgaSA+PSAwOyBpLS0pCisJCXZjNF9ib19kZWNfdXNlY250 KHRvX3ZjNF9ibygmZXhlYy0+Ym9baV0tPmJhc2UpKTsKKworZmFpbF9wdXRfYm86CisJLyogUmVs ZWFzZSBhbnkgcmVmZXJlbmNlIHRvIGFjcXVpcmVkIG9iamVjdHMuICovCisJZm9yIChpID0gMDsg aSA8IGV4ZWMtPmJvX2NvdW50ICYmIGV4ZWMtPmJvW2ldOyBpKyspCisJCWRybV9nZW1fb2JqZWN0 X3B1dCgmZXhlYy0+Ym9baV0tPmJhc2UpOworCiBmYWlsOgogCWt2ZnJlZShoYW5kbGVzKTsKKwlr dmZyZWUoZXhlYy0+Ym8pOworCWV4ZWMtPmJvID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCkBA IC04MzMsOCArODkyLDEyIEBAIHZjNF9jb21wbGV0ZV9leGVjKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjKQogCQlkbWFfZmVuY2Vfc2lnbmFsKGV4ZWMt PmZlbmNlKTsKIAogCWlmIChleGVjLT5ibykgewotCQlmb3IgKGkgPSAwOyBpIDwgZXhlYy0+Ym9f Y291bnQ7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IGV4ZWMtPmJvX2NvdW50OyBpKyspIHsKKwkJ CXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+YmFzZSk7CisKKwkJ CXZjNF9ib19kZWNfdXNlY250KGJvKTsKIAkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgm ZXhlYy0+Ym9baV0tPmJhc2UpOworCQl9CiAJCWt2ZnJlZShleGVjLT5ibyk7CiAJfQogCkBAIC0x MDk4LDYgKzExNjEsOSBAQCB2YzRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlJ TklUX1dPUksoJnZjNC0+am9iX2RvbmVfd29yaywgdmM0X2pvYl9kb25lX3dvcmspOwogCiAJbXV0 ZXhfaW5pdCgmdmM0LT5wb3dlcl9sb2NrKTsKKworCUlOSVRfTElTVF9IRUFEKCZ2YzQtPnB1cmdl YWJsZS5saXN0KTsKKwltdXRleF9pbml0KCZ2YzQtPnB1cmdlYWJsZS5sb2NrKTsKIH0KIAogdm9p ZApAQCAtMTEyMSwzICsxMTg3LDgxIEBAIHZjNF9nZW1fZGVzdHJveShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCWlmICh2YzQtPmhhbmdfc3RhdGUpCiAJCXZjNF9mcmVlX2hhbmdfc3RhdGUoZGV2 LCB2YzQtPmhhbmdfc3RhdGUpOwogfQorCitpbnQgdmM0X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KQoreworCXN0cnVjdCBkcm1fdmM0X2dlbV9tYWR2aXNlICphcmdzID0gZGF0YTsKKwlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7CisJc3RydWN0IHZjNF9ibyAqYm87CisJaW50 IHJldDsKKworCXN3aXRjaCAoYXJncy0+bWFkdikgeworCWNhc2UgVkM0X01BRFZfRE9OVE5FRUQ6 CisJY2FzZSBWQzRfTUFEVl9XSUxMTkVFRDoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaWYgKGFyZ3MtPnBhZCAhPSAwKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWdlbV9vYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZV9wcml2LCBhcmdzLT5oYW5k bGUpOworCWlmICghZ2VtX29iaikgeworCQlEUk1fREVCVUcoIkZhaWxlZCB0byBsb29rIHVwIEdF TSBCTyAlZFxuIiwgYXJncy0+aGFuZGxlKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJYm8g PSB0b192YzRfYm8oZ2VtX29iaik7CisKKwkvKiBPbmx5IEJPcyBleHBvc2VkIHRvIHVzZXJzcGFj ZSBjYW4gYmUgcHVyZ2VkLiAqLworCWlmIChiby0+bWFkdiA9PSBfX1ZDNF9NQURWX05PVFNVUFAp IHsKKwkJRFJNX0RFQlVHKCJtYWR2aXNlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBCT1xuIik7CisJ CXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X3B1dF9nZW07CisJfQorCisJLyogTm90IHN1cmUg aXQncyBzYWZlIHRvIHB1cmdlIGltcG9ydGVkIEJPcy4gTGV0J3MganVzdCBhc3N1bWUgaXQncwor CSAqIG5vdCB1bnRpbCBwcm92ZW4gb3RoZXJ3aXNlLgorCSAqLworCWlmIChnZW1fb2JqLT5pbXBv cnRfYXR0YWNoKSB7CisJCURSTV9ERUJVRygibWFkdmlzZSBub3Qgc3VwcG9ydGVkIG9uIGltcG9y dGVkIEJPc1xuIik7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X3B1dF9nZW07CisJfQor CisJbXV0ZXhfbG9jaygmYm8tPm1hZHZfbG9jayk7CisKKwlpZiAoYXJncy0+bWFkdiA9PSBWQzRf TUFEVl9ET05UTkVFRCAmJiBiby0+bWFkdiA9PSBWQzRfTUFEVl9XSUxMTkVFRCAmJgorCSAgICAh cmVmY291bnRfcmVhZCgmYm8tPnVzZWNudCkpIHsKKwkJLyogSWYgdGhlIEJPIGlzIGFib3V0IHRv IGJlIG1hcmtlZCBhcyBwdXJnZWFibGUsIGlzIG5vdCB1c2VkCisJCSAqIGFuZCBpcyBub3QgYWxy ZWFkeSBwdXJnZWFibGUgb3IgcHVyZ2VkLCBhZGQgaXQgdG8gdGhlCisJCSAqIHB1cmdlYWJsZSBs aXN0LgorCQkgKi8KKwkJdmM0X2JvX2FkZF90b19wdXJnZWFibGVfcG9vbChibyk7CisJfSBlbHNl IGlmIChhcmdzLT5tYWR2ID09IFZDNF9NQURWX1dJTExORUVEICYmCisJCSAgIGJvLT5tYWR2ID09 IFZDNF9NQURWX0RPTlRORUVEICYmCisJCSAgICFyZWZjb3VudF9yZWFkKCZiby0+dXNlY250KSkg eworCQkvKiBUaGUgQk8gaGFzIG5vdCBiZWVuIHB1cmdlZCB5ZXQsIGp1c3QgcmVtb3ZlIGl0IGZy b20KKwkJICogdGhlIHB1cmdlYWJsZSBsaXN0LgorCQkgKi8KKwkJdmM0X2JvX3JlbW92ZV9mcm9t X3B1cmdlYWJsZV9wb29sKGJvKTsKKwl9CisKKwkvKiBTYXZlIHRoZSBwdXJnZWQgc3RhdGUuICov CisJYXJncy0+cmV0YWluZWQgPSBiby0+bWFkdiAhPSBfX1ZDNF9NQURWX1BVUkdFRDsKKworCS8q IFVwZGF0ZSBpbnRlcm5hbCBtYWR2IHN0YXRlIG9ubHkgaWYgdGhlIGJvIHdhcyBub3QgcHVyZ2Vk LiAqLworCWlmIChiby0+bWFkdiAhPSBfX1ZDNF9NQURWX1BVUkdFRCkKKwkJYm8tPm1hZHYgPSBh cmdzLT5tYWR2OworCisJbXV0ZXhfdW5sb2NrKCZiby0+bWFkdl9sb2NrKTsKKworCXJldCA9IDA7 CisKK291dF9wdXRfZ2VtOgorCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChnZW1fb2JqKTsK KworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9w bGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcGxhbmUuYwppbmRleCAyOTY4YjNlYmI4 OTUuLjgzZTc4OWRkN2I5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcGxh bmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9wbGFuZS5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9wbGFuZV9oZWxwZXIuaD4KIAorI2luY2x1ZGUgInVhcGkvZHJtL3ZjNF9kcm0uaCIKICNpbmNs dWRlICJ2YzRfZHJ2LmgiCiAjaW5jbHVkZSAidmM0X3JlZ3MuaCIKIApAQCAtNzY0LDIxICs3NjUs NDAgQEAgc3RhdGljIGludCB2YzRfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IHsKIAlzdHJ1Y3QgdmM0X2JvICpibzsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKwlpbnQg cmV0OwogCiAJaWYgKChwbGFuZS0+c3RhdGUtPmZiID09IHN0YXRlLT5mYikgfHwgIXN0YXRlLT5m YikKIAkJcmV0dXJuIDA7CiAKIAlibyA9IHRvX3ZjNF9ibygmZHJtX2ZiX2NtYV9nZXRfZ2VtX29i aihzdGF0ZS0+ZmIsIDApLT5iYXNlKTsKKworCXJldCA9IHZjNF9ib19pbmNfdXNlY250KGJvKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJZmVuY2UgPSByZXNlcnZhdGlvbl9vYmplY3Rf Z2V0X2V4Y2xfcmN1KGJvLT5yZXN2KTsKIAlkcm1fYXRvbWljX3NldF9mZW5jZV9mb3JfcGxhbmUo c3RhdGUsIGZlbmNlKTsKIAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB2YzRfY2xlYW51 cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnN0YXRlKQoreworCXN0cnVjdCB2YzRfYm8gKmJvOworCisJaWYgKHBsYW5lLT5zdGF0ZS0+ ZmIgPT0gc3RhdGUtPmZiIHx8ICFzdGF0ZS0+ZmIpCisJCXJldHVybjsKKworCWJvID0gdG9fdmM0 X2JvKCZkcm1fZmJfY21hX2dldF9nZW1fb2JqKHN0YXRlLT5mYiwgMCktPmJhc2UpOworCXZjNF9i b19kZWNfdXNlY250KGJvKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVs cGVyX2Z1bmNzIHZjNF9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CiAJLmF0b21pY19jaGVjayA9IHZj NF9wbGFuZV9hdG9taWNfY2hlY2ssCiAJLmF0b21pY191cGRhdGUgPSB2YzRfcGxhbmVfYXRvbWlj X3VwZGF0ZSwKIAkucHJlcGFyZV9mYiA9IHZjNF9wcmVwYXJlX2ZiLAorCS5jbGVhbnVwX2ZiID0g dmM0X2NsZWFudXBfZmIsCiB9OwogCiBzdGF0aWMgdm9pZCB2YzRfcGxhbmVfZGVzdHJveShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vdmM0X2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS92YzRfZHJtLmgKaW5kZXggYWZhZTg3MDA0OTYzLi41MjI2 M2I1NzViZGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vdmM0X2RybS5oCisrKyBiL2lu Y2x1ZGUvdWFwaS9kcm0vdmM0X2RybS5oCkBAIC00MSw2ICs0MSw3IEBAIGV4dGVybiAiQyIgewog I2RlZmluZSBEUk1fVkM0X1NFVF9USUxJTkcgICAgICAgICAgICAgICAgICAgICAgICAweDA4CiAj ZGVmaW5lIERSTV9WQzRfR0VUX1RJTElORyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkKICNk ZWZpbmUgRFJNX1ZDNF9MQUJFTF9CTyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwYQorI2Rl ZmluZSBEUk1fVkM0X0dFTV9NQURWSVNFICAgICAgICAgICAgICAgICAgICAgICAweDBiCiAKICNk ZWZpbmUgRFJNX0lPQ1RMX1ZDNF9TVUJNSVRfQ0wgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fVkM0X1NVQk1JVF9DTCwgc3RydWN0IGRybV92YzRfc3VibWl0X2NsKQog I2RlZmluZSBEUk1fSU9DVExfVkM0X1dBSVRfU0VRTk8gICAgICAgICAgRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9WQzRfV0FJVF9TRVFOTywgc3RydWN0IGRybV92YzRfd2FpdF9zZXFu bykKQEAgLTUzLDYgKzU0LDcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERSTV9JT0NUTF9WQzRf U0VUX1RJTElORyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZDNF9T RVRfVElMSU5HLCBzdHJ1Y3QgZHJtX3ZjNF9zZXRfdGlsaW5nKQogI2RlZmluZSBEUk1fSU9DVExf VkM0X0dFVF9USUxJTkcgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9W QzRfR0VUX1RJTElORywgc3RydWN0IGRybV92YzRfZ2V0X3RpbGluZykKICNkZWZpbmUgRFJNX0lP Q1RMX1ZDNF9MQUJFTF9CTyAgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fVkM0X0xBQkVMX0JPLCBzdHJ1Y3QgZHJtX3ZjNF9sYWJlbF9ibykKKyNkZWZpbmUgRFJNX0lP Q1RMX1ZDNF9HRU1fTUFEVklTRSAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fVkM0X0dFTV9NQURWSVNFLCBzdHJ1Y3QgZHJtX3ZjNF9nZW1fbWFkdmlzZSkKIAogc3RydWN0 IGRybV92YzRfc3VibWl0X3JjbF9zdXJmYWNlIHsKIAlfX3UzMiBoaW5kZXg7IC8qIEhhbmRsZSBp bmRleCwgb3IgfjAgaWYgbm90IHByZXNlbnQuICovCkBAIC0zMDUsNiArMzA3LDcgQEAgc3RydWN0 IGRybV92YzRfZ2V0X2hhbmdfc3RhdGUgewogI2RlZmluZSBEUk1fVkM0X1BBUkFNX1NVUFBPUlRT X0VUQzEJCTQKICNkZWZpbmUgRFJNX1ZDNF9QQVJBTV9TVVBQT1JUU19USFJFQURFRF9GUwk1CiAj ZGVmaW5lIERSTV9WQzRfUEFSQU1fU1VQUE9SVFNfRklYRURfUkNMX09SREVSCTYKKyNkZWZpbmUg RFJNX1ZDNF9QQVJBTV9TVVBQT1JUU19NQURWSVNFCQk3CiAKIHN0cnVjdCBkcm1fdmM0X2dldF9w YXJhbSB7CiAJX191MzIgcGFyYW07CkBAIC0zMzMsNiArMzM2LDIyIEBAIHN0cnVjdCBkcm1fdmM0 X2xhYmVsX2JvIHsKIAlfX3U2NCBuYW1lOwogfTsKIAorLyoKKyAqIFN0YXRlcyBwcmVmaXhlZCB3 aXRoICdfXycgYXJlIGludGVybmFsIHN0YXRlcyBhbmQgY2Fubm90IGJlIHBhc3NlZCB0byB0aGUK KyAqIERSTV9JT0NUTF9WQzRfR0VNX01BRFZJU0UgaW9jdGwuCisgKi8KKyNkZWZpbmUgVkM0X01B RFZfV0lMTE5FRUQJCQkwCisjZGVmaW5lIFZDNF9NQURWX0RPTlRORUVECQkJMQorI2RlZmluZSBf X1ZDNF9NQURWX1BVUkdFRAkJCTIKKyNkZWZpbmUgX19WQzRfTUFEVl9OT1RTVVBQCQkJMworCitz dHJ1Y3QgZHJtX3ZjNF9nZW1fbWFkdmlzZSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIG1hZHY7 CisJX191MzIgcmV0YWluZWQ7CisJX191MzIgcGFkOworfTsKKwogI2lmIGRlZmluZWQoX19jcGx1 c3BsdXMpCiB9CiAjZW5kaWYKLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==