From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 31/60] hyper_dmabuf: built-in compilation option Date: Tue, 19 Dec 2017 11:29:47 -0800 Message-ID: <1513711816-2618-31-git-send-email-dongwon.kim@intel.com> References: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogTWF0ZXVzeiBQb2xyb2xhIDxtYXRldXN6eC5wb3Ryb2xhQGludGVsLmNvbT4KCkVuYWJs ZWQgYnVpbHQtaW4gY29tcGlsYXRpb24gb3B0aW9uIG9mIGh5cGVyX2RtYWJ1ZiBkcml2ZXIuCkFs c28sIG1vdmVkIGJhY2tlbmQgaW5pdGlhbGl6YXRpb24gaW50byBvcGVuKCkgdG8gcmVtb3ZlCml0 cyBkZXBlbmRlbmNpZXMgb24gS2VybmVsIGJvb3Rpbmcgc2VxdWVuY2UuCgpoeXBlcl9kbWFidWYu aCBpcyBub3cgaW5zdGFsbGVkIGFzIG9uZSBvZiBzdGFuZGFyZCBoZWFkZXIKZmlsZXMgb2YgS2Vy bmVsLgoKVGhpcyBwYXRjaCBhbHNvIGFkZHJlc3NlcyBwb3NzaWJsZSBtZW1vcnkgbGVha3MgaW4g dmFyaW91cwpwbGFjZXMuCgpTaWduZWQtb2ZmLWJ5OiBEb25nd29uIEtpbSA8ZG9uZ3dvbi5raW1A aW50ZWwuY29tPgotLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9LY29uZmlnICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZf ZHJ2LmMgICAgICAgIHwgIDE3ICsrLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfZHJ2LmggICAgICAgIHwgICAxICsKIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBl cl9kbWFidWZfaWQuYyAgICAgICAgIHwgIDE0ICsrKwogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L2h5cGVyX2RtYWJ1Zl9pbXAuYyAgICAgICAgfCAgMTMgKystCiBkcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMgICAgICB8IDExMyArKysrKysrKysrKysrKysrKy0t LS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbGlzdC5jICAgICAgIHwg IDE1ICsrKwogZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYyAgICAg ICAgfCAgMjAgKysrKwogLi4uL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX3JlbW90ZV9z eW5jLmMgICAgfCAgMzIgKysrKystCiAuLi4veGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9jb21tLmMgICB8ICAgNiArKwogLi4uL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9jb21tX2xpc3QuYyAgfCAgMTUgKysrCiAuLi4veGVuL2h5cGVyX2RtYWJ1Zi94ZW4v aHlwZXJfZG1hYnVmX3hlbl9zaG0uYyAgICB8ICAgNiArKwogaW5jbHVkZS91YXBpL3hlbi9LYnVp bGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKIDEzIGZpbGVzIGNoYW5nZWQs IDIyNyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL3VhcGkveGVuL0tidWlsZAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2Rt YWJ1Zi9LY29uZmlnIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL0tjb25maWcKaW5kZXggNTY2 MzNhMi4uMTg1ZmRmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL0tjb25m aWcKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL0tjb25maWcKQEAgLTE0LDYgKzE0LDcg QEAgY29uZmlnIEhZUEVSX0RNQUJVRl9YRU4KIGNvbmZpZyBIWVBFUl9ETUFCVUZfU1lTRlMKIAli b29sICJFbmFibGUgc3lzZnMgaW5mb3JtYXRpb24gYWJvdXQgaHlwZXIgRE1BIGJ1ZmZlcnMiCiAJ ZGVmYXVsdCB5CisJZGVwZW5kcyBvbiBIWVBFUl9ETUFCVUYKIAloZWxwCiAJICBFeHBvc2UgaW5m b3JtYXRpb24gYWJvdXQgaW1wb3J0ZWQgYW5kIGV4cG9ydGVkIGJ1ZmZlcnMgdXNpbmcKIAkgIGh5 cGVyX2RtYWJ1ZiBkcml2ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfZHJ2LmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVm X2Rydi5jCmluZGV4IGExMmQ0ZGMuLjkyZDcxMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5 cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYwpAQCAtNjYsNiArNjYsMTUgQEAgc3RhdGljIGludCBfX2lu aXQgaHlwZXJfZG1hYnVmX2Rydl9pbml0KHZvaWQpCiAjaWZkZWYgQ09ORklHX0hZUEVSX0RNQUJV Rl9YRU4KIAloeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wcyA9ICZ4ZW5fYmFja2VuZF9v cHM7CiAjZW5kaWYKKwkvKgorCSAqIERlZmVyIGJhY2tlbmQgc2V0dXAgdG8gZmlyc3Qgb3BlbiBj YWxsLgorCSAqIER1ZSB0byBmYWN0IHRoYXQgc29tZSBoeXBlcnZpc29ycyBlZy4gWGVuLCBtYXkg aGF2ZSBkZXBlbmRlbmNpZXMKKwkgKiB0byB1c2Vyc3BhY2UgZGFlbW9ucyBsaWtlIHhlbnN0b3Jl ZCwgaW4gdGhhdCBjYXNlIGFsbCB4ZW5zdG9yZQorCSAqIGNhbGxzIGRvbmUgZnJvbSBrZXJuZWwg d2lsbCBibG9jayB1bnRpbCB0aGF0IGRlYW1vbiB3aWxsIGJlCisJICogc3RhcnRlZCwgaW4gY2Fz ZSB3aGVyZSBtb2R1bGUgaXMgYnVpbHQgaW4gdGhhdCB3aWxsIGJsb2NrIGVudGlyZQorCSAqIGtl cm5lbCBpbml0aWFsaXphdGlvbi4KKwkgKi8KKwloeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5k X2luaXRpYWxpemVkID0gZmFsc2U7CiAKIAlkZXZfaW5mbyhoeXBlcl9kbWFidWZfcHJpdmF0ZS5k ZXZpY2UsCiAJCSAiaW5pdGlhbGl6aW5nIGRhdGFiYXNlIGZvciBpbXBvcnRlZC9leHBvcnRlZCBk bWFidWZzXG4iKTsKQEAgLTczLDcgKzgyLDYgQEAgc3RhdGljIGludCBfX2luaXQgaHlwZXJfZG1h YnVmX2Rydl9pbml0KHZvaWQpCiAJLyogZGV2aWNlIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiAq LwogCS8qIGN1cnJlbnRseSBvbmx5IGRvZXMgd29yay1xdWV1ZSBpbml0aWFsaXphdGlvbiAqLwog CWh5cGVyX2RtYWJ1Zl9wcml2YXRlLndvcmtfcXVldWUgPSBjcmVhdGVfd29ya3F1ZXVlKCJoeXBl cl9kbWFidWZfd3F1ZXVlIik7Ci0JaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQgPSBoeXBlcl9k bWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wcy0+Z2V0X3ZtX2lkKCk7CiAKIAlyZXQgPSBoeXBlcl9k bWFidWZfdGFibGVfaW5pdCgpOwogCWlmIChyZXQgPCAwKSB7CkBAIC04MiwxMyArOTAsNiBAQCBz dGF0aWMgaW50IF9faW5pdCBoeXBlcl9kbWFidWZfZHJ2X2luaXQodm9pZCkKIAkJcmV0dXJuIHJl dDsKIAl9CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wcy0+aW5pdF9j b21tX2VudigpOwotCWlmIChyZXQgPCAwKSB7Ci0JCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZh dGUuZGV2aWNlLAotCQkJImZhaWxlZCB0byBpbml0aWFpbGl6ZSBoeXBlcnZpc29yLXNwZWNpZmlj IGNvbW0gZW52XG4iKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KICNpZmRlZiBDT05GSUdfSFlQRVJf RE1BQlVGX1NZU0ZTCiAJcmV0ID0gaHlwZXJfZG1hYnVmX3JlZ2lzdGVyX3N5c2ZzKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSk7CiAJaWYgKHJldCA8IDApIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmggYi9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oCmluZGV4IDg0NDU0MTYuLjkxZmRhMDQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmgKKysrIGIv ZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuaApAQCAtNzcsNiArNzcs NyBAQCBzdHJ1Y3QgaHlwZXJfZG1hYnVmX3ByaXZhdGUgewogCS8qIGJhY2tlbmQgb3BzIC0gaHlw ZXJ2aXNvciBzcGVjaWZpYyAqLwogCXN0cnVjdCBoeXBlcl9kbWFidWZfYmFja2VuZF9vcHMgKmJh Y2tlbmRfb3BzOwogCXN0cnVjdCBtdXRleCBsb2NrOworCWJvb2wgYmFja2VuZF9pbml0aWFsaXpl ZDsKIH07CiAKICNlbmRpZiAvKiBfX0xJTlVYX1BVQkxJQ19IWVBFUl9ETUFCVUZfRFJWX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5j IGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pZC5jCmluZGV4IDM1YmZk ZmIuLmZlOTUwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfaWQuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lk LmMKQEAgLTQwLDYgKzQwLDEzIEBAIHZvaWQgc3RvcmVfcmV1c2FibGVfaWQoaW50IGlkKQogCXN0 cnVjdCBsaXN0X3JldXNhYmxlX2lkICpuZXdfcmV1c2FibGU7CiAKIAluZXdfcmV1c2FibGUgPSBr bWFsbG9jKHNpemVvZigqbmV3X3JldXNhYmxlKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIW5ld19y ZXVzYWJsZSkgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJO byBtZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOworCQlyZXR1cm47CisJfQorCiAJbmV3 X3JldXNhYmxlLT5pZCA9IGlkOwogCiAJbGlzdF9hZGQoJm5ld19yZXVzYWJsZS0+bGlzdCwgJnJl dXNhYmxlX2hlYWQtPmxpc3QpOwpAQCAtOTQsNiArMTAxLDEzIEBAIGludCBoeXBlcl9kbWFidWZf Z2V0X2lkKHZvaWQpCiAJLyogZmlyc3QgY2xhIHRvIGh5cGVyX2RtYWJ1Zl9nZXRfaWQgKi8KIAlp ZiAoaWQgPT0gMCkgewogCQlyZXVzYWJsZV9oZWFkID0ga21hbGxvYyhzaXplb2YoKnJldXNhYmxl X2hlYWQpLCBHRlBfS0VSTkVMKTsKKworCQlpZiAoIXJldXNhYmxlX2hlYWQpIHsKKwkJCWRldl9l cnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJObyBtZW1vcnkgbGVmdCB0byBi ZSBhbGxvY2F0ZWRcbiIpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwogCQlyZXVzYWJsZV9o ZWFkLT5pZCA9IC0xOyAvKiBsaXN0IGhlYWQgaGF2ZSBpbnZhbGlkIGlkICovCiAJCUlOSVRfTElT VF9IRUFEKCZyZXVzYWJsZV9oZWFkLT5saXN0KTsKIAkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuaWRf cXVldWUgPSByZXVzYWJsZV9oZWFkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfaW1wLmMKaW5kZXggNWEwMzRmZmIuLjM0ZGZhMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW1wLmMKKysrIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYwpAQCAtMjcwLDYgKzI3MCwxMiBAQCBpbmxpbmUg aW50IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3QoaW50IGlkLCBpbnQgZG1hYnVmX29wcykKIAog CXJlcSA9IGtjYWxsb2MoMSwgc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTsKIAorCWlmICghcmVx KSB7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIk5vIG1lbW9y eSBsZWZ0IHRvIGJlIGFsbG9jYXRlZFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwogCWh5 cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxdWVzdChyZXEsIEhZUEVSX0RNQUJVRl9PUFNfVE9fU09VUkNF LCAmb3BlcmFuZHNbMF0pOwogCiAJLyogc2VuZCByZXF1ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3Bv bnNlICovCkBAIC0zNjYsOCArMzcyLDExIEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVy X2RtYWJ1Zl9vcHNfbWFwKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lCiAJcmV0 dXJuIHN0OwogCiBlcnJfZnJlZV9zZzoKLQlzZ19mcmVlX3RhYmxlKHN0KTsKLQlrZnJlZShzdCk7 CisJaWYgKHN0KSB7CisJCXNnX2ZyZWVfdGFibGUoc3QpOworCQlrZnJlZShzdCk7CisJfQorCiAJ cmV0dXJuIE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9o eXBlcl9kbWFidWZfaW9jdGwuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfaW9jdGwuYwppbmRleCBmYTcwMGYyLi5jMDA0OGQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2lvY3RsLmMKKysrIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pb2N0bC5jCkBAIC0xMTUsMjIgKzExNSwyNCBAQCBzdGF0 aWMgaW50IGh5cGVyX2RtYWJ1Zl9leHBvcnRfcmVtb3RlKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lk ICpkYXRhKQogCSAqLwogCXJldCA9IGh5cGVyX2RtYWJ1Zl9maW5kX2lkX2V4cG9ydGVkKGRtYV9i dWYsIGV4cG9ydF9yZW1vdGVfYXR0ci0+cmVtb3RlX2RvbWFpbik7CiAJc2d0X2luZm8gPSBoeXBl cl9kbWFidWZfZmluZF9leHBvcnRlZChyZXQpOwotCWlmIChyZXQgIT0gLUVOT0VOVCAmJiBzZ3Rf aW5mby0+dmFsaWQpIHsKLQkJLyoKLQkJICogQ2hlY2sgaWYgdW5leHBvcnQgaXMgYWxyZWFkeSBz Y2hlZHVsZWQgZm9yIHRoYXQgYnVmZmVyLAotCQkgKiBpZiBzbyB0cnkgdG8gY2FuY2VsIGl0LiBJ ZiB0aGF0IHdpbGwgZmFpbCwgYnVmZmVyIG5lZWRzCi0JCSAqIHRvIGJlIHJlZXhwb3J0IG9uY2Ug YWdhaW4uCi0JCSAqLwotCQlpZiAoc2d0X2luZm8tPnVuZXhwb3J0X3NjaGVkdWxlZCkgewotCQkJ aWYgKCFjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnNndF9pbmZvLT51bmV4cG9ydF93b3JrKSkg ewotCQkJCWRtYV9idWZfcHV0KGRtYV9idWYpOwotCQkJCWdvdG8gcmVleHBvcnQ7CisJaWYgKHJl dCAhPSAtRU5PRU5UICYmIHNndF9pbmZvICE9IE5VTEwpIHsKKwkJaWYgKHNndF9pbmZvLT52YWxp ZCkgeworCQkJLyoKKwkJCSAqIENoZWNrIGlmIHVuZXhwb3J0IGlzIGFscmVhZHkgc2NoZWR1bGVk IGZvciB0aGF0IGJ1ZmZlciwKKwkJCSAqIGlmIHNvIHRyeSB0byBjYW5jZWwgaXQuIElmIHRoYXQg d2lsbCBmYWlsLCBidWZmZXIgbmVlZHMKKwkJCSAqIHRvIGJlIHJlZXhwb3J0IG9uY2UgYWdhaW4u CisJCQkgKi8KKwkJCWlmIChzZ3RfaW5mby0+dW5leHBvcnRfc2NoZWR1bGVkKSB7CisJCQkJaWYg KCFjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnNndF9pbmZvLT51bmV4cG9ydF93b3JrKSkgewor CQkJCQlkbWFfYnVmX3B1dChkbWFfYnVmKTsKKwkJCQkJZ290byByZWV4cG9ydDsKKwkJCQl9CisJ CQkJc2d0X2luZm8tPnVuZXhwb3J0X3NjaGVkdWxlZCA9IDA7CiAJCQl9Ci0JCQlzZ3RfaW5mby0+ dW5leHBvcnRfc2NoZWR1bGVkID0gMDsKKwkJCWRtYV9idWZfcHV0KGRtYV9idWYpOworCQkJZXhw b3J0X3JlbW90ZV9hdHRyLT5oeXBlcl9kbWFidWZfaWQgPSByZXQ7CisJCQlyZXR1cm4gMDsKIAkJ fQotCQlkbWFfYnVmX3B1dChkbWFfYnVmKTsKLQkJZXhwb3J0X3JlbW90ZV9hdHRyLT5oeXBlcl9k bWFidWZfaWQgPSByZXQ7Ci0JCXJldHVybiAwOwogCX0KIAogcmVleHBvcnQ6CkBAIC0xNjIsOSAr MTY0LDMyIEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGUoc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAJc2d0X2luZm8tPnZhbGlkID0gMTsKIAogCXNndF9pbmZv LT5hY3RpdmVfc2d0cyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzZ3RfbGlzdCksIEdGUF9LRVJO RUwpOworCWlmICghc2d0X2luZm8tPmFjdGl2ZV9zZ3RzKSB7CisJCWRldl9lcnIoaHlwZXJfZG1h YnVmX3ByaXZhdGUuZGV2aWNlLCAibm8gbW9yZSBzcGFjZSBsZWZ0XG4iKTsKKwkJcmV0ID0gLUVO T01FTTsKKwkJZ290byBmYWlsX21hcF9hY3RpdmVfc2d0czsKKwl9CisKIAlzZ3RfaW5mby0+YWN0 aXZlX2F0dGFjaGVkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGF0dGFjaG1lbnRfbGlzdCksIEdG UF9LRVJORUwpOworCWlmICghc2d0X2luZm8tPmFjdGl2ZV9hdHRhY2hlZCkgeworCQlkZXZfZXJy KGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIm5vIG1vcmUgc3BhY2UgbGVmdFxuIik7CisJ CXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbF9tYXBfYWN0aXZlX2F0dGFjaGVkOworCX0KKwog CXNndF9pbmZvLT52YV9rbWFwcGVkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGttYXBfdmFkZHJf bGlzdCksIEdGUF9LRVJORUwpOworCWlmICghc2d0X2luZm8tPnZhX2ttYXBwZWQpIHsKKwkJZGV2 X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsICJubyBtb3JlIHNwYWNlIGxlZnRcbiIp OworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGZhaWxfbWFwX3ZhX2ttYXBwZWQ7CisJfQorCiAJ c2d0X2luZm8tPnZhX3ZtYXBwZWQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgdm1hcF92YWRkcl9s aXN0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzZ3RfaW5mby0+dmFfdm1hcHBlZCkgeworCQlkZXZf ZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIm5vIG1vcmUgc3BhY2UgbGVmdFxuIik7 CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbF9tYXBfdmFfdm1hcHBlZDsKKwl9CiAKIAlz Z3RfaW5mby0+YWN0aXZlX3NndHMtPnNndCA9IHNndDsKIAlzZ3RfaW5mby0+YWN0aXZlX2F0dGFj aGVkLT5hdHRhY2ggPSBhdHRhY2htZW50OwpAQCAtMjExLDYgKzIzNiwxMSBAQCBzdGF0aWMgaW50 IGh5cGVyX2RtYWJ1Zl9leHBvcnRfcmVtb3RlKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkYXRh KQogCiAJcmVxID0ga2NhbGxvYygxLCBzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwogCisJaWYo IXJlcSkgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIm5vIG1vcmUg c3BhY2UgbGVmdFxuIik7CisJCWdvdG8gZmFpbF9tYXBfcmVxOworCX0KKwogCS8qIGNvbXBvc2lu ZyBhIG1lc3NhZ2UgdG8gdGhlIGltcG9ydGVyICovCiAJaHlwZXJfZG1hYnVmX2NyZWF0ZV9yZXF1 ZXN0KHJlcSwgSFlQRVJfRE1BQlVGX0VYUE9SVCwgJm9wZXJhbmRzWzBdKTsKIApAQCAtMjMzLDYg KzI2Myw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGUoc3RydWN0IGZp bGUgKmZpbHAsIHZvaWQgKmRhdGEpCiAKIGZhaWxfc2VuZF9yZXF1ZXN0OgogCWtmcmVlKHJlcSk7 CisKK2ZhaWxfbWFwX3JlcToKIAloeXBlcl9kbWFidWZfcmVtb3ZlX2V4cG9ydGVkKHNndF9pbmZv LT5oeXBlcl9kbWFidWZfaWQpOwogCiBmYWlsX2V4cG9ydDoKQEAgLTI0MiwxMCArMjc0LDE0IEBA IHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9ydF9yZW1vdGUoc3RydWN0IGZpbGUgKmZpbHAs IHZvaWQgKmRhdGEpCiAJZG1hX2J1Zl9kZXRhY2goc2d0X2luZm8tPmRtYV9idWYsIHNndF9pbmZv LT5hY3RpdmVfYXR0YWNoZWQtPmF0dGFjaCk7CiAJZG1hX2J1Zl9wdXQoc2d0X2luZm8tPmRtYV9i dWYpOwogCi0Ja2ZyZWUoc2d0X2luZm8tPmFjdGl2ZV9hdHRhY2hlZCk7Ci0Ja2ZyZWUoc2d0X2lu Zm8tPmFjdGl2ZV9zZ3RzKTsKLQlrZnJlZShzZ3RfaW5mby0+dmFfa21hcHBlZCk7CiAJa2ZyZWUo c2d0X2luZm8tPnZhX3ZtYXBwZWQpOworZmFpbF9tYXBfdmFfdm1hcHBlZDoKKwlrZnJlZShzZ3Rf aW5mby0+dmFfa21hcHBlZCk7CitmYWlsX21hcF92YV9rbWFwcGVkOgorCWtmcmVlKHNndF9pbmZv LT5hY3RpdmVfc2d0cyk7CitmYWlsX21hcF9hY3RpdmVfc2d0czoKKwlrZnJlZShzZ3RfaW5mby0+ YWN0aXZlX2F0dGFjaGVkKTsKK2ZhaWxfbWFwX2FjdGl2ZV9hdHRhY2hlZDoKIAogCXJldHVybiBy ZXQ7CiB9CkBAIC0yODgsNiArMzI0LDEzIEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX2V4cG9y dF9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGF0YSkKIAlkZXZfZGJnKGh5cGVy X2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkV4cG9ydGluZyBmZCBvZiBidWZmZXIgJWRcbiIsIG9w ZXJhbmQpOwogCiAJcmVxID0ga2NhbGxvYygxLCBzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwor CisJaWYgKCFyZXEpIHsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJ CQkiTm8gbWVtb3J5IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07 CisJfQorCiAJaHlwZXJfZG1hYnVmX2NyZWF0ZV9yZXF1ZXN0KHJlcSwgSFlQRVJfRE1BQlVGX0VY UE9SVF9GRCwgJm9wZXJhbmQpOwogCiAJcmV0ID0gb3BzLT5zZW5kX3JlcShIWVBFUl9ETUFCVUZf RE9NX0lEKG9wZXJhbmQpLCByZXEsIHRydWUpOwpAQCAtMzgxLDYgKzQyNCwxMiBAQCBzdGF0aWMg dm9pZCBoeXBlcl9kbWFidWZfZGVsYXllZF91bmV4cG9ydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAKIAlyZXEgPSBrY2FsbG9jKDEsIHNpemVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiAKKwlp ZiAoIXJlcSkgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJO byBtZW1vcnkgbGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOworCQlyZXR1cm47CisJfQorCiAJaHlw ZXJfZG1hYnVmX2NyZWF0ZV9yZXF1ZXN0KHJlcSwgSFlQRVJfRE1BQlVGX05PVElGWV9VTkVYUE9S VCwgJmh5cGVyX2RtYWJ1Zl9pZCk7CiAKIAkvKiBOb3cgc2VuZCB1bmV4cG9ydCByZXF1ZXN0IHRv IHJlbW90ZSBkb21haW4sIG1hcmtpbmcgdGhhdCBidWZmZXIgc2hvdWxkIG5vdCBiZSB1c2VkIGFu eW1vcmUgKi8KQEAgLTU0MCw2ICs1ODksMTEgQEAgc3RhdGljIGxvbmcgaHlwZXJfZG1hYnVmX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCWh5cGVyX2RtYWJ1Zl9pb2N0bF90IGZ1bmM7CiAJY2hh ciAqa2RhdGE7CiAKKwlpZiAobnIgPiBBUlJBWV9TSVpFKGh5cGVyX2RtYWJ1Zl9pb2N0bHMpKSB7 CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLCAiaW52YWxpZCBpb2N0bFxu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCWlvY3RsID0gJmh5cGVyX2RtYWJ1Zl9pb2N0 bHNbbnJdOwogCiAJZnVuYyA9IGlvY3RsLT5mdW5jOwpAQCAtNTc0LDExICs2MjgsMzQgQEAgc3Rh dGljIGxvbmcgaHlwZXJfZG1hYnVmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAogCiBpbnQgaHlw ZXJfZG1hYnVmX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiB7 CisJaW50IHJldCA9IDA7CisKIAkvKiBEbyBub3QgYWxsb3cgZXhjbHVzaXZlIG9wZW4gKi8KIAlp ZiAoZmlscC0+Zl9mbGFncyAmIE9fRVhDTCkKIAkJcmV0dXJuIC1FQlVTWTsKIAotCXJldHVybiAw OworCS8qCisJICogSW5pdGlhbGl6ZSBiYWNrZW5kIGlmIG5lZWRlZG0sCisJICogdXNlIG11dGV4 IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4KKwkgKiB0d28gdXNlcnNwYWNlIGFwcHMg d2lsbCBvcGVuIGRldmljZSBhdCB0aGUgc2FtZSB0aW1lCisJICovCisJbXV0ZXhfbG9jaygmaHlw ZXJfZG1hYnVmX3ByaXZhdGUubG9jayk7CisKKwlpZiAoIWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJh Y2tlbmRfaW5pdGlhbGl6ZWQpIHsKKwkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQgPSBoeXBl cl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wcy0+Z2V0X3ZtX2lkKCk7CisKKwkJcmV0ID0gaHlw ZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9vcHMtPmluaXRfY29tbV9lbnYoKTsKKwkgICAgICAg IGlmIChyZXQgPCAwKSB7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwK KwkJCQkiZmFpbGVkIHRvIGluaXRpYWlsaXplIGh5cGVydmlzb3Itc3BlY2lmaWMgY29tbSBlbnZc biIpOworCQl9IGVsc2UgeworCQkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9pbml0aWFs aXplZCA9IHRydWU7CisJCX0KKwl9CisKKwltdXRleF91bmxvY2soJmh5cGVyX2RtYWJ1Zl9wcml2 YXRlLmxvY2spOworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVm X2VtZXJnZW5jeV9yZWxlYXNlKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0X2luZm8qIHNndF9pbmZv LApkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9saXN0 LmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2xpc3QuYwppbmRleCBj MTI4NWViLi45MGM4YzU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2xpc3QuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1h YnVmX2xpc3QuYwpAQCAtMzQsOCArMzQsMTEgQEAKICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgog I2luY2x1ZGUgPGxpbnV4L2hhc2h0YWJsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4K KyNpbmNsdWRlICJoeXBlcl9kbWFidWZfZHJ2LmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX2xp c3QuaCIKIAorZXh0ZXJuIHN0cnVjdCBoeXBlcl9kbWFidWZfcHJpdmF0ZSBoeXBlcl9kbWFidWZf cHJpdmF0ZTsKKwogREVDTEFSRV9IQVNIVEFCTEUoaHlwZXJfZG1hYnVmX2hhc2hfaW1wb3J0ZWQs IE1BWF9FTlRSWV9JTVBPUlRFRCk7CiBERUNMQVJFX0hBU0hUQUJMRShoeXBlcl9kbWFidWZfaGFz aF9leHBvcnRlZCwgTUFYX0VOVFJZX0VYUE9SVEVEKTsKIApAQCAtMTMyLDYgKzEzNSwxMiBAQCBp bnQgaHlwZXJfZG1hYnVmX3JlZ2lzdGVyX2V4cG9ydGVkKHN0cnVjdCBoeXBlcl9kbWFidWZfc2d0 X2luZm8gKmluZm8pCiAKIAlpbmZvX2VudHJ5ID0ga21hbGxvYyhzaXplb2YoKmluZm9fZW50cnkp LCBHRlBfS0VSTkVMKTsKIAorCWlmICghaW5mb19lbnRyeSkgeworCQlkZXZfZXJyKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJObyBtZW1vcnkg bGVmdCB0byBiZSBhbGxvY2F0ZWRcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKIAlpbmZv X2VudHJ5LT5pbmZvID0gaW5mbzsKIAogCWhhc2hfYWRkKGh5cGVyX2RtYWJ1Zl9oYXNoX2V4cG9y dGVkLCAmaW5mb19lbnRyeS0+bm9kZSwKQEAgLTE0Niw2ICsxNTUsMTIgQEAgaW50IGh5cGVyX2Rt YWJ1Zl9yZWdpc3Rlcl9pbXBvcnRlZChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9p bmZvKiBpbmZvKQogCiAJaW5mb19lbnRyeSA9IGttYWxsb2Moc2l6ZW9mKCppbmZvX2VudHJ5KSwg R0ZQX0tFUk5FTCk7CiAKKwlpZiAoIWluZm9fZW50cnkpIHsKKwkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gbWVtb3J5IGxl ZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCiAJaW5mb19l bnRyeS0+aW5mbyA9IGluZm87CiAKIAloYXNoX2FkZChoeXBlcl9kbWFidWZfaGFzaF9pbXBvcnRl ZCwgJmluZm9fZW50cnktPm5vZGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX21zZy5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2Rt YWJ1Zl9tc2cuYwppbmRleCAzMTExY2RjLi41ZjY0MjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hl bi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX21zZy5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVy X2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMKQEAgLTEzNCw2ICsxMzQsMTMgQEAgdm9pZCBjbWRf cHJvY2Vzc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJICogb3BlcmFuZHM1fjgg OiBEcml2ZXItc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIChlLmcuIGdyYXBoaWMgYnVmZmVyJ3MgbWV0 YSBpbmZvKQogCQkgKi8KIAkJaW1wb3J0ZWRfc2d0X2luZm8gPSBrY2FsbG9jKDEsIHNpemVvZigq aW1wb3J0ZWRfc2d0X2luZm8pLCBHRlBfS0VSTkVMKTsKKworCQlpZiAoIWltcG9ydGVkX3NndF9p bmZvKSB7CisJCQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkiTm8g bWVtb3J5IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKKwkJCWJyZWFrOworCQl9CisKIAkJaW1w b3J0ZWRfc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCA9IHJlcS0+b3BlcmFuZHNbMF07CiAJCWlt cG9ydGVkX3NndF9pbmZvLT5mcnN0X29mc3QgPSByZXEtPm9wZXJhbmRzWzJdOwogCQlpbXBvcnRl ZF9zZ3RfaW5mby0+bGFzdF9sZW4gPSByZXEtPm9wZXJhbmRzWzNdOwpAQCAtMjg4LDkgKzI5NSwy MiBAQCBpbnQgaHlwZXJfZG1hYnVmX21zZ19wYXJzZShpbnQgZG9taWQsIHN0cnVjdCBoeXBlcl9k bWFidWZfcmVxICpyZXEpCiAJCSIlczogcHV0dGluZyByZXF1ZXN0IHRvIHdvcmtxdWV1ZVxuIiwg X19mdW5jX18pOwogCXRlbXBfcmVxID0ga21hbGxvYyhzaXplb2YoKnRlbXBfcmVxKSwgR0ZQX0tF Uk5FTCk7CiAKKwlpZiAoIXRlbXBfcmVxKSB7CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZh dGUuZGV2aWNlLAorCQkJIk5vIG1lbW9yeSBsZWZ0IHRvIGJlIGFsbG9jYXRlZFxuIik7CisJCXJl dHVybiAtRU5PTUVNOworCX0KKwogCW1lbWNweSh0ZW1wX3JlcSwgcmVxLCBzaXplb2YoKnRlbXBf cmVxKSk7CiAKIAlwcm9jID0ga2NhbGxvYygxLCBzaXplb2Yoc3RydWN0IGNtZF9wcm9jZXNzKSwg R0ZQX0tFUk5FTCk7CisKKwlpZiAoIXByb2MpIHsKKwkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJp dmF0ZS5kZXZpY2UsCisJCQkiTm8gbWVtb3J5IGxlZnQgdG8gYmUgYWxsb2NhdGVkXG4iKTsKKwkJ cmV0dXJuIC1FTk9NRU07CisJfQorCiAJcHJvYy0+cnEgPSB0ZW1wX3JlcTsKIAlwcm9jLT5kb21p ZCA9IGRvbWlkOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJf ZG1hYnVmX3JlbW90ZV9zeW5jLmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1h YnVmX3JlbW90ZV9zeW5jLmMKaW5kZXggMGVkZWQ2MS4uMmRhYjgzMyAxMDA2NDQKLS0tIGEvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5jCisrKyBiL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYwpAQCAtNzgs NiArNzgsMTIgQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGludCBvcHMp CiAJY2FzZSBIWVBFUl9ETUFCVUZfT1BTX0FUVEFDSDoKIAkJYXR0YWNobCA9IGtjYWxsb2MoMSwg c2l6ZW9mKCphdHRhY2hsKSwgR0ZQX0tFUk5FTCk7CiAKKwkJaWYgKCFhdHRhY2hsKSB7CisJCQlk ZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCQkiZG1hYnVmIHJlbW90ZSBz eW5jOjplcnJvciB3aGlsZSBwcm9jZXNzaW5nIEhZUEVSX0RNQUJVRl9PUFNfQVRUQUNIXG4iKTsK KwkJCXJldHVybiAtRU5PTUVNOworCQl9CisKIAkJYXR0YWNobC0+YXR0YWNoID0gZG1hX2J1Zl9h dHRhY2goc2d0X2luZm8tPmRtYV9idWYsCiAJCQkJCQkgaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlKTsKIApAQCAtODUsNyArOTEsNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3JlbW90ZV9zeW5jKGlu dCBpZCwgaW50IG9wcykKIAkJCWtmcmVlKGF0dGFjaGwpOwogCQkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQkJImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUg cHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX0FUVEFDSFxuIik7Ci0JCQlyZXR1cm4gUFRSX0VS UihhdHRhY2hsLT5hdHRhY2gpOworCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAogCQlsaXN0X2Fk ZCgmYXR0YWNobC0+bGlzdCwgJnNndF9pbmZvLT5hY3RpdmVfYXR0YWNoZWQtPmxpc3QpOwpAQCAt MTIxLDEyICsxMjcsMTkgQEAgaW50IGh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYyhpbnQgaWQsIGlu dCBvcHMpCiAJCQkJCSAgIHN0cnVjdCBhdHRhY2htZW50X2xpc3QsIGxpc3QpOwogCiAJCXNndGwg PSBrY2FsbG9jKDEsIHNpemVvZigqc2d0bCksIEdGUF9LRVJORUwpOworCisJCWlmICghc2d0bCkg eworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJImRtYWJ1ZiBy ZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX01BUFxu Iik7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCiAJCXNndGwtPnNndCA9IGRtYV9idWZfbWFw X2F0dGFjaG1lbnQoYXR0YWNobC0+YXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7CiAJCWlmICgh c2d0bC0+c2d0KSB7CiAJCQlrZnJlZShzZ3RsKTsKIAkJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3By aXZhdGUuZGV2aWNlLAogCQkJCSJkbWFidWYgcmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHByb2Nl c3NpbmcgSFlQRVJfRE1BQlVGX09QU19NQVBcbiIpOwotCQkJcmV0dXJuIFBUUl9FUlIoc2d0bC0+ c2d0KTsKKwkJCXJldHVybiAtRU5PTUVNOwogCQl9CiAJCWxpc3RfYWRkKCZzZ3RsLT5saXN0LCAm c2d0X2luZm8tPmFjdGl2ZV9zZ3RzLT5saXN0KTsKIAkJYnJlYWs7CkBAIC0yMDEsNiArMjE0LDEx IEBAIGludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBpbnQgb3BzKQogCWNhc2Ug SFlQRVJfRE1BQlVGX09QU19LTUFQX0FUT01JQzoKIAljYXNlIEhZUEVSX0RNQUJVRl9PUFNfS01B UDoKIAkJdmFfa21hcGwgPSBrY2FsbG9jKDEsIHNpemVvZigqdmFfa21hcGwpLCBHRlBfS0VSTkVM KTsKKwkJaWYgKCF2YV9rbWFwbCkgeworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5k ZXZpY2UsCisJCQkJImRtYWJ1ZiByZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBI WVBFUl9ETUFCVUZfT1BTX0tNQVAoX0FUT01JQylcbiIpOworCQkJcmV0dXJuIC1FTk9NRU07CisJ CX0KIAogCQkvKiBkdW1teSBrbWFwcGluZyBvZiAxIHBhZ2UgKi8KIAkJaWYgKG9wcyA9PSBIWVBF Ul9ETUFCVUZfT1BTX0tNQVBfQVRPTUlDKQpAQCAtMjEyLDcgKzIzMCw3IEBAIGludCBoeXBlcl9k bWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBpbnQgb3BzKQogCQkJa2ZyZWUodmFfa21hcGwpOwog CQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQkJImRtYWJ1ZiByZW1v dGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX0tNQVAoX0FU T01JQylcbiIpOwotCQkJcmV0dXJuIFBUUl9FUlIodmFfa21hcGwtPnZhZGRyKTsKKwkJCXJldHVy biAtRU5PTUVNOwogCQl9CiAJCWxpc3RfYWRkKCZ2YV9rbWFwbC0+bGlzdCwgJnNndF9pbmZvLT52 YV9rbWFwcGVkLT5saXN0KTsKIAkJYnJlYWs7CkBAIC0yNTUsNiArMjczLDEyIEBAIGludCBoeXBl cl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBpbnQgb3BzKQogCWNhc2UgSFlQRVJfRE1BQlVG X09QU19WTUFQOgogCQl2YV92bWFwbCA9IGtjYWxsb2MoMSwgc2l6ZW9mKCp2YV92bWFwbCksIEdG UF9LRVJORUwpOwogCisJCWlmICghdmFfdm1hcGwpIHsKKwkJCWRldl9lcnIoaHlwZXJfZG1hYnVm X3ByaXZhdGUuZGV2aWNlLAorCQkJCSJkbWFidWYgcmVtb3RlIHN5bmM6OmVycm9yIHdoaWxlIHBy b2Nlc3NpbmcgSFlQRVJfRE1BQlVGX09QU19WTUFQXG4iKTsKKwkJCXJldHVybiAtRU5PTUVNOwor CQl9CisKIAkJLyogZHVtbXkgdm1hcHBpbmcgKi8KIAkJdmFfdm1hcGwtPnZhZGRyID0gZG1hX2J1 Zl92bWFwKHNndF9pbmZvLT5kbWFfYnVmKTsKIApAQCAtMjYyLDcgKzI4Niw3IEBAIGludCBoeXBl cl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBpbnQgb3BzKQogCQkJa2ZyZWUodmFfdm1hcGwp OwogCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQkJImRtYWJ1ZiBy ZW1vdGUgc3luYzo6ZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBIWVBFUl9ETUFCVUZfT1BTX1ZNQVBc biIpOwotCQkJcmV0dXJuIFBUUl9FUlIodmFfdm1hcGwtPnZhZGRyKTsKKwkJCXJldHVybiAtRU5P TUVNOwogCQl9CiAJCWxpc3RfYWRkKCZ2YV92bWFwbC0+bGlzdCwgJnNndF9pbmZvLT52YV92bWFw cGVkLT5saXN0KTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uYwppbmRleCBjZTk4NjJhLi40M2RkM2I2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29t bS5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9j b21tLmMKQEAgLTM4MSw2ICszODEsMTIgQEAgaW50IGh5cGVyX2RtYWJ1Zl94ZW5faW5pdF9yeF9y YnVmKGludCBkb21pZCkKIAogCXJpbmdfaW5mbyA9IGttYWxsb2Moc2l6ZW9mKCpyaW5nX2luZm8p LCBHRlBfS0VSTkVMKTsKIAorCWlmICghcmluZ19pbmZvKSB7CisJCWRldl9lcnIoaHlwZXJfZG1h YnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIk5vIG1lbW9yeSBsZWZ0IHRvIGJlIGFsbG9jYXRlZFxu Iik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwogCXJpbmdfaW5mby0+c2RvbWFpbiA9IGRvbWlk OwogCXJpbmdfaW5mby0+ZXZ0Y2huID0gcnhfcG9ydDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5jIGIvZHJpdmVy cy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW1fbGlzdC5jCmluZGV4 IDJmNDY5ZGEuLjQ3MDhiNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94 ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tX2xpc3QuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbV9saXN0LmMKQEAgLTM0LDkgKzM0LDEyIEBA CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxsaW51eC9oYXNodGFibGUuaD4K ICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlICIuLi9oeXBlcl9kbWFidWZf ZHJ2LmgiCiAjaW5jbHVkZSAiaHlwZXJfZG1hYnVmX3hlbl9jb21tLmgiCiAjaW5jbHVkZSAiaHlw ZXJfZG1hYnVmX3hlbl9jb21tX2xpc3QuaCIKIAorZXh0ZXJuIHN0cnVjdCBoeXBlcl9kbWFidWZf cHJpdmF0ZSBoeXBlcl9kbWFidWZfcHJpdmF0ZTsKKwogREVDTEFSRV9IQVNIVEFCTEUoeGVuX2Nv bW1fdHhfcmluZ19oYXNoLCBNQVhfRU5UUllfVFhfUklORyk7CiBERUNMQVJFX0hBU0hUQUJMRSh4 ZW5fY29tbV9yeF9yaW5nX2hhc2gsIE1BWF9FTlRSWV9SWF9SSU5HKTsKIApAQCAtNTIsNiArNTUs MTIgQEAgaW50IHhlbl9jb21tX2FkZF90eF9yaW5nKHN0cnVjdCB4ZW5fY29tbV90eF9yaW5nX2lu Zm8gKnJpbmdfaW5mbykKIAogCWluZm9fZW50cnkgPSBrbWFsbG9jKHNpemVvZigqaW5mb19lbnRy eSksIEdGUF9LRVJORUwpOwogCisJaWYgKCFpbmZvX2VudHJ5KSB7CisJCWRldl9lcnIoaHlwZXJf ZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIk5vIG1lbW9yeSBsZWZ0IHRvIGJlIGFsbG9jYXRl ZFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwogCWluZm9fZW50cnktPmluZm8gPSByaW5n X2luZm87CiAKIAloYXNoX2FkZCh4ZW5fY29tbV90eF9yaW5nX2hhc2gsICZpbmZvX2VudHJ5LT5u b2RlLApAQCAtNjYsNiArNzUsMTIgQEAgaW50IHhlbl9jb21tX2FkZF9yeF9yaW5nKHN0cnVjdCB4 ZW5fY29tbV9yeF9yaW5nX2luZm8gKnJpbmdfaW5mbykKIAogCWluZm9fZW50cnkgPSBrbWFsbG9j KHNpemVvZigqaW5mb19lbnRyeSksIEdGUF9LRVJORUwpOwogCisJaWYgKCFpbmZvX2VudHJ5KSB7 CisJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIk5vIG1lbW9yeSBs ZWZ0IHRvIGJlIGFsbG9jYXRlZFxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwogCWluZm9f ZW50cnktPmluZm8gPSByaW5nX2luZm87CiAKIAloYXNoX2FkZCh4ZW5fY29tbV9yeF9yaW5nX2hh c2gsICZpbmZvX2VudHJ5LT5ub2RlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1h YnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jCmluZGV4IDUyNGY3NWMuLmM2YTI5OTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9zaG0u YworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fc2ht LmMKQEAgLTk2LDYgKzk2LDEyIEBAIGludCBoeXBlcl9kbWFidWZfeGVuX3NoYXJlX3BhZ2VzKHN0 cnVjdCBwYWdlICoqcGFnZXMsIGludCBkb21pZCwgaW50IG5lbnRzLAogCWx2bDJfdGFibGUgPSAo Z3JhbnRfcmVmX3QgKilfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIG5fbHZsMl9ncmVmcyk7 CiAKIAlzaF9wYWdlc19pbmZvID0ga21hbGxvYyhzaXplb2YoKnNoX3BhZ2VzX2luZm8pLCBHRlBf S0VSTkVMKTsKKworCWlmICghc2hfcGFnZXNfaW5mbykgeworCQlkZXZfZXJyKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmRldmljZSwgIk5vIG1vcmUgc3BhY2UgbGVmdFxuIik7CisJCXJldHVybiAtRU5P TUVNOworCX0KKwogCSpyZWZzX2luZm8gPSAodm9pZCAqKXNoX3BhZ2VzX2luZm87CiAKIAkvKiBz aGFyZSBkYXRhIHBhZ2VzIGluIHJ3IG1vZGUqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL3hl bi9LYnVpbGQgYi9pbmNsdWRlL3VhcGkveGVuL0tidWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5iZjgxZjQyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91YXBpL3hl bi9LYnVpbGQKQEAgLTAsMCArMSw2IEBACisjIFVBUEkgSGVhZGVyIGV4cG9ydCBsaXN0CitoZWFk ZXIteSArPSBldnRjaG4uaAoraGVhZGVyLXkgKz0gZ250YWxsb2MuaAoraGVhZGVyLXkgKz0gZ250 ZGV2LmgKK2hlYWRlci15ICs9IHByaXZjbWQuaAoraGVhZGVyLXkgKz0gaHlwZXJfZG1hYnVmLmgK LS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==