From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE215C43603 for ; Fri, 13 Dec 2019 22:07:53 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A8F6D2073D for ; Fri, 13 Dec 2019 22:07:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A8F6D2073D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E1CB16EDF2; Fri, 13 Dec 2019 22:07:34 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBBF86EDEA; Fri, 13 Dec 2019 22:07:31 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2019 14:07:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,311,1571727600"; d="scan'208";a="216558905" Received: from nvishwa1-desk.sc.intel.com ([10.3.160.185]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2019 14:07:30 -0800 From: Niranjana Vishwanathapura To: intel-gfx@lists.freedesktop.org Subject: [RFC v2 06/12] drm/i915/svm: Device memory support Date: Fri, 13 Dec 2019 13:56:08 -0800 Message-Id: <20191213215614.24558-7-niranjana.vishwanathapura@intel.com> X-Mailer: git-send-email 2.21.0.rc0.32.g243a4c7e27 In-Reply-To: <20191213215614.24558-1-niranjana.vishwanathapura@intel.com> References: <20191213215614.24558-1-niranjana.vishwanathapura@intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kenneth.w.graunke@intel.com, sanjay.k.kumar@intel.com, sudeep.dutt@intel.com, dri-devel@lists.freedesktop.org, jason.ekstrand@intel.com, dave.hansen@intel.com, jglisse@redhat.com, jon.bloomfield@intel.com, daniel.vetter@intel.com, dan.j.williams@intel.com, ira.weiny@intel.com, jgg@mellanox.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" UGx1Z2luIGRldmljZSBtZW1vcnkgdGhyb3VnaCBITU0gYXMgREVWSUNFX1BSSVZBVEUuCkFkZCBz dXBwb3J0IGZ1bmN0aW9ucyB0byBhbGxvY2F0ZSBwYWdlcyBhbmQgZnJlZSBwYWdlcyBmcm9tIGRl dmljZSBtZW1vcnkuCkltcGxlbWVudCBpb2N0bCB0byBwcmVmZXRjaCBwYWdlcyBmcm9tIGhvc3Qg dG8gZGV2aWNlIG1lbW9yeS4KRm9yIG5vdywgb25seSBzdXBwb3J0IG1pZ3JhdGluZyBwYWdlcyBm cm9tIGhvc3QgbWVtb3J5IHRvIGRldmljZSBtZW1vcnkuCgpDYzogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogSm9uIEJsb29tZmllbGQgPGpvbi5i bG9vbWZpZWxkQGludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50 ZWwuY29tPgpDYzogU3VkZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYSA8bmlyYW5qYW5hLnZpc2h3YW5hdGhhcHVy YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAgICAgICAg ICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8 ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIHwgIDEz IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYnVkZHkuaCAgICAgICAgICB8ICAxMiArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uYyAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3ZtLmggICAgICAgICAgICB8ICAxNSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N2bV9kZXZtZW0uYyAgICAgfCA0MDAgKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggfCAgMTQgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uYyAgIHwgIDEwICsKIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICB8ICAyMiArKwogMTEgZmlsZXMgY2hhbmdl ZCwgNDkxIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3ZtX2Rldm1lbS5jCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcK aW5kZXggNjg5ZTU3ZmUzOTczLi42NjMzN2YyY2EyYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwpAQCAt MTQxLDkgKzE0MSwxOCBAQCBjb25maWcgRFJNX0k5MTVfU1ZNCiAJYm9vbCAiRW5hYmxlIFNoYXJl ZCBWaXJ0dWFsIE1lbW9yeSBzdXBwb3J0IGluIGk5MTUiCiAJZGVwZW5kcyBvbiBTVEFHSU5HCiAJ ZGVwZW5kcyBvbiBEUk1fSTkxNQorCWRlcGVuZHMgb24gQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBM VUcKKwlkZXBlbmRzIG9uIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkUKKwlkZXBlbmRzIG9u IE1FTU9SWV9IT1RQTFVHCisJZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFCisJZGVwZW5kcyBv biBBUkNIX0hBU19QVEVfREVWTUFQCisJZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUAorCWRl cGVuZHMgb24gWk9ORV9ERVZJQ0UKKwlkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFCiAJZGVwZW5k cyBvbiBNTVUKIAlzZWxlY3QgSE1NX01JUlJPUgogCXNlbGVjdCBNTVVfTk9USUZJRVIKKwlzZWxl Y3QgTUlHUkFURV9WTUFfSEVMUEVSCiAJZGVmYXVsdCBuCiAJaGVscAogCSAgQ2hvb3NlIHRoaXMg b3B0aW9uIGlmIHlvdSB3YW50IFNoYXJlZCBWaXJ0dWFsIE1lbW9yeSAoU1ZNKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQppbmRleCA3ZDRjZDllZWZkMTIuLmI1NzRlYzMxZWEyZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKQEAgLTE1NSw3ICsxNTUsOCBAQCBpOTE1LXkgKz0gXAogCiAjIFNWTSBjb2RlCiBpOTE1 LSQoQ09ORklHX0RSTV9JOTE1X1NWTSkgKz0gZ2VtL2k5MTVfZ2VtX3N2bS5vIFwKLQkJCSAgICAg ICBpOTE1X3N2bS5vCisJCQkgICAgICAgaTkxNV9zdm0ubyBcCisJCQkgICAgICAgaTkxNV9zdm1f ZGV2bWVtLm8KIAogIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBv cnQKIG9iai15ICs9IGd0L3VjLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5jCmluZGV4IDAwM2Q4MWMxNzFkMi4uZjg2OGEzMDFmYzA0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCkBAIC01MDQsMTkgKzUwNCw2IEBAIGludCBf X2luaXQgaTkxNV9nbG9iYWxfb2JqZWN0c19pbml0KHZvaWQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBlbnVtIGludGVsX3JlZ2lvbl9pZAotX19yZWdpb25faWQodTMyIHJlZ2lvbikKLXsKLQll bnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKLQotCWZvciAoaWQgPSAwOyBpZCA8IElOVEVMX1JFR0lP Tl9VTktOT1dOOyArK2lkKSB7Ci0JCWlmIChpbnRlbF9yZWdpb25fbWFwW2lkXSA9PSByZWdpb24p Ci0JCQlyZXR1cm4gaWQ7Ci0JfQotCi0JcmV0dXJuIElOVEVMX1JFR0lPTl9VTktOT1dOOwotfQot CiBib29sCiBpOTE1X2dlbV9vYmplY3Rfc3ZtX21hcHBlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRk eS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oCmluZGV4IGVkNDFmMzUwN2Nk Yy4uYWZjNDkzZTZjMTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2J1 ZGR5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oCkBAIC05LDYgKzks OSBAQAogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4K IAorLyogNTEyIGJpdHMgKG9uZSBwZXIgcGFnZXMpIHN1cHBvcnRzIDJNQiBibG9ja3MgKi8KKyNk ZWZpbmUgSTkxNV9CVUREWV9NQVhfUEFHRVMgICA1MTIKKwogc3RydWN0IGk5MTVfYnVkZHlfYmxv Y2sgewogI2RlZmluZSBJOTE1X0JVRERZX0hFQURFUl9PRkZTRVQgR0VOTUFTS19VTEwoNjMsIDEy KQogI2RlZmluZSBJOTE1X0JVRERZX0hFQURFUl9TVEFURSAgR0VOTUFTS19VTEwoMTEsIDEwKQpA QCAtMzIsNiArMzUsMTUgQEAgc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgewogCSAqLwogCXN0cnVj dCBsaXN0X2hlYWQgbGluazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHRtcF9saW5rOworCisJdW5zaWdu ZWQgbG9uZyBwZm5fZmlyc3Q7CisJLyoKKwkgKiBGSVhNRTogVGhlcmUgYXJlIG90aGVyIGFsdGVy bmF0aXZlcyB0byBiaXRtYXAuIExpa2Ugc3BsaXR0aW5nIHRoZQorCSAqIGJsb2NrIGludG8gY29u dGlndW91cyA0SyBzaXplZCBibG9ja3MuIEJ1dCBpdCBpcyBwYXJ0IG9mIGJpZ2dlcgorCSAqIGlz c3VlcyBpbnZvbHZpbmcgcGFydGlhbGx5IGludmFsaWRhdGluZyBsYXJnZSBtYXBwaW5nLCBmcmVl aW5nIHRoZQorCSAqIGJsb2NrcyBldGMuLCByZXZpc2l0LgorCSAqLworCXVuc2lnbmVkIGxvbmcg Yml0bWFwW0JJVFNfVE9fTE9OR1MoSTkxNV9CVUREWV9NQVhfUEFHRVMpXTsKIH07CiAKICNkZWZp bmUgSTkxNV9CVUREWV9NQVhfT1JERVIgIEk5MTVfQlVERFlfSEVBREVSX09SREVSCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwppbmRleCA4NjZkM2NiYjFlZGYuLmYxYjkyZmQzZDIzNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCkBAIC0yNzY1LDYgKzI3NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkx NV9HRU1fVk1fQ1JFQVRFLCBpOTE1X2dlbV92bV9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxM T1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNX0RFU1RST1ksIGk5MTVfZ2VtX3Zt X2Rlc3Ryb3lfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5 MTVfR0VNX1ZNX0JJTkQsIGk5MTVfZ2VtX3ZtX2JpbmRfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cp LAorCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNX1BSRUZFVENILCBpOTE1X2dlbV92bV9w cmVmZXRjaF9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVykKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciBkcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N2bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uYwppbmRleCA1OTQxYmU1YjU4 MDMuLjMxYTgwYWUwZGQ0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bS5jCkBAIC0xNTIsNiArMTUy LDcgQEAgc3RhdGljIGludCBpOTE1X3JhbmdlX2ZhdWx0KHN0cnVjdCBzdm1fbm90aWZpZXIgKnNu LAogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gc24tPm5vdGlmaWVyLm1tOwogCXN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtID0gc3ZtLT52bTsKIAl1MzIgc2dfcGFnZV9zaXplczsKKwlpbnQg cmVnaW9uczsKIAl1NjQgZmxhZ3M7CiAJbG9uZyByZXQ7CiAKQEAgLTE2OSw2ICsxNzAsMTEgQEAg c3RhdGljIGludCBpOTE1X3JhbmdlX2ZhdWx0KHN0cnVjdCBzdm1fbm90aWZpZXIgKnNuLAogCQkJ cmV0dXJuIHJldDsKIAkJfQogCisJCS8qIEZvciBkZ2Z4LCBlbnN1cmUgdGhlIHJhbmdlIGlzIGlu IGRldmljZSBsb2NhbCBtZW1vcnkgb25seSAqLworCQlyZWdpb25zID0gaTkxNV9kbWVtX2NvbnZl cnRfcGZuKHZtLT5pOTE1LCAmcmFuZ2UpOworCQlpZiAoIXJlZ2lvbnMgfHwgKElTX0RHRlgodm0t Pmk5MTUpICYmIChyZWdpb25zICYgUkVHSU9OX1NNRU0pKSkKKwkJCXJldHVybiAtRUlOVkFMOwor CiAJCXNnX3BhZ2Vfc2l6ZXMgPSBpOTE1X3N2bV9idWlsZF9zZyh2bSwgJnJhbmdlLCBzdCk7CiAK IAkJbXV0ZXhfbG9jaygmc3ZtLT5tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N2bS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uaAppbmRleCBh OTFlNmE2MzdmMTAuLmFlMzljMmVmMmYxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zdm0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bS5oCkBAIC0z Myw2ICszMywxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bV9pc19zdm1fZW5hYmxlZChz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAlyZXR1cm4gdm0tPnN2bTsKIH0KIAoraW50 IGk5MTVfZG1lbV9jb252ZXJ0X3BmbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkgIHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTsKK2ludCBpOTE1X2dlbV92bV9wcmVmZXRj aF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkxNV9zdm1f ZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQkJdTY0IHNpemUp Owordm9pZCBpOTE1X3N2bV9kZXZtZW1fcmVtb3ZlKHN0cnVjdCBpOTE1X2Rldm1lbSAqZGV2bWVt KTsKKwogI2Vsc2UKIAogc3RydWN0IGk5MTVfc3ZtIHsgfTsKQEAgLTQ1LDYgKzUzLDEzIEBAIHN0 YXRpYyBpbmxpbmUgaW50IGk5MTVfc3ZtX2JpbmRfbW0oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCiBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bV9pc19zdm1fZW5hYmxlZChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIHsgcmV0dXJuIGZhbHNlOyB9CiAKK3N0YXRpYyBpbmxp bmUgaW50IGk5MTVfZ2VtX3ZtX3ByZWZldGNoX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCisJCQkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7IHJl dHVybiAtRU5PVFNVUFA7IH0KK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkx NV9zdm1fZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTY0IHNpemUp Cit7IHJldHVybiBOVUxMOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9zdm1fZGV2bWVtX3Jl bW92ZShzdHJ1Y3QgaTkxNV9kZXZtZW0gKmRldm1lbSkgeyB9CiAjZW5kaWYKIAogI2VuZGlmIC8q IF9fSTkxNV9TVk1fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dm1fZGV2bWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bV9kZXZtZW0uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBhMWYxMzk0ZjE5NgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3ZtX2Rldm1lbS5jCkBAIC0w LDAgKzEsNDAwIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgv bW1fdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC9tbS5oPgorCisjaW5jbHVkZSAiaTkx NV9zdm0uaCIKKyNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgiCisKK3N0cnVjdCBpOTE1 X2Rldm1lbV9taWdyYXRlIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKKwlzdHJ1 Y3QgbWlncmF0ZV92bWEgKmFyZ3M7CisKKwllbnVtIGludGVsX3JlZ2lvbl9pZCBzcmNfaWQ7CisJ ZW51bSBpbnRlbF9yZWdpb25faWQgZHN0X2lkOworCXU2NCBucGFnZXM7Cit9OworCitzdHJ1Y3Qg aTkxNV9kZXZtZW0geworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCXN0cnVjdCBk ZXZfcGFnZW1hcCBwYWdlbWFwOworCXVuc2lnbmVkIGxvbmcgcGZuX2ZpcnN0OworCXVuc2lnbmVk IGxvbmcgcGZuX2xhc3Q7Cit9OworCitzdGF0aWMgaW5saW5lIGJvb2wKK2k5MTVfZG1lbV9wYWdl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7 CisJaWYgKCFpc19kZXZpY2VfcHJpdmF0ZV9wYWdlKHBhZ2UpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworaW50IGk5MTVfZG1lbV9jb252ZXJ0X3BmbihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKQor eworCXVuc2lnbmVkIGxvbmcgaSwgbnBhZ2VzOworCWludCByZWdpb25zID0gMDsKKworCW5wYWdl cyA9IChyYW5nZS0+ZW5kIC0gcmFuZ2UtPnN0YXJ0KSA+PiBQQUdFX1NISUZUOworCWZvciAoaSA9 IDA7IGkgPCBucGFnZXM7ICsraSkgeworCQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2s7 CisJCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW07CisJCXN0cnVjdCBwYWdlICpwYWdl OworCQl1NjQgYWRkcjsKKworCQlwYWdlID0gaG1tX2RldmljZV9lbnRyeV90b19wYWdlKHJhbmdl LCByYW5nZS0+cGZuc1tpXSk7CisJCWlmICghcGFnZSkKKwkJCWNvbnRpbnVlOworCisJCWlmICgh KHJhbmdlLT5wZm5zW2ldICYgcmFuZ2UtPmZsYWdzW0hNTV9QRk5fREVWSUNFX1BSSVZBVEVdKSkg eworCQkJcmVnaW9ucyB8PSBSRUdJT05fU01FTTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYg KCFpOTE1X2RtZW1fcGFnZShkZXZfcHJpdiwgcGFnZSkpIHsKKwkJCVdBUk4oMSwgIlNvbWUgdW5r bm93biBkZXZpY2UgbWVtb3J5ICFcbiIpOworCQkJcmFuZ2UtPnBmbnNbaV0gPSAwOworCQkJY29u dGludWU7CisJCX0KKworCQlyZWdpb25zIHw9IFJFR0lPTl9MTUVNOworCQlibG9jayA9IHBhZ2Ut PnpvbmVfZGV2aWNlX2RhdGE7CisJCW1lbSA9IGJsb2NrLT5wcml2YXRlOworCQlhZGRyID0gbWVt LT5yZWdpb24uc3RhcnQgKworCQkgICAgICAgaTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2sp OworCQlhZGRyICs9IChwYWdlX3RvX3BmbihwYWdlKSAtIGJsb2NrLT5wZm5fZmlyc3QpIDw8IFBB R0VfU0hJRlQ7CisKKwkJcmFuZ2UtPnBmbnNbaV0gJj0gfnJhbmdlLT5mbGFnc1tITU1fUEZOX0RF VklDRV9QUklWQVRFXTsKKwkJcmFuZ2UtPnBmbnNbaV0gJj0gKCgxVUwgPDwgcmFuZ2UtPnBmbl9z aGlmdCkgLSAxKTsKKwkJcmFuZ2UtPnBmbnNbaV0gfD0gKGFkZHIgPj4gUEFHRV9TSElGVCkgPDwg cmFuZ2UtPnBmbl9zaGlmdDsKKwl9CisKKwlyZXR1cm4gcmVnaW9uczsKK30KKworc3RhdGljIGlu dAoraTkxNV9kZXZtZW1fcGFnZV9hbGxvY19sb2NrZWQoc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKm1lbSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLAorCQkJICAgICAgc3RydWN0 IGxpc3RfaGVhZCAqYmxvY2tzKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZSA9IEFMSUdOKChucGFn ZXMgKiBQQUdFX1NJWkUpLCBtZW0tPm1tLmNodW5rX3NpemUpOworCXN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICpibG9jazsKKwlpbnQgcmV0OworCisJSU5JVF9MSVNUX0hFQUQoYmxvY2tzKTsKKwly ZXQgPSBfX2ludGVsX21lbW9yeV9yZWdpb25fZ2V0X3BhZ2VzX2J1ZGR5KG1lbSwgc2l6ZSwgMCwg YmxvY2tzKTsKKwlpZiAodW5saWtlbHkocmV0KSkKKwkJZ290byBhbGxvY19mYWlsZWQ7CisKKwls aXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCBibG9ja3MsIGxpbmspIHsKKwkJYmxvY2stPnBmbl9m aXJzdCA9IG1lbS0+ZGV2bWVtLT5wZm5fZmlyc3Q7CisJCWJsb2NrLT5wZm5fZmlyc3QgKz0gaTkx NV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spIC8KKwkJCQkgICAgUEFHRV9TSVpFOworCQliaXRt YXBfemVybyhibG9jay0+Yml0bWFwLCBJOTE1X0JVRERZX01BWF9QQUdFUyk7CisJCURSTV9ERUJV R19EUklWRVIoIiVzIHBmbl9maXJzdCAweCVseCBvZmYgMHglbGx4IHNpemUgMHglbGx4XG4iLAor CQkJCSAiQWxsb2NhdGVkIGJsb2NrIiwgYmxvY2stPnBmbl9maXJzdCwKKwkJCQkgaTkxNV9idWRk eV9ibG9ja19vZmZzZXQoYmxvY2spLAorCQkJCSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1lbS0+ bW0sIGJsb2NrKSk7CisJfQorCithbGxvY19mYWlsZWQ6CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHN0cnVjdCBwYWdlICoKK2k5MTVfZGV2bWVtX3BhZ2VfZ2V0X2xvY2tlZChzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmJsb2NrcykK K3sKKwlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2ssICpvbjsKKworCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShibG9jaywgb24sIGJsb2NrcywgbGluaykgeworCQl1bnNpZ25lZCBsb25n IHdlaWdodCwgbWF4OworCQl1bnNpZ25lZCBsb25nIGksIHBmbjsKKwkJc3RydWN0IHBhZ2UgKnBh Z2U7CisKKwkJbWF4ID0gaTkxNV9idWRkeV9ibG9ja19zaXplKCZtZW0tPm1tLCBibG9jaykgLyBQ QUdFX1NJWkU7CisJCWkgPSBmaW5kX2ZpcnN0X3plcm9fYml0KGJsb2NrLT5iaXRtYXAsIG1heCk7 CisJCWlmICh1bmxpa2VseShpID09IG1heCkpIHsKKwkJCVdBUk4oMSwgIkdldHRpbmcgYSBwYWdl IHNob3VsZCBoYXZlIG5ldmVyIGZhaWxlZFxuIik7CisJCQlicmVhazsKKwkJfQorCisJCXNldF9i aXQoaSwgYmxvY2stPmJpdG1hcCk7CisJCXBmbiA9IGJsb2NrLT5wZm5fZmlyc3QgKyBpOworCQlw YWdlID0gcGZuX3RvX3BhZ2UocGZuKTsKKwkJZ2V0X3BhZ2UocGFnZSk7CisJCWxvY2tfcGFnZShw YWdlKTsKKwkJcGFnZS0+em9uZV9kZXZpY2VfZGF0YSA9IGJsb2NrOworCQl3ZWlnaHQgPSBiaXRt YXBfd2VpZ2h0KGJsb2NrLT5iaXRtYXAsIG1heCk7CisJCWlmICh3ZWlnaHQgPT0gbWF4KQorCQkJ bGlzdF9kZWxfaW5pdCgmYmxvY2stPmxpbmspOworCQlEUk1fREVCVUdfRFJJVkVSKCIlcyBwZm4g MHglbHggYmxvY2sgd2VpZ2h0IDB4JWx4XG4iLAorCQkJCSAiQWxsb2NhdGVkIHBhZ2UiLCBwZm4s IHdlaWdodCk7CisJCXJldHVybiBwYWdlOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IHZvaWQKK2k5MTVfZGV2bWVtX3BhZ2VfZnJlZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAorCQkJICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwl1bmxvY2tfcGFn ZShwYWdlKTsKKwlwdXRfcGFnZShwYWdlKTsKK30KKworc3RhdGljIGludAoraTkxNV9kZXZtZW1f bWlncmF0ZV9hbGxvY19hbmRfY29weShzdHJ1Y3QgaTkxNV9kZXZtZW1fbWlncmF0ZSAqbWlncmF0 ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1pZ3JhdGUtPmk5MTU7CisJ c3RydWN0IG1pZ3JhdGVfdm1hICphcmdzID0gbWlncmF0ZS0+YXJnczsKKwlzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiAqbWVtOworCXN0cnVjdCBsaXN0X2hlYWQgYmxvY2tzID0gezB9OworCXVu c2lnbmVkIGxvbmcgaSwgbnBhZ2VzLCBjbnQ7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJaW50IHJl dDsKKworCW5wYWdlcyA9IChhcmdzLT5lbmQgLSBhcmdzLT5zdGFydCkgPj4gUEFHRV9TSElGVDsK KwlEUk1fREVCVUdfRFJJVkVSKCJzdGFydCAweCVseCBucGFnZXMgJWxkXG4iLCBhcmdzLT5zdGFy dCwgbnBhZ2VzKTsKKworCS8qIENoZWNrIHNvdXJjZSBwYWdlcyAqLworCWZvciAoaSA9IDAsIGNu dCA9IDA7IGkgPCBucGFnZXM7IGkrKykgeworCQlhcmdzLT5kc3RbaV0gPSAwOworCQlwYWdlID0g bWlncmF0ZV9wZm5fdG9fcGFnZShhcmdzLT5zcmNbaV0pOworCQlpZiAodW5saWtlbHkoIXBhZ2Ug fHwgIShhcmdzLT5zcmNbaV0gJiBNSUdSQVRFX1BGTl9NSUdSQVRFKSkpCisJCQljb250aW51ZTsK KworCQlhcmdzLT5kc3RbaV0gPSBNSUdSQVRFX1BGTl9WQUxJRDsKKwkJY250Kys7CisJfQorCisJ aWYgKCFjbnQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBtaWdyYXRlX291dDsKKwl9CisK KwltZW0gPSBpOTE1LT5tbS5yZWdpb25zW21pZ3JhdGUtPmRzdF9pZF07CisJcmV0ID0gaTkxNV9k ZXZtZW1fcGFnZV9hbGxvY19sb2NrZWQobWVtLCBjbnQsICZibG9ja3MpOworCWlmICh1bmxpa2Vs eShyZXQpKQorCQlnb3RvIG1pZ3JhdGVfb3V0OworCisJLyogQWxsb2NhdGUgZGV2aWNlIG1lbW9y eSAqLworCWZvciAoaSA9IDAsIGNudCA9IDA7IGkgPCBucGFnZXM7IGkrKykgeworCQlpZiAoIWFy Z3MtPmRzdFtpXSkKKwkJCWNvbnRpbnVlOworCisJCXBhZ2UgPSBpOTE1X2Rldm1lbV9wYWdlX2dl dF9sb2NrZWQobWVtLCAmYmxvY2tzKTsKKwkJaWYgKHVubGlrZWx5KCFwYWdlKSkgeworCQkJV0FS TigxLCAiRmFpbGVkIHRvIGdldCBkc3QgcGFnZVxuIik7CisJCQlhcmdzLT5kc3RbaV0gPSAwOwor CQkJY29udGludWU7CisJCX0KKworCQljbnQrKzsKKwkJYXJncy0+ZHN0W2ldID0gbWlncmF0ZV9w Zm4ocGFnZV90b19wZm4ocGFnZSkpIHwKKwkJCSAgICAgICBNSUdSQVRFX1BGTl9MT0NLRUQ7CisJ fQorCisJaWYgKCFjbnQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBtaWdyYXRlX291dDsK Kwl9CisKKwkvKiBDb3B5IHRoZSBwYWdlcyAqLworCW1pZ3JhdGUtPm5wYWdlcyA9IG5wYWdlczsK K21pZ3JhdGVfb3V0OgorCWlmICh1bmxpa2VseShyZXQpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBu cGFnZXM7IGkrKykgeworCQkJaWYgKGFyZ3MtPmRzdFtpXSAmIE1JR1JBVEVfUEZOX0xPQ0tFRCkg eworCQkJCXBhZ2UgPSBtaWdyYXRlX3Bmbl90b19wYWdlKGFyZ3MtPmRzdFtpXSk7CisJCQkJaTkx NV9kZXZtZW1fcGFnZV9mcmVlX2xvY2tlZChpOTE1LCBwYWdlKTsKKwkJCX0KKwkJCWFyZ3MtPmRz dFtpXSA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGk5MTVfZGV2bWVt X21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChzdHJ1Y3QgaTkxNV9kZXZtZW1fbWlncmF0ZSAqbWln cmF0ZSkKK3sKKwlEUk1fREVCVUdfRFJJVkVSKCJucGFnZXMgJWxsZFxuIiwgbWlncmF0ZS0+bnBh Z2VzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9kZXZtZW1fbWlncmF0ZV9jaHVuayhzdHJ1Y3Qg aTkxNV9kZXZtZW1fbWlncmF0ZSAqbWlncmF0ZSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTkx NV9kZXZtZW1fbWlncmF0ZV9hbGxvY19hbmRfY29weShtaWdyYXRlKTsKKwlpZiAoIXJldCkgewor CQltaWdyYXRlX3ZtYV9wYWdlcyhtaWdyYXRlLT5hcmdzKTsKKwkJaTkxNV9kZXZtZW1fbWlncmF0 ZV9maW5hbGl6ZV9hbmRfbWFwKG1pZ3JhdGUpOworCX0KKwltaWdyYXRlX3ZtYV9maW5hbGl6ZSht aWdyYXRlLT5hcmdzKTsKK30KKworaW50IGk5MTVfZGV2bWVtX21pZ3JhdGVfdm1hKHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsCisJCQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCSAgICB1bnNpZ25lZCBsb25nIGVu ZCkKK3sKKwl1bnNpZ25lZCBsb25nIG5wYWdlcyA9IChlbmQgLSBzdGFydCkgPj4gUEFHRV9TSElG VDsKKwl1bnNpZ25lZCBsb25nIG1heCA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIEk5MTVfQlVERFlf TUFYX1BBR0VTLCBucGFnZXMpOworCXN0cnVjdCBpOTE1X2Rldm1lbV9taWdyYXRlIG1pZ3JhdGUg PSB7MH07CisJc3RydWN0IG1pZ3JhdGVfdm1hIGFyZ3MgPSB7CisJCS52bWEJCT0gdm1hLAorCQku c3RhcnQJCT0gc3RhcnQsCisJfTsKKwl1bnNpZ25lZCBsb25nIGMsIGk7CisJaW50IHJldCA9IDA7 CisKKwkvKiBYWFg6IE9wcG9ydHVuaXN0aWNhbGx5IG1pZ3JhdGUgYWRkaXRpb25hbCBwYWdlcz8g Ki8KKwlEUk1fREVCVUdfRFJJVkVSKCJzdGFydCAweCVseCBlbmQgMHglbHhcbiIsIHN0YXJ0LCBl bmQpOworCWFyZ3Muc3JjID0ga2NhbGxvYyhtYXgsIHNpemVvZihhcmdzLnNyYyksIEdGUF9LRVJO RUwpOworCWlmICh1bmxpa2VseSghYXJncy5zcmMpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWFy Z3MuZHN0ID0ga2NhbGxvYyhtYXgsIHNpemVvZihhcmdzLmRzdCksIEdGUF9LRVJORUwpOworCWlm ICh1bmxpa2VseSghYXJncy5kc3QpKSB7CisJCWtmcmVlKGFyZ3Muc3JjKTsKKwkJcmV0dXJuIC1F Tk9NRU07CisJfQorCisJLyogWFhYOiBTdXBwb3J0IG1pZ3JhdGluZyBmcm9tIExNRU0gdG8gU01F TSAqLworCW1pZ3JhdGUuYXJncyA9ICZhcmdzOworCW1pZ3JhdGUuaTkxNSA9IG1lbS0+aTkxNTsK KwltaWdyYXRlLnNyY19pZCA9IElOVEVMX1JFR0lPTl9TTUVNOworCW1pZ3JhdGUuZHN0X2lkID0g TUVNT1JZX1RZUEVfRlJPTV9SRUdJT04obWVtLT5pZCk7CisJZm9yIChpID0gMDsgaSA8IG5wYWdl czsgaSArPSBjKSB7CisJCWMgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBJOTE1X0JVRERZX01BWF9Q QUdFUywgbnBhZ2VzKTsKKwkJYXJncy5lbmQgPSBzdGFydCArIChjIDw8IFBBR0VfU0hJRlQpOwor CQlyZXQgPSBtaWdyYXRlX3ZtYV9zZXR1cCgmYXJncyk7CisJCWlmICh1bmxpa2VseShyZXQpKQor CQkJZ290byBtaWdyYXRlX2RvbmU7CisJCWlmIChhcmdzLmNwYWdlcykKKwkJCWk5MTVfZGV2bWVt X21pZ3JhdGVfY2h1bmsoJm1pZ3JhdGUpOworCQlhcmdzLnN0YXJ0ID0gYXJncy5lbmQ7CisJfQor bWlncmF0ZV9kb25lOgorCWtmcmVlKGFyZ3MuZHN0KTsKKwlrZnJlZShhcmdzLnNyYyk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZtX2ZhdWx0X3QgaTkxNV9kZXZtZW1fbWlncmF0ZV90b19y YW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpCit7CisJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKK30K Kworc3RhdGljIHZvaWQgaTkxNV9kZXZtZW1fcGFnZV9mcmVlKHN0cnVjdCBwYWdlICpwYWdlKQor eworCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jayA9IHBhZ2UtPnpvbmVfZGV2aWNlX2Rh dGE7CisJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGJsb2NrLT5wcml2YXRlOwor CXVuc2lnbmVkIGxvbmcgaSwgbWF4LCB3ZWlnaHQ7CisKKwltYXggPSBpOTE1X2J1ZGR5X2Jsb2Nr X3NpemUoJm1lbS0+bW0sIGJsb2NrKSAvIFBBR0VfU0laRTsKKwlpID0gcGFnZV90b19wZm4ocGFn ZSkgLSBibG9jay0+cGZuX2ZpcnN0OworCWNsZWFyX2JpdChpLCBibG9jay0+Yml0bWFwKTsKKwl3 ZWlnaHQgPSBiaXRtYXBfd2VpZ2h0KGJsb2NrLT5iaXRtYXAsIG1heCk7CisJRFJNX0RFQlVHX0RS SVZFUigiJXMgcGZuIDB4JWx4IGJsb2NrIHdlaWdodCAweCVseFxuIiwKKwkJCSAiRnJlZWluZyBw YWdlIiwgcGFnZV90b19wZm4ocGFnZSksIHdlaWdodCk7CisJaWYgKCF3ZWlnaHQpIHsKKwkJRFJN X0RFQlVHX0RSSVZFUigiJXMgcGZuX2ZpcnN0IDB4JWx4IG9mZiAweCVsbHggc2l6ZSAweCVsbHhc biIsCisJCQkJICJGcmVlaW5nIGJsb2NrIiwgYmxvY2stPnBmbl9maXJzdCwKKwkJCQkgaTkxNV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spLAorCQkJCSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1l bS0+bW0sIGJsb2NrKSk7CisJCV9faW50ZWxfbWVtb3J5X3JlZ2lvbl9wdXRfYmxvY2tfYnVkZHko YmxvY2spOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMgaTkx NV9kZXZtZW1fcGFnZW1hcF9vcHMgPSB7CisJLnBhZ2VfZnJlZSA9IGk5MTVfZGV2bWVtX3BhZ2Vf ZnJlZSwKKwkubWlncmF0ZV90b19yYW0gPSBpOTE1X2Rldm1lbV9taWdyYXRlX3RvX3JhbSwKK307 CisKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkxNV9zdm1fZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTY0IHNpemUpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmk5 MTUtPmRybS5wZGV2LT5kZXY7CisJc3RydWN0IGk5MTVfZGV2bWVtICpkZXZtZW07CisJc3RydWN0 IHJlc291cmNlICpyZXM7CisKKwlkZXZtZW0gPSBremFsbG9jKHNpemVvZigqZGV2bWVtKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFkZXZtZW0pCisJCXJldHVybiBOVUxMOworCisJZGV2bWVtLT5pOTE1 ID0gaTkxNTsKKwlyZXMgPSBkZXZtX3JlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKGRldiwgJmlvbWVt X3Jlc291cmNlLCBzaXplKTsKKwlpZiAoSVNfRVJSKHJlcykpCisJCWdvdG8gb3V0X2ZyZWU7CisK KwlkZXZtZW0tPnBhZ2VtYXAudHlwZSA9IE1FTU9SWV9ERVZJQ0VfUFJJVkFURTsKKwlkZXZtZW0t PnBhZ2VtYXAucmVzID0gKnJlczsKKwlkZXZtZW0tPnBhZ2VtYXAub3BzID0gJmk5MTVfZGV2bWVt X3BhZ2VtYXBfb3BzOworCWlmIChJU19FUlIoZGV2bV9tZW1yZW1hcF9wYWdlcyhkZXYsICZkZXZt ZW0tPnBhZ2VtYXApKSkKKwkJZ290byBvdXRfZnJlZTsKKworCWRldm1lbS0+cGZuX2ZpcnN0ID0g cmVzLT5zdGFydCA+PiBQQUdFX1NISUZUOworCWRldm1lbS0+cGZuX2xhc3QgPSByZXMtPmVuZCA+ PiBQQUdFX1NISUZUOworCXJldHVybiBkZXZtZW07CitvdXRfZnJlZToKKwlrZnJlZShkZXZtZW0p OworCXJldHVybiBOVUxMOworfQorCit2b2lkIGk5MTVfc3ZtX2Rldm1lbV9yZW1vdmUoc3RydWN0 IGk5MTVfZGV2bWVtICpkZXZtZW0pCit7CisJLyogWFhYOiBJcyBpdCB0aGUgcmlnaHQgd2F5IHRv IHJlbGVhc2U/ICovCisJcmVsZWFzZV9yZXNvdXJjZSgmZGV2bWVtLT5wYWdlbWFwLnJlcyk7CisJ a2ZyZWUoZGV2bWVtKTsKK30KKworaW50IGk5MTVfZ2VtX3ZtX3ByZWZldGNoX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgICAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1 KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV92bV9wcmVmZXRjaCAqYXJncyA9IGRhdGE7CisJ dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIHNpemUgPSBhcmdzLT5sZW5ndGg7CisJc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbTsKKwllbnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKKwlzdHJ1 Y3QgbW1fc3RydWN0ICptbTsKKworCWlmIChhcmdzLT50eXBlICE9IEk5MTVfR0VNX1ZNX1BSRUZF VENIX1NWTV9CVUZGRVIpCisJCXJldHVybiAtRUlOVkFMOworCisJRFJNX0RFQlVHX0RSSVZFUigi c3RhcnQgMHglbGx4IGxlbmd0aCAweCVsbHggcmVnaW9uIDB4JXhcbiIsCisJCQkgYXJncy0+c3Rh cnQsIGFyZ3MtPmxlbmd0aCwgYXJncy0+cmVnaW9uKTsKKwlpZCA9IF9fcmVnaW9uX2lkKGFyZ3Mt PnJlZ2lvbik7CisJaWYgKChNRU1PUllfVFlQRV9GUk9NX1JFR0lPTihhcmdzLT5yZWdpb24pICE9 IElOVEVMX01FTU9SWV9MT0NBTCkgfHwKKwkgICAgaWQgPT0gSU5URUxfUkVHSU9OX1VOS05PV04p CisJCXJldHVybiAtRUlOVkFMOworCisJbWVtID0gaTkxNS0+bW0ucmVnaW9uc1tpZF07CisKKwlt bSA9IGdldF90YXNrX21tKGN1cnJlbnQpOworCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwor CWZvciAoYWRkciA9IGFyZ3MtPnN0YXJ0LCBlbmQgPSBhcmdzLT5zdGFydCArIHNpemU7IGFkZHIg PCBlbmQ7KSB7CisJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOworCQl1bnNpZ25lZCBsb25n IG5leHQ7CisKKwkJdm1hID0gZmluZF92bWFfaW50ZXJzZWN0aW9uKG1tLCBhZGRyLCBlbmQpOwor CQlpZiAoIXZtYSkKKwkJCWJyZWFrOworCisJCWFkZHIgJj0gUEFHRV9NQVNLOworCQluZXh0ID0g bWluKHZtYS0+dm1fZW5kLCBlbmQpOworCQluZXh0ID0gcm91bmRfdXAobmV4dCwgUEFHRV9TSVpF KTsKKwkJLyogVGhpcyBpcyBhIGJlc3QgZWZmb3J0IHNvIHdlIGlnbm9yZSBlcnJvcnMgKi8KKwkJ aTkxNV9kZXZtZW1fbWlncmF0ZV92bWEobWVtLCB2bWEsIGFkZHIsIG5leHQpOworCQlhZGRyID0g bmV4dDsKKwl9CisKKwl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOworCW1tcHV0KG1tKTsKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9y ZWdpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAppbmRl eCBlM2U4YWI5NDZkNzguLjRjOWRhYjZiY2E4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX21lbW9yeV9yZWdpb24uaApAQCAtNTYsNiArNTYsMTkgQEAgZW51bSBpbnRlbF9yZWdpb25f aWQgewogICovCiBleHRlcm4gY29uc3QgdTMyIGludGVsX3JlZ2lvbl9tYXBbXTsKIAorc3RhdGlj IGlubGluZSBlbnVtIGludGVsX3JlZ2lvbl9pZAorX19yZWdpb25faWQodTMyIHJlZ2lvbikKK3sK KwllbnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKKworCWZvciAoaWQgPSAwOyBpZCA8IElOVEVMX1JF R0lPTl9VTktOT1dOOyArK2lkKSB7CisJCWlmIChpbnRlbF9yZWdpb25fbWFwW2lkXSA9PSByZWdp b24pCisJCQlyZXR1cm4gaWQ7CisJfQorCisJcmV0dXJuIElOVEVMX1JFR0lPTl9VTktOT1dOOwor fQorCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgewogCXVuc2lnbmVkIGludCBmbGFn czsKIApAQCAtNzEsNiArODQsNyBAQCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgewog c3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCisJc3RydWN0IGk5MTVfZGV2bWVtICpkZXZtZW07CiAJY29uc3Qgc3RydWN0IGludGVs X21lbW9yeV9yZWdpb25fb3BzICpvcHM7CiAKIAlzdHJ1Y3QgaW9fbWFwcGluZyBpb21hcDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9sbWVtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fbG1lbS5jCmluZGV4IGVkZGIzOTI5MTdhYS4u MmJhNGE0NzIwZWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdp b25fbG1lbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9sbWVtLmMK QEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAi aTkxNV9zdm0uaCIKICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgiCiAjaW5jbHVkZSAi Z2VtL2k5MTVfZ2VtX2xtZW0uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcmVnaW9uLmgiCkBA IC02Niw2ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfZmFrZV9sbWVtX2JhcihzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogc3RhdGljIHZvaWQKIHJlZ2lvbl9sbWVtX3JlbGVh c2Uoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHsKKwlpOTE1X3N2bV9kZXZtZW1f cmVtb3ZlKG1lbS0+ZGV2bWVtKTsKIAlyZWxlYXNlX2Zha2VfbG1lbV9iYXIobWVtKTsKIAlpb19t YXBwaW5nX2ZpbmkoJm1lbS0+aW9tYXApOwogCWludGVsX21lbW9yeV9yZWdpb25fcmVsZWFzZV9i dWRkeShtZW0pOwpAQCAtMTIyLDYgKzEyNCwxNCBAQCBpbnRlbF9zZXR1cF9mYWtlX2xtZW0oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCQkJCSBQQUdFX1NJWkUsCiAJCQkJCSBpb19z dGFydCwKIAkJCQkJICZpbnRlbF9yZWdpb25fbG1lbV9vcHMpOworCWlmICghSVNfRVJSKG1lbSkp IHsKKwkJbWVtLT5kZXZtZW0gPSBpOTE1X3N2bV9kZXZtZW1fYWRkKGk5MTUsIG1hcHBhYmxlX2Vu ZCk7CisJCWlmIChJU19FUlIobWVtLT5kZXZtZW0pKSB7CisJCQlpbnRlbF9tZW1vcnlfcmVnaW9u X3B1dChtZW0pOworCQkJbWVtID0gRVJSX0NBU1QobWVtLT5kZXZtZW0pOworCQl9CisJfQorCiAJ aWYgKCFJU19FUlIobWVtKSkgewogCQlEUk1fSU5GTygiSW50ZWwgZ3JhcGhpY3MgZmFrZSBMTUVN OiAlcFJcbiIsICZtZW0tPnJlZ2lvbik7CiAJCURSTV9JTkZPKCJJbnRlbCBncmFwaGljcyBmYWtl IExNRU0gSU8gc3RhcnQ6ICVsbHhcbiIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggMzE2NDA0NTQ0NmQ4 Li5mNDllMjk3MTY0NjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAor KysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTM2MSw2ICszNjEsNyBAQCB0eXBl ZGVmIHN0cnVjdCBfZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBEUk1fSTkxNV9HRU1fVk1fREVT VFJPWQkJMHgzYgogI2RlZmluZSBEUk1fSTkxNV9HRU1fT0JKRUNUX1NFVFBBUkFNCURSTV9JOTE1 X0dFTV9DT05URVhUX1NFVFBBUkFNCiAjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9CSU5ECQkweDNj CisjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9QUkVGRVRDSAkweDNkCiAvKiBNdXN0IGJlIGtlcHQg Y29tcGFjdCAtLSBubyBob2xlcyAqLwogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURS TV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3Qp CkBAIC00MjYsNiArNDI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNk ZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX0RFU1RST1kJRFJNX0lPVyAoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2Nv bnRyb2wpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9PQkpFQ1RfU0VUUEFSQU0JRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9PQkpFQ1RfU0VUUEFSQU0sIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1f Vk1fQklORAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9WTV9CSU5E LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2JpbmQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dF TV9WTV9QUkVGRVRDSAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9W TV9QUkVGRVRDSCwgc3RydWN0IGRybV9pOTE1X2dlbV92bV9wcmVmZXRjaCkKIAogLyogQWxsb3cg ZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCByZWx5 aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJkd2FyZS4K QEAgLTIzMzQsNiArMjMzNiwyNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2JpbmQgewogI2Rl ZmluZSBJOTE1X0dFTV9WTV9CSU5EX1JFQURPTkxZICAgICgxIDw8IDEpCiB9OwogCisvKioKKyAq IHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fcHJlZmV0Y2gKKyAqCisgKiBQcmVmZXRjaCBhbiBhZGRy ZXNzIHJhbmdlIHRvIGEgbWVtb3J5IHJlZ2lvbi4KKyAqLworc3RydWN0IGRybV9pOTE1X2dlbV92 bV9wcmVmZXRjaCB7CisJLyoqIFR5cGUgb2YgbWVtb3J5IHRvIHByZWZldGNoICoqLworCV9fdTMy IHR5cGU7CisjZGVmaW5lIEk5MTVfR0VNX1ZNX1BSRUZFVENIX1NWTV9CVUZGRVIgICAwCisKKwkv KiogTWVtb3J5IHJlZ2lvbiB0byBwcmVmZXRjaCB0byAqKi8KKwlfX3UzMiByZWdpb247CisKKwkv KiogVkEgc3RhcnQgdG8gcHJlZmV0Y2ggKiovCisJX191NjQgc3RhcnQ7CisKKwkvKiogVkEgbGVu Z3RoIHRvIHByZWZldGNoICoqLworCV9fdTY0IGxlbmd0aDsKK307CisKICNpZiBkZWZpbmVkKF9f Y3BsdXNwbHVzKQogfQogI2VuZGlmCi0tIAoyLjIxLjAucmMwLjMyLmcyNDNhNGM3ZTI3CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AA93C00454 for ; Fri, 13 Dec 2019 22:07:51 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 054CF2073D for ; Fri, 13 Dec 2019 22:07:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 054CF2073D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D816F6EDEF; Fri, 13 Dec 2019 22:07:33 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBBF86EDEA; Fri, 13 Dec 2019 22:07:31 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2019 14:07:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,311,1571727600"; d="scan'208";a="216558905" Received: from nvishwa1-desk.sc.intel.com ([10.3.160.185]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2019 14:07:30 -0800 From: Niranjana Vishwanathapura To: intel-gfx@lists.freedesktop.org Date: Fri, 13 Dec 2019 13:56:08 -0800 Message-Id: <20191213215614.24558-7-niranjana.vishwanathapura@intel.com> X-Mailer: git-send-email 2.21.0.rc0.32.g243a4c7e27 In-Reply-To: <20191213215614.24558-1-niranjana.vishwanathapura@intel.com> References: <20191213215614.24558-1-niranjana.vishwanathapura@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC v2 06/12] drm/i915/svm: Device memory support X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kenneth.w.graunke@intel.com, sanjay.k.kumar@intel.com, dri-devel@lists.freedesktop.org, jason.ekstrand@intel.com, dave.hansen@intel.com, jglisse@redhat.com, daniel.vetter@intel.com, dan.j.williams@intel.com, ira.weiny@intel.com, jgg@mellanox.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" UGx1Z2luIGRldmljZSBtZW1vcnkgdGhyb3VnaCBITU0gYXMgREVWSUNFX1BSSVZBVEUuCkFkZCBz dXBwb3J0IGZ1bmN0aW9ucyB0byBhbGxvY2F0ZSBwYWdlcyBhbmQgZnJlZSBwYWdlcyBmcm9tIGRl dmljZSBtZW1vcnkuCkltcGxlbWVudCBpb2N0bCB0byBwcmVmZXRjaCBwYWdlcyBmcm9tIGhvc3Qg dG8gZGV2aWNlIG1lbW9yeS4KRm9yIG5vdywgb25seSBzdXBwb3J0IG1pZ3JhdGluZyBwYWdlcyBm cm9tIGhvc3QgbWVtb3J5IHRvIGRldmljZSBtZW1vcnkuCgpDYzogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogSm9uIEJsb29tZmllbGQgPGpvbi5i bG9vbWZpZWxkQGludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50 ZWwuY29tPgpDYzogU3VkZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYSA8bmlyYW5qYW5hLnZpc2h3YW5hdGhhcHVy YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAgICAgICAg ICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8 ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIHwgIDEz IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYnVkZHkuaCAgICAgICAgICB8ICAxMiArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uYyAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3ZtLmggICAgICAgICAgICB8ICAxNSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N2bV9kZXZtZW0uYyAgICAgfCA0MDAgKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggfCAgMTQgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uYyAgIHwgIDEwICsKIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICB8ICAyMiArKwogMTEgZmlsZXMgY2hhbmdl ZCwgNDkxIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3ZtX2Rldm1lbS5jCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcK aW5kZXggNjg5ZTU3ZmUzOTczLi42NjMzN2YyY2EyYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwpAQCAt MTQxLDkgKzE0MSwxOCBAQCBjb25maWcgRFJNX0k5MTVfU1ZNCiAJYm9vbCAiRW5hYmxlIFNoYXJl ZCBWaXJ0dWFsIE1lbW9yeSBzdXBwb3J0IGluIGk5MTUiCiAJZGVwZW5kcyBvbiBTVEFHSU5HCiAJ ZGVwZW5kcyBvbiBEUk1fSTkxNQorCWRlcGVuZHMgb24gQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBM VUcKKwlkZXBlbmRzIG9uIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RSRU1PVkUKKwlkZXBlbmRzIG9u IE1FTU9SWV9IT1RQTFVHCisJZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFCisJZGVwZW5kcyBv biBBUkNIX0hBU19QVEVfREVWTUFQCisJZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUAorCWRl cGVuZHMgb24gWk9ORV9ERVZJQ0UKKwlkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFCiAJZGVwZW5k cyBvbiBNTVUKIAlzZWxlY3QgSE1NX01JUlJPUgogCXNlbGVjdCBNTVVfTk9USUZJRVIKKwlzZWxl Y3QgTUlHUkFURV9WTUFfSEVMUEVSCiAJZGVmYXVsdCBuCiAJaGVscAogCSAgQ2hvb3NlIHRoaXMg b3B0aW9uIGlmIHlvdSB3YW50IFNoYXJlZCBWaXJ0dWFsIE1lbW9yeSAoU1ZNKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQppbmRleCA3ZDRjZDllZWZkMTIuLmI1NzRlYzMxZWEyZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKQEAgLTE1NSw3ICsxNTUsOCBAQCBpOTE1LXkgKz0gXAogCiAjIFNWTSBjb2RlCiBpOTE1 LSQoQ09ORklHX0RSTV9JOTE1X1NWTSkgKz0gZ2VtL2k5MTVfZ2VtX3N2bS5vIFwKLQkJCSAgICAg ICBpOTE1X3N2bS5vCisJCQkgICAgICAgaTkxNV9zdm0ubyBcCisJCQkgICAgICAgaTkxNV9zdm1f ZGV2bWVtLm8KIAogIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBv cnQKIG9iai15ICs9IGd0L3VjLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5jCmluZGV4IDAwM2Q4MWMxNzFkMi4uZjg2OGEzMDFmYzA0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCkBAIC01MDQsMTkgKzUwNCw2IEBAIGludCBf X2luaXQgaTkxNV9nbG9iYWxfb2JqZWN0c19pbml0KHZvaWQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBlbnVtIGludGVsX3JlZ2lvbl9pZAotX19yZWdpb25faWQodTMyIHJlZ2lvbikKLXsKLQll bnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKLQotCWZvciAoaWQgPSAwOyBpZCA8IElOVEVMX1JFR0lP Tl9VTktOT1dOOyArK2lkKSB7Ci0JCWlmIChpbnRlbF9yZWdpb25fbWFwW2lkXSA9PSByZWdpb24p Ci0JCQlyZXR1cm4gaWQ7Ci0JfQotCi0JcmV0dXJuIElOVEVMX1JFR0lPTl9VTktOT1dOOwotfQot CiBib29sCiBpOTE1X2dlbV9vYmplY3Rfc3ZtX21hcHBlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRk eS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oCmluZGV4IGVkNDFmMzUwN2Nk Yy4uYWZjNDkzZTZjMTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2J1 ZGR5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oCkBAIC05LDYgKzks OSBAQAogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4K IAorLyogNTEyIGJpdHMgKG9uZSBwZXIgcGFnZXMpIHN1cHBvcnRzIDJNQiBibG9ja3MgKi8KKyNk ZWZpbmUgSTkxNV9CVUREWV9NQVhfUEFHRVMgICA1MTIKKwogc3RydWN0IGk5MTVfYnVkZHlfYmxv Y2sgewogI2RlZmluZSBJOTE1X0JVRERZX0hFQURFUl9PRkZTRVQgR0VOTUFTS19VTEwoNjMsIDEy KQogI2RlZmluZSBJOTE1X0JVRERZX0hFQURFUl9TVEFURSAgR0VOTUFTS19VTEwoMTEsIDEwKQpA QCAtMzIsNiArMzUsMTUgQEAgc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgewogCSAqLwogCXN0cnVj dCBsaXN0X2hlYWQgbGluazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHRtcF9saW5rOworCisJdW5zaWdu ZWQgbG9uZyBwZm5fZmlyc3Q7CisJLyoKKwkgKiBGSVhNRTogVGhlcmUgYXJlIG90aGVyIGFsdGVy bmF0aXZlcyB0byBiaXRtYXAuIExpa2Ugc3BsaXR0aW5nIHRoZQorCSAqIGJsb2NrIGludG8gY29u dGlndW91cyA0SyBzaXplZCBibG9ja3MuIEJ1dCBpdCBpcyBwYXJ0IG9mIGJpZ2dlcgorCSAqIGlz c3VlcyBpbnZvbHZpbmcgcGFydGlhbGx5IGludmFsaWRhdGluZyBsYXJnZSBtYXBwaW5nLCBmcmVl aW5nIHRoZQorCSAqIGJsb2NrcyBldGMuLCByZXZpc2l0LgorCSAqLworCXVuc2lnbmVkIGxvbmcg Yml0bWFwW0JJVFNfVE9fTE9OR1MoSTkxNV9CVUREWV9NQVhfUEFHRVMpXTsKIH07CiAKICNkZWZp bmUgSTkxNV9CVUREWV9NQVhfT1JERVIgIEk5MTVfQlVERFlfSEVBREVSX09SREVSCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwppbmRleCA4NjZkM2NiYjFlZGYuLmYxYjkyZmQzZDIzNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCkBAIC0yNzY1LDYgKzI3NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkx NV9HRU1fVk1fQ1JFQVRFLCBpOTE1X2dlbV92bV9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxM T1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNX0RFU1RST1ksIGk5MTVfZ2VtX3Zt X2Rlc3Ryb3lfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5 MTVfR0VNX1ZNX0JJTkQsIGk5MTVfZ2VtX3ZtX2JpbmRfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cp LAorCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNX1BSRUZFVENILCBpOTE1X2dlbV92bV9w cmVmZXRjaF9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVykKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciBkcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N2bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uYwppbmRleCA1OTQxYmU1YjU4 MDMuLjMxYTgwYWUwZGQ0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bS5jCkBAIC0xNTIsNiArMTUy LDcgQEAgc3RhdGljIGludCBpOTE1X3JhbmdlX2ZhdWx0KHN0cnVjdCBzdm1fbm90aWZpZXIgKnNu LAogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gc24tPm5vdGlmaWVyLm1tOwogCXN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtID0gc3ZtLT52bTsKIAl1MzIgc2dfcGFnZV9zaXplczsKKwlpbnQg cmVnaW9uczsKIAl1NjQgZmxhZ3M7CiAJbG9uZyByZXQ7CiAKQEAgLTE2OSw2ICsxNzAsMTEgQEAg c3RhdGljIGludCBpOTE1X3JhbmdlX2ZhdWx0KHN0cnVjdCBzdm1fbm90aWZpZXIgKnNuLAogCQkJ cmV0dXJuIHJldDsKIAkJfQogCisJCS8qIEZvciBkZ2Z4LCBlbnN1cmUgdGhlIHJhbmdlIGlzIGlu IGRldmljZSBsb2NhbCBtZW1vcnkgb25seSAqLworCQlyZWdpb25zID0gaTkxNV9kbWVtX2NvbnZl cnRfcGZuKHZtLT5pOTE1LCAmcmFuZ2UpOworCQlpZiAoIXJlZ2lvbnMgfHwgKElTX0RHRlgodm0t Pmk5MTUpICYmIChyZWdpb25zICYgUkVHSU9OX1NNRU0pKSkKKwkJCXJldHVybiAtRUlOVkFMOwor CiAJCXNnX3BhZ2Vfc2l6ZXMgPSBpOTE1X3N2bV9idWlsZF9zZyh2bSwgJnJhbmdlLCBzdCk7CiAK IAkJbXV0ZXhfbG9jaygmc3ZtLT5tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N2bS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdm0uaAppbmRleCBh OTFlNmE2MzdmMTAuLmFlMzljMmVmMmYxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zdm0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bS5oCkBAIC0z Myw2ICszMywxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bV9pc19zdm1fZW5hYmxlZChz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAlyZXR1cm4gdm0tPnN2bTsKIH0KIAoraW50 IGk5MTVfZG1lbV9jb252ZXJ0X3BmbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkgIHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTsKK2ludCBpOTE1X2dlbV92bV9wcmVmZXRj aF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkxNV9zdm1f ZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQkJdTY0IHNpemUp Owordm9pZCBpOTE1X3N2bV9kZXZtZW1fcmVtb3ZlKHN0cnVjdCBpOTE1X2Rldm1lbSAqZGV2bWVt KTsKKwogI2Vsc2UKIAogc3RydWN0IGk5MTVfc3ZtIHsgfTsKQEAgLTQ1LDYgKzUzLDEzIEBAIHN0 YXRpYyBpbmxpbmUgaW50IGk5MTVfc3ZtX2JpbmRfbW0oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCiBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bV9pc19zdm1fZW5hYmxlZChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIHsgcmV0dXJuIGZhbHNlOyB9CiAKK3N0YXRpYyBpbmxp bmUgaW50IGk5MTVfZ2VtX3ZtX3ByZWZldGNoX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCisJCQkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7IHJl dHVybiAtRU5PVFNVUFA7IH0KK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkx NV9zdm1fZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTY0IHNpemUp Cit7IHJldHVybiBOVUxMOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9zdm1fZGV2bWVtX3Jl bW92ZShzdHJ1Y3QgaTkxNV9kZXZtZW0gKmRldm1lbSkgeyB9CiAjZW5kaWYKIAogI2VuZGlmIC8q IF9fSTkxNV9TVk1fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dm1fZGV2bWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N2bV9kZXZtZW0uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBhMWYxMzk0ZjE5NgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3ZtX2Rldm1lbS5jCkBAIC0w LDAgKzEsNDAwIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgv bW1fdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC9tbS5oPgorCisjaW5jbHVkZSAiaTkx NV9zdm0uaCIKKyNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgiCisKK3N0cnVjdCBpOTE1 X2Rldm1lbV9taWdyYXRlIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKKwlzdHJ1 Y3QgbWlncmF0ZV92bWEgKmFyZ3M7CisKKwllbnVtIGludGVsX3JlZ2lvbl9pZCBzcmNfaWQ7CisJ ZW51bSBpbnRlbF9yZWdpb25faWQgZHN0X2lkOworCXU2NCBucGFnZXM7Cit9OworCitzdHJ1Y3Qg aTkxNV9kZXZtZW0geworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCXN0cnVjdCBk ZXZfcGFnZW1hcCBwYWdlbWFwOworCXVuc2lnbmVkIGxvbmcgcGZuX2ZpcnN0OworCXVuc2lnbmVk IGxvbmcgcGZuX2xhc3Q7Cit9OworCitzdGF0aWMgaW5saW5lIGJvb2wKK2k5MTVfZG1lbV9wYWdl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7 CisJaWYgKCFpc19kZXZpY2VfcHJpdmF0ZV9wYWdlKHBhZ2UpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworaW50IGk5MTVfZG1lbV9jb252ZXJ0X3BmbihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKQor eworCXVuc2lnbmVkIGxvbmcgaSwgbnBhZ2VzOworCWludCByZWdpb25zID0gMDsKKworCW5wYWdl cyA9IChyYW5nZS0+ZW5kIC0gcmFuZ2UtPnN0YXJ0KSA+PiBQQUdFX1NISUZUOworCWZvciAoaSA9 IDA7IGkgPCBucGFnZXM7ICsraSkgeworCQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2s7 CisJCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW07CisJCXN0cnVjdCBwYWdlICpwYWdl OworCQl1NjQgYWRkcjsKKworCQlwYWdlID0gaG1tX2RldmljZV9lbnRyeV90b19wYWdlKHJhbmdl LCByYW5nZS0+cGZuc1tpXSk7CisJCWlmICghcGFnZSkKKwkJCWNvbnRpbnVlOworCisJCWlmICgh KHJhbmdlLT5wZm5zW2ldICYgcmFuZ2UtPmZsYWdzW0hNTV9QRk5fREVWSUNFX1BSSVZBVEVdKSkg eworCQkJcmVnaW9ucyB8PSBSRUdJT05fU01FTTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYg KCFpOTE1X2RtZW1fcGFnZShkZXZfcHJpdiwgcGFnZSkpIHsKKwkJCVdBUk4oMSwgIlNvbWUgdW5r bm93biBkZXZpY2UgbWVtb3J5ICFcbiIpOworCQkJcmFuZ2UtPnBmbnNbaV0gPSAwOworCQkJY29u dGludWU7CisJCX0KKworCQlyZWdpb25zIHw9IFJFR0lPTl9MTUVNOworCQlibG9jayA9IHBhZ2Ut PnpvbmVfZGV2aWNlX2RhdGE7CisJCW1lbSA9IGJsb2NrLT5wcml2YXRlOworCQlhZGRyID0gbWVt LT5yZWdpb24uc3RhcnQgKworCQkgICAgICAgaTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2sp OworCQlhZGRyICs9IChwYWdlX3RvX3BmbihwYWdlKSAtIGJsb2NrLT5wZm5fZmlyc3QpIDw8IFBB R0VfU0hJRlQ7CisKKwkJcmFuZ2UtPnBmbnNbaV0gJj0gfnJhbmdlLT5mbGFnc1tITU1fUEZOX0RF VklDRV9QUklWQVRFXTsKKwkJcmFuZ2UtPnBmbnNbaV0gJj0gKCgxVUwgPDwgcmFuZ2UtPnBmbl9z aGlmdCkgLSAxKTsKKwkJcmFuZ2UtPnBmbnNbaV0gfD0gKGFkZHIgPj4gUEFHRV9TSElGVCkgPDwg cmFuZ2UtPnBmbl9zaGlmdDsKKwl9CisKKwlyZXR1cm4gcmVnaW9uczsKK30KKworc3RhdGljIGlu dAoraTkxNV9kZXZtZW1fcGFnZV9hbGxvY19sb2NrZWQoc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKm1lbSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLAorCQkJICAgICAgc3RydWN0 IGxpc3RfaGVhZCAqYmxvY2tzKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZSA9IEFMSUdOKChucGFn ZXMgKiBQQUdFX1NJWkUpLCBtZW0tPm1tLmNodW5rX3NpemUpOworCXN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICpibG9jazsKKwlpbnQgcmV0OworCisJSU5JVF9MSVNUX0hFQUQoYmxvY2tzKTsKKwly ZXQgPSBfX2ludGVsX21lbW9yeV9yZWdpb25fZ2V0X3BhZ2VzX2J1ZGR5KG1lbSwgc2l6ZSwgMCwg YmxvY2tzKTsKKwlpZiAodW5saWtlbHkocmV0KSkKKwkJZ290byBhbGxvY19mYWlsZWQ7CisKKwls aXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCBibG9ja3MsIGxpbmspIHsKKwkJYmxvY2stPnBmbl9m aXJzdCA9IG1lbS0+ZGV2bWVtLT5wZm5fZmlyc3Q7CisJCWJsb2NrLT5wZm5fZmlyc3QgKz0gaTkx NV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spIC8KKwkJCQkgICAgUEFHRV9TSVpFOworCQliaXRt YXBfemVybyhibG9jay0+Yml0bWFwLCBJOTE1X0JVRERZX01BWF9QQUdFUyk7CisJCURSTV9ERUJV R19EUklWRVIoIiVzIHBmbl9maXJzdCAweCVseCBvZmYgMHglbGx4IHNpemUgMHglbGx4XG4iLAor CQkJCSAiQWxsb2NhdGVkIGJsb2NrIiwgYmxvY2stPnBmbl9maXJzdCwKKwkJCQkgaTkxNV9idWRk eV9ibG9ja19vZmZzZXQoYmxvY2spLAorCQkJCSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1lbS0+ bW0sIGJsb2NrKSk7CisJfQorCithbGxvY19mYWlsZWQ6CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHN0cnVjdCBwYWdlICoKK2k5MTVfZGV2bWVtX3BhZ2VfZ2V0X2xvY2tlZChzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmJsb2NrcykK K3sKKwlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2ssICpvbjsKKworCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShibG9jaywgb24sIGJsb2NrcywgbGluaykgeworCQl1bnNpZ25lZCBsb25n IHdlaWdodCwgbWF4OworCQl1bnNpZ25lZCBsb25nIGksIHBmbjsKKwkJc3RydWN0IHBhZ2UgKnBh Z2U7CisKKwkJbWF4ID0gaTkxNV9idWRkeV9ibG9ja19zaXplKCZtZW0tPm1tLCBibG9jaykgLyBQ QUdFX1NJWkU7CisJCWkgPSBmaW5kX2ZpcnN0X3plcm9fYml0KGJsb2NrLT5iaXRtYXAsIG1heCk7 CisJCWlmICh1bmxpa2VseShpID09IG1heCkpIHsKKwkJCVdBUk4oMSwgIkdldHRpbmcgYSBwYWdl IHNob3VsZCBoYXZlIG5ldmVyIGZhaWxlZFxuIik7CisJCQlicmVhazsKKwkJfQorCisJCXNldF9i aXQoaSwgYmxvY2stPmJpdG1hcCk7CisJCXBmbiA9IGJsb2NrLT5wZm5fZmlyc3QgKyBpOworCQlw YWdlID0gcGZuX3RvX3BhZ2UocGZuKTsKKwkJZ2V0X3BhZ2UocGFnZSk7CisJCWxvY2tfcGFnZShw YWdlKTsKKwkJcGFnZS0+em9uZV9kZXZpY2VfZGF0YSA9IGJsb2NrOworCQl3ZWlnaHQgPSBiaXRt YXBfd2VpZ2h0KGJsb2NrLT5iaXRtYXAsIG1heCk7CisJCWlmICh3ZWlnaHQgPT0gbWF4KQorCQkJ bGlzdF9kZWxfaW5pdCgmYmxvY2stPmxpbmspOworCQlEUk1fREVCVUdfRFJJVkVSKCIlcyBwZm4g MHglbHggYmxvY2sgd2VpZ2h0IDB4JWx4XG4iLAorCQkJCSAiQWxsb2NhdGVkIHBhZ2UiLCBwZm4s IHdlaWdodCk7CisJCXJldHVybiBwYWdlOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IHZvaWQKK2k5MTVfZGV2bWVtX3BhZ2VfZnJlZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAorCQkJICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwl1bmxvY2tfcGFn ZShwYWdlKTsKKwlwdXRfcGFnZShwYWdlKTsKK30KKworc3RhdGljIGludAoraTkxNV9kZXZtZW1f bWlncmF0ZV9hbGxvY19hbmRfY29weShzdHJ1Y3QgaTkxNV9kZXZtZW1fbWlncmF0ZSAqbWlncmF0 ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1pZ3JhdGUtPmk5MTU7CisJ c3RydWN0IG1pZ3JhdGVfdm1hICphcmdzID0gbWlncmF0ZS0+YXJnczsKKwlzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiAqbWVtOworCXN0cnVjdCBsaXN0X2hlYWQgYmxvY2tzID0gezB9OworCXVu c2lnbmVkIGxvbmcgaSwgbnBhZ2VzLCBjbnQ7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJaW50IHJl dDsKKworCW5wYWdlcyA9IChhcmdzLT5lbmQgLSBhcmdzLT5zdGFydCkgPj4gUEFHRV9TSElGVDsK KwlEUk1fREVCVUdfRFJJVkVSKCJzdGFydCAweCVseCBucGFnZXMgJWxkXG4iLCBhcmdzLT5zdGFy dCwgbnBhZ2VzKTsKKworCS8qIENoZWNrIHNvdXJjZSBwYWdlcyAqLworCWZvciAoaSA9IDAsIGNu dCA9IDA7IGkgPCBucGFnZXM7IGkrKykgeworCQlhcmdzLT5kc3RbaV0gPSAwOworCQlwYWdlID0g bWlncmF0ZV9wZm5fdG9fcGFnZShhcmdzLT5zcmNbaV0pOworCQlpZiAodW5saWtlbHkoIXBhZ2Ug fHwgIShhcmdzLT5zcmNbaV0gJiBNSUdSQVRFX1BGTl9NSUdSQVRFKSkpCisJCQljb250aW51ZTsK KworCQlhcmdzLT5kc3RbaV0gPSBNSUdSQVRFX1BGTl9WQUxJRDsKKwkJY250Kys7CisJfQorCisJ aWYgKCFjbnQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBtaWdyYXRlX291dDsKKwl9CisK KwltZW0gPSBpOTE1LT5tbS5yZWdpb25zW21pZ3JhdGUtPmRzdF9pZF07CisJcmV0ID0gaTkxNV9k ZXZtZW1fcGFnZV9hbGxvY19sb2NrZWQobWVtLCBjbnQsICZibG9ja3MpOworCWlmICh1bmxpa2Vs eShyZXQpKQorCQlnb3RvIG1pZ3JhdGVfb3V0OworCisJLyogQWxsb2NhdGUgZGV2aWNlIG1lbW9y eSAqLworCWZvciAoaSA9IDAsIGNudCA9IDA7IGkgPCBucGFnZXM7IGkrKykgeworCQlpZiAoIWFy Z3MtPmRzdFtpXSkKKwkJCWNvbnRpbnVlOworCisJCXBhZ2UgPSBpOTE1X2Rldm1lbV9wYWdlX2dl dF9sb2NrZWQobWVtLCAmYmxvY2tzKTsKKwkJaWYgKHVubGlrZWx5KCFwYWdlKSkgeworCQkJV0FS TigxLCAiRmFpbGVkIHRvIGdldCBkc3QgcGFnZVxuIik7CisJCQlhcmdzLT5kc3RbaV0gPSAwOwor CQkJY29udGludWU7CisJCX0KKworCQljbnQrKzsKKwkJYXJncy0+ZHN0W2ldID0gbWlncmF0ZV9w Zm4ocGFnZV90b19wZm4ocGFnZSkpIHwKKwkJCSAgICAgICBNSUdSQVRFX1BGTl9MT0NLRUQ7CisJ fQorCisJaWYgKCFjbnQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBtaWdyYXRlX291dDsK Kwl9CisKKwkvKiBDb3B5IHRoZSBwYWdlcyAqLworCW1pZ3JhdGUtPm5wYWdlcyA9IG5wYWdlczsK K21pZ3JhdGVfb3V0OgorCWlmICh1bmxpa2VseShyZXQpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBu cGFnZXM7IGkrKykgeworCQkJaWYgKGFyZ3MtPmRzdFtpXSAmIE1JR1JBVEVfUEZOX0xPQ0tFRCkg eworCQkJCXBhZ2UgPSBtaWdyYXRlX3Bmbl90b19wYWdlKGFyZ3MtPmRzdFtpXSk7CisJCQkJaTkx NV9kZXZtZW1fcGFnZV9mcmVlX2xvY2tlZChpOTE1LCBwYWdlKTsKKwkJCX0KKwkJCWFyZ3MtPmRz dFtpXSA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGk5MTVfZGV2bWVt X21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChzdHJ1Y3QgaTkxNV9kZXZtZW1fbWlncmF0ZSAqbWln cmF0ZSkKK3sKKwlEUk1fREVCVUdfRFJJVkVSKCJucGFnZXMgJWxsZFxuIiwgbWlncmF0ZS0+bnBh Z2VzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9kZXZtZW1fbWlncmF0ZV9jaHVuayhzdHJ1Y3Qg aTkxNV9kZXZtZW1fbWlncmF0ZSAqbWlncmF0ZSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTkx NV9kZXZtZW1fbWlncmF0ZV9hbGxvY19hbmRfY29weShtaWdyYXRlKTsKKwlpZiAoIXJldCkgewor CQltaWdyYXRlX3ZtYV9wYWdlcyhtaWdyYXRlLT5hcmdzKTsKKwkJaTkxNV9kZXZtZW1fbWlncmF0 ZV9maW5hbGl6ZV9hbmRfbWFwKG1pZ3JhdGUpOworCX0KKwltaWdyYXRlX3ZtYV9maW5hbGl6ZSht aWdyYXRlLT5hcmdzKTsKK30KKworaW50IGk5MTVfZGV2bWVtX21pZ3JhdGVfdm1hKHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsCisJCQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCSAgICB1bnNpZ25lZCBsb25nIGVu ZCkKK3sKKwl1bnNpZ25lZCBsb25nIG5wYWdlcyA9IChlbmQgLSBzdGFydCkgPj4gUEFHRV9TSElG VDsKKwl1bnNpZ25lZCBsb25nIG1heCA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIEk5MTVfQlVERFlf TUFYX1BBR0VTLCBucGFnZXMpOworCXN0cnVjdCBpOTE1X2Rldm1lbV9taWdyYXRlIG1pZ3JhdGUg PSB7MH07CisJc3RydWN0IG1pZ3JhdGVfdm1hIGFyZ3MgPSB7CisJCS52bWEJCT0gdm1hLAorCQku c3RhcnQJCT0gc3RhcnQsCisJfTsKKwl1bnNpZ25lZCBsb25nIGMsIGk7CisJaW50IHJldCA9IDA7 CisKKwkvKiBYWFg6IE9wcG9ydHVuaXN0aWNhbGx5IG1pZ3JhdGUgYWRkaXRpb25hbCBwYWdlcz8g Ki8KKwlEUk1fREVCVUdfRFJJVkVSKCJzdGFydCAweCVseCBlbmQgMHglbHhcbiIsIHN0YXJ0LCBl bmQpOworCWFyZ3Muc3JjID0ga2NhbGxvYyhtYXgsIHNpemVvZihhcmdzLnNyYyksIEdGUF9LRVJO RUwpOworCWlmICh1bmxpa2VseSghYXJncy5zcmMpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWFy Z3MuZHN0ID0ga2NhbGxvYyhtYXgsIHNpemVvZihhcmdzLmRzdCksIEdGUF9LRVJORUwpOworCWlm ICh1bmxpa2VseSghYXJncy5kc3QpKSB7CisJCWtmcmVlKGFyZ3Muc3JjKTsKKwkJcmV0dXJuIC1F Tk9NRU07CisJfQorCisJLyogWFhYOiBTdXBwb3J0IG1pZ3JhdGluZyBmcm9tIExNRU0gdG8gU01F TSAqLworCW1pZ3JhdGUuYXJncyA9ICZhcmdzOworCW1pZ3JhdGUuaTkxNSA9IG1lbS0+aTkxNTsK KwltaWdyYXRlLnNyY19pZCA9IElOVEVMX1JFR0lPTl9TTUVNOworCW1pZ3JhdGUuZHN0X2lkID0g TUVNT1JZX1RZUEVfRlJPTV9SRUdJT04obWVtLT5pZCk7CisJZm9yIChpID0gMDsgaSA8IG5wYWdl czsgaSArPSBjKSB7CisJCWMgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBJOTE1X0JVRERZX01BWF9Q QUdFUywgbnBhZ2VzKTsKKwkJYXJncy5lbmQgPSBzdGFydCArIChjIDw8IFBBR0VfU0hJRlQpOwor CQlyZXQgPSBtaWdyYXRlX3ZtYV9zZXR1cCgmYXJncyk7CisJCWlmICh1bmxpa2VseShyZXQpKQor CQkJZ290byBtaWdyYXRlX2RvbmU7CisJCWlmIChhcmdzLmNwYWdlcykKKwkJCWk5MTVfZGV2bWVt X21pZ3JhdGVfY2h1bmsoJm1pZ3JhdGUpOworCQlhcmdzLnN0YXJ0ID0gYXJncy5lbmQ7CisJfQor bWlncmF0ZV9kb25lOgorCWtmcmVlKGFyZ3MuZHN0KTsKKwlrZnJlZShhcmdzLnNyYyk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZtX2ZhdWx0X3QgaTkxNV9kZXZtZW1fbWlncmF0ZV90b19y YW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpCit7CisJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKK30K Kworc3RhdGljIHZvaWQgaTkxNV9kZXZtZW1fcGFnZV9mcmVlKHN0cnVjdCBwYWdlICpwYWdlKQor eworCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jayA9IHBhZ2UtPnpvbmVfZGV2aWNlX2Rh dGE7CisJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGJsb2NrLT5wcml2YXRlOwor CXVuc2lnbmVkIGxvbmcgaSwgbWF4LCB3ZWlnaHQ7CisKKwltYXggPSBpOTE1X2J1ZGR5X2Jsb2Nr X3NpemUoJm1lbS0+bW0sIGJsb2NrKSAvIFBBR0VfU0laRTsKKwlpID0gcGFnZV90b19wZm4ocGFn ZSkgLSBibG9jay0+cGZuX2ZpcnN0OworCWNsZWFyX2JpdChpLCBibG9jay0+Yml0bWFwKTsKKwl3 ZWlnaHQgPSBiaXRtYXBfd2VpZ2h0KGJsb2NrLT5iaXRtYXAsIG1heCk7CisJRFJNX0RFQlVHX0RS SVZFUigiJXMgcGZuIDB4JWx4IGJsb2NrIHdlaWdodCAweCVseFxuIiwKKwkJCSAiRnJlZWluZyBw YWdlIiwgcGFnZV90b19wZm4ocGFnZSksIHdlaWdodCk7CisJaWYgKCF3ZWlnaHQpIHsKKwkJRFJN X0RFQlVHX0RSSVZFUigiJXMgcGZuX2ZpcnN0IDB4JWx4IG9mZiAweCVsbHggc2l6ZSAweCVsbHhc biIsCisJCQkJICJGcmVlaW5nIGJsb2NrIiwgYmxvY2stPnBmbl9maXJzdCwKKwkJCQkgaTkxNV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spLAorCQkJCSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1l bS0+bW0sIGJsb2NrKSk7CisJCV9faW50ZWxfbWVtb3J5X3JlZ2lvbl9wdXRfYmxvY2tfYnVkZHko YmxvY2spOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMgaTkx NV9kZXZtZW1fcGFnZW1hcF9vcHMgPSB7CisJLnBhZ2VfZnJlZSA9IGk5MTVfZGV2bWVtX3BhZ2Vf ZnJlZSwKKwkubWlncmF0ZV90b19yYW0gPSBpOTE1X2Rldm1lbV9taWdyYXRlX3RvX3JhbSwKK307 CisKK3N0cnVjdCBpOTE1X2Rldm1lbSAqaTkxNV9zdm1fZGV2bWVtX2FkZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTY0IHNpemUpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmk5 MTUtPmRybS5wZGV2LT5kZXY7CisJc3RydWN0IGk5MTVfZGV2bWVtICpkZXZtZW07CisJc3RydWN0 IHJlc291cmNlICpyZXM7CisKKwlkZXZtZW0gPSBremFsbG9jKHNpemVvZigqZGV2bWVtKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFkZXZtZW0pCisJCXJldHVybiBOVUxMOworCisJZGV2bWVtLT5pOTE1 ID0gaTkxNTsKKwlyZXMgPSBkZXZtX3JlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKGRldiwgJmlvbWVt X3Jlc291cmNlLCBzaXplKTsKKwlpZiAoSVNfRVJSKHJlcykpCisJCWdvdG8gb3V0X2ZyZWU7CisK KwlkZXZtZW0tPnBhZ2VtYXAudHlwZSA9IE1FTU9SWV9ERVZJQ0VfUFJJVkFURTsKKwlkZXZtZW0t PnBhZ2VtYXAucmVzID0gKnJlczsKKwlkZXZtZW0tPnBhZ2VtYXAub3BzID0gJmk5MTVfZGV2bWVt X3BhZ2VtYXBfb3BzOworCWlmIChJU19FUlIoZGV2bV9tZW1yZW1hcF9wYWdlcyhkZXYsICZkZXZt ZW0tPnBhZ2VtYXApKSkKKwkJZ290byBvdXRfZnJlZTsKKworCWRldm1lbS0+cGZuX2ZpcnN0ID0g cmVzLT5zdGFydCA+PiBQQUdFX1NISUZUOworCWRldm1lbS0+cGZuX2xhc3QgPSByZXMtPmVuZCA+ PiBQQUdFX1NISUZUOworCXJldHVybiBkZXZtZW07CitvdXRfZnJlZToKKwlrZnJlZShkZXZtZW0p OworCXJldHVybiBOVUxMOworfQorCit2b2lkIGk5MTVfc3ZtX2Rldm1lbV9yZW1vdmUoc3RydWN0 IGk5MTVfZGV2bWVtICpkZXZtZW0pCit7CisJLyogWFhYOiBJcyBpdCB0aGUgcmlnaHQgd2F5IHRv IHJlbGVhc2U/ICovCisJcmVsZWFzZV9yZXNvdXJjZSgmZGV2bWVtLT5wYWdlbWFwLnJlcyk7CisJ a2ZyZWUoZGV2bWVtKTsKK30KKworaW50IGk5MTVfZ2VtX3ZtX3ByZWZldGNoX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgICAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1 KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV92bV9wcmVmZXRjaCAqYXJncyA9IGRhdGE7CisJ dW5zaWduZWQgbG9uZyBhZGRyLCBlbmQsIHNpemUgPSBhcmdzLT5sZW5ndGg7CisJc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbTsKKwllbnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKKwlzdHJ1 Y3QgbW1fc3RydWN0ICptbTsKKworCWlmIChhcmdzLT50eXBlICE9IEk5MTVfR0VNX1ZNX1BSRUZF VENIX1NWTV9CVUZGRVIpCisJCXJldHVybiAtRUlOVkFMOworCisJRFJNX0RFQlVHX0RSSVZFUigi c3RhcnQgMHglbGx4IGxlbmd0aCAweCVsbHggcmVnaW9uIDB4JXhcbiIsCisJCQkgYXJncy0+c3Rh cnQsIGFyZ3MtPmxlbmd0aCwgYXJncy0+cmVnaW9uKTsKKwlpZCA9IF9fcmVnaW9uX2lkKGFyZ3Mt PnJlZ2lvbik7CisJaWYgKChNRU1PUllfVFlQRV9GUk9NX1JFR0lPTihhcmdzLT5yZWdpb24pICE9 IElOVEVMX01FTU9SWV9MT0NBTCkgfHwKKwkgICAgaWQgPT0gSU5URUxfUkVHSU9OX1VOS05PV04p CisJCXJldHVybiAtRUlOVkFMOworCisJbWVtID0gaTkxNS0+bW0ucmVnaW9uc1tpZF07CisKKwlt bSA9IGdldF90YXNrX21tKGN1cnJlbnQpOworCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwor CWZvciAoYWRkciA9IGFyZ3MtPnN0YXJ0LCBlbmQgPSBhcmdzLT5zdGFydCArIHNpemU7IGFkZHIg PCBlbmQ7KSB7CisJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOworCQl1bnNpZ25lZCBsb25n IG5leHQ7CisKKwkJdm1hID0gZmluZF92bWFfaW50ZXJzZWN0aW9uKG1tLCBhZGRyLCBlbmQpOwor CQlpZiAoIXZtYSkKKwkJCWJyZWFrOworCisJCWFkZHIgJj0gUEFHRV9NQVNLOworCQluZXh0ID0g bWluKHZtYS0+dm1fZW5kLCBlbmQpOworCQluZXh0ID0gcm91bmRfdXAobmV4dCwgUEFHRV9TSVpF KTsKKwkJLyogVGhpcyBpcyBhIGJlc3QgZWZmb3J0IHNvIHdlIGlnbm9yZSBlcnJvcnMgKi8KKwkJ aTkxNV9kZXZtZW1fbWlncmF0ZV92bWEobWVtLCB2bWEsIGFkZHIsIG5leHQpOworCQlhZGRyID0g bmV4dDsKKwl9CisKKwl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOworCW1tcHV0KG1tKTsKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9y ZWdpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAppbmRl eCBlM2U4YWI5NDZkNzguLjRjOWRhYjZiY2E4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX21lbW9yeV9yZWdpb24uaApAQCAtNTYsNiArNTYsMTkgQEAgZW51bSBpbnRlbF9yZWdpb25f aWQgewogICovCiBleHRlcm4gY29uc3QgdTMyIGludGVsX3JlZ2lvbl9tYXBbXTsKIAorc3RhdGlj IGlubGluZSBlbnVtIGludGVsX3JlZ2lvbl9pZAorX19yZWdpb25faWQodTMyIHJlZ2lvbikKK3sK KwllbnVtIGludGVsX3JlZ2lvbl9pZCBpZDsKKworCWZvciAoaWQgPSAwOyBpZCA8IElOVEVMX1JF R0lPTl9VTktOT1dOOyArK2lkKSB7CisJCWlmIChpbnRlbF9yZWdpb25fbWFwW2lkXSA9PSByZWdp b24pCisJCQlyZXR1cm4gaWQ7CisJfQorCisJcmV0dXJuIElOVEVMX1JFR0lPTl9VTktOT1dOOwor fQorCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgewogCXVuc2lnbmVkIGludCBmbGFn czsKIApAQCAtNzEsNiArODQsNyBAQCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgewog c3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCisJc3RydWN0IGk5MTVfZGV2bWVtICpkZXZtZW07CiAJY29uc3Qgc3RydWN0IGludGVs X21lbW9yeV9yZWdpb25fb3BzICpvcHM7CiAKIAlzdHJ1Y3QgaW9fbWFwcGluZyBpb21hcDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9sbWVtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fbG1lbS5jCmluZGV4IGVkZGIzOTI5MTdhYS4u MmJhNGE0NzIwZWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdp b25fbG1lbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9sbWVtLmMK QEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAi aTkxNV9zdm0uaCIKICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgiCiAjaW5jbHVkZSAi Z2VtL2k5MTVfZ2VtX2xtZW0uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcmVnaW9uLmgiCkBA IC02Niw2ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfZmFrZV9sbWVtX2JhcihzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogc3RhdGljIHZvaWQKIHJlZ2lvbl9sbWVtX3JlbGVh c2Uoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHsKKwlpOTE1X3N2bV9kZXZtZW1f cmVtb3ZlKG1lbS0+ZGV2bWVtKTsKIAlyZWxlYXNlX2Zha2VfbG1lbV9iYXIobWVtKTsKIAlpb19t YXBwaW5nX2ZpbmkoJm1lbS0+aW9tYXApOwogCWludGVsX21lbW9yeV9yZWdpb25fcmVsZWFzZV9i dWRkeShtZW0pOwpAQCAtMTIyLDYgKzEyNCwxNCBAQCBpbnRlbF9zZXR1cF9mYWtlX2xtZW0oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCQkJCSBQQUdFX1NJWkUsCiAJCQkJCSBpb19z dGFydCwKIAkJCQkJICZpbnRlbF9yZWdpb25fbG1lbV9vcHMpOworCWlmICghSVNfRVJSKG1lbSkp IHsKKwkJbWVtLT5kZXZtZW0gPSBpOTE1X3N2bV9kZXZtZW1fYWRkKGk5MTUsIG1hcHBhYmxlX2Vu ZCk7CisJCWlmIChJU19FUlIobWVtLT5kZXZtZW0pKSB7CisJCQlpbnRlbF9tZW1vcnlfcmVnaW9u X3B1dChtZW0pOworCQkJbWVtID0gRVJSX0NBU1QobWVtLT5kZXZtZW0pOworCQl9CisJfQorCiAJ aWYgKCFJU19FUlIobWVtKSkgewogCQlEUk1fSU5GTygiSW50ZWwgZ3JhcGhpY3MgZmFrZSBMTUVN OiAlcFJcbiIsICZtZW0tPnJlZ2lvbik7CiAJCURSTV9JTkZPKCJJbnRlbCBncmFwaGljcyBmYWtl IExNRU0gSU8gc3RhcnQ6ICVsbHhcbiIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggMzE2NDA0NTQ0NmQ4 Li5mNDllMjk3MTY0NjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAor KysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTM2MSw2ICszNjEsNyBAQCB0eXBl ZGVmIHN0cnVjdCBfZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBEUk1fSTkxNV9HRU1fVk1fREVT VFJPWQkJMHgzYgogI2RlZmluZSBEUk1fSTkxNV9HRU1fT0JKRUNUX1NFVFBBUkFNCURSTV9JOTE1 X0dFTV9DT05URVhUX1NFVFBBUkFNCiAjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9CSU5ECQkweDNj CisjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9QUkVGRVRDSAkweDNkCiAvKiBNdXN0IGJlIGtlcHQg Y29tcGFjdCAtLSBubyBob2xlcyAqLwogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURS TV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3Qp CkBAIC00MjYsNiArNDI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNk ZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX0RFU1RST1kJRFJNX0lPVyAoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2Nv bnRyb2wpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9PQkpFQ1RfU0VUUEFSQU0JRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9PQkpFQ1RfU0VUUEFSQU0sIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1f Vk1fQklORAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9WTV9CSU5E LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2JpbmQpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dF TV9WTV9QUkVGRVRDSAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9W TV9QUkVGRVRDSCwgc3RydWN0IGRybV9pOTE1X2dlbV92bV9wcmVmZXRjaCkKIAogLyogQWxsb3cg ZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCByZWx5 aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJkd2FyZS4K QEAgLTIzMzQsNiArMjMzNiwyNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2JpbmQgewogI2Rl ZmluZSBJOTE1X0dFTV9WTV9CSU5EX1JFQURPTkxZICAgICgxIDw8IDEpCiB9OwogCisvKioKKyAq IHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fcHJlZmV0Y2gKKyAqCisgKiBQcmVmZXRjaCBhbiBhZGRy ZXNzIHJhbmdlIHRvIGEgbWVtb3J5IHJlZ2lvbi4KKyAqLworc3RydWN0IGRybV9pOTE1X2dlbV92 bV9wcmVmZXRjaCB7CisJLyoqIFR5cGUgb2YgbWVtb3J5IHRvIHByZWZldGNoICoqLworCV9fdTMy IHR5cGU7CisjZGVmaW5lIEk5MTVfR0VNX1ZNX1BSRUZFVENIX1NWTV9CVUZGRVIgICAwCisKKwkv KiogTWVtb3J5IHJlZ2lvbiB0byBwcmVmZXRjaCB0byAqKi8KKwlfX3UzMiByZWdpb247CisKKwkv KiogVkEgc3RhcnQgdG8gcHJlZmV0Y2ggKiovCisJX191NjQgc3RhcnQ7CisKKwkvKiogVkEgbGVu Z3RoIHRvIHByZWZldGNoICoqLworCV9fdTY0IGxlbmd0aDsKK307CisKICNpZiBkZWZpbmVkKF9f Y3BsdXNwbHVzKQogfQogI2VuZGlmCi0tIAoyLjIxLjAucmMwLjMyLmcyNDNhNGM3ZTI3CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK