From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 46/60] hyper_dmabuf: delay auto initialization of comm_env Date: Tue, 19 Dec 2017 11:30:02 -0800 Message-ID: <1513711816-2618-46-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 Q29tbSBlbnYgaW50aWFsaXphdGlvbiBpcyBub3cgc2NoZWR1bGVkIHRvIGJlIGRvbmUKd2hlbiB4 ZW5zdG9yZSBpcyBpbml0aWFsaXplZC4gVGhpcyBzY2hlZHVsaW5nIGlzIGRvbmUKaW4gZHJpdmVy J3MgaW5pdCByb3V0aW5lLgoKQWxzbywgYWRkaW5nIGEgcmVjdXJzaXZlbHkgc2NoZWR1bGVkIHJv dXRpbmUKdGhhdCBtb25pdG9ycyBhbnkgbmV3IHR4IGNoIHNldHVwIGZyb20gb3RoZXIgZG9tYWlu cwphbmQgYXV0b21hdGljbGFseSBjb25maWd1cmUgcnggY2hhbm5lbCBhY2NvcmRpbmdseQooZXZl cnkgMTAgc2VjKS4KCk9ubHkgbGltaXRhdGlvbiBpcyBpdCBjdXJyZW50bHkgY2hlY2tzIGRvbWFp biBJRCAwIHRvIDEwLgpXZSBjb3VsZCBpbmNyZWFzZSB0aGlzIHJhbmdlIGlmIG5lZWRlZC4KCldp dGggdGhpcyBwYXRjaCwgd2UgZG9uJ3QgaGF2ZSB0byBjYWxsIGNvbW0gY2hhbm5lbApzZXR1cCBJ T0NUTCBvbiBpbXBvcnRlciBzaWRlIGFueW1vcmUuIEZvciBleGFtcGxlLAp3ZSBjYW4gcmVtb3Zl IGlvY3RsIGNhbGwgaW4gaW5pdF9oeXBlcl9kbWFidWYgZnJvbQp2bWRpc3BsYXkuCgpTaWduZWQt b2ZmLWJ5OiBEb25nd29uIEtpbSA8ZG9uZ3dvbi5raW1AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDEwICsrCiBkcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5jICAgICAgICB8ICA2NCArKysr Ky0tLS0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmggICAgICAg IHwgICAzICsKIC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0u YyAgIHwgMTUzICsrKysrKysrKysrKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5z ZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL0tjb25maWcgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvS2NvbmZpZwppbmRl eCBlYjFiNjM3Li41ZWZjZDQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYv S2NvbmZpZworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvS2NvbmZpZwpAQCAtMjksNCAr MjksMTQgQEAgY29uZmlnIEhZUEVSX0RNQUJVRl9FVkVOVF9HRU4KIAkgIHNoYXJlZCBETUEtQlVG IGlzIGF2YWlsYWJsZS4gRXZlbnRzIGluIHRoZSBsaXN0IGNhbiBiZSByZXRyaWV2ZWQgYnkKIAkg IHJlYWQgb3BlcmF0aW9uLgogCitjb25maWcgSFlQRVJfRE1BQlVGX1hFTl9BVVRPX1JYX0NIX0FE RAorCWJvb2wgIkVuYWJsZSBhdXRvbWF0aWMgcngtY2ggYWRkIHdpdGggMTAgc2VjcyBpbnRlcnZh bCIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEhZUEVSX0RNQUJVRiAmJiBIWVBFUl9ETUFCVUZf WEVOCisJaGVscAorCSAgSWYgZW5hYmxlZCwgZHJpdmVyIHJlYWRzIGEgbm9kZSBpbiB4ZW5zdG9y ZSBldmVyeSAxMCBzZWNvbmRzCisJICB0byBjaGVjayB3aGV0aGVyIHRoZXJlIGlzIGFueSB0eCBj b21tIGNoIGNvbmZpZ3VyZWQgYnkgYW5vdGhlcgorCSAgZG9tYWluIHRoZW4gaW5pdGlhbGl6ZSBt YXRjaGVkIHJ4IGNvbW0gY2ggYXV0b21hdGljYWxseSBmb3IgYW55CisJICBleGlzdGluZyB0eCBj b21tIGNocy4KKwogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L2h5cGVyX2RtYWJ1Zl9kcnYuYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfZHJ2LmMKaW5kZXggMjg0NTIyNC4uMDA1Njc3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4v aHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9kcnYuYworKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX2Rydi5jCkBAIC02NywyNyArNjcsNiBAQCBpbnQgaHlwZXJfZG1h YnVmX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAJaWYgKGZp bHAtPmZfZmxhZ3MgJiBPX0VYQ0wpCiAJCXJldHVybiAtRUJVU1k7CiAKLQkvKgotCSAqIEluaXRp YWxpemUgYmFja2VuZCBpZiBuZWVkZWQsCi0JICogdXNlIG11dGV4IHRvIHByZXZlbnQgcmFjZSBj b25kaXRpb25zIHdoZW4KLQkgKiB0d28gdXNlcnNwYWNlIGFwcHMgd2lsbCBvcGVuIGRldmljZSBh dCB0aGUgc2FtZSB0aW1lCi0JICovCi0JbXV0ZXhfbG9jaygmaHlwZXJfZG1hYnVmX3ByaXZhdGUu bG9jayk7Ci0KLQlpZiAoIWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJhY2tlbmRfaW5pdGlhbGl6ZWQp IHsKLQkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQgPSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5i YWNrZW5kX29wcy0+Z2V0X3ZtX2lkKCk7Ci0KLQkJcmV0ID0gaHlwZXJfZG1hYnVmX3ByaXZhdGUu YmFja2VuZF9vcHMtPmluaXRfY29tbV9lbnYoKTsKLQkgICAgICAgIGlmIChyZXQgPCAwKSB7Ci0J CQlkZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKLQkJCQkiZmFpbGVkIHRvIGlu aXRpYWlsaXplIGh5cGVydmlzb3Itc3BlY2lmaWMgY29tbSBlbnZcbiIpOwotCQl9IGVsc2Ugewot CQkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9pbml0aWFsaXplZCA9IHRydWU7Ci0JCX0K LQl9Ci0KLQltdXRleF91bmxvY2soJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmxvY2spOwotCiAJcmV0 dXJuIHJldDsKIH0KIApAQCAtMjYwLDE3ICsyMzksMjIgQEAgc3RhdGljIGludCBfX2luaXQgaHlw ZXJfZG1hYnVmX2Rydl9pbml0KHZvaWQpCiAJCXJldHVybiByZXQ7CiAJfQogCisvKiBjdXJyZW50 bHkgb25seSBzdXBwb3J0cyBYRU4gaHlwZXJ2aXNvciAqLworCiAjaWZkZWYgQ09ORklHX0hZUEVS X0RNQUJVRl9YRU4KIAloeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX29wcyA9ICZ4ZW5fYmFj a2VuZF9vcHM7CisjZWxzZQorCWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJhY2tlbmRfb3BzID0gTlVM TDsKKwlwcmludGsoIEtFUk5fRVJSICJoeXBlcl9kbWFidWYgZHJ2IGN1cnJlbnRseSBzdXBwb3J0 cyBYRU4gb25seS5cbiIpOwogI2VuZGlmCi0JLyoKLQkgKiBEZWZlciBiYWNrZW5kIHNldHVwIHRv IGZpcnN0IG9wZW4gY2FsbC4KLQkgKiBEdWUgdG8gZmFjdCB0aGF0IHNvbWUgaHlwZXJ2aXNvcnMg ZWcuIFhlbiwgbWF5IGhhdmUgZGVwZW5kZW5jaWVzCi0JICogdG8gdXNlcnNwYWNlIGRhZW1vbnMg bGlrZSB4ZW5zdG9yZWQsIGluIHRoYXQgY2FzZSBhbGwgeGVuc3RvcmUKLQkgKiBjYWxscyBkb25l IGZyb20ga2VybmVsIHdpbGwgYmxvY2sgdW50aWwgdGhhdCBkZWFtb24gd2lsbCBiZQotCSAqIHN0 YXJ0ZWQsIGluIGNhc2Ugd2hlcmUgbW9kdWxlIGlzIGJ1aWx0IGluIHRoYXQgd2lsbCBibG9jayBl bnRpcmUKLQkgKiBrZXJuZWwgaW5pdGlhbGl6YXRpb24uCi0JICovCisKKwlpZiAoaHlwZXJfZG1h YnVmX3ByaXZhdGUuYmFja2VuZF9vcHMgPT0gTlVMTCkgeworCQlwcmludGsoIEtFUk5fRVJSICJI eXBlcl9kbWFidWY6IGZhaWxlZCB0byBiZSBsb2FkZWQgLSBubyBiYWNrZW5kIGZvdW5kXG4iKTsK KwkJcmV0dXJuIC0xOworCX0KKworCW11dGV4X2xvY2soJmh5cGVyX2RtYWJ1Zl9wcml2YXRlLmxv Y2spOworCiAJaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9pbml0aWFsaXplZCA9IGZhbHNl OwogCiAJZGV2X2luZm8oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLApAQCAtMzAxLDYgKzI4 NSwyMiBAQCBzdGF0aWMgaW50IF9faW5pdCBoeXBlcl9kbWFidWZfZHJ2X2luaXQodm9pZCkKIAlp bml0X3dhaXRxdWV1ZV9oZWFkKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5ldmVudF93YWl0KTsKIAog CWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmN1cnJfbnVtX2V2ZW50ID0gMDsKKwloeXBlcl9kbWFidWZf cHJpdmF0ZS5leGl0ZWQgPSBmYWxzZTsKKworCWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRvbWlkID0g aHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9vcHMtPmdldF92bV9pZCgpOworCisJcmV0ID0g aHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9vcHMtPmluaXRfY29tbV9lbnYoKTsKKwlpZiAo cmV0IDwgMCkgeworCQlkZXZfZGJnKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJm YWlsZWQgdG8gaW5pdGlhbGl6ZSBjb21tLWVudiBidXQgaXQgd2lsbCByZS1hdHRlbXB0LlxuIik7 CisJfSBlbHNlIHsKKwkJaHlwZXJfZG1hYnVmX3ByaXZhdGUuYmFja2VuZF9pbml0aWFsaXplZCA9 IHRydWU7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZoeXBlcl9kbWFidWZfcHJpdmF0ZS5sb2NrKTsK KworCWRldl9pbmZvKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJIkZpbmlzaGluZyB1 cCBpbml0aWFsaXphdGlvbiBvZiBoeXBlcl9kbWFidWYgZHJ2XG4iKTsKIAogCS8qIGludGVycnVw dCBmb3IgY29tbSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBoZXJlOiAqLwogCXJldHVybiByZXQ7CkBA IC0zMTIsNiArMzEyLDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX2Rydl9leGl0KHZvaWQp CiAJaHlwZXJfZG1hYnVmX3VucmVnaXN0ZXJfc3lzZnMoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2 aWNlKTsKICNlbmRpZgogCisJbXV0ZXhfbG9jaygmaHlwZXJfZG1hYnVmX3ByaXZhdGUubG9jayk7 CisKIAkvKiBoYXNoIHRhYmxlcyBmb3IgZXhwb3J0L2ltcG9ydCBlbnRyaWVzIGFuZCByaW5nX2lu Zm9zICovCiAJaHlwZXJfZG1hYnVmX3RhYmxlX2Rlc3Ryb3koKTsKIApAQCAtMzI1LDYgKzMyNywx MCBAQCBzdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfZHJ2X2V4aXQodm9pZCkKIAlpZiAoaHlwZXJf ZG1hYnVmX3ByaXZhdGUuaWRfcXVldWUpCiAJCWRlc3Ryb3lfcmV1c2FibGVfbGlzdCgpOwogCisJ aHlwZXJfZG1hYnVmX3ByaXZhdGUuZXhpdGVkID0gdHJ1ZTsKKworCW11dGV4X3VubG9jaygmaHlw ZXJfZG1hYnVmX3ByaXZhdGUubG9jayk7CisKIAlkZXZfaW5mbyhoeXBlcl9kbWFidWZfcHJpdmF0 ZS5kZXZpY2UsCiAJCSAiaHlwZXJfZG1hYnVmIGRyaXZlcjogRXhpdGluZ1xuIik7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmggYi9kcml2 ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2Rydi5oCmluZGV4IDA4ZThlZDcuLmE0 YWNkZDlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVm X2Rydi5oCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfZHJ2LmgK QEAgLTY0LDYgKzY0LDkgQEAgc3RydWN0IGh5cGVyX2RtYWJ1Zl9wcml2YXRlIHsKIAlzdHJ1Y3Qg bXV0ZXggZXZlbnRfcmVhZF9sb2NrOwogCiAJaW50IGN1cnJfbnVtX2V2ZW50OworCisJLyogaW5k aWNhdGUgd2hldGhlciB0aGUgZHJpdmVyIGlzIHVubG9hZGVkICovCisJYm9vbCBleGl0ZWQ7CiB9 OwogCiBzdHJ1Y3QgbGlzdF9yZXVzYWJsZV9pZCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9o eXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5jIGIvZHJpdmVycy94ZW4vaHlw ZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uYwppbmRleCAzNzBhMDdkLi45MjBl Y2Y0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1 Zl94ZW5fY29tbS5jCisrKyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1h YnVmX3hlbl9jb21tLmMKQEAgLTQ3LDYgKzQ3LDE0IEBAIHN0cnVjdCBoeXBlcl9kbWFidWZfcmVx IHJlcV9wZW5kaW5nID0gezB9OwogCiBleHRlcm4gc3RydWN0IGh5cGVyX2RtYWJ1Zl9wcml2YXRl IGh5cGVyX2RtYWJ1Zl9wcml2YXRlOwogCitleHRlcm4gaW50IHhlbnN0b3JlZF9yZWFkeTsKKwor c3RhdGljIHZvaWQgeGVuX2dldF9kb21pZF9kZWxheWVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqdW51 c2VkKTsKK3N0YXRpYyB2b2lkIHhlbl9pbml0X2NvbW1fZW52X2RlbGF5ZWQoc3RydWN0IHdvcmtf c3RydWN0ICp1bnVzZWQpOworCitzdGF0aWMgREVDTEFSRV9ERUxBWUVEX1dPUksoZ2V0X3ZtX2lk X3dvcmssIHhlbl9nZXRfZG9taWRfZGVsYXllZCk7CitzdGF0aWMgREVDTEFSRV9ERUxBWUVEX1dP UksoeGVuX2luaXRfY29tbV9lbnZfd29yaywgeGVuX2luaXRfY29tbV9lbnZfZGVsYXllZCk7CisK IC8qIENyZWF0ZXMgZW50cnkgaW4geGVuIHN0b3JlIHRoYXQgd2lsbCBrZWVwIGRldGFpbHMgb2Yg YWxsCiAgKiBleHBvcnRlciByaW5ncyBjcmVhdGVkIGJ5IHRoaXMgZG9tYWluCiAgKi8KQEAgLTU0 LDcgKzYyLDcgQEAgc3RhdGljIGludCB4ZW5fY29tbV9zZXR1cF9kYXRhX2Rpcih2b2lkKQogewog CWNoYXIgYnVmWzI1NV07CiAKLQlzcHJpbnRmKGJ1ZiwgIi9sb2NhbC9kb21haW4vJWQvZGF0YS9o eXBlcl9kbWFidWYiLCBoeXBlcl9kbWFidWZfeGVuX2dldF9kb21pZCgpKTsKKwlzcHJpbnRmKGJ1 ZiwgIi9sb2NhbC9kb21haW4vJWQvZGF0YS9oeXBlcl9kbWFidWYiLCBoeXBlcl9kbWFidWZfcHJp dmF0ZS5kb21pZCk7CiAJcmV0dXJuIHhlbmJ1c19ta2RpcihYQlRfTklMLCBidWYsICIiKTsKIH0K IApAQCAtNjgsNyArNzYsNyBAQCBzdGF0aWMgaW50IHhlbl9jb21tX2Rlc3Ryb3lfZGF0YV9kaXIo dm9pZCkKIHsKIAljaGFyIGJ1ZlsyNTVdOwogCi0Jc3ByaW50ZihidWYsICIvbG9jYWwvZG9tYWlu LyVkL2RhdGEvaHlwZXJfZG1hYnVmIiwgaHlwZXJfZG1hYnVmX3hlbl9nZXRfZG9taWQoKSk7CisJ c3ByaW50ZihidWYsICIvbG9jYWwvZG9tYWluLyVkL2RhdGEvaHlwZXJfZG1hYnVmIiwgaHlwZXJf ZG1hYnVmX3ByaXZhdGUuZG9taWQpOwogCXJldHVybiB4ZW5idXNfcm0oWEJUX05JTCwgYnVmLCAi Iik7CiB9CiAKQEAgLTEzMSwxNiArMTM5LDU4IEBAIHN0YXRpYyBpbnQgeGVuX2NvbW1fZ2V0X3Jp bmdfZGV0YWlscyhpbnQgZG9taWQsIGludCByZG9taWQsIGludCAqZ3JlZmlkLCBpbnQgKnBvCiAJ cmV0dXJuIChyZXQgPD0gMCA/IDEgOiAwKTsKIH0KIAordm9pZCB4ZW5fZ2V0X2RvbWlkX2RlbGF5 ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp1bnVzZWQpCit7CisJc3RydWN0IHhlbmJ1c190cmFuc2Fj dGlvbiB4YnQ7CisJaW50IGRvbWlkLCByZXQ7CisKKwkvKiBzY2hlZHVsaW5nIGFub3RoZXIgaWYg ZHJpdmVyIGlzIHN0aWxsIHJ1bm5pbmcKKwkgKiBhbmQgeGVuc3RvcmUgaGFzIG5vdCBiZWVuIGlu aXRpYWxpemVkICovCisJaWYgKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV4aXRlZCA9PSBmYWxzZSAm JgorCSAgICBsaWtlbHkoeGVuc3RvcmVkX3JlYWR5ID09IDApKSB7CisJCWRldl9kYmcoaHlwZXJf ZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIlhlbnN0b3JlIGlzIG5vdCBxdWl0ZSByZWFkeSB5 ZXQuIFdpbGwgcmV0cnkgaXQgaW4gNTAwbXNcbiIpOworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmso JmdldF92bV9pZF93b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOworCX0gZWxzZSB7CisJICAg ICAgICB4ZW5idXNfdHJhbnNhY3Rpb25fc3RhcnQoJnhidCk7CisKKwkJcmV0ID0geGVuYnVzX3Nj YW5mKHhidCwgImRvbWlkIiwiIiwgIiVkIiwgJmRvbWlkKTsKKworCQlpZiAocmV0IDw9IDApCisJ CQlkb21pZCA9IC0xOworCisJCXhlbmJ1c190cmFuc2FjdGlvbl9lbmQoeGJ0LCAwKTsKKworCQkv KiB0cnkgYWdhaW4gc2luY2UgLTEgaXMgYW4gaW52YWxpZCBpZCBmb3IgZG9tYWluCisJCSAqIChi dXQgb25seSBpZiBkcml2ZXIgaXMgc3RpbGwgcnVubmluZykgKi8KKwkJaWYgKGh5cGVyX2RtYWJ1 Zl9wcml2YXRlLmV4aXRlZCA9PSBmYWxzZSAmJiB1bmxpa2VseShkb21pZCA9PSAtMSkpIHsKKwkJ CWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJkb21pZD09LTEgaXMg aW52YWxpZC4gV2lsbCByZXRyeSBpdCBpbiA1MDBtc1xuIik7CisJCQlzY2hlZHVsZV9kZWxheWVk X3dvcmsoJmdldF92bV9pZF93b3JrLCBtc2Vjc190b19qaWZmaWVzKDUwMCkpOworCQl9IGVsc2Ug eworCQkJZGV2X2luZm8oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJTdWNjZXNz ZnVsbHkgcmV0cmlldmVkIGRvbWlkIGZyb20gWGVuc3RvcmU6JWRcbiIsIGRvbWlkKTsKKwkJCWh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRvbWlkID0gZG9taWQ7CisJCX0KKwl9Cit9CisKIGludCBoeXBl cl9kbWFidWZfeGVuX2dldF9kb21pZCh2b2lkKQogewogCXN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rp b24geGJ0OwogCWludCBkb21pZDsKIAorCWlmICh1bmxpa2VseSh4ZW5zdG9yZWRfcmVhZHkgPT0g MCkpIHsKKwkJeGVuX2dldF9kb21pZF9kZWxheWVkKE5VTEwpOworCQlyZXR1cm4gLTE7CisJfQor CiAgICAgICAgIHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCgmeGJ0KTsKIAogICAgICAgICBpZiAo IXhlbmJ1c19zY2FuZih4YnQsICJkb21pZCIsIiIsICIlZCIsICZkb21pZCkpIHsKIAkJZG9taWQg PSAtMTsKICAgICAgICAgfQorCiAgICAgICAgIHhlbmJ1c190cmFuc2FjdGlvbl9lbmQoeGJ0LCAw KTsKIAogCXJldHVybiBkb21pZDsKQEAgLTE5Myw2ICsyNDMsOCBAQCBzdGF0aWMgdm9pZCByZW1v dGVfZG9tX2V4cG9ydGVyX3dhdGNoX2NiKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAogCSAq IGl0IG1lYW5zIHRoYXQgcmVtb3RlIGRvbWFpbiBoYXMgc2V0dXAgaXQgZm9yIHVzIGFuZCB3ZSBz aG91bGQgY29ubmVjdAogCSAqIHRvIGl0LgogCSAqLworCisKIAlyZXQgPSB4ZW5fY29tbV9nZXRf cmluZ19kZXRhaWxzKGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkKCksIHJkb20sCiAJCQkJCSZn cmVmaWQsICZwb3J0KTsKIApAQCAtMzg5LDYgKzQ0MSw3IEBAIGludCBoeXBlcl9kbWFidWZfeGVu X2luaXRfcnhfcmJ1ZihpbnQgZG9taWQpCiAJCXJldHVybiAwOwogCX0KIAorCiAJcmV0ID0geGVu X2NvbW1fZ2V0X3JpbmdfZGV0YWlscyhoeXBlcl9kbWFidWZfeGVuX2dldF9kb21pZCgpLCBkb21p ZCwKIAkJCQkJJnJ4X2dyZWYsICZyeF9wb3J0KTsKIApAQCAtNTE5LDEyICs1NzIsMTA4IEBAIHZv aWQgaHlwZXJfZG1hYnVmX3hlbl9jbGVhbnVwX3J4X3JidWYoaW50IGRvbWlkKQogCUZST05UX1JJ TkdfSU5JVCgmKHR4X3JpbmdfaW5mby0+cmluZ19mcm9udCksIHR4X3JpbmdfaW5mby0+cmluZ19m cm9udC5zcmluZywgUEFHRV9TSVpFKTsKIH0KIAorI2lmZGVmIENPTkZJR19IWVBFUl9ETUFCVUZf WEVOX0FVVE9fUlhfQ0hfQURECisKK3N0YXRpYyB2b2lkIHhlbl9yeF9jaF9hZGRfZGVsYXllZChz dHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZCk7CisKK3N0YXRpYyBERUNMQVJFX0RFTEFZRURfV09S Syh4ZW5fcnhfY2hfYXV0b19hZGRfd29yaywgeGVuX3J4X2NoX2FkZF9kZWxheWVkKTsKKworI2Rl ZmluZSBET01JRF9TQ0FOX1NUQVJUCTEJLyogIGRvbWlkID0gMSAqLworI2RlZmluZSBET01JRF9T Q0FOX0VORAkJMTAJLyogZG9taWQgPSAxMCAqLworCitzdGF0aWMgdm9pZCB4ZW5fcnhfY2hfYWRk X2RlbGF5ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp1bnVzZWQpCit7CisJaW50IHJldDsKKwljaGFy IGJ1ZlsxMjhdOworCWludCBpLCBkdW1teTsKKworCWRldl9kYmcoaHlwZXJfZG1hYnVmX3ByaXZh dGUuZGV2aWNlLAorCQkiU2Nhbm5pbmcgbmV3IHR4IGNoYW5uZWwgY29tbWluZyBmcm9tIGFub3Ro ZXIgZG9tYWluXG4iKTsKKworCS8qIGNoZWNrIG90aGVyIGRvbWFpbnMgYW5kIHNjaGVkdWxlIGFu b3RoZXIgd29yayBpZiBkcml2ZXIKKwkgKiBpcyBzdGlsbCBydW5uaW5nIGFuZCBiYWNrZW5kIGlz IHZhbGlkCisJICovCisJaWYgKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmV4aXRlZCA9PSBmYWxzZSAm JgorCSAgICBoeXBlcl9kbWFidWZfcHJpdmF0ZS5iYWNrZW5kX2luaXRpYWxpemVkID09IHRydWUp IHsKKwkJZm9yIChpID0gRE9NSURfU0NBTl9TVEFSVDsgaSA8IERPTUlEX1NDQU5fRU5EICsgMTsg aSsrKSB7CisJCQlpZiAoaSA9PSBoeXBlcl9kbWFidWZfcHJpdmF0ZS5kb21pZCkKKwkJCQljb250 aW51ZTsKKworCQkJc3ByaW50ZihidWYsICIvbG9jYWwvZG9tYWluLyVkL2RhdGEvaHlwZXJfZG1h YnVmLyVkIiwgaSwKKwkJCQloeXBlcl9kbWFidWZfcHJpdmF0ZS5kb21pZCk7CisKKwkJCXJldCA9 IHhlbmJ1c19zY2FuZihYQlRfTklMLCBidWYsICJwb3J0IiwgIiVkIiwgJmR1bW15KTsKKworCQkJ aWYgKHJldCA+IDApIHsKKwkJCQlpZiAoeGVuX2NvbW1fZmluZF9yeF9yaW5nKGkpICE9IE5VTEwp CisJCQkJCWNvbnRpbnVlOworCisJCQkJcmV0ID0gaHlwZXJfZG1hYnVmX3hlbl9pbml0X3J4X3Ji dWYoaSk7CisKKwkJCQlpZiAoIXJldCkKKwkJCQkJZGV2X2luZm8oaHlwZXJfZG1hYnVmX3ByaXZh dGUuZGV2aWNlLAorCQkJCQkJICJGaW5pc2hpbmcgdXAgc2V0dGluZyB1cCByeCBjaGFubmVsIGZv ciBkb21haW4gJWRcbiIsIGkpOworCQkJfQorCQl9CisKKwkJLyogY2hlY2sgZXZlcnkgMTAgc2Vj b25kcyAqLworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnhlbl9yeF9jaF9hdXRvX2FkZF93b3Jr LCBtc2Vjc190b19qaWZmaWVzKDEwMDAwKSk7CisJfQorfQorCisjZW5kaWYgLyogQ09ORklHX0hZ UEVSX0RNQUJVRl9YRU5fQVVUT19SWF9DSF9BREQgKi8KKwordm9pZCB4ZW5faW5pdF9jb21tX2Vu dl9kZWxheWVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqdW51c2VkKQoreworCWludCByZXQ7CisKKwkv KiBzY2hlZHVsaW5nIGFub3RoZXIgd29yayBpZiBkcml2ZXIgaXMgc3RpbGwgcnVubmluZworCSAq IGFuZCB4ZW5zdG9yZSBoYXNuJ3QgYmVlbiBpbml0aWFsaXplZCBvciBkb21faWQgaGFzbid0CisJ ICogYmVlbiBjb3JyZWN0bHkgcmV0cmlldmVkLiAqLworCWlmIChoeXBlcl9kbWFidWZfcHJpdmF0 ZS5leGl0ZWQgPT0gZmFsc2UgJiYKKwkgICAgbGlrZWx5KHhlbnN0b3JlZF9yZWFkeSA9PSAwIHx8 CisJICAgIGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRvbWlkID09IC0xKSkgeworCQlkZXZfZGJnKGh5 cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJYZW5zdG9yZSBpcyBub3QgcmVhZHkgeWV0 LiBSZS10cnkgdGhpcyBhZ2FpbiBpbiA1MDBtc1xuIik7CisJCXNjaGVkdWxlX2RlbGF5ZWRfd29y aygmeGVuX2luaXRfY29tbV9lbnZfd29yaywgbXNlY3NfdG9famlmZmllcyg1MDApKTsKKwl9IGVs c2UgeworCQlyZXQgPSB4ZW5fY29tbV9zZXR1cF9kYXRhX2RpcigpOworCQlpZiAocmV0IDwgMCkg eworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJIkZhaWxlZCB0 byBjcmVhdGUgZGF0YSBkaXIgaW4gWGVuc3RvcmVcbiIpOworCQl9IGVsc2UgeworCQkJZGV2X2lu Zm8oaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJCSJTdWNjZXNzZnVsbHkgZmluaXNo ZWQgY29tbSBlbnYgaW5pdGlhbGl6YXRpb25cbiIpOworCQkJaHlwZXJfZG1hYnVmX3ByaXZhdGUu YmFja2VuZF9pbml0aWFsaXplZCA9IHRydWU7CisKKyNpZmRlZiBDT05GSUdfSFlQRVJfRE1BQlVG X1hFTl9BVVRPX1JYX0NIX0FERAorCQkJeGVuX3J4X2NoX2FkZF9kZWxheWVkKE5VTEwpOworI2Vu ZGlmIC8qIENPTkZJR19IWVBFUl9ETUFCVUZfWEVOX0FVVE9fUlhfQ0hfQUREICovCisJCX0KKwl9 Cit9CisKIGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfY29tbV9lbnYodm9pZCkKIHsKIAlpbnQg cmV0OwogCiAJeGVuX2NvbW1fcmluZ190YWJsZV9pbml0KCk7CisKKwlpZiAodW5saWtlbHkoeGVu c3RvcmVkX3JlYWR5ID09IDAgfHwgaHlwZXJfZG1hYnVmX3ByaXZhdGUuZG9taWQgPT0gLTEpKSB7 CisJCXhlbl9pbml0X2NvbW1fZW52X2RlbGF5ZWQoTlVMTCk7CisJCXJldHVybiAtMTsKKwl9CisK IAlyZXQgPSB4ZW5fY29tbV9zZXR1cF9kYXRhX2RpcigpOworCWlmIChyZXQgPCAwKSB7CisJCWRl dl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAorCQkJIkZhaWxlZCB0byBjcmVhdGUg ZGF0YSBkaXIgaW4gWGVuc3RvcmVcbiIpOworCX0gZWxzZSB7CisJCWRldl9pbmZvKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKKwkJCSJTdWNjZXNzZnVsbHkgZmluaXNoZWQgY29tbSBlbnYg aW5pdGlhbGl6YXRpb25cbiIpOworCisJCWh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJhY2tlbmRfaW5p dGlhbGl6ZWQgPSB0cnVlOworCX0KIAogCXJldHVybiByZXQ7CiB9Ci0tIAoyLjcuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=