From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 3/7] drm/v3d: Add support for compute shader dispatch. Date: Mon, 1 Apr 2019 15:26:31 -0700 Message-ID: <20190401222635.25013-4-eric@anholt.net> References: <20190401222635.25013-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 31D1D6E29B for ; Mon, 1 Apr 2019 22:26:53 +0000 (UTC) In-Reply-To: <20190401222635.25013-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: thomas.spurden@broadcom.com, linux-kernel@vger.kernel.org, david.emett@broadcom.com, Qiang Yu List-Id: dri-devel@lists.freedesktop.org VGhlIGNvbXB1dGUgc2hhZGVyIGRpc3BhdGNoIGludGVyZmFjZSBpcyBwcmV0dHkgc2ltcGxlIC0t IGp1c3QgcGFzcyBpbgp0aGUgcmVncyB0aGF0IHVzZXJzcGFjZSBoYXMgcGFzc2VkIHVzLCB3aXRo IG5vIENMcyB0byBydW4uICBIb3dldmVyLAp3aXRoIG5vIENMIHRvIHJ1biBpdCBtZWFucyB0aGF0 IHdlIG5lZWQgdG8gZG8gbWFudWFsIGNhY2hlIGZsdXNoaW5nIG9mCnRoZSBMMiBhZnRlciB0aGUg SFcgZXhlY3V0aW9uIGNvbXBsZXRlcyAoZm9yIFNTQk8sIGF0b21pYywgYW5kCmltYWdlX2xvYWRf c3RvcmUgd3JpdGVzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgY29tcHV0ZSBzaGFkZXJzKS4KClRo aXMgZG9lc24ndCB5ZXQgZXhwb3NlIHRoZSBMMiBjYWNoZSdzIGFiaWxpdHkgdG8gaGF2ZSBhIHJl Z2lvbiBvZiB0aGUKYWRkcmVzcyBzcGFjZSBub3Qgd3JpdGUgYmFjayB0byBtZW1vcnkgKHdoaWNo IGNvdWxkIGJlIHVzZWQgZm9yCnNoYXJlZF92YXIgc3RvcmFnZSkuCgpTbyBmYXIsIHRoZSBNZXNh IHNpZGUgaGFzIGJlZW4gdGVzdGVkIG9uIFYzRCB2NC4yIHNpbXBlbnJvc2UgKHBhc3NpbmcKdGhl IEVTMzEgdGVzdHMpLCBhbmQgb24gdGhlIGtlcm5lbCBzaWRlIG9uIDcyNzggKGZhaWxpbmcgYXRv bWljCmNvbXBzd2FwIHRlc3RzIGluIGEgd2F5IHRoYXQgZG9lc24ndCByZXByb2R1Y2Ugb24gc2lt cGVucm9zZSkuCgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0Pgot LS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2RlYnVnZnMuYyB8ICAyMiArKysrKwogZHJpdmVy cy9ncHUvZHJtL3YzZC92M2RfZHJ2LmMgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9kcnYuaCAgICAgfCAgMjggKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9mZW5j ZS5jICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZ2VtLmMgICAgIHwgMTU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfaXJx LmMgICAgIHwgIDE2ICsrLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcmVncy5oICAgIHwgIDcz ICsrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jICAgfCAxMjEg KysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3RyYWNlLmgg ICB8ICA5NCArKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vdjNkX2RybS5oICAg ICAgICB8ICAyOCArKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDUzMCBpbnNlcnRpb25zKCspLCAx OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKaW5kZXggYTI0YWYyZDJm NTc0Li5hMmRjNDI2Mjk1NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rl YnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kZWJ1Z2ZzLmMKQEAgLTU4LDYg KzU4LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjNkX3JlZ19kZWYgdjNkX2NvcmVfcmVnX2Rl ZnNbXSA9IHsKIAlSRUdERUYoVjNEX0dNUF9WSU9fQUREUiksCiB9OwogCitzdGF0aWMgY29uc3Qg c3RydWN0IHYzZF9yZWdfZGVmIHYzZF9jc2RfcmVnX2RlZnNbXSA9IHsKKwlSRUdERUYoVjNEX0NT RF9TVEFUVVMpLAorCVJFR0RFRihWM0RfQ1NEX0NVUlJFTlRfQ0ZHMCksCisJUkVHREVGKFYzRF9D U0RfQ1VSUkVOVF9DRkcxKSwKKwlSRUdERUYoVjNEX0NTRF9DVVJSRU5UX0NGRzIpLAorCVJFR0RF RihWM0RfQ1NEX0NVUlJFTlRfQ0ZHMyksCisJUkVHREVGKFYzRF9DU0RfQ1VSUkVOVF9DRkc0KSwK KwlSRUdERUYoVjNEX0NTRF9DVVJSRU5UX0NGRzUpLAorCVJFR0RFRihWM0RfQ1NEX0NVUlJFTlRf Q0ZHNiksCit9OworCiBzdGF0aWMgaW50IHYzZF92M2RfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogewogCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0g KHN0cnVjdCBkcm1faW5mb19ub2RlICopbS0+cHJpdmF0ZTsKQEAgLTg5LDYgKzEwMCwxNyBAQCBz dGF0aWMgaW50IHYzZF92M2RfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogCQkJCSAgIFYzRF9DT1JFX1JFQUQoY29yZSwKIAkJCQkJCSB2M2RfY29yZV9yZWdf ZGVmc1tpXS5yZWcpKTsKIAkJfQorCisJCWlmICh2M2RfaGFzX2NzZCh2M2QpKSB7CisJCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2M2RfY3NkX3JlZ19kZWZzKTsgaSsrKSB7CisJCQkJc2Vx X3ByaW50ZihtLCAiY29yZSAlZCAlcyAoMHglMDR4KTogMHglMDh4XG4iLAorCQkJCQkgICBjb3Jl LAorCQkJCQkgICB2M2RfY3NkX3JlZ19kZWZzW2ldLm5hbWUsCisJCQkJCSAgIHYzZF9jc2RfcmVn X2RlZnNbaV0ucmVnLAorCQkJCQkgICBWM0RfQ09SRV9SRUFEKGNvcmUsCisJCQkJCQkJIHYzZF9j c2RfcmVnX2RlZnNbaV0ucmVnKSk7CisJCQl9CisJCX0KIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2RfZHJ2LmMKaW5kZXggNGFmYjYzY2M0ZjU3Li4wN2RjNDdkNGNiMDkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2Qv djNkX2Rydi5jCkBAIC03LDkgKzcsOSBAQAogICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEJy b2FkY29tIFYzRCAzLjMgYW5kIDQuMSBPcGVuR0wgRVMgR1BVcy4KICAqIEZvciBWM0QgMi54IHN1 cHBvcnQsIHNlZSB0aGUgVkM0IGRyaXZlci4KICAqCi0gKiBDdXJyZW50bHkgb25seSBzaW5nbGUt Y29yZSByZW5kZXJpbmcgdXNpbmcgdGhlIGJpbm5lciBhbmQgcmVuZGVyZXIsCi0gKiBhbG9uZyB3 aXRoIFRGVSAodGV4dHVyZSBmb3JtYXR0aW5nIHVuaXQpIHJlbmRlcmluZyBpcyBzdXBwb3J0ZWQu Ci0gKiBWM0QgNC54J3MgQ1NEIChjb21wdXRlIHNoYWRlciBkaXNwYXRjaCkgaXMgbm90IHlldCBz dXBwb3J0ZWQuCisgKiBUaGUgVjNEIEdQVSBpbmNsdWRlcyBhIHRpbGVkIHJlbmRlciAoY29tcG9z ZWQgb2YgYSBiaW4gYW5kIHJlbmRlcgorICogcGlwZWxpbmVzKSwgdGhlIFRGVSAodGV4dHVyZSBm b3JtYXR0aW5nIHVuaXQpLCBhbmQgdGhlIENTRCAoY29tcHV0ZQorICogc2hhZGVyIGRpc3BhdGNo KS4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+CkBAIC0xOTMsNiArMTkzLDkgQEAgc3Rh dGljIGludCB2M2RfZ2V0X3BhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJY2FzZSBEUk1fVjNEX1BBUkFNX1NVUFBPUlRTX1RGVToKIAkJYXJncy0+dmFsdWUg PSAxOwogCQlyZXR1cm4gMDsKKwljYXNlIERSTV9WM0RfUEFSQU1fU1VQUE9SVFNfQ1NEOgorCQlh cmdzLT52YWx1ZSA9IHYzZF9oYXNfY3NkKHYzZCk7CisJCXJldHVybiAwOwogCWRlZmF1bHQ6CiAJ CURSTV9ERUJVRygiVW5rbm93biBwYXJhbWV0ZXIgJWRcbiIsIGFyZ3MtPnBhcmFtKTsKIAkJcmV0 dXJuIC1FSU5WQUw7CkBAIC0yNTIsNiArMjU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aW9jdGxfZGVzYyB2M2RfZHJtX2lvY3Rsc1tdID0gewogCURSTV9JT0NUTF9ERUZfRFJWKFYzRF9H RVRfUEFSQU0sIHYzZF9nZXRfcGFyYW1faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9J T0NUTF9ERUZfRFJWKFYzRF9HRVRfQk9fT0ZGU0VULCB2M2RfZ2V0X2JvX29mZnNldF9pb2N0bCwg RFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoVjNEX1NVQk1JVF9URlUsIHYz ZF9zdWJtaXRfdGZ1X2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XIHwgRFJNX0FVVEgpLAorCURSTV9J T0NUTF9ERUZfRFJWKFYzRF9TVUJNSVRfQ1NELCB2M2Rfc3VibWl0X2NzZF9pb2N0bCwgRFJNX1JF TkRFUl9BTExPVyB8IERSTV9BVVRIKSwKIH07CiAKIHN0YXRpYyBpbnQgdjNkX2R1bWJfY3JlYXRl KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3YzZC92M2RfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaAppbmRleCBhYTIx YTcwZTY4NzkuLmM0ZWY2NDBlZmZjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92 M2RfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKQEAgLTE3LDkgKzE3 LDExIEBAIGVudW0gdjNkX3F1ZXVlIHsKIAlWM0RfQklOLAogCVYzRF9SRU5ERVIsCiAJVjNEX1RG VSwKKwlWM0RfQ1NELAorCVYzRF9DQUNIRV9DTEVBTiwKIH07CiAKLSNkZWZpbmUgVjNEX01BWF9R VUVVRVMgKFYzRF9URlUgKyAxKQorI2RlZmluZSBWM0RfTUFYX1FVRVVFUyAoVjNEX0NBQ0hFX0NM RUFOICsgMSkKIAogc3RydWN0IHYzZF9xdWV1ZV9zdGF0ZSB7CiAJc3RydWN0IGRybV9ncHVfc2No ZWR1bGVyIHNjaGVkOwpAQCAtNzYsNiArNzgsNyBAQCBzdHJ1Y3QgdjNkX2RldiB7CiAJc3RydWN0 IHYzZF9iaW5fam9iICpiaW5fam9iOwogCXN0cnVjdCB2M2RfcmVuZGVyX2pvYiAqcmVuZGVyX2pv YjsKIAlzdHJ1Y3QgdjNkX3RmdV9qb2IgKnRmdV9qb2I7CisJc3RydWN0IHYzZF9jc2Rfam9iICpj c2Rfam9iOwogCiAJc3RydWN0IHYzZF9xdWV1ZV9zdGF0ZSBxdWV1ZVtWM0RfTUFYX1FVRVVFU107 CiAKQEAgLTk4LDYgKzEwMSwxMiBAQCBzdHJ1Y3QgdjNkX2RldiB7CiAJICovCiAJc3RydWN0IG11 dGV4IHNjaGVkX2xvY2s7CiAKKwkvKiBMb2NrIHRha2VuIGR1cmluZyBhIGNhY2hlIGNsZWFuIGFu ZCB3aGVuIGluaXRpYXRpbmcgYW4gTDIKKwkgKiBmbHVzaCwgdG8ga2VlcCBMMiBmbHVzaGVzIGZy b20gaW50ZXJmZXJpbmcgd2l0aCB0aGUKKwkgKiBzeW5jaHJvbm91cyBMMiBjbGVhbnMuCisJICov CisJc3RydWN0IG11dGV4IGNhY2hlX2NsZWFuX2xvY2s7CisKIAlzdHJ1Y3QgewogCQl1MzIgbnVt X2FsbG9jYXRlZDsKIAkJdTMyIHBhZ2VzX2FsbG9jYXRlZDsKQEAgLTExMCw2ICsxMTksMTIgQEAg dG9fdjNkX2RldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAoc3RydWN0IHYzZF9k ZXYgKilkZXYtPmRldl9wcml2YXRlOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK3YzZF9oYXNf Y3NkKHN0cnVjdCB2M2RfZGV2ICp2M2QpCit7CisJcmV0dXJuIHYzZC0+dmVyID49IDQxOworfQor CiAvKiBUaGUgcGVyLWZkIHN0cnVjdCwgd2hpY2ggdHJhY2tzIHRoZSBNTVUgbWFwcGluZ3MuICov CiBzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiB7CiAJc3RydWN0IHYzZF9kZXYgKnYzZDsKQEAgLTIyOCw2 ICsyNDMsMTQgQEAgc3RydWN0IHYzZF90ZnVfam9iIHsKIAlzdHJ1Y3QgZHJtX3YzZF9zdWJtaXRf dGZ1IGFyZ3M7CiB9OwogCitzdHJ1Y3QgdjNkX2NzZF9qb2IgeworCXN0cnVjdCB2M2Rfam9iIGJh c2U7CisKKwl1MzIgdGltZWRvdXRfYmF0Y2hlczsKKworCXN0cnVjdCBkcm1fdjNkX3N1Ym1pdF9j c2QgYXJnczsKK307CisKIC8qKgogICogX3dhaXRfZm9yIC0gbWFnaWMgKHJlZ2lzdGVyKSB3YWl0 IG1hY3JvCiAgKgpAQCAtMjg5LDExICszMTIsMTQgQEAgaW50IHYzZF9zdWJtaXRfY2xfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KTsKIGludCB2M2Rfc3VibWl0X3RmdV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCB2 M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAor CQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCB2M2Rfd2FpdF9ib19pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdik7CiB2b2lkIHYzZF9qb2JfcHV0KHN0cnVjdCB2M2Rfam9iICpqb2IpOwog dm9pZCB2M2RfcmVzZXQoc3RydWN0IHYzZF9kZXYgKnYzZCk7CiB2b2lkIHYzZF9pbnZhbGlkYXRl X2NhY2hlcyhzdHJ1Y3QgdjNkX2RldiAqdjNkKTsKK3ZvaWQgdjNkX2NsZWFuX2NhY2hlcyhzdHJ1 Y3QgdjNkX2RldiAqdjNkKTsKIAogLyogdjNkX2lycS5jICovCiBpbnQgdjNkX2lycV9pbml0KHN0 cnVjdCB2M2RfZGV2ICp2M2QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rf ZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2ZlbmNlLmMKaW5kZXggYjBhMmExYWUy ZWIxLi44OTg0MGVkMjEyYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Zl bmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZmVuY2UuYwpAQCAtMzYsNiArMzYs OCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdjNkX2ZlbmNlX2dldF90aW1lbGluZV9uYW1lKHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlKQogCQlyZXR1cm4gInYzZC1yZW5kZXIiOwogCWNhc2UgVjNEX1RG VToKIAkJcmV0dXJuICJ2M2QtdGZ1IjsKKwljYXNlIFYzRF9DU0Q6CisJCXJldHVybiAidjNkLWNz ZCI7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3YzZC92M2RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYwppbmRl eCBkZDQ2NzlhNTM2YzkuLmI3OGZmYzUyNjg4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3YzZC92M2RfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZ2VtLmMKQEAgLTE2 MiwxMCArMTYyLDUyIEBAIHYzZF9mbHVzaF9sMnQoc3RydWN0IHYzZF9kZXYgKnYzZCwgaW50IGNv cmUpCiAJLyogV2hpbGUgdGhlcmUgaXMgYSBidXN5IGJpdCAoVjNEX0wyVENBQ1RMX0wyVEZMUyks IHdlIGRvbid0CiAJICogbmVlZCB0byB3YWl0IGZvciBjb21wbGV0aW9uIGJlZm9yZSBkaXNwYXRj aGluZyB0aGUgam9iIC0tCiAJICogTDJUIGFjY2Vzc2VzIHdpbGwgYmUgc3RhbGxlZCB1bnRpbCB0 aGUgZmx1c2ggaGFzIGNvbXBsZXRlZC4KKwkgKiBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIG1ha2Ug c3VyZSB3ZSBkb24ndCB0cnkgdG8gdHJpZ2dlciBhCisJICogbmV3IGZsdXNoIHdoaWxlIHRoZSBM Ml9DTEVBTiBxdWV1ZSBpcyB0cnlpbmcgdG8KKwkgKiBzeW5jaHJvbm91c2x5IGNsZWFuIGFmdGVy IGEgam9iLgogCSAqLworCW11dGV4X2xvY2soJnYzZC0+Y2FjaGVfY2xlYW5fbG9jayk7CiAJVjNE X0NPUkVfV1JJVEUoY29yZSwgVjNEX0NUTF9MMlRDQUNUTCwKIAkJICAgICAgIFYzRF9MMlRDQUNU TF9MMlRGTFMgfAogCQkgICAgICAgVjNEX1NFVF9GSUVMRChWM0RfTDJUQ0FDVExfRkxNX0ZMVVNI LCBWM0RfTDJUQ0FDVExfRkxNKSk7CisJbXV0ZXhfdW5sb2NrKCZ2M2QtPmNhY2hlX2NsZWFuX2xv Y2spOworfQorCisvKiBDbGVhbnMgdGV4dHVyZSBMMSBhbmQgTDIgY2FjaGVsaW5lcyAod3JpdGlu ZyBiYWNrIGRpcnR5IGRhdGEpLgorICoKKyAqIEZvciBjbGVhbmluZywgd2hpY2ggaGFwcGVucyBm cm9tIHRoZSBDQUNIRV9DTEVBTiBxdWV1ZSBhZnRlciBDU0QgaGFzCisgKiBleGVjdXRlZCwgd2Ug bmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2xlYW4gaXMgZG9uZSBiZWZvcmUKKyAqIHNpZ25h bGluZyBqb2IgY29tcGxldGlvbi4gIFNvLCB3ZSBzeW5jaHJvbm91c2x5IHdhaXQgYmVmb3JlCisg KiByZXR1cm5pbmcsIGFuZCB3ZSBtYWtlIHN1cmUgdGhhdCBMMiBpbnZhbGlkYXRlcyBkb24ndCBo YXBwZW4gaW4gdGhlCisgKiBtZWFudGltZSB0byBjb25mdXNlIG91ciBhcmUtd2UtZG9uZSBjaGVj a3MuCisgKi8KK3ZvaWQKK3YzZF9jbGVhbl9jYWNoZXMoc3RydWN0IHYzZF9kZXYgKnYzZCkKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJnYzZC0+ZHJtOworCWludCBjb3JlID0gMDsKKwor CXRyYWNlX3YzZF9jYWNoZV9jbGVhbl9iZWdpbihkZXYpOworCisJVjNEX0NPUkVfV1JJVEUoY29y ZSwgVjNEX0NUTF9MMlRDQUNUTCwgVjNEX0wyVENBQ1RMX1RNVVdDRik7CisJaWYgKHdhaXRfZm9y KCEoVjNEX0NPUkVfUkVBRChjb3JlLCBWM0RfQ1RMX0wyVENBQ1RMKSAmCisJCSAgICAgICBWM0Rf TDJUQ0FDVExfTDJURkxTKSwgMTAwKSkgeworCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBm b3IgTDFUIHdyaXRlIGNvbWJpbmVyIGZsdXNoXG4iKTsKKwl9CisKKwltdXRleF9sb2NrKCZ2M2Qt PmNhY2hlX2NsZWFuX2xvY2spOworCVYzRF9DT1JFX1dSSVRFKGNvcmUsIFYzRF9DVExfTDJUQ0FD VEwsCisJCSAgICAgICBWM0RfTDJUQ0FDVExfTDJURkxTIHwKKwkJICAgICAgIFYzRF9TRVRfRklF TEQoVjNEX0wyVENBQ1RMX0ZMTV9DTEVBTiwgVjNEX0wyVENBQ1RMX0ZMTSkpOworCisJaWYgKHdh aXRfZm9yKCEoVjNEX0NPUkVfUkVBRChjb3JlLCBWM0RfQ1RMX0wyVENBQ1RMKSAmCisJCSAgICAg ICBWM0RfTDJUQ0FDVExfTDJURkxTKSwgMTAwKSkgeworCQlEUk1fRVJST1IoIlRpbWVvdXQgd2Fp dGluZyBmb3IgTDJUIGNsZWFuXG4iKTsKKwl9CisKKwltdXRleF91bmxvY2soJnYzZC0+Y2FjaGVf Y2xlYW5fbG9jayk7CisKKwl0cmFjZV92M2RfY2FjaGVfY2xlYW5fZW5kKGRldik7CiB9CiAKIC8q IEludmFsaWRhdGVzIHRoZSBzbGljZSBjYWNoZXMuICBUaGVzZSBhcmUgcmVhZC1vbmx5IGNhY2hl cy4gKi8KQEAgLTQyOSw3ICs0NzEsOCBAQCBzdGF0aWMgdm9pZAogdjNkX2F0dGFjaF9mZW5jZXNf YW5kX3VubG9ja19yZXNlcnZhdGlvbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCQkJ IHN0cnVjdCB2M2Rfam9iICpqb2IsCiAJCQkJCSBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmFjcXVp cmVfY3R4LAotCQkJCQkgdTMyIG91dF9zeW5jKQorCQkJCQkgdTMyIG91dF9zeW5jLAorCQkJCQkg c3RydWN0IGRtYV9mZW5jZSAqZG9uZV9mZW5jZSkKIHsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNfb3V0OwogCWludCBpOwpAQCAtNDQ1LDcgKzQ4OCw3IEBAIHYzZF9hdHRhY2hfZmVuY2VzX2Fu ZF91bmxvY2tfcmVzZXJ2YXRpb24oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJLyogVXBk YXRlIHRoZSByZXR1cm4gc3luYyBvYmplY3QgZm9yIHRoZSBqb2IgKi8KIAlzeW5jX291dCA9IGRy bV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2LCBvdXRfc3luYyk7CiAJaWYgKHN5bmNfb3V0KSB7Ci0J CWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY19vdXQsIGpvYi0+ZG9uZV9mZW5jZSk7CisJ CWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY19vdXQsIGRvbmVfZmVuY2UpOwogCQlkcm1f c3luY29ial9wdXQoc3luY19vdXQpOwogCX0KIH0KQEAgLTU0MSw4ICs1ODQsMTAgQEAgdjNkX3N1 Ym1pdF9jbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4 X3VubG9jaygmdjNkLT5zY2hlZF9sb2NrKTsKIAogCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxv Y2tfcmVzZXJ2YXRpb24oZmlsZV9wcml2LAotCQkJCQkJICZyZW5kZXItPmJhc2UsICZhY3F1aXJl X2N0eCwKLQkJCQkJCSBhcmdzLT5vdXRfc3luYyk7CisJCQkJCQkgJnJlbmRlci0+YmFzZSwKKwkJ CQkJCSAmYWNxdWlyZV9jdHgsCisJCQkJCQkgYXJncy0+b3V0X3N5bmMsCisJCQkJCQkgcmVuZGVy LT5iYXNlLmRvbmVfZmVuY2UpOwogCiAJaWYgKGJpbikKIAkJdjNkX2pvYl9wdXQoJmJpbi0+YmFz ZSk7CkBAIC02MzYsOSArNjgxLDEwNyBAQCB2M2Rfc3VibWl0X3RmdV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJdjNkX2F0dGFjaF9mZW5jZXNfYW5kX3VubG9j a19yZXNlcnZhdGlvbihmaWxlX3ByaXYsCiAJCQkJCQkgJmpvYi0+YmFzZSwgJmFjcXVpcmVfY3R4 LAotCQkJCQkJIGFyZ3MtPm91dF9zeW5jKTsKKwkJCQkJCSBhcmdzLT5vdXRfc3luYywKKwkJCQkJ CSBqb2ItPmJhc2UuZG9uZV9mZW5jZSk7CisKKwl2M2Rfam9iX3B1dCgmam9iLT5iYXNlKTsKKwor CXJldHVybiAwOworCitmYWlsX3VucmVzZXJ2ZToKKwltdXRleF91bmxvY2soJnYzZC0+c2NoZWRf bG9jayk7CisJZHJtX2dlbV91bmxvY2tfcmVzZXJ2YXRpb25zKGpvYi0+YmFzZS5ibywgam9iLT5i YXNlLmJvX2NvdW50LAorCQkJCSAgICAmYWNxdWlyZV9jdHgpOworZmFpbDoKKwl2M2Rfam9iX3B1 dCgmam9iLT5iYXNlKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogdjNkX3N1Ym1pdF9j c2RfaW9jdGwoKSAtIFN1Ym1pdHMgYSBDU0QgKHRleHR1cmUgZm9ybWF0dGluZykgam9iIHRvIHRo ZSBWM0QuCisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAZGF0YTogaW9jdGwgYXJndW1lbnQKKyAq IEBmaWxlX3ByaXY6IERSTSBmaWxlIGZvciB0aGlzIGZkCisgKgorICogVXNlcnNwYWNlIHByb3Zp ZGVzIHRoZSByZWdpc3RlciBzZXR1cCBmb3IgdGhlIENTRCwgd2hpY2ggd2UgZG9uJ3QKKyAqIG5l ZWQgdG8gdmFsaWRhdGUgc2luY2UgdGhlIENTRCBpcyBiZWhpbmQgdGhlIE1NVS4KKyAqLworaW50 Cit2M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCB2M2RfZGV2 ICp2M2QgPSB0b192M2RfZGV2KGRldik7CisJc3RydWN0IHYzZF9maWxlX3ByaXYgKnYzZF9wcml2 ID0gZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgZHJtX3YzZF9zdWJtaXRfY3NkICph cmdzID0gZGF0YTsKKwlzdHJ1Y3QgdjNkX2NzZF9qb2IgKmpvYjsKKwlzdHJ1Y3QgdjNkX2pvYiAq Y2xlYW5fam9iOworCXN0cnVjdCB3d19hY3F1aXJlX2N0eCBhY3F1aXJlX2N0eDsKKwlpbnQgcmV0 OworCisJdHJhY2VfdjNkX3N1Ym1pdF9jc2RfaW9jdGwoJnYzZC0+ZHJtLCBhcmdzLT5jZmdbNV0s IGFyZ3MtPmNmZ1s2XSk7CisKKwlpZiAoIXYzZF9oYXNfY3NkKHYzZCkpIHsKKwkJRFJNX0RFQlVH KCJBdHRlbXB0aW5nIENTRCBzdWJtaXQgb24gbm9uLUNTRCBoYXJkd2FyZVxuIik7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCWpvYiA9IGtjYWxsb2MoMSwgc2l6ZW9mKCpqb2IpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIWpvYikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXQgPSB2M2Rfam9iX2lu aXQodjNkLCBmaWxlX3ByaXYsICZqb2ItPmJhc2UsCisJCQkgICB2M2Rfam9iX2ZyZWUsIGFyZ3Mt PmluX3N5bmMpOworCWlmIChyZXQpIHsKKwkJa2ZyZWUoam9iKTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwljbGVhbl9qb2IgPSBrY2FsbG9jKDEsIHNpemVvZigqam9iKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFjbGVhbl9qb2IpIHsKKwkJdjNkX2pvYl9wdXQoJmpvYi0+YmFzZSk7CisJCWtmcmVlKGpv Yik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXJldCA9IHYzZF9qb2JfaW5pdCh2M2QsIGZp bGVfcHJpdiwgY2xlYW5fam9iLCB2M2Rfam9iX2ZyZWUsIDApOworCWlmIChyZXQpIHsKKwkJdjNk X2pvYl9wdXQoJmpvYi0+YmFzZSk7CisJCWtmcmVlKGNsZWFuX2pvYik7CisJCXJldHVybiByZXQ7 CisJfQorCisJam9iLT5hcmdzID0gKmFyZ3M7CisKKwlyZXQgPSB2M2RfbG9va3VwX2JvcyhkZXYs IGZpbGVfcHJpdiwgJmpvYi0+YmFzZSwKKwkJCSAgICAgYXJncy0+Ym9faGFuZGxlcywgYXJncy0+ Ym9faGFuZGxlX2NvdW50KTsKKwlpZiAocmV0KQorCQlnb3RvIGZhaWw7CisKKwlyZXQgPSB2M2Rf bG9ja19ib19yZXNlcnZhdGlvbnMoam9iLT5iYXNlLmJvLCBqb2ItPmJhc2UuYm9fY291bnQsCisJ CQkJICAgICAgICZhY3F1aXJlX2N0eCk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCisJbXV0 ZXhfbG9jaygmdjNkLT5zY2hlZF9sb2NrKTsKKwlyZXQgPSB2M2RfcHVzaF9qb2IodjNkX3ByaXYs ICZqb2ItPmJhc2UsIFYzRF9DU0QpOworCWlmIChyZXQpCisJCWdvdG8gZmFpbF91bnJlc2VydmU7 CisKKwljbGVhbl9qb2ItPmluX2ZlbmNlID0gZG1hX2ZlbmNlX2dldChqb2ItPmJhc2UuZG9uZV9m ZW5jZSk7CisJcmV0ID0gdjNkX3B1c2hfam9iKHYzZF9wcml2LCBjbGVhbl9qb2IsIFYzRF9DQUNI RV9DTEVBTik7CisJaWYgKHJldCkKKwkJZ290byBmYWlsX3VucmVzZXJ2ZTsKKwltdXRleF91bmxv Y2soJnYzZC0+c2NoZWRfbG9jayk7CisKKwl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jl c2VydmF0aW9uKGZpbGVfcHJpdiwKKwkJCQkJCSAmam9iLT5iYXNlLAorCQkJCQkJICZhY3F1aXJl X2N0eCwKKwkJCQkJCSBhcmdzLT5vdXRfc3luYywKKwkJCQkJCSBjbGVhbl9qb2ItPmRvbmVfZmVu Y2UpOwogCiAJdjNkX2pvYl9wdXQoJmpvYi0+YmFzZSk7CisJdjNkX2pvYl9wdXQoY2xlYW5fam9i KTsKIAogCXJldHVybiAwOwogCkBAIC02NDgsNiArNzkxLDcgQEAgdjNkX3N1Ym1pdF90ZnVfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgICAgJmFjcXVpcmVf Y3R4KTsKIGZhaWw6CiAJdjNkX2pvYl9wdXQoJmpvYi0+YmFzZSk7CisJdjNkX2pvYl9wdXQoY2xl YW5fam9iKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC02NjcsNiArODExLDcgQEAgdjNkX2dlbV9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJbXV0ZXhfaW5pdCgmdjNkLT5ib19sb2NrKTsK IAltdXRleF9pbml0KCZ2M2QtPnJlc2V0X2xvY2spOwogCW11dGV4X2luaXQoJnYzZC0+c2NoZWRf bG9jayk7CisJbXV0ZXhfaW5pdCgmdjNkLT5jYWNoZV9jbGVhbl9sb2NrKTsKIAogCS8qIE5vdGU6 IFdlIGRvbid0IGFsbG9jYXRlIGFkZHJlc3MgMC4gIFZhcmlvdXMgYml0cyBvZiBIVwogCSAqIHRy ZWF0IDAgYXMgc3BlY2lhbCwgc3VjaCBhcyB0aGUgb2NjbHVzaW9uIHF1ZXJ5IGNvdW50ZXJzCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92M2QvdjNkX2lycS5jCmluZGV4IGNlMzczZmZkNjM4MC4uZmFjM2M1NDI4NjBiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v djNkL3YzZF9pcnEuYwpAQCAtNCw5ICs0LDkgQEAKIC8qKgogICogRE9DOiBJbnRlcnJ1cHQgbWFu YWdlbWVudCBmb3IgdGhlIFYzRCBlbmdpbmUKICAqCi0gKiBXaGVuIHdlIHRha2UgYSBiaW4sIHJl bmRlciwgb3IgVEZVIGRvbmUgaW50ZXJydXB0LCB3ZSBuZWVkIHRvCi0gKiBzaWduYWwgdGhlIGZl bmNlIGZvciB0aGF0IGpvYiBzbyB0aGF0IHRoZSBzY2hlZHVsZXIgY2FuIHF1ZXVlIHVwCi0gKiB0 aGUgbmV4dCBvbmUgYW5kIHVuYmxvY2sgYW55IHdhaXRlcnMuCisgKiBXaGVuIHdlIHRha2UgYSBi aW4sIHJlbmRlciwgVEZVIGRvbmUsIG9yIENTRCBkb25lIGludGVycnVwdCwgd2UKKyAqIG5lZWQg dG8gc2lnbmFsIHRoZSBmZW5jZSBmb3IgdGhhdCBqb2Igc28gdGhhdCB0aGUgc2NoZWR1bGVyIGNh bgorICogcXVldWUgdXAgdGhlIG5leHQgb25lIGFuZCB1bmJsb2NrIGFueSB3YWl0ZXJzLgogICoK ICAqIFdoZW4gd2UgdGFrZSB0aGUgYmlubmVyIG91dCBvZiBtZW1vcnkgaW50ZXJydXB0LCB3ZSBu ZWVkIHRvCiAgKiBhbGxvY2F0ZSBzb21lIG5ldyBtZW1vcnkgYW5kIHBhc3MgaXQgdG8gdGhlIGJp bm5lciBzbyB0aGF0IHRoZQpAQCAtMjAsNiArMjAsNyBAQAogI2RlZmluZSBWM0RfQ09SRV9JUlFT ICgodTMyKShWM0RfSU5UX09VVE9NRU0gfAlcCiAJCQkgICAgIFYzRF9JTlRfRkxET05FIHwJXAog CQkJICAgICBWM0RfSU5UX0ZSRE9ORSB8CVwKKwkJCSAgICAgVjNEX0lOVF9DU0RET05FIHwJXAog CQkJICAgICBWM0RfSU5UX0dNUFYpKQogCiAjZGVmaW5lIFYzRF9IVUJfSVJRUyAoKHUzMikoVjNE X0hVQl9JTlRfTU1VX1dSViB8CVwKQEAgLTExMiw2ICsxMTMsMTUgQEAgdjNkX2lycShpbnQgaXJx LCB2b2lkICphcmcpCiAJCXN0YXR1cyA9IElSUV9IQU5ETEVEOwogCX0KIAorCWlmIChpbnRzdHMg JiBWM0RfSU5UX0NTRERPTkUpIHsKKwkJc3RydWN0IHYzZF9mZW5jZSAqZmVuY2UgPQorCQkJdG9f djNkX2ZlbmNlKHYzZC0+Y3NkX2pvYi0+YmFzZS5pcnFfZmVuY2UpOworCisJCXRyYWNlX3YzZF9j c2RfaXJxKCZ2M2QtPmRybSwgZmVuY2UtPnNlcW5vKTsKKwkJZG1hX2ZlbmNlX3NpZ25hbCgmZmVu Y2UtPmJhc2UpOworCQlzdGF0dXMgPSBJUlFfSEFORExFRDsKKwl9CisKIAkvKiBXZSBzaG91bGRu J3QgYmUgdHJpZ2dlcmluZyB0aGVzZSBpZiB3ZSBoYXZlIEdNUCBpbgogCSAqIGFsd2F5cy1hbGxv d2VkIG1vZGUuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9yZWdz LmggYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9yZWdzLmgKaW5kZXggOGU4OGFmMjM3NjEwLi45 YThmZjBjZTY0OGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3JlZ3MuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9yZWdzLmgKQEAgLTIzOCw4ICsyMzgsMTEgQEAK ICNkZWZpbmUgVjNEX0NUTF9MMlRDQUNUTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwMDMwCiAjIGRlZmluZSBWM0RfTDJUQ0FDVExfVE1VV0NGICAgICAgICAgICAgICAgICAgICAg ICAgICAgQklUKDgpCiAjIGRlZmluZSBWM0RfTDJUQ0FDVExfTDJUX05PX1dNICAgICAgICAgICAg ICAgICAgICAgICAgQklUKDQpCisvKiBJbnZhbGlkYXRlcyBjYWNoZSBsaW5lcy4gKi8KICMgZGVm aW5lIFYzRF9MMlRDQUNUTF9GTE1fRkxVU0ggICAgICAgICAgICAgICAgICAgICAgICAwCisvKiBS ZW1vdmVzIGNhY2hlbGluZXMgd2l0aG91dCB3cml0aW5nIGRpcnR5IGxpbmVzIGJhY2suICovCiAj IGRlZmluZSBWM0RfTDJUQ0FDVExfRkxNX0NMRUFSICAgICAgICAgICAgICAgICAgICAgICAgMQor LyogV3JpdGVzIG91dCBkaXJ0eSBjYWNoZWxpbmVzIGFuZCBtYXJrcyB0aGVtIGNsZWFuLCBidXQg ZG9lc24ndCBpbnZhbGlkYXRlLiAqLwogIyBkZWZpbmUgVjNEX0wyVENBQ1RMX0ZMTV9DTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgIDIKICMgZGVmaW5lIFYzRF9MMlRDQUNUTF9GTE1fTUFTSyAg ICAgICAgICAgICAgICAgICAgICAgICBWM0RfTUFTSygyLCAxKQogIyBkZWZpbmUgVjNEX0wyVENB Q1RMX0ZMTV9TSElGVCAgICAgICAgICAgICAgICAgICAgICAgIDEKQEAgLTI1NSw2ICsyNTgsOCBA QAogI2RlZmluZSBWM0RfQ1RMX0lOVF9NU0tfQ0xSICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDAwNjQKICMgZGVmaW5lIFYzRF9JTlRfUVBVX01BU0sgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWM0RfTUFTSygyNywgMTYpCiAjIGRlZmluZSBWM0RfSU5UX1FQVV9TSElGVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTYKKyMgZGVmaW5lIFYzRF9JTlRfQ1NERE9ORSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNykKKyMgZGVmaW5lIFYzRF9JTlRfUENUUiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNikKICMgZGVmaW5lIFYzRF9JTlRf R01QViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNSkKICMgZGVmaW5lIFYz RF9JTlRfVFJGQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoNCkKICMgZGVm aW5lIFYzRF9JTlRfU1BJTExVU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMykK QEAgLTM3NCw0ICszNzksNzIgQEAKICNkZWZpbmUgVjNEX0dNUF9QUkVTRVJWRV9MT0FEICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAwODE4CiAjZGVmaW5lIFYzRF9HTVBfVkFMSURfTElORVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgyMAogCisjZGVmaW5lIFYzRF9DU0RfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkwMAorIyBkZWZpbmUgVjNE X0NTRF9TVEFUVVNfTlVNX0NPTVBMRVRFRF9NQVNLICAgICAgICAgICAgIFYzRF9NQVNLKDExLCA0 KQorIyBkZWZpbmUgVjNEX0NTRF9TVEFUVVNfTlVNX0NPTVBMRVRFRF9TSElGVCAgICAgICAgICAg IDQKKyMgZGVmaW5lIFYzRF9DU0RfU1RBVFVTX05VTV9BQ1RJVkVfTUFTSyAgICAgICAgICAgICAg ICBWM0RfTUFTSygzLCAyKQorIyBkZWZpbmUgVjNEX0NTRF9TVEFUVVNfTlVNX0FDVElWRV9TSElG VCAgICAgICAgICAgICAgIDIKKyMgZGVmaW5lIFYzRF9DU0RfU1RBVFVTX0hBVkVfQ1VSUkVOVF9E SVNQQVRDSCAgICAgICAgICBCSVQoMSkKKyMgZGVmaW5lIFYzRF9DU0RfU1RBVFVTX0hBVkVfUVVF VUVEX0RJU1BBVENIICAgICAgICAgICBCSVQoMCkKKworI2RlZmluZSBWM0RfQ1NEX1FVRVVFRF9D RkcwICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA5MDQKKyMgZGVmaW5lIFYzRF9DU0Rf UVVFVUVEX0NGRzBfTlVNX1dHU19YX01BU0sgICAgICAgICAgICBWM0RfTUFTSygzMSwgMTYpCisj IGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkcwX05VTV9XR1NfWF9TSElGVCAgICAgICAgICAgMTYK KyMgZGVmaW5lIFYzRF9DU0RfUVVFVUVEX0NGRzBfV0dfWF9PRkZTRVRfTUFTSyAgICAgICAgICBW M0RfTUFTSygxNSwgMCkKKyMgZGVmaW5lIFYzRF9DU0RfUVVFVUVEX0NGRzBfV0dfWF9PRkZTRVRf U0hJRlQgICAgICAgICAwCisKKyNkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZHMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAwOTA4CisjIGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkcxX05V TV9XR1NfWV9NQVNLICAgICAgICAgICAgVjNEX01BU0soMzEsIDE2KQorIyBkZWZpbmUgVjNEX0NT RF9RVUVVRURfQ0ZHMV9OVU1fV0dTX1lfU0hJRlQgICAgICAgICAgIDE2CisjIGRlZmluZSBWM0Rf Q1NEX1FVRVVFRF9DRkcxX1dHX1lfT0ZGU0VUX01BU0sgICAgICAgICAgVjNEX01BU0soMTUsIDAp CisjIGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkcxX1dHX1lfT0ZGU0VUX1NISUZUICAgICAgICAg MAorCisjZGVmaW5lIFYzRF9DU0RfUVVFVUVEX0NGRzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMDkwYworIyBkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZHMl9OVU1fV0dTX1pfTUFTSyAg ICAgICAgICAgIFYzRF9NQVNLKDMxLCAxNikKKyMgZGVmaW5lIFYzRF9DU0RfUVVFVUVEX0NGRzJf TlVNX1dHU19aX1NISUZUICAgICAgICAgICAxNgorIyBkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZH Ml9XR19aX09GRlNFVF9NQVNLICAgICAgICAgIFYzRF9NQVNLKDE1LCAwKQorIyBkZWZpbmUgVjNE X0NTRF9RVUVVRURfQ0ZHMl9XR19aX09GRlNFVF9TSElGVCAgICAgICAgIDAKKworI2RlZmluZSBW M0RfQ1NEX1FVRVVFRF9DRkczICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA5MTAKKyMg ZGVmaW5lIFYzRF9DU0RfUVVFVUVEX0NGRzNfT1ZFUkxBUF9XSVRIX1BSRVYgICAgICAgICBCSVQo MjYpCisjIGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkczX01BWF9TR19JRF9NQVNLICAgICAgICAg ICAgVjNEX01BU0soMjUsIDIwKQorIyBkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZHM19NQVhfU0df SURfU0hJRlQgICAgICAgICAgIDIwCisjIGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkczX0JBVENI RVNfUEVSX1NHX00xX01BU0sgICAgVjNEX01BU0soMTksIDEyKQorIyBkZWZpbmUgVjNEX0NTRF9R VUVVRURfQ0ZHM19CQVRDSEVTX1BFUl9TR19NMV9TSElGVCAgIDEyCisjIGRlZmluZSBWM0RfQ1NE X1FVRVVFRF9DRkczX1dHU19QRVJfU0dfTUFTSyAgICAgICAgICAgVjNEX01BU0soMTEsIDgpCisj IGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkczX1dHU19QRVJfU0dfU0hJRlQgICAgICAgICAgOAor IyBkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZHM19XR19TSVpFX01BU0sgICAgICAgICAgICAgIFYz RF9NQVNLKDcsIDApCisjIGRlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkczX1dHX1NJWkVfU0hJRlQg ICAgICAgICAgICAgMAorCisvKiBOdW1iZXIgb2YgYmF0Y2hlcywgbWludXMgMSAqLworI2RlZmlu ZSBWM0RfQ1NEX1FVRVVFRF9DRkc0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA5MTQK KworLyogU2hhZGVyIGFkZHJlc3MsIHBuYW4sIHNpbmdsZXNlZywgdGhyZWFkaW5nLCBsaWtlIGEg c2hhZGVyIHJlY29yZC4gKi8KKyNkZWZpbmUgVjNEX0NTRF9RVUVVRURfQ0ZHNSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAwOTE4CisKKy8qIFVuaWZvcm1zIGFkZHJlc3MgKDQgYnl0ZSBh bGlnbmVkKSAqLworI2RlZmluZSBWM0RfQ1NEX1FVRVVFRF9DRkc2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDA5MWMKKworI2RlZmluZSBWM0RfQ1NEX0NVUlJFTlRfQ0ZHMCAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMDkyMAorI2RlZmluZSBWM0RfQ1NEX0NVUlJFTlRfQ0ZHMSAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkyNAorI2RlZmluZSBWM0RfQ1NEX0NVUlJFTlRf Q0ZHMiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkyOAorI2RlZmluZSBWM0RfQ1NEX0NV UlJFTlRfQ0ZHMyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkyYworI2RlZmluZSBWM0Rf Q1NEX0NVUlJFTlRfQ0ZHNCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkzMAorI2RlZmlu ZSBWM0RfQ1NEX0NVUlJFTlRfQ0ZHNSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDkzNAor I2RlZmluZSBWM0RfQ1NEX0NVUlJFTlRfQ0ZHNiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MDkzOAorCisjZGVmaW5lIFYzRF9DU0RfQ1VSUkVOVF9JRDAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMDkzYworIyBkZWZpbmUgVjNEX0NTRF9DVVJSRU5UX0lEMF9XR19YX01BU0sgICAg ICAgICAgICAgICAgIFYzRF9NQVNLKDMxLCAxNikKKyMgZGVmaW5lIFYzRF9DU0RfQ1VSUkVOVF9J RDBfV0dfWF9TSElGVCAgICAgICAgICAgICAgICAxNgorIyBkZWZpbmUgVjNEX0NTRF9DVVJSRU5U X0lEMF9XR19JTl9TR19NQVNLICAgICAgICAgICAgIFYzRF9NQVNLKDExLCA4KQorIyBkZWZpbmUg VjNEX0NTRF9DVVJSRU5UX0lEMF9XR19JTl9TR19TSElGVCAgICAgICAgICAgIDgKKyMgZGVmaW5l IFYzRF9DU0RfQ1VSUkVOVF9JRDBfTF9JRFhfTUFTSyAgICAgICAgICAgICAgICBWM0RfTUFTSyg3 LCAwKQorIyBkZWZpbmUgVjNEX0NTRF9DVVJSRU5UX0lEMF9MX0lEWF9TSElGVCAgICAgICAgICAg ICAgIDAKKworI2RlZmluZSBWM0RfQ1NEX0NVUlJFTlRfSUQxICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDA5NDAKKyMgZGVmaW5lIFYzRF9DU0RfQ1VSUkVOVF9JRDBfV0dfWl9NQVNLICAg ICAgICAgICAgICAgICBWM0RfTUFTSygzMSwgMTYpCisjIGRlZmluZSBWM0RfQ1NEX0NVUlJFTlRf SUQwX1dHX1pfU0hJRlQgICAgICAgICAgICAgICAgMTYKKyMgZGVmaW5lIFYzRF9DU0RfQ1VSUkVO VF9JRDBfV0dfWV9NQVNLICAgICAgICAgICAgICAgICBWM0RfTUFTSygxNSwgMCkKKyMgZGVmaW5l IFYzRF9DU0RfQ1VSUkVOVF9JRDBfV0dfWV9TSElGVCAgICAgICAgICAgICAgICAwCisKICNlbmRp ZiAvKiBWM0RfUkVHU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9z Y2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYwppbmRleCA4ODRmMDBmNWVk ZjQuLjljYjNlMWIzYTAyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2No ZWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jCkBAIC00OCw2ICs0OCwx MiBAQCB0b190ZnVfam9iKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpCiAJcmV0dXJu IGNvbnRhaW5lcl9vZihzY2hlZF9qb2IsIHN0cnVjdCB2M2RfdGZ1X2pvYiwgYmFzZS5iYXNlKTsK IH0KIAorc3RhdGljIHN0cnVjdCB2M2RfY3NkX2pvYiAqCit0b19jc2Rfam9iKHN0cnVjdCBkcm1f c2NoZWRfam9iICpzY2hlZF9qb2IpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihzY2hlZF9qb2Is IHN0cnVjdCB2M2RfY3NkX2pvYiwgYmFzZS5iYXNlKTsKK30KKwogc3RhdGljIHZvaWQKIHYzZF9q b2JfZnJlZShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQogewpAQCAtMjQzLDYgKzI0 OSw0OCBAQCB2M2RfdGZ1X2pvYl9ydW4oc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikK IAlyZXR1cm4gZmVuY2U7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICoKK3YzZF9jc2Rf am9iX3J1bihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQoreworCXN0cnVjdCB2M2Rf Y3NkX2pvYiAqam9iID0gdG9fY3NkX2pvYihzY2hlZF9qb2IpOworCXN0cnVjdCB2M2RfZGV2ICp2 M2QgPSBqb2ItPmJhc2UudjNkOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmdjNkLT5kcm07 CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJaW50IGk7CisKKwl2M2QtPmNzZF9qb2IgPSBq b2I7CisKKwl2M2RfaW52YWxpZGF0ZV9jYWNoZXModjNkKTsKKworCWZlbmNlID0gdjNkX2ZlbmNl X2NyZWF0ZSh2M2QsIFYzRF9DU0QpOworCWlmIChJU19FUlIoZmVuY2UpKQorCQlyZXR1cm4gTlVM TDsKKworCWlmIChqb2ItPmJhc2UuaXJxX2ZlbmNlKQorCQlkbWFfZmVuY2VfcHV0KGpvYi0+YmFz ZS5pcnFfZmVuY2UpOworCWpvYi0+YmFzZS5pcnFfZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KGZlbmNl KTsKKworCXRyYWNlX3YzZF9zdWJtaXRfY3NkKGRldiwgdG9fdjNkX2ZlbmNlKGZlbmNlKS0+c2Vx bm8pOworCisJZm9yIChpID0gMTsgaSA8PSA2OyBpKyspCisJCVYzRF9DT1JFX1dSSVRFKDAsIFYz RF9DU0RfUVVFVUVEX0NGRzAgKyA0ICogaSwgam9iLT5hcmdzLmNmZ1tpXSk7CisJLyogQ0ZHMCB3 cml0ZSBraWNrcyBvZmYgdGhlIGpvYi4gKi8KKwlWM0RfQ09SRV9XUklURSgwLCBWM0RfQ1NEX1FV RVVFRF9DRkcwLCBqb2ItPmFyZ3MuY2ZnWzBdKTsKKworCXJldHVybiBmZW5jZTsKK30KKworc3Rh dGljIHN0cnVjdCBkbWFfZmVuY2UgKgordjNkX2NhY2hlX2NsZWFuX2pvYl9ydW4oc3RydWN0IGRy bV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKK3sKKwlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gdG9fdjNk X2pvYihzY2hlZF9qb2IpOworCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSBqb2ItPnYzZDsKKworCXYz ZF9jbGVhbl9jYWNoZXModjNkKTsKKworCXJldHVybiBOVUxMOworfQorCiBzdGF0aWMgdm9pZAog djNkX2dwdV9yZXNldF9mb3JfdGltZW91dChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1Y3QgZHJt X3NjaGVkX2pvYiAqc2NoZWRfam9iKQogewpAQCAtMzEzLDEzICszNjEsMzEgQEAgdjNkX3JlbmRl cl9qb2JfdGltZWRvdXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIH0KIAogc3Rh dGljIHZvaWQKLXYzZF90ZnVfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hl ZF9qb2IpCit2M2RfZ2VuZXJpY19qb2JfdGltZWRvdXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKnNj aGVkX2pvYikKIHsKIAlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gdG9fdjNkX2pvYihzY2hlZF9qb2Ip OwogCiAJdjNkX2dwdV9yZXNldF9mb3JfdGltZW91dChqb2ItPnYzZCwgc2NoZWRfam9iKTsKIH0K IAorc3RhdGljIHZvaWQKK3YzZF9jc2Rfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9i ICpzY2hlZF9qb2IpCit7CisJc3RydWN0IHYzZF9jc2Rfam9iICpqb2IgPSB0b19jc2Rfam9iKHNj aGVkX2pvYik7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IGpvYi0+YmFzZS52M2Q7CisJdTMyIGJh dGNoZXMgPSBWM0RfQ09SRV9SRUFEKDAsIFYzRF9DU0RfQ1VSUkVOVF9DRkc0KTsKKworCS8qIElm IHdlJ3ZlIG1hZGUgcHJvZ3Jlc3MsIHNraXAgcmVzZXQgYW5kIGxldCB0aGUgdGltZXIgZ2V0CisJ ICogcmVhcm1lZC4KKwkgKi8KKwlpZiAoam9iLT50aW1lZG91dF9iYXRjaGVzICE9IGJhdGNoZXMp IHsKKwkJam9iLT50aW1lZG91dF9iYXRjaGVzID0gYmF0Y2hlczsKKwkJcmV0dXJuOworCX0KKwor CXYzZF9ncHVfcmVzZXRfZm9yX3RpbWVvdXQodjNkLCBzY2hlZF9qb2IpOworfQorCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9zY2hlZF9iYWNrZW5kX29wcyB2M2RfYmluX3NjaGVkX29wcyA9IHsK IAkuZGVwZW5kZW5jeSA9IHYzZF9qb2JfZGVwZW5kZW5jeSwKIAkucnVuX2pvYiA9IHYzZF9iaW5f am9iX3J1biwKQEAgLTMzNywxMCArNDAzLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Nj aGVkX2JhY2tlbmRfb3BzIHYzZF9yZW5kZXJfc2NoZWRfb3BzID0gewogc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgdjNkX3RmdV9zY2hlZF9vcHMgPSB7CiAJLmRlcGVu ZGVuY3kgPSB2M2Rfam9iX2RlcGVuZGVuY3ksCiAJLnJ1bl9qb2IgPSB2M2RfdGZ1X2pvYl9ydW4s Ci0JLnRpbWVkb3V0X2pvYiA9IHYzZF90ZnVfam9iX3RpbWVkb3V0LAorCS50aW1lZG91dF9qb2Ig PSB2M2RfZ2VuZXJpY19qb2JfdGltZWRvdXQsCiAJLmZyZWVfam9iID0gdjNkX2pvYl9mcmVlLAog fTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgdjNkX2NzZF9z Y2hlZF9vcHMgPSB7CisJLmRlcGVuZGVuY3kgPSB2M2Rfam9iX2RlcGVuZGVuY3ksCisJLnJ1bl9q b2IgPSB2M2RfY3NkX2pvYl9ydW4sCisJLnRpbWVkb3V0X2pvYiA9IHYzZF9jc2Rfam9iX3RpbWVk b3V0LAorCS5mcmVlX2pvYiA9IHYzZF9qb2JfZnJlZQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgdjNkX2NhY2hlX2NsZWFuX3NjaGVkX29wcyA9IHsKKwku ZGVwZW5kZW5jeSA9IHYzZF9qb2JfZGVwZW5kZW5jeSwKKwkucnVuX2pvYiA9IHYzZF9jYWNoZV9j bGVhbl9qb2JfcnVuLAorCS50aW1lZG91dF9qb2IgPSB2M2RfZ2VuZXJpY19qb2JfdGltZWRvdXQs CisJLmZyZWVfam9iID0gdjNkX2pvYl9mcmVlCit9OworCiBpbnQKIHYzZF9zY2hlZF9pbml0KHN0 cnVjdCB2M2RfZGV2ICp2M2QpCiB7CkBAIC0zNjcsNyArNDQ3LDcgQEAgdjNkX3NjaGVkX2luaXQo c3RydWN0IHYzZF9kZXYgKnYzZCkKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIodjNkLT5kZXYsICJG YWlsZWQgdG8gY3JlYXRlIHJlbmRlciBzY2hlZHVsZXI6ICVkLiIsCiAJCQlyZXQpOwotCQlkcm1f c2NoZWRfZmluaSgmdjNkLT5xdWV1ZVtWM0RfQklOXS5zY2hlZCk7CisJCXYzZF9zY2hlZF9maW5p KHYzZCk7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC0zNzksMTEgKzQ1OSwzNiBAQCB2M2Rfc2No ZWRfaW5pdChzdHJ1Y3QgdjNkX2RldiAqdjNkKQogCWlmIChyZXQpIHsKIAkJZGV2X2Vycih2M2Qt PmRldiwgIkZhaWxlZCB0byBjcmVhdGUgVEZVIHNjaGVkdWxlcjogJWQuIiwKIAkJCXJldCk7Ci0J CWRybV9zY2hlZF9maW5pKCZ2M2QtPnF1ZXVlW1YzRF9SRU5ERVJdLnNjaGVkKTsKLQkJZHJtX3Nj aGVkX2ZpbmkoJnYzZC0+cXVldWVbVjNEX0JJTl0uc2NoZWQpOworCQl2M2Rfc2NoZWRfZmluaSh2 M2QpOwogCQlyZXR1cm4gcmV0OwogCX0KIAorCWlmICh2M2RfaGFzX2NzZCh2M2QpKSB7CisJCXJl dCA9IGRybV9zY2hlZF9pbml0KCZ2M2QtPnF1ZXVlW1YzRF9DU0RdLnNjaGVkLAorCQkJCSAgICAg JnYzZF9jc2Rfc2NoZWRfb3BzLAorCQkJCSAgICAgaHdfam9ic19saW1pdCwgam9iX2hhbmdfbGlt aXQsCisJCQkJICAgICBtc2Vjc190b19qaWZmaWVzKGhhbmdfbGltaXRfbXMpLAorCQkJCSAgICAg InYzZF9jc2QiKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2Vycih2M2QtPmRldiwgIkZhaWxlZCB0 byBjcmVhdGUgQ1NEIHNjaGVkdWxlcjogJWQuIiwKKwkJCQlyZXQpOworCQkJdjNkX3NjaGVkX2Zp bmkodjNkKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQlyZXQgPSBkcm1fc2NoZWRfaW5pdCgm djNkLT5xdWV1ZVtWM0RfQ0FDSEVfQ0xFQU5dLnNjaGVkLAorCQkJCSAgICAgJnYzZF9jYWNoZV9j bGVhbl9zY2hlZF9vcHMsCisJCQkJICAgICBod19qb2JzX2xpbWl0LCBqb2JfaGFuZ19saW1pdCwK KwkJCQkgICAgIG1zZWNzX3RvX2ppZmZpZXMoaGFuZ19saW1pdF9tcyksCisJCQkJICAgICAidjNk X2NhY2hlX2NsZWFuIik7CisJCWlmIChyZXQpIHsKKwkJCWRldl9lcnIodjNkLT5kZXYsICJGYWls ZWQgdG8gY3JlYXRlIENBQ0hFX0NMRUFOIHNjaGVkdWxlcjogJWQuIiwKKwkJCQlyZXQpOworCQkJ djNkX3NjaGVkX2ZpbmkodjNkKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKIAlyZXR1cm4g MDsKIH0KIApAQCAtMzkyLDYgKzQ5Nyw4IEBAIHYzZF9zY2hlZF9maW5pKHN0cnVjdCB2M2RfZGV2 ICp2M2QpCiB7CiAJZW51bSB2M2RfcXVldWUgcTsKIAotCWZvciAocSA9IDA7IHEgPCBWM0RfTUFY X1FVRVVFUzsgcSsrKQotCQlkcm1fc2NoZWRfZmluaSgmdjNkLT5xdWV1ZVtxXS5zY2hlZCk7CisJ Zm9yIChxID0gMDsgcSA8IFYzRF9NQVhfUVVFVUVTOyBxKyspIHsKKwkJaWYgKHYzZC0+cXVldWVb cV0uc2NoZWQucmVhZHkpCisJCQlkcm1fc2NoZWRfZmluaSgmdjNkLT5xdWV1ZVtxXS5zY2hlZCk7 CisJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfdHJhY2UuaCBiL2Ry aXZlcnMvZ3B1L2RybS92M2QvdjNkX3RyYWNlLmgKaW5kZXggZWRkOTg0YWZhMzNmLi43YWE4ZGMz NTZlNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3RyYWNlLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfdHJhY2UuaApAQCAtMTI0LDYgKzEyNCwyNiBAQCBUUkFD RV9FVkVOVCh2M2RfdGZ1X2lycSwKIAkJICAgICAgX19lbnRyeS0+c2Vxbm8pCiApOwogCitUUkFD RV9FVkVOVCh2M2RfY3NkX2lycSwKKwkgICAgVFBfUFJPVE8oc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJICAgICB1aW50NjRfdCBzZXFubyksCisJICAgIFRQX0FSR1MoZGV2LCBzZXFubyksCisK KwkgICAgVFBfU1RSVUNUX19lbnRyeSgKKwkJCSAgICAgX19maWVsZCh1MzIsIGRldikKKwkJCSAg ICAgX19maWVsZCh1NjQsIHNlcW5vKQorCQkJICAgICApLAorCisJICAgIFRQX2Zhc3RfYXNzaWdu KAorCQkJICAgX19lbnRyeS0+ZGV2ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsKKwkJCSAgIF9fZW50 cnktPnNlcW5vID0gc2Vxbm87CisJCQkgICApLAorCisJICAgIFRQX3ByaW50aygiZGV2PSV1LCBz ZXFubz0lbGx1IiwKKwkJICAgICAgX19lbnRyeS0+ZGV2LAorCQkgICAgICBfX2VudHJ5LT5zZXFu bykKKyk7CisKIFRSQUNFX0VWRU5UKHYzZF9zdWJtaXRfdGZ1X2lvY3RsLAogCSAgICBUUF9QUk9U TyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaWlhKSwKIAkgICAgVFBfQVJHUyhkZXYsIGlp YSksCkBAIC0xNjMsNiArMTgzLDgwIEBAIFRSQUNFX0VWRU5UKHYzZF9zdWJtaXRfdGZ1LAogCQkg ICAgICBfX2VudHJ5LT5zZXFubykKICk7CiAKK1RSQUNFX0VWRU5UKHYzZF9zdWJtaXRfY3NkX2lv Y3RsLAorCSAgICBUUF9QUk9UTyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgY2ZnNSwgdTMy IGNmZzYpLAorCSAgICBUUF9BUkdTKGRldiwgY2ZnNSwgY2ZnNiksCisKKwkgICAgVFBfU1RSVUNU X19lbnRyeSgKKwkJCSAgICAgX19maWVsZCh1MzIsIGRldikKKwkJCSAgICAgX19maWVsZCh1MzIs IGNmZzUpCisJCQkgICAgIF9fZmllbGQodTMyLCBjZmc2KQorCQkJICAgICApLAorCisJICAgIFRQ X2Zhc3RfYXNzaWduKAorCQkJICAgX19lbnRyeS0+ZGV2ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsK KwkJCSAgIF9fZW50cnktPmNmZzUgPSBjZmc1OworCQkJICAgX19lbnRyeS0+Y2ZnNiA9IGNmZzY7 CisJCQkgICApLAorCisJICAgIFRQX3ByaW50aygiZGV2PSV1LCBDRkc1IDB4JTA4eCwgQ0ZHNiAw eCUwOHgiLAorCQkgICAgICBfX2VudHJ5LT5kZXYsCisJCSAgICAgIF9fZW50cnktPmNmZzUsCisJ CSAgICAgIF9fZW50cnktPmNmZzYpCispOworCitUUkFDRV9FVkVOVCh2M2Rfc3VibWl0X2NzZCwK KwkgICAgVFBfUFJPVE8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJICAgICB1aW50NjRfdCBz ZXFubyksCisJICAgIFRQX0FSR1MoZGV2LCBzZXFubyksCisKKwkgICAgVFBfU1RSVUNUX19lbnRy eSgKKwkJCSAgICAgX19maWVsZCh1MzIsIGRldikKKwkJCSAgICAgX19maWVsZCh1NjQsIHNlcW5v KQorCQkJICAgICApLAorCisJICAgIFRQX2Zhc3RfYXNzaWduKAorCQkJICAgX19lbnRyeS0+ZGV2 ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsKKwkJCSAgIF9fZW50cnktPnNlcW5vID0gc2Vxbm87CisJ CQkgICApLAorCisJICAgIFRQX3ByaW50aygiZGV2PSV1LCBzZXFubz0lbGx1IiwKKwkJICAgICAg X19lbnRyeS0+ZGV2LAorCQkgICAgICBfX2VudHJ5LT5zZXFubykKKyk7CisKK1RSQUNFX0VWRU5U KHYzZF9jYWNoZV9jbGVhbl9iZWdpbiwKKwkgICAgVFBfUFJPVE8oc3RydWN0IGRybV9kZXZpY2Ug KmRldiksCisJICAgIFRQX0FSR1MoZGV2KSwKKworCSAgICBUUF9TVFJVQ1RfX2VudHJ5KAorCQkJ ICAgICBfX2ZpZWxkKHUzMiwgZGV2KQorCQkJICAgICApLAorCisJICAgIFRQX2Zhc3RfYXNzaWdu KAorCQkJICAgX19lbnRyeS0+ZGV2ID0gZGV2LT5wcmltYXJ5LT5pbmRleDsKKwkJCSAgICksCisK KwkgICAgVFBfcHJpbnRrKCJkZXY9JXUiLAorCQkgICAgICBfX2VudHJ5LT5kZXYpCispOworCitU UkFDRV9FVkVOVCh2M2RfY2FjaGVfY2xlYW5fZW5kLAorCSAgICBUUF9QUk9UTyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KSwKKwkgICAgVFBfQVJHUyhkZXYpLAorCisJICAgIFRQX1NUUlVDVF9fZW50 cnkoCisJCQkgICAgIF9fZmllbGQodTMyLCBkZXYpCisJCQkgICAgICksCisKKwkgICAgVFBfZmFz dF9hc3NpZ24oCisJCQkgICBfX2VudHJ5LT5kZXYgPSBkZXYtPnByaW1hcnktPmluZGV4OworCQkJ ICAgKSwKKworCSAgICBUUF9wcmludGsoImRldj0ldSIsCisJCSAgICAgIF9fZW50cnktPmRldikK Kyk7CisKIFRSQUNFX0VWRU5UKHYzZF9yZXNldF9iZWdpbiwKIAkgICAgVFBfUFJPVE8oc3RydWN0 IGRybV9kZXZpY2UgKmRldiksCiAJICAgIFRQX0FSR1MoZGV2KSwKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vdjNkX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS92M2RfZHJtLmgKaW5kZXgg ZWE3MDY2OWQyMTM4Li41OGZiZTQ4YzkxZTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0v djNkX2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vdjNkX2RybS5oCkBAIC0zNyw2ICszNyw3 IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fVjNEX0dFVF9QQVJBTSAgICAgICAgICAgICAg ICAgICAgICAgICAweDA0CiAjZGVmaW5lIERSTV9WM0RfR0VUX0JPX09GRlNFVCAgICAgICAgICAg ICAgICAgICAgIDB4MDUKICNkZWZpbmUgRFJNX1YzRF9TVUJNSVRfVEZVICAgICAgICAgICAgICAg ICAgICAgICAgMHgwNgorI2RlZmluZSBEUk1fVjNEX1NVQk1JVF9DU0QgICAgICAgICAgICAgICAg ICAgICAgICAweDA3CiAKICNkZWZpbmUgRFJNX0lPQ1RMX1YzRF9TVUJNSVRfQ0wgICAgICAgICAg IERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVjNEX1NVQk1JVF9DTCwgc3RydWN0IGRy bV92M2Rfc3VibWl0X2NsKQogI2RlZmluZSBEUk1fSU9DVExfVjNEX1dBSVRfQk8gICAgICAgICAg ICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WM0RfV0FJVF9CTywgc3RydWN0IGRy bV92M2Rfd2FpdF9ibykKQEAgLTQ1LDYgKzQ2LDcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERS TV9JT0NUTF9WM0RfR0VUX1BBUkFNICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1YzRF9HRVRfUEFSQU0sIHN0cnVjdCBkcm1fdjNkX2dldF9wYXJhbSkKICNkZWZpbmUg RFJNX0lPQ1RMX1YzRF9HRVRfQk9fT0ZGU0VUICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fVjNEX0dFVF9CT19PRkZTRVQsIHN0cnVjdCBkcm1fdjNkX2dldF9ib19vZmZzZXQp CiAjZGVmaW5lIERSTV9JT0NUTF9WM0RfU1VCTUlUX1RGVSAgICAgICAgICBEUk1fSU9XKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fVjNEX1NVQk1JVF9URlUsIHN0cnVjdCBkcm1fdjNkX3N1Ym1pdF90 ZnUpCisjZGVmaW5lIERSTV9JT0NUTF9WM0RfU1VCTUlUX0NTRCAgICAgICAgICBEUk1fSU9XKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fVjNEX1NVQk1JVF9DU0QsIHN0cnVjdCBkcm1fdjNkX3N1Ym1p dF9jc2QpCiAKIC8qKgogICogc3RydWN0IGRybV92M2Rfc3VibWl0X2NsIC0gaW9jdGwgYXJndW1l bnQgZm9yIHN1Ym1pdHRpbmcgY29tbWFuZHMgdG8gdGhlIDNECkBAIC0xOTAsNiArMTkyLDcgQEAg ZW51bSBkcm1fdjNkX3BhcmFtIHsKIAlEUk1fVjNEX1BBUkFNX1YzRF9DT1JFMF9JREVOVDEsCiAJ RFJNX1YzRF9QQVJBTV9WM0RfQ09SRTBfSURFTlQyLAogCURSTV9WM0RfUEFSQU1fU1VQUE9SVFNf VEZVLAorCURSTV9WM0RfUEFSQU1fU1VQUE9SVFNfQ1NELAogfTsKIAogc3RydWN0IGRybV92M2Rf Z2V0X3BhcmFtIHsKQEAgLTIzMCw2ICsyMzMsMzEgQEAgc3RydWN0IGRybV92M2Rfc3VibWl0X3Rm dSB7CiAJX191MzIgb3V0X3N5bmM7CiB9OwogCisvKiBTdWJtaXRzIGEgY29tcHV0ZSBzaGFkZXIg Zm9yIGRpc3BhdGNoLiAgVGhpcyBqb2Igd2lsbCBibG9jayBvbiBhbnkKKyAqIHByZXZpb3VzIGNv bXB1dGUgc2hhZGVycyBzdWJtaXR0ZWQgb24gdGhpcyBmZCwgYW5kIGFueSBvdGhlcgorICogc3lu Y2hyb25pemF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHdpdGggaW5fc3luYy9vdXRfc3luYy4KKyAq Lworc3RydWN0IGRybV92M2Rfc3VibWl0X2NzZCB7CisJX191MzIgY2ZnWzddOworCV9fdTMyIGNv ZWZbNF07CisKKwkvKiBQb2ludGVyIHRvIGEgdTMyIGFycmF5IG9mIHRoZSBCT3MgdGhhdCBhcmUg cmVmZXJlbmNlZCBieSB0aGUgam9iLgorCSAqLworCV9fdTY0IGJvX2hhbmRsZXM7CisKKwkvKiBO dW1iZXIgb2YgQk8gaGFuZGxlcyBwYXNzZWQgaW4gKHNpemUgaXMgdGhhdCB0aW1lcyA0KS4gKi8K KwlfX3UzMiBib19oYW5kbGVfY291bnQ7CisKKwkvKiBzeW5jIG9iamVjdCB0byBibG9jayBvbiBi ZWZvcmUgcnVubmluZyB0aGUgQ1NEIGpvYi4gIEVhY2gKKwkgKiBDU0Qgam9iIHdpbGwgZXhlY3V0 ZSBpbiB0aGUgb3JkZXIgc3VibWl0dGVkIHRvIGl0cyBGRC4KKwkgKiBTeW5jaHJvbml6YXRpb24g YWdhaW5zdCByZW5kZXJpbmcvVEZVIGpvYnMgb3IgQ1NEIGZyb20KKwkgKiBvdGhlciBmZHMgcmVx dWlyZXMgdXNpbmcgc3luYyBvYmplY3RzLgorCSAqLworCV9fdTMyIGluX3N5bmM7CisJLyogU3lu YyBvYmplY3QgdG8gc2lnbmFsIHdoZW4gdGhlIENTRCBqb2IgaXMgZG9uZS4gKi8KKwlfX3UzMiBv dXRfc3luYzsKK307CisKICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogfQogI2VuZGlmCi0tIAoy LjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==