From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: [PATCH 3/4] drm/i915/guc: kill doorbell code and selftests Date: Wed, 6 Nov 2019 14:25:49 -0800 Message-ID: <20191106222550.20752-4-daniele.ceraolospurio@intel.com> References: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 745916EE3B for ; Wed, 6 Nov 2019 22:26:19 +0000 (UTC) In-Reply-To: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSB3b3JrcXVldWUsIHRoZSB1cGNvbWluZyByZXdvcmtl ZCBHdUMKc3VibWlzc2lvbiBmbG93IHdpbGwgb2ZmZXIgdGhlIGhvc3QgZHJpdmVyIGluZGlwZW5k ZW50IGNvbnRyb2wgb3Zlcgp0aGUgZXhlY3V0aW9uIHN0YXR1cyBvZiBlYWNoIGNvbnRleHQgc3Vi bWl0dGVkIHRvIEd1Qy4gQXMgcGFydCBvZiB0aGlzLAp0aGUgZG9vcmJlbGwgdXNhZ2UgbW9kZWwg aGFzIGJlZW4gcmV3b3JrZWQsIHdpdGggZWFjaCBkb29yYmVsbCBiZWluZwpwYWlyZWQgdG8gYSBz aW5nbGUgbHJjIGFuZCBhIGRvb3JiZWxsIHJpbmcgcmVwcmVzZW50aW5nIG5ldyB3b3JrCmF2YWls YWJsZSBmb3IgdGhhdCBzcGVjaWZpYyBjb250ZXh0LiBUaGlzIG1lY2hhbmlzbSwgaG93ZXZlciwg bGltaXRzCnRoZSBudW1iZXIgb2YgY29udGV4dHMgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRo IEd1QyB0byB0aGUgbnVtYmVyIG9mCmRvb3JiZWxscywgd2hpY2ggaXMgYW4gdW5kZXNpcmVkIGxp bWl0YXRpb24uIEx1Y2tpbHksIEd1QyB3aWxsIGFsc28KcHJvdmlkZSBhIEgyRyB0aGF0IHdpbGwg YWxsb3cgdGhlIGhvc3QgdG8gbm90aWZ5IHRoZSBHdUMgb2Ygd29yawphdmFpbGFibGUgZm9yIGEg c3BlY2lmaWVkIGxyYywgc28gd2UgY2FuIHVzZSB0aGF0IG1lY2hhbmlzbSBpbnN0ZWFkIG9mCnJl bHlpbmcgb24gdGhlIGRvb3JiZWxscy4gV2UgY2FuIHRoZXJlZm9yZSBkcm9wIHRoZSBkb29yYmVs bCBjb2RlIHdlCmN1cnJlbnRseSBoYXZlLCBhbHNvIGdpdmVuIHRoZSBmYWN0IHRoYXQgaW4gdGhl IHVubGlrZWx5IGNhc2Ugd2UnZCB3YW50CnRvIHN3aXRjaCBiYWNrIHRvIHVzaW5nIGRvb3JiZWxs cyB3ZSdkIGhhdmUgdG8gaGVhdmlseSByZXdvcmsgaXQuClRoZSB3b3JrcXVldWUgd2lsbCBzdGls bCBoYXZlIGEgdXNlIGluIHRoZSBuZXcgaW50ZXJmYWNlIHRvIHBhc3Mgc3BlY2lhbApjb21tYW5k cywgc28gdGhhdCBjb2RlIGhhcyBiZWVuIHJldGFpbmVkIGZvciBub3cuCgpXaXRoIHRoZSBkb29y YmVsbHMgZ29uZSBhbmQgdGhlIEd1QyBjbGllbnQgYmVjb21pbmcgZXZlbiBzaW1wbGVyLCB0aGUK ZXhpc3RpbmcgR3VDIHNlbGZ0ZXN0cyBkb24ndCBnaXZlIHVzIGFueSBtZWFuaW5nZnVsIGNvdmVy YWdlIHNvIHdlIGNhbgpyZW1vdmUgdGhlbSBhcyB3ZWxsLiBTb21lIHNlbGZ0ZXN0cyBtaWdodCBj b21lIHdpdGggdGhlIG5ldyBjb2RlLCBidXQKdGhleSB3aWxsIGxvb2sgZGlmZmVyZW50IGZyb20g d2hhdCB3ZSBoYXZlIG5vdyBzbyBpZiBkb2Vzbid0IHNlZW0gd29ydGgKaXQgdG8ga2VlcCB0aGUg ZmlsZSBhcm91bmQgaW4gdGhlIG1lYW50aW1lLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsZSBDZXJh b2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBX YWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogSm9obiBIYXJyaXNvbiA8 Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KQ2M6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5o ICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3 aWYuaCAgIHwgICAyICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNz aW9uLmMgfCAzNzMgKystLS0tLS0tLS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19zdWJtaXNzaW9uLmggfCAgIDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX3VjLmMgICAgICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv c2VsZnRlc3RfZ3VjLmMgICAgIHwgMjk5IC0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTEgKy0KIC4uLi9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICAgMSAtCiA4IGZpbGVzIGNoYW5nZWQsIDQy IGluc2VydGlvbnMoKyksIDY2OCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWMuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmgKaW5kZXggYmY0MzhmODIwYzM1Li5iMmQxNzY2ZTY4OWEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCkBAIC0yMCw4ICsyMCw4IEBAIHN0cnVj dCBfX2d1Y19hZHNfYmxvYjsKIAogLyoKICAqIFRvcCBsZXZlbCBzdHJ1Y3R1cmUgb2YgR3VDLiBJ dCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcgYW5kIG1hbmFnZXMgY2xpZW50Ci0gKiBwb29sIGFu ZCBkb29yYmVsbHMuIGludGVsX2d1YyBvd25zIGEgaW50ZWxfZ3VjX2NsaWVudCB0byByZXBsYWNl IHRoZSBsZWdhY3kKLSAqIEV4ZWNMaXN0IHN1Ym1pc3Npb24uCisgKiBwb29sLiBpbnRlbF9ndWMg b3ducyBhIGludGVsX2d1Y19jbGllbnQgdG8gcmVwbGFjZSB0aGUgbGVnYWN5IEV4ZWNMaXN0Cisg KiBzdWJtaXNzaW9uLgogICovCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfdWNf ZncgZnc7CkBAIC01MCwxMCArNTAsNiBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAogCXN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpleGVjYnVmX2NsaWVudDsKIAotCURFQ0xBUkVfQklUTUFQKGRvb3Ji ZWxsX2JpdG1hcCwgR1VDX05VTV9ET09SQkVMTFMpOwotCS8qIEN5Y2xpYyBjb3VudGVyIG1vZCBw YWdlc2l6ZQkqLwotCXUzMiBkYl9jYWNoZWxpbmU7Ci0KIAkvKiBDb250cm9sIHBhcmFtcyBmb3Ig ZncgaW5pdGlhbGl6YXRpb24gKi8KIAl1MzIgcGFyYW1zW0dVQ19DVExfTUFYX0RXT1JEU107CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCmluZGV4IGEyNmE4 NWQ1MDIwOS4uMWU4ZTRhZjdkOWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfZndpZi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19md2lmLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2RlZmluZSBHVUNfRE9PUkJFTExf SU5WQUxJRAkJMjU2CiAKLSNkZWZpbmUgR1VDX0RCX1NJWkUJCQkoUEFHRV9TSVpFKQorI2RlZmlu ZSBHVUNfUERfU0laRQkJCShQQUdFX1NJWkUpCiAjZGVmaW5lIEdVQ19XUV9TSVpFCQkJKFBBR0Vf U0laRSAqIDIpCiAKIC8qIFdvcmsgcXVldWUgaXRlbSBoZWFkZXIgZGVmaW5pdGlvbnMgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCmlu ZGV4IDZhYzIxM2RkYmZhMy4uMDA4OGMzNDE3NjQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKQEAgLTMwLDggKzMwLDggQEAKICAq IEd1QyBjbGllbnQ6CiAgKiBBIGludGVsX2d1Y19jbGllbnQgcmVmZXJzIHRvIGEgc3VibWlzc2lv biBwYXRoIHRocm91Z2ggR3VDLiBDdXJyZW50bHksIHRoZXJlCiAgKiBpcyBvbmx5IG9uZSBjbGll bnQsIHdoaWNoIGlzIGNoYXJnZWQgd2l0aCBhbGwgc3VibWlzc2lvbnMgdG8gdGhlIEd1Qy4gVGhp cwotICogc3RydWN0IGlzIHRoZSBvd25lciBvZiBhIGRvb3JiZWxsLCBhIHByb2Nlc3MgZGVzY3Jp cHRvciBhbmQgYSB3b3JrcXVldWUgKGFsbAotICogb2YgdGhlbSBpbnNpZGUgYSBzaW5nbGUgZ2Vt IG9iamVjdCB0aGF0IGNvbnRhaW5zIGFsbCByZXF1aXJlZCBwYWdlcyBmb3IgdGhlc2UKKyAqIHN0 cnVjdCBpcyB0aGUgb3duZXIgb2YgYSBwcm9jZXNzIGRlc2NyaXB0b3IgYW5kIGEgd29ya3F1ZXVl IChib3RoIG9mIHRoZW0KKyAqIGluc2lkZSBhIHNpbmdsZSBnZW0gb2JqZWN0IHRoYXQgY29udGFp bnMgYWxsIHJlcXVpcmVkIHBhZ2VzIGZvciB0aGVzZQogICogZWxlbWVudHMpLgogICoKICAqIEd1 QyBzdGFnZSBkZXNjcmlwdG9yOgpAQCAtMzksMTMgKzM5LDEzIEBACiAgKiBkZXNjcmlwdG9ycywg YW5kIHNoYXJlcyB0aGVtIHdpdGggdGhlIEd1Qy4KICAqIEN1cnJlbnRseSwgdGhlcmUgZXhpc3Rz IGEgMToxIG1hcHBpbmcgYmV0d2VlbiBhIGludGVsX2d1Y19jbGllbnQgYW5kIGEKICAqIGd1Y19z dGFnZV9kZXNjICh2aWEgdGhlIGNsaWVudCdzIHN0YWdlX2lkKSwgc28gZWZmZWN0aXZlbHkgb25s eSBvbmUKLSAqIGdldHMgdXNlZC4gVGhpcyBzdGFnZSBkZXNjcmlwdG9yIGxldHMgdGhlIEd1QyBr bm93IGFib3V0IHRoZSBkb29yYmVsbCwKLSAqIHdvcmtxdWV1ZSBhbmQgcHJvY2VzcyBkZXNjcmlw dG9yLiBUaGVvcmV0aWNhbGx5LCBpdCBhbHNvIGxldHMgdGhlIEd1QwotICoga25vdyBhYm91dCBv dXIgSFcgY29udGV4dHMgKGNvbnRleHQgSUQsIGV0Yy4uLiksIGJ1dCB3ZSBhY3R1YWxseQotICog ZW1wbG95IGEga2luZCBvZiBzdWJtaXNzaW9uIHdoZXJlIHRoZSBHdUMgdXNlcyB0aGUgTFJDQSBz ZW50IHZpYSB0aGUgd29yawotICogaXRlbSBpbnN0ZWFkICh0aGUgc2luZ2xlIGd1Y19zdGFnZV9k ZXNjIGFzc29jaWF0ZWQgdG8gZXhlY2J1ZiBjbGllbnQKLSAqIGNvbnRhaW5zIGluZm9ybWF0aW9u IGFib3V0IHRoZSBkZWZhdWx0IGtlcm5lbCBjb250ZXh0IG9ubHksIGJ1dCB0aGlzIGlzCi0gKiBl c3NlbnRpYWxseSB1bnVzZWQpLiBUaGlzIGlzIGNhbGxlZCBhICJwcm94eSIgc3VibWlzc2lvbi4K KyAqIGdldHMgdXNlZC4gVGhpcyBzdGFnZSBkZXNjcmlwdG9yIGxldHMgdGhlIEd1QyBrbm93IGFi b3V0IHRoZSB3b3JrcXVldWUgYW5kCisgKiBwcm9jZXNzIGRlc2NyaXB0b3IuIFRoZW9yZXRpY2Fs bHksIGl0IGFsc28gbGV0cyB0aGUgR3VDIGtub3cgYWJvdXQgb3VyIEhXCisgKiBjb250ZXh0cyAo Y29udGV4dCBJRCwgZXRjLi4uKSwgYnV0IHdlIGFjdHVhbGx5IGVtcGxveSBhIGtpbmQgb2Ygc3Vi bWlzc2lvbgorICogd2hlcmUgdGhlIEd1QyB1c2VzIHRoZSBMUkNBIHNlbnQgdmlhIHRoZSB3b3Jr IGl0ZW0gaW5zdGVhZCAodGhlIHNpbmdsZQorICogZ3VjX3N0YWdlX2Rlc2MgYXNzb2NpYXRlZCB0 byBleGVjYnVmIGNsaWVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIGRlZmF1 bHQga2VybmVsIGNvbnRleHQgb25seSwgYnV0IHRoaXMgaXMgZXNzZW50aWFsbHkgdW51c2VkKS4g VGhpcyBpcyBjYWxsZWQKKyAqIGEgInByb3h5IiBzdWJtaXNzaW9uLgogICoKICAqIFRoZSBTY3Jh dGNoIHJlZ2lzdGVyczoKICAqIFRoZXJlIGFyZSAxNiBNTUlPLWJhc2VkIHJlZ2lzdGVycyBzdGFy dCBmcm9tIDB4QzE4MC4gVGhlIGtlcm5lbCBkcml2ZXIgd3JpdGVzCkBAIC01NiwxMCArNTYsNiBA QAogICogdGhlbiBwcm9jZWVkcy4KICAqIFNlZSBpbnRlbF9ndWNfc2VuZCgpCiAgKgotICogRG9v cmJlbGxzOgotICogRG9vcmJlbGxzIGFyZSBpbnRlcnJ1cHRzIHRvIHVLZXJuZWwuIEEgZG9vcmJl bGwgaXMgYSBzaW5nbGUgY2FjaGUgbGluZSAoUVcpCi0gKiBtYXBwZWQgaW50byBwcm9jZXNzIHNw YWNlLgotICoKICAqIFdvcmsgSXRlbXM6CiAgKiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiB3 b3JrIGl0ZW1zIHRoYXQgdGhlIGhvc3QgbWF5IHBsYWNlIGludG8gYQogICogd29ya3F1ZXVlLCBl YWNoIHdpdGggaXRzIG93biByZXF1aXJlbWVudHMgYW5kIGxpbWl0YXRpb25zLiBDdXJyZW50bHkg b25seQpAQCAtODEsNzggKzc3LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3Jp dHkoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIAkJY2xpZW50LT5wcmlvcml0eSA9 PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0hJR0gpOwogfQogCi1zdGF0aWMgaW50IHJlc2VydmVfZG9v cmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQl1bnNpZ25lZCBsb25n IG9mZnNldDsKLQl1bnNpZ25lZCBsb25nIGVuZDsKLQl1MTYgaWQ7Ci0KLQlHRU1fQlVHX09OKGNs aWVudC0+ZG9vcmJlbGxfaWQgIT0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwotCi0JLyoKLQkgKiBU aGUgYml0bWFwIHRyYWNrcyB3aGljaCBkb29yYmVsbCByZWdpc3RlcnMgYXJlIGN1cnJlbnRseSBp biB1c2UuCi0JICogSXQgaXMgc3BsaXQgaW50byB0d28gaGFsdmVzOyB0aGUgZmlyc3QgaGFsZiBp cyB1c2VkIGZvciBub3JtYWwKLQkgKiBwcmlvcml0eSBjb250ZXh0cywgdGhlIHNlY29uZCBoYWxm IGZvciBoaWdoLXByaW9yaXR5IG9uZXMuCi0JICovCi0Jb2Zmc2V0ID0gMDsKLQllbmQgPSBHVUNf TlVNX0RPT1JCRUxMUyAvIDI7Ci0JaWYgKGlzX2hpZ2hfcHJpb3JpdHkoY2xpZW50KSkgewotCQlv ZmZzZXQgPSBlbmQ7Ci0JCWVuZCArPSBvZmZzZXQ7Ci0JfQotCi0JaWQgPSBmaW5kX25leHRfemVy b19iaXQoY2xpZW50LT5ndWMtPmRvb3JiZWxsX2JpdG1hcCwgZW5kLCBvZmZzZXQpOwotCWlmIChp ZCA9PSBlbmQpCi0JCXJldHVybiAtRU5PU1BDOwotCi0JX19zZXRfYml0KGlkLCBjbGllbnQtPmd1 Yy0+ZG9vcmJlbGxfYml0bWFwKTsKLQljbGllbnQtPmRvb3JiZWxsX2lkID0gaWQ7Ci0JRFJNX0RF QlVHX0RSSVZFUigiY2xpZW50ICV1IChoaWdoIHByaW89JXMpIHJlc2VydmVkIGRvb3JiZWxsOiAl ZFxuIiwKLQkJCSBjbGllbnQtPnN0YWdlX2lkLCB5ZXNubyhpc19oaWdoX3ByaW9yaXR5KGNsaWVu dCkpLAotCQkJIGlkKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGJvb2wgaGFzX2Rvb3JiZWxs KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCi17Ci0JaWYgKGNsaWVudC0+ZG9vcmJl bGxfaWQgPT0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVy biB0ZXN0X2JpdChjbGllbnQtPmRvb3JiZWxsX2lkLCBjbGllbnQtPmd1Yy0+ZG9vcmJlbGxfYml0 bWFwKTsKLX0KLQotc3RhdGljIHZvaWQgdW5yZXNlcnZlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9n dWNfY2xpZW50ICpjbGllbnQpCi17Ci0JR0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkp OwotCi0JX19jbGVhcl9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5ndWMtPmRvb3Ji ZWxsX2JpdG1hcCk7Ci0JY2xpZW50LT5kb29yYmVsbF9pZCA9IEdVQ19ET09SQkVMTF9JTlZBTElE OwotfQotCi0vKgotICogVGVsbCB0aGUgR3VDIHRvIGFsbG9jYXRlIG9yIGRlYWxsb2NhdGUgYSBz cGVjaWZpYyBkb29yYmVsbAotICovCi0KLXN0YXRpYyBpbnQgX19ndWNfYWxsb2NhdGVfZG9vcmJl bGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc3RhZ2VfaWQpCi17Ci0JdTMyIGFjdGlvbltd ID0gewotCQlJTlRFTF9HVUNfQUNUSU9OX0FMTE9DQVRFX0RPT1JCRUxMLAotCQlzdGFnZV9pZAot CX07Ci0KLQlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0 aW9uKSk7Ci19Ci0KLXN0YXRpYyBpbnQgX19ndWNfZGVhbGxvY2F0ZV9kb29yYmVsbChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHUzMiBzdGFnZV9pZCkKLXsKLQl1MzIgYWN0aW9uW10gPSB7Ci0JCUlO VEVMX0dVQ19BQ1RJT05fREVBTExPQ0FURV9ET09SQkVMTCwKLQkJc3RhZ2VfaWQKLQl9OwotCi0J cmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwot fQotCiBzdGF0aWMgc3RydWN0IGd1Y19zdGFnZV9kZXNjICpfX2dldF9zdGFnZV9kZXNjKHN0cnVj dCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CiAJc3RydWN0IGd1Y19zdGFnZV9kZXNjICpi YXNlID0gY2xpZW50LT5ndWMtPnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKQEAgLTE2MCwxMTggKzg0 LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MgKl9fZ2V0X3N0YWdlX2Rlc2Moc3Ry dWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gJmJhc2VbY2xpZW50LT5zdGFn ZV9pZF07CiB9CiAKLS8qCi0gKiBJbml0aWFsaXNlLCB1cGRhdGUsIG9yIGNsZWFyIGRvb3JiZWxs IGRhdGEgc2hhcmVkIHdpdGggdGhlIEd1QwotICoKLSAqIFRoZXNlIGZ1bmN0aW9ucyBtb2RpZnkg c2hhcmVkIGRhdGEgYW5kIHNvIG5lZWQgYWNjZXNzIHRvIHRoZSBtYXBwZWQKLSAqIGNsaWVudCBv YmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHBhZ2UgYmVpbmcgdXNlZCBmb3IgdGhlIGRvb3JiZWxs Ci0gKi8KLQotc3RhdGljIHZvaWQgX191cGRhdGVfZG9vcmJlbGxfZGVzYyhzdHJ1Y3QgaW50ZWxf Z3VjX2NsaWVudCAqY2xpZW50LCB1MTYgbmV3X2lkKQotewotCXN0cnVjdCBndWNfc3RhZ2VfZGVz YyAqZGVzYzsKLQotCS8qIFVwZGF0ZSB0aGUgR3VDJ3MgaWRlYSBvZiB0aGUgZG9vcmJlbGwgSUQg Ki8KLQlkZXNjID0gX19nZXRfc3RhZ2VfZGVzYyhjbGllbnQpOwotCWRlc2MtPmRiX2lkID0gbmV3 X2lkOwotfQotCi1zdGF0aWMgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpfX2dldF9kb29yYmVs bChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQotewotCXJldHVybiBjbGllbnQtPnZh ZGRyICsgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQ7Ci19Ci0KLXN0YXRpYyBib29sIF9fZG9vcmJl bGxfdmFsaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MTYgZGJfaWQpCi17Ci0Jc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKLQotCUdFTV9CVUdf T04oZGJfaWQgPj0gR1VDX05VTV9ET09SQkVMTFMpOwotCXJldHVybiBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIEdFTjhfRFJCUkVHTChkYl9pZCkpICYgR0VOOF9EUkJfVkFMSUQ7Ci19Ci0KLXN0 YXRpYyB2b2lkIF9faW5pdF9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50 KQotewotCXN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Ci0KLQlkb29yYmVsbCA9 IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Ci0JZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09S QkVMTF9FTkFCTEVEOwotCWRvb3JiZWxsLT5jb29raWUgPSAwOwotfQotCi1zdGF0aWMgdm9pZCBf X2ZpbmlfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1 Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxsOwotCXUxNiBkYl9pZCA9IGNsaWVudC0+ZG9v cmJlbGxfaWQ7Ci0KLQlkb29yYmVsbCA9IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Ci0JZG9vcmJl bGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKLQotCS8qIERvb3JiZWxsIHJl bGVhc2UgZmxvdyByZXF1aXJlcyB0aGF0IHdlIHdhaXQgZm9yIEdFTjhfRFJCX1ZBTElEIGJpdAot CSAqIHRvIGdvIHRvIHplcm8gYWZ0ZXIgdXBkYXRpbmcgZGJfc3RhdHVzIGJlZm9yZSB3ZSBjYWxs IHRoZSBHdUMgdG8KLQkgKiByZWxlYXNlIHRoZSBkb29yYmVsbAotCSAqLwotCWlmICh3YWl0X2Zv cl91cyghX19kb29yYmVsbF92YWxpZChjbGllbnQtPmd1YywgZGJfaWQpLCAxMCkpCi0JCVdBUk5f T05DRSh0cnVlLCAiRG9vcmJlbGwgbmV2ZXIgYmVjYW1lIGludmFsaWQgYWZ0ZXIgZGlzYWJsZVxu Iik7Ci19Ci0KLXN0YXRpYyBpbnQgY3JlYXRlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xp ZW50ICpjbGllbnQpCi17Ci0JaW50IHJldDsKLQotCWlmIChXQVJOX09OKCFoYXNfZG9vcmJlbGwo Y2xpZW50KSkpCi0JCXJldHVybiAtRU5PREVWOyAvKiBpbnRlcm5hbCBzZXR1cCBlcnJvciwgc2hv dWxkIG5ldmVyIGhhcHBlbiAqLwotCi0JX191cGRhdGVfZG9vcmJlbGxfZGVzYyhjbGllbnQsIGNs aWVudC0+ZG9vcmJlbGxfaWQpOwotCV9faW5pdF9kb29yYmVsbChjbGllbnQpOwotCi0JcmV0ID0g X19ndWNfYWxsb2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNsaWVudC0+c3RhZ2VfaWQpOwot CWlmIChyZXQpIHsKLQkJX19maW5pX2Rvb3JiZWxsKGNsaWVudCk7Ci0JCV9fdXBkYXRlX2Rvb3Ji ZWxsX2Rlc2MoY2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Ci0JCURSTV9ERUJVR19EUklW RVIoIkNvdWxkbid0IGNyZWF0ZSBjbGllbnQgJXUgZG9vcmJlbGw6ICVkXG4iLAotCQkJCSBjbGll bnQtPnN0YWdlX2lkLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiAwOwotfQot Ci1zdGF0aWMgaW50IGRlc3Ryb3lfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNs aWVudCkKLXsKLQlpbnQgcmV0OwotCi0JR0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkp OwotCi0JX19maW5pX2Rvb3JiZWxsKGNsaWVudCk7Ci0JcmV0ID0gX19ndWNfZGVhbGxvY2F0ZV9k b29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50LT5zdGFnZV9pZCk7Ci0JaWYgKHJldCkKLQkJRFJN X0VSUk9SKCJDb3VsZG4ndCBkZXN0cm95IGNsaWVudCAldSBkb29yYmVsbDogJWRcbiIsCi0JCQkg IGNsaWVudC0+c3RhZ2VfaWQsIHJldCk7Ci0KLQlfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGNsaWVu dCwgR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHVu c2lnbmVkIGxvbmcgX19zZWxlY3RfY2FjaGVsaW5lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsK LQl1bnNpZ25lZCBsb25nIG9mZnNldDsKLQotCS8qIERvb3JiZWxsIHVzZXMgYSBzaW5nbGUgY2Fj aGUgbGluZSB3aXRoaW4gYSBwYWdlICovCi0Jb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoZ3VjLT5k Yl9jYWNoZWxpbmUpOwotCi0JLyogTW92aW5nIHRvIG5leHQgY2FjaGUgbGluZSB0byByZWR1Y2Ug Y29udGVudGlvbiAqLwotCWd1Yy0+ZGJfY2FjaGVsaW5lICs9IGNhY2hlX2xpbmVfc2l6ZSgpOwot Ci0JRFJNX0RFQlVHX0RSSVZFUigicmVzZXJ2ZWQgY2FjaGVsaW5lIDB4JWx4LCBuZXh0IDB4JXgs IGxpbmVzaXplICV1XG4iLAotCQkJIG9mZnNldCwgZ3VjLT5kYl9jYWNoZWxpbmUsIGNhY2hlX2xp bmVfc2l6ZSgpKTsKLQlyZXR1cm4gb2Zmc2V0OwotfQotCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBn dWNfcHJvY2Vzc19kZXNjICoKIF9fZ2V0X3Byb2Nlc3NfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQogewotCXJldHVybiBjbGllbnQtPnZhZGRyICsgY2xpZW50LT5wcm9jX2Rl c2Nfb2Zmc2V0OworCXJldHVybiBjbGllbnQtPnZhZGRyOwogfQogCiAvKgpAQCAtMzMyLDggKzE0 OCw4IEBAIHN0YXRpYyB2b2lkIGd1Y19zdGFnZV9kZXNjX3Bvb2xfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCiAgKiBJbml0aWFsaXNlL2NsZWFyIHRoZSBzdGFnZSBkZXNjcmlwdG9yIHNo YXJlZCB3aXRoIHRoZSBHdUMgZmlybXdhcmUuCiAgKgogICogVGhpcyBkZXNjcmlwdG9yIHRlbGxz IHRoZSBHdUMgd2hlcmUgKGluIEdHVFQgc3BhY2UpIHRvIGZpbmQgdGhlIGltcG9ydGFudAotICog ZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0aW5nIHRvIHRoaXMgY2xpZW50IChkb29yYmVsbCwgcHJvY2Vz cyBkZXNjcmlwdG9yLAotICogd3JpdGUgcXVldWUsIGV0YykuCisgKiBkYXRhIHN0cnVjdHVyZXMg cmVsYXRpbmcgdG8gdGhpcyBjbGllbnQgKHByb2Nlc3MgZGVzY3JpcHRvciwgd3JpdGUgcXVldWUs CisgKiBldGMpLgogICovCiBzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CkBAIC0zNTAsMTkgKzE2NiwxNCBAQCBzdGF0aWMg dm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp CiAJCWRlc2MtPmF0dHJpYnV0ZSB8PSBHVUNfU1RBR0VfREVTQ19BVFRSX1BSRUVNUFQ7CiAJZGVz Yy0+c3RhZ2VfaWQgPSBjbGllbnQtPnN0YWdlX2lkOwogCWRlc2MtPnByaW9yaXR5ID0gY2xpZW50 LT5wcmlvcml0eTsKLQlkZXNjLT5kYl9pZCA9IGNsaWVudC0+ZG9vcmJlbGxfaWQ7CiAKIAkvKgot CSAqIFRoZSBkb29yYmVsbCwgcHJvY2VzcyBkZXNjcmlwdG9yLCBhbmQgd29ya3F1ZXVlIGFyZSBh bGwgcGFydHMKLQkgKiBvZiB0aGUgY2xpZW50IG9iamVjdCwgd2hpY2ggdGhlIEd1QyB3aWxsIHJl ZmVyZW5jZSB2aWEgdGhlIEdHVFQKKwkgKiBUaGUgcHJvY2VzcyBkZXNjcmlwdG9yIGFuZCB3b3Jr cXVldWUgYXJlIGFsbCBwYXJ0cyBvZiB0aGUgY2xpZW50CisJICogb2JqZWN0LCB3aGljaCB0aGUg R3VDIHdpbGwgcmVmZXJlbmNlIHZpYSB0aGUgR0dUVAogCSAqLwogCWdmeF9hZGRyID0gaW50ZWxf Z3VjX2dndHRfb2Zmc2V0KGd1YywgY2xpZW50LT52bWEpOwotCWRlc2MtPmRiX3RyaWdnZXJfcGh5 ID0gc2dfZG1hX2FkZHJlc3MoY2xpZW50LT52bWEtPnBhZ2VzLT5zZ2wpICsKLQkJCQljbGllbnQt PmRvb3JiZWxsX29mZnNldDsKLQlkZXNjLT5kYl90cmlnZ2VyX2NwdSA9IHB0cl90b191NjQoX19n ZXRfZG9vcmJlbGwoY2xpZW50KSk7Ci0JZGVzYy0+ZGJfdHJpZ2dlcl91ayA9IGdmeF9hZGRyICsg Y2xpZW50LT5kb29yYmVsbF9vZmZzZXQ7Ci0JZGVzYy0+cHJvY2Vzc19kZXNjID0gZ2Z4X2FkZHIg KyBjbGllbnQtPnByb2NfZGVzY19vZmZzZXQ7Ci0JZGVzYy0+d3FfYWRkciA9IGdmeF9hZGRyICsg R1VDX0RCX1NJWkU7CisJZGVzYy0+cHJvY2Vzc19kZXNjID0gZ2Z4X2FkZHI7CisJZGVzYy0+d3Ff YWRkciA9IGdmeF9hZGRyICsgR1VDX1BEX1NJWkU7CiAJZGVzYy0+d3Ffc2l6ZSA9IEdVQ19XUV9T SVpFOwogCiAJZGVzYy0+ZGVzY19wcml2YXRlID0gcHRyX3RvX3U2NChjbGllbnQpOwpAQCAtNDA4 LDQ4ICsyMTksMjMgQEAgc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBwZW5kKHN0cnVjdCBpbnRl bF9ndWNfY2xpZW50ICpjbGllbnQsCiAJCQkgICAgICBHVUNfV1FfU0laRSkgPCB3cWlfc2l6ZSk7 CiAJR0VNX0JVR19PTih3cV9vZmYgJiAod3FpX3NpemUgLSAxKSk7CiAKLQkvKiBXUSBzdGFydHMg ZnJvbSB0aGUgcGFnZSBhZnRlciBkb29yYmVsbCAvIHByb2Nlc3NfZGVzYyAqLwotCXdxaSA9IGNs aWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfREJfU0laRTsKLQotCWlmIChJOTE1X1NFTEZURVNU X09OTFkoY2xpZW50LT51c2Vfbm9wX3dxaSkpIHsKLQkJd3FpLT5oZWFkZXIgPSBXUV9UWVBFX05P T1AgfCAod3FpX2xlbiA8PCBXUV9MRU5fU0hJRlQpOwotCX0gZWxzZSB7Ci0JCS8qIE5vdyBmaWxs IGluIHRoZSA0LXdvcmQgd29yayBxdWV1ZSBpdGVtICovCi0JCXdxaS0+aGVhZGVyID0gV1FfVFlQ RV9JTk9SREVSIHwKLQkJCSAgICAgICh3cWlfbGVuIDw8IFdRX0xFTl9TSElGVCkgfAotCQkJICAg ICAgKHRhcmdldF9lbmdpbmUgPDwgV1FfVEFSR0VUX1NISUZUKSB8Ci0JCQkgICAgICBXUV9OT19X Q0ZMVVNIX1dBSVQ7Ci0JCXdxaS0+Y29udGV4dF9kZXNjID0gY29udGV4dF9kZXNjOwotCQl3cWkt PnN1Ym1pdF9lbGVtZW50X2luZm8gPSByaW5nX3RhaWwgPDwgV1FfUklOR19UQUlMX1NISUZUOwot CQlHRU1fQlVHX09OKHJpbmdfdGFpbCA+IFdRX1JJTkdfVEFJTF9NQVgpOwotCQl3cWktPmZlbmNl X2lkID0gZmVuY2VfaWQ7Ci0JfQorCS8qIFdRIHN0YXJ0cyBmcm9tIHRoZSBwYWdlIGFmdGVyIHBy b2Nlc3NfZGVzYyAqLworCXdxaSA9IGNsaWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfUERfU0la RTsKKworCS8qIE5vdyBmaWxsIGluIHRoZSA0LXdvcmQgd29yayBxdWV1ZSBpdGVtICovCisJd3Fp LT5oZWFkZXIgPSBXUV9UWVBFX0lOT1JERVIgfAorCQkgICAgICAod3FpX2xlbiA8PCBXUV9MRU5f U0hJRlQpIHwKKwkJICAgICAgKHRhcmdldF9lbmdpbmUgPDwgV1FfVEFSR0VUX1NISUZUKSB8CisJ CSAgICAgIFdRX05PX1dDRkxVU0hfV0FJVDsKKwl3cWktPmNvbnRleHRfZGVzYyA9IGNvbnRleHRf ZGVzYzsKKwl3cWktPnN1Ym1pdF9lbGVtZW50X2luZm8gPSByaW5nX3RhaWwgPDwgV1FfUklOR19U QUlMX1NISUZUOworCUdFTV9CVUdfT04ocmluZ190YWlsID4gV1FfUklOR19UQUlMX01BWCk7CisJ d3FpLT5mZW5jZV9pZCA9IGZlbmNlX2lkOwogCiAJLyogTWFrZSB0aGUgdXBkYXRlIHZpc2libGUg dG8gR3VDICovCiAJV1JJVEVfT05DRShkZXNjLT50YWlsLCAod3Ffb2ZmICsgd3FpX3NpemUpICYg KEdVQ19XUV9TSVpFIC0gMSkpOwogfQogCi1zdGF0aWMgdm9pZCBndWNfcmluZ19kb29yYmVsbChz dHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQotewotCXN0cnVjdCBndWNfZG9vcmJlbGxf aW5mbyAqZGI7Ci0JdTMyIGNvb2tpZTsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNsaWVudC0+ d3FfbG9jayk7Ci0KLQkvKiBwb2ludGVyIG9mIGN1cnJlbnQgZG9vcmJlbGwgY2FjaGVsaW5lICov Ci0JZGIgPSBfX2dldF9kb29yYmVsbChjbGllbnQpOwotCi0JLyoKLQkgKiBXZSdyZSBub3QgZXhw ZWN0aW5nIHRoZSBkb29yYmVsbCBjb29raWUgdG8gY2hhbmdlIGJlaGluZCBvdXIgYmFjaywKLQkg KiB3ZSBhbHNvIG5lZWQgdG8gdHJlYXQgMCBhcyBhIHJlc2VydmVkIHZhbHVlLgotCSAqLwotCWNv b2tpZSA9IFJFQURfT05DRShkYi0+Y29va2llKTsKLQlXQVJOX09OX09OQ0UoeGNoZygmZGItPmNv b2tpZSwgY29va2llICsgMSA/OiBjb29raWUgKyAyKSAhPSBjb29raWUpOwotCi0JLyogWFhYOiBk b29yYmVsbCB3YXMgbG9zdCBhbmQgbmVlZCB0byBhY3F1aXJlIGl0IGFnYWluICovCi0JR0VNX0JV R19PTihkYi0+ZGJfc3RhdHVzICE9IEdVQ19ET09SQkVMTF9FTkFCTEVEKTsKLX0KLQogc3RhdGlj IHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCiB7CiAJc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ ZXhlY2J1Zl9jbGllbnQ7CkBAIC00NTksNyArMjQ1LDYgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAK IAlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCiAJ CQkgICByaW5nX3RhaWwsIHJxLT5mZW5jZS5zZXFubyk7Ci0JZ3VjX3JpbmdfZG9vcmJlbGwoY2xp ZW50KTsKIH0KIAogLyoKQEAgLTc0NCwzNiArNTI5LDYgQEAgc3RhdGljIHZvaWQgZ3VjX3Jlc2V0 X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAgKiBwYXRoIG9mIGd1Y19z dWJtaXQoKSBhYm92ZS4KICAqLwogCi0vKiBDaGVjayB0aGF0IGEgZG9vcmJlbGwgcmVnaXN0ZXIg aXMgaW4gdGhlIGV4cGVjdGVkIHN0YXRlICovCi1zdGF0aWMgYm9vbCBkb29yYmVsbF9vayhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsIHUxNiBkYl9pZCkKLXsKLQlib29sIHZhbGlkOwotCi0JR0VNX0JV R19PTihkYl9pZCA+PSBHVUNfTlVNX0RPT1JCRUxMUyk7Ci0KLQl2YWxpZCA9IF9fZG9vcmJlbGxf dmFsaWQoZ3VjLCBkYl9pZCk7Ci0KLQlpZiAodGVzdF9iaXQoZGJfaWQsIGd1Yy0+ZG9vcmJlbGxf Yml0bWFwKSA9PSB2YWxpZCkKLQkJcmV0dXJuIHRydWU7Ci0KLQlEUk1fREVCVUdfRFJJVkVSKCJE b29yYmVsbCAldSBoYXMgdW5leHBlY3RlZCBzdGF0ZTogdmFsaWQ9JXNcbiIsCi0JCQkgZGJfaWQs IHllc25vKHZhbGlkKSk7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGd1Y192 ZXJpZnlfZG9vcmJlbGxzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlib29sIGRvb3JiZWxs c19vayA9IHRydWU7Ci0JdTE2IGRiX2lkOwotCi0JZm9yIChkYl9pZCA9IDA7IGRiX2lkIDwgR1VD X05VTV9ET09SQkVMTFM7ICsrZGJfaWQpCi0JCWlmICghZG9vcmJlbGxfb2soZ3VjLCBkYl9pZCkp Ci0JCQlkb29yYmVsbHNfb2sgPSBmYWxzZTsKLQotCXJldHVybiBkb29yYmVsbHNfb2s7Ci19Ci0K IC8qKgogICogZ3VjX2NsaWVudF9hbGxvYygpIC0gQWxsb2NhdGUgYW4gaW50ZWxfZ3VjX2NsaWVu dAogICogQGd1YzoJdGhlIGludGVsX2d1YyBzdHJ1Y3R1cmUKQEAgLTc5OCw3ICs1NTMsNiBAQCBn dWNfY2xpZW50X2FsbG9jKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHByaW9yaXR5KQogCiAJ Y2xpZW50LT5ndWMgPSBndWM7CiAJY2xpZW50LT5wcmlvcml0eSA9IHByaW9yaXR5OwotCWNsaWVu dC0+ZG9vcmJlbGxfaWQgPSBHVUNfRE9PUkJFTExfSU5WQUxJRDsKIAlzcGluX2xvY2tfaW5pdCgm Y2xpZW50LT53cV9sb2NrKTsKIAogCXJldCA9IGlkYV9zaW1wbGVfZ2V0KCZndWMtPnN0YWdlX2lk cywgMCwgR1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUywKQEAgLTgwOSw3ICs1NjMsNyBAQCBndWNf Y2xpZW50X2FsbG9jKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHByaW9yaXR5KQogCWNsaWVu dC0+c3RhZ2VfaWQgPSByZXQ7CiAKIAkvKiBUaGUgZmlyc3QgcGFnZSBpcyBkb29yYmVsbC9wcm9j X2Rlc2MuIFR3byBmb2xsb3dlZCBwYWdlcyBhcmUgd3EuICovCi0Jdm1hID0gaW50ZWxfZ3VjX2Fs bG9jYXRlX3ZtYShndWMsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOworCXZtYSA9IGludGVs X2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBHVUNfUERfU0laRSArIEdVQ19XUV9TSVpFKTsKIAlpZiAo SVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQlnb3RvIGVycl9pZDsKQEAg LTgyNSwzMSArNTc5LDExIEBAIGd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGludGVsX2d1YyAqZ3Vj LCB1MzIgcHJpb3JpdHkpCiAJfQogCWNsaWVudC0+dmFkZHIgPSB2YWRkcjsKIAotCXJldCA9IHJl c2VydmVfZG9vcmJlbGwoY2xpZW50KTsKLQlpZiAocmV0KQotCQlnb3RvIGVycl92YWRkcjsKLQot CWNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0ID0gX19zZWxlY3RfY2FjaGVsaW5lKGd1Yyk7Ci0KLQkv KgotCSAqIFNpbmNlIHRoZSBkb29yYmVsbCBvbmx5IHJlcXVpcmVzIGEgc2luZ2xlIGNhY2hlbGlu ZSwgd2UgY2FuIHNhdmUKLQkgKiBzcGFjZSBieSBwdXR0aW5nIHRoZSBhcHBsaWNhdGlvbiBwcm9j ZXNzIGRlc2NyaXB0b3IgaW4gdGhlIHNhbWUKLQkgKiBwYWdlLiBVc2UgdGhlIGhhbGYgb2YgdGhl IHBhZ2UgdGhhdCBkb2Vzbid0IGluY2x1ZGUgdGhlIGRvb3JiZWxsLgotCSAqLwotCWlmIChjbGll bnQtPmRvb3JiZWxsX29mZnNldCA+PSAoR1VDX0RCX1NJWkUgLyAyKSkKLQkJY2xpZW50LT5wcm9j X2Rlc2Nfb2Zmc2V0ID0gMDsKLQllbHNlCi0JCWNsaWVudC0+cHJvY19kZXNjX29mZnNldCA9IChH VUNfREJfU0laRSAvIDIpOwotCiAJRFJNX0RFQlVHX0RSSVZFUigibmV3IHByaW9yaXR5ICV1IGNs aWVudCAlcDogc3RhZ2VfaWQgJXVcbiIsCiAJCQkgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50LT5z dGFnZV9pZCk7Ci0JRFJNX0RFQlVHX0RSSVZFUigiZG9vcmJlbGwgaWQgJXUsIGNhY2hlbGluZSBv ZmZzZXQgMHglbHhcbiIsCi0JCQkgY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5kb29yYmVs bF9vZmZzZXQpOwogCiAJcmV0dXJuIGNsaWVudDsKIAotZXJyX3ZhZGRyOgotCWk5MTVfZ2VtX29i amVjdF91bnBpbl9tYXAoY2xpZW50LT52bWEtPm9iaik7CiBlcnJfdm1hOgogCWk5MTVfdm1hX3Vu cGluX2FuZF9yZWxlYXNlKCZjbGllbnQtPnZtYSwgMCk7CiBlcnJfaWQ6CkBAIC04NjEsNyArNTk1 LDYgQEAgZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBwcmlvcml0 eSkKIAogc3RhdGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50 ICpjbGllbnQpCiB7Ci0JdW5yZXNlcnZlX2Rvb3JiZWxsKGNsaWVudCk7CiAJaTkxNV92bWFfdW5w aW5fYW5kX3JlbGVhc2UoJmNsaWVudC0+dm1hLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7CiAJaWRh X3NpbXBsZV9yZW1vdmUoJmNsaWVudC0+Z3VjLT5zdGFnZV9pZHMsIGNsaWVudC0+c3RhZ2VfaWQp OwogCWtmcmVlKGNsaWVudCk7CkBAIC04OTIsNDQgKzYyNSwyMSBAQCBzdGF0aWMgdm9pZCBndWNf Y2xpZW50c19kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJZ3VjX2NsaWVudF9mcmVl KGNsaWVudCk7CiB9CiAKLXN0YXRpYyBpbnQgX19ndWNfY2xpZW50X2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIHZvaWQgX19ndWNfY2xpZW50X2VuYWJsZShz dHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQogewotCWludCByZXQ7Ci0KIAlndWNfcHJv Y19kZXNjX2luaXQoY2xpZW50KTsKIAlndWNfc3RhZ2VfZGVzY19pbml0KGNsaWVudCk7Ci0KLQly ZXQgPSBjcmVhdGVfZG9vcmJlbGwoY2xpZW50KTsKLQlpZiAocmV0KQotCQlnb3RvIGZhaWw7Ci0K LQlyZXR1cm4gMDsKLQotZmFpbDoKLQlndWNfc3RhZ2VfZGVzY19maW5pKGNsaWVudCk7Ci0JZ3Vj X3Byb2NfZGVzY19maW5pKGNsaWVudCk7Ci0JcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQg X19ndWNfY2xpZW50X2Rpc2FibGUoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIHsK LQkvKgotCSAqIEJ5IHRoZSB0aW1lIHdlJ3JlIGhlcmUsIEd1QyBtYXkgaGF2ZSBhbHJlYWR5IGJl ZW4gcmVzZXQuIGlmIHRoYXQgaXMKLQkgKiB0aGUgY2FzZSwgaW5zdGVhZCBvZiB0cnlpbmcgKGlu IHZhaW4pIHRvIGNvbW11bmljYXRlIHdpdGggaXQsIGxldCdzCi0JICoganVzdCBjbGVhbnVwIHRo ZSBkb29yYmVsbCBIVyBhbmQgb3VyIGludGVybmFsIHN0YXRlLgotCSAqLwotCWlmIChpbnRlbF9n dWNfaXNfcnVubmluZyhjbGllbnQtPmd1YykpCi0JCWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsK LQllbHNlCi0JCV9fZmluaV9kb29yYmVsbChjbGllbnQpOwotCiAJZ3VjX3N0YWdlX2Rlc2NfZmlu aShjbGllbnQpOwogCWd1Y19wcm9jX2Rlc2NfZmluaShjbGllbnQpOwogfQogCi1zdGF0aWMgaW50 IGd1Y19jbGllbnRzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgdm9pZCBn dWNfY2xpZW50c19lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewotCXJldHVybiBfX2d1 Y19jbGllbnRfZW5hYmxlKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOworCV9fZ3VjX2NsaWVudF9lbmFi bGUoZ3VjLT5leGVjYnVmX2NsaWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rp c2FibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQpAQCAtOTU4LDcgKzY2OCw2IEBAIGludCBpbnRl bF9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkgKi8KIAlHRU1f QlVHX09OKCFndWMtPnN0YWdlX2Rlc2NfcG9vbCk7CiAKLQlXQVJOX09OKCFndWNfdmVyaWZ5X2Rv b3JiZWxscyhndWMpKTsKIAlyZXQgPSBndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKIAlpZiAocmV0 KQogCQlnb3RvIGVycl9wb29sOwpAQCAtOTczLDcgKzY4Miw2IEBAIGludCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1p c3Npb25fZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJZ3VjX2NsaWVudHNfZGVzdHJv eShndWMpOwotCVdBUk5fT04oIWd1Y192ZXJpZnlfZG9vcmJlbGxzKGd1YykpOwogCiAJaWYgKGd1 Yy0+c3RhZ2VfZGVzY19wb29sKQogCQlndWNfc3RhZ2VfZGVzY19wb29sX2Rlc3Ryb3koZ3VjKTsK QEAgLTEwODksMTYgKzc5NywxMSBAQCBzdGF0aWMgdm9pZCBndWNfc2V0X2RlZmF1bHRfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJR0VNX0JVR19PTihlbmdpbmUt PmlycV9lbmFibGUgfHwgZW5naW5lLT5pcnFfZGlzYWJsZSk7CiB9CiAKLWludCBpbnRlbF9ndWNf c3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQordm9pZCBpbnRlbF9ndWNf c3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBpbnRl bF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0JaW50IGVycjsKLQotCWVyciA9IGk5MTVf aW5qZWN0X3Byb2JlX2Vycm9yKGd0LT5pOTE1LCAtRU5YSU8pOwotCWlmIChlcnIpCi0JCXJldHVy biBlcnI7CiAKIAkvKgogCSAqIFdlJ3JlIHVzaW5nIEd1QyB3b3JrIGl0ZW1zIGZvciBzdWJtaXR0 aW5nIHdvcmsgdGhyb3VnaCBHdUMuIFNpbmNlCkBAIC0xMTE1LDkgKzgxOCw3IEBAIGludCBpbnRl bF9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCiAJR0VNX0JV R19PTighZ3VjLT5leGVjYnVmX2NsaWVudCk7CiAKLQllcnIgPSBndWNfY2xpZW50c19lbmFibGUo Z3VjKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCWd1Y19jbGllbnRzX2VuYWJsZShndWMp OwogCiAJLyogVGFrZSBvdmVyIGZyb20gbWFudWFsIGNvbnRyb2wgb2YgRUxTUCAoZXhlY2xpc3Rz KSAqLwogCWd1Y19pbnRlcnJ1cHRzX2NhcHR1cmUoZ3QpOwpAQCAtMTEyNiw4ICs4MjcsNiBAQCBp bnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJ ZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gZ3VjX3NldF9kZWZhdWx0X3N1Ym1pc3Np b247CiAJCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbihlbmdpbmUpOwogCX0KLQotCXJl dHVybiAwOwogfQogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQpAQCAtMTE1NSw3ICs4NTQsMyBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNz aW9uX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCWd1Yy0+c3VibWlzc2lv bl9zdXBwb3J0ZWQgPSBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnQoZ3VjKTsKIH0KLQotI2lmIElT X0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQotI2luY2x1ZGUgInNlbGZ0ZXN0X2d1 Yy5jIgotI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfc3VibWlzc2lvbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X3N1Ym1pc3Npb24uaAppbmRleCA1NGQ3MTY4MjgzNTIuLmUyZGViNGU2ZjQyYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oCkBAIC00 NCwyMSArNDQsMTQgQEAgc3RydWN0IGludGVsX2d1Y19jbGllbnQgewogCS8qIGJpdG1hcCBvZiAo aG9zdCkgZW5naW5lIGlkcyAqLwogCXUzMiBwcmlvcml0eTsKIAl1MzIgc3RhZ2VfaWQ7Ci0JdTMy IHByb2NfZGVzY19vZmZzZXQ7Ci0KLQl1MTYgZG9vcmJlbGxfaWQ7Ci0JdW5zaWduZWQgbG9uZyBk b29yYmVsbF9vZmZzZXQ7CiAKIAkvKiBQcm90ZWN0cyBHdUMgY2xpZW50J3MgV1EgYWNjZXNzICov CiAJc3BpbmxvY2tfdCB3cV9sb2NrOwotCi0JLyogRm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBu b3AgV1EgaXRlbXMgaW5zdGVhZCBvZiByZWFsIG9uZXMgKi8KLQlJOTE1X1NFTEZURVNUX0RFQ0xB UkUoYm9vbCB1c2Vfbm9wX3dxaSk7CiB9OwogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2lu aXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIGludCBpbnRlbF9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Ci1pbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f ZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9u X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lv bl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiB2b2lkIGludGVsX2d1Y19zdWJtaXNz aW9uX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIGludCBpbnRlbF9ndWNfcHJlZW1wdF93 b3JrX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX3VjLmMKaW5kZXggNjI5YjE5Mzc3YTI5Li5jNjUxOTA2NmEwZjYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwpAQCAtNDg2LDExICs0ODYsOCBAQCBpbnQgaW50ZWxf dWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX2Nv bW11bmljYXRpb247CiAKLQlpZiAoaW50ZWxfdWNfc3VwcG9ydHNfZ3VjX3N1Ym1pc3Npb24odWMp KSB7Ci0JCXJldCA9IGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShndWMpOwotCQlpZiAocmV0 KQotCQkJZ290byBlcnJfY29tbXVuaWNhdGlvbjsKLQl9CisJaWYgKGludGVsX3VjX3N1cHBvcnRz X2d1Y19zdWJtaXNzaW9uKHVjKSkKKwkJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKGd1Yyk7 CiAKIAlkZXZfaW5mbyhpOTE1LT5kcm0uZGV2LCAiJXMgZmlybXdhcmUgJXMgdmVyc2lvbiAldS4l dSAlczolc1xuIiwKIAkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcihJTlRFTF9VQ19GV19UWVBFX0dV QyksIGd1Yy0+ZncucGF0aCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L3NlbGZ0ZXN0X2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvc2VsZnRlc3RfZ3Vj LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YTgwMzg4YmQzMS4uMDAwMDAwMDAw MDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL3NlbGZ0ZXN0X2d1Yy5jCisrKyAv ZGV2L251bGwKQEAgLTEsMjk5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQKLS8qCi0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotICovCi0KLSNp bmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCi0jaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3BtLmgiCi0K LS8qIG1heCBkb29yYmVsbCBudW1iZXIgKyBuZWdhdGl2ZSB0ZXN0IGZvciBlYWNoIGNsaWVudCB0 eXBlICovCi0jZGVmaW5lIEFUVEVNUFRTIChHVUNfTlVNX0RPT1JCRUxMUyArIEdVQ19DTElFTlRf UFJJT1JJVFlfTlVNKQotCi1zdGF0aWMgc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudHNb QVRURU1QVFNdOwotCi1zdGF0aWMgYm9vbCBhdmFpbGFibGVfZGJzKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywgdTMyIHByaW9yaXR5KQotewotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotCXVuc2lnbmVk IGxvbmcgZW5kOwotCXUxNiBpZDsKLQotCS8qIGZpcnN0IGhhbGYgaXMgdXNlZCBmb3Igbm9ybWFs IHByaW9yaXR5LCBzZWNvbmQgaGFsZiBmb3IgaGlnaCAqLwotCW9mZnNldCA9IDA7Ci0JZW5kID0g R1VDX05VTV9ET09SQkVMTFMgLyAyOwotCWlmIChwcmlvcml0eSA8PSBHVUNfQ0xJRU5UX1BSSU9S SVRZX0hJR0gpIHsKLQkJb2Zmc2V0ID0gZW5kOwotCQllbmQgKz0gb2Zmc2V0OwotCX0KLQotCWlk ID0gZmluZF9uZXh0X3plcm9fYml0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBlbmQsIG9mZnNldCk7 Ci0JaWYgKGlkIDwgZW5kKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQot c3RhdGljIGludCBjaGVja19hbGxfZG9vcmJlbGxzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsK LQl1MTYgZGJfaWQ7Ci0KLQlwcl9pbmZvX29uY2UoIk1heCBudW1iZXIgb2YgZG9vcmJlbGxzOiAl ZCIsIEdVQ19OVU1fRE9PUkJFTExTKTsKLQlmb3IgKGRiX2lkID0gMDsgZGJfaWQgPCBHVUNfTlVN X0RPT1JCRUxMUzsgKytkYl9pZCkgewotCQlpZiAoIWRvb3JiZWxsX29rKGd1YywgZGJfaWQpKSB7 Ci0JCQlwcl9lcnIoImRvb3JiZWxsICVkLCBub3Qgb2tcbiIsIGRiX2lkKTsKLQkJCXJldHVybiAt RUlPOwotCQl9Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcmluZ19kb29yYmVs bF9ub3Aoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgZ3VjX3By b2Nlc3NfZGVzYyAqZGVzYyA9IF9fZ2V0X3Byb2Nlc3NfZGVzYyhjbGllbnQpOwotCWludCBlcnI7 Ci0KLQljbGllbnQtPnVzZV9ub3Bfd3FpID0gdHJ1ZTsKLQotCXNwaW5fbG9ja19pcnEoJmNsaWVu dC0+d3FfbG9jayk7Ci0KLQlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCAwLCAwLCAwLCAwKTsK LQlndWNfcmluZ19kb29yYmVsbChjbGllbnQpOwotCi0Jc3Bpbl91bmxvY2tfaXJxKCZjbGllbnQt PndxX2xvY2spOwotCi0JY2xpZW50LT51c2Vfbm9wX3dxaSA9IGZhbHNlOwotCi0JLyogaWYgdGhl cmUgYXJlIG5vIGlzc3VlcyBHdUMgd2lsbCB1cGRhdGUgdGhlIFdRIGhlYWQgYW5kIGtlZXAgdGhl Ci0JICogV1EgaW4gYWN0aXZlIHN0YXR1cwotCSAqLwotCWVyciA9IHdhaXRfZm9yKFJFQURfT05D RShkZXNjLT5oZWFkKSA9PSBSRUFEX09OQ0UoZGVzYy0+dGFpbCksIDEwKTsKLQlpZiAoZXJyKSB7 Ci0JCXByX2VycigiZG9vcmJlbGwgJXUgcmluZyBmYWlsZWQhXG4iLCBjbGllbnQtPmRvb3JiZWxs X2lkKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JaWYgKGRlc2MtPndxX3N0YXR1cyAhPSBXUV9T VEFUVVNfQUNUSVZFKSB7Ci0JCXByX2VycigiZG9vcmJlbGwgJXUgcmluZyBwdXQgV1EgaW4gYmFk IHN0YXRlICgldSkhXG4iLAotCQkgICAgICAgY2xpZW50LT5kb29yYmVsbF9pZCwgZGVzYy0+d3Ff c3RhdHVzKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBC YXNpYyBjbGllbnQgc2FuaXR5IGNoZWNrLCBoYW5keSB0byB2YWxpZGF0ZSBjcmVhdGVfY2xpZW50 cy4KLSAqLwotc3RhdGljIGludCB2YWxpZGF0ZV9jbGllbnQoc3RydWN0IGludGVsX2d1Y19jbGll bnQgKmNsaWVudCwgaW50IGNsaWVudF9wcmlvcml0eSkKLXsKLQlpZiAoY2xpZW50LT5wcmlvcml0 eSAhPSBjbGllbnRfcHJpb3JpdHkgfHwKLQkgICAgY2xpZW50LT5kb29yYmVsbF9pZCA9PSBHVUNf RE9PUkJFTExfSU5WQUxJRCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JZWxzZQotCQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIGJvb2wgY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoc3RydWN0IGludGVsX2d1 Y19jbGllbnQgKmNsaWVudCkKLXsKLQlyZXR1cm4gIWNsaWVudCB8fCBkb29yYmVsbF9vayhjbGll bnQtPmd1YywgY2xpZW50LT5kb29yYmVsbF9pZCk7Ci19Ci0KLS8qCi0gKiBDaGVjayB0aGF0IHdl J3JlIGFibGUgdG8gc3luY2hyb25pemUgZ3VjX2NsaWVudHMgd2l0aCB0aGVpciBkb29yYmVsbHMK LSAqCi0gKiBXZSdyZSBjcmVhdGluZyBjbGllbnRzIGFuZCByZXNlcnZpbmcgZG9vcmJlbGxzIG9u Y2UsIGF0IG1vZHVsZSBsb2FkLiBEdXJpbmcKLSAqIG1vZHVsZSBsaWZldGltZSwgR3VDLCBkb29y YmVsbCBIVywgYW5kIGk5MTUgc3RhdGUgbWF5IGdvIG91dCBvZiBzeW5jIGR1ZSB0bwotICogR3VD IGJlaW5nIHJlc2V0LiBJbiBvdGhlciB3b3JkcyAtIEd1QyBjbGllbnRzIGFyZSBzdGlsbCBhcm91 bmQsIGJ1dCB0aGUKLSAqIHN0YXR1cyBvZiB0aGVpciBkb29yYmVsbHMgbWF5IGJlIGluY29ycmVj dC4gVGhpcyBpcyB0aGUgcmVhc29uIGJlaGluZAotICogdmFsaWRhdGluZyB0aGF0IHRoZSBkb29y YmVsbHMgc3RhdHVzIGV4cGVjdGVkIGJ5IHRoZSBkcml2ZXIgbWF0Y2hlcyB3aGF0IHRoZQotICog R3VDL0hXIGhhdmUuCi0gKi8KLXN0YXRpYyBpbnQgaWd0X2d1Y19jbGllbnRzKHZvaWQgKmFyZykK LXsKLQlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOwotCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9 ICZndC0+dWMuZ3VjOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWludCBlcnIgPSAwOwot Ci0JR0VNX0JVR19PTighSEFTX0dUX1VDKGd0LT5pOTE1KSk7Ci0Jd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KGd0LT51bmNvcmUtPnJwbSk7Ci0KLQllcnIgPSBjaGVja19hbGxfZG9vcmJl bGxzKGd1Yyk7Ci0JaWYgKGVycikKLQkJZ290byB1bmxvY2s7Ci0KLQkvKgotCSAqIEdldCByaWQg b2YgY2xpZW50cyBjcmVhdGVkIGR1cmluZyBkcml2ZXIgbG9hZCBiZWNhdXNlIHRoZSB0ZXN0IHdp bGwKLQkgKiByZWNyZWF0ZSB0aGVtLgotCSAqLwotCWd1Y19jbGllbnRzX2Rpc2FibGUoZ3VjKTsK LQlndWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Ci0JaWYgKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpIHsK LQkJcHJfZXJyKCJndWNfY2xpZW50c19kZXN0cm95IGxpZWQhXG4iKTsKLQkJZXJyID0gLUVJTlZB TDsKLQkJZ290byB1bmxvY2s7Ci0JfQotCi0JZXJyID0gZ3VjX2NsaWVudHNfY3JlYXRlKGd1Yyk7 Ci0JaWYgKGVycikgewotCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgY2xpZW50c1xuIik7Ci0J CWdvdG8gdW5sb2NrOwotCX0KLQlHRU1fQlVHX09OKCFndWMtPmV4ZWNidWZfY2xpZW50KTsKLQot CWVyciA9IHZhbGlkYXRlX2NsaWVudChndWMtPmV4ZWNidWZfY2xpZW50LAotCQkJICAgICAgR1VD X0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMKTsKLQlpZiAoZXJyKSB7Ci0JCXByX2VycigiZXhl Y2J1ZyBjbGllbnQgdmFsaWRhdGlvbiBmYWlsZWRcbiIpOwotCQlnb3RvIG91dDsKLQl9Ci0KLQkv KiB0aGUgY2xpZW50IHNob3VsZCBub3cgaGF2ZSByZXNlcnZlZCBhIGRvb3JiZWxsICovCi0JaWYg KCFoYXNfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKLQkJcHJfZXJyKCJndWNfY2xp ZW50c19jcmVhdGUgZGlkbid0IHJlc2VydmUgZG9vcmJlbGxzXG4iKTsKLQkJZXJyID0gLUVJTlZB TDsKLQkJZ290byBvdXQ7Ci0JfQotCi0JLyogTm93IGVuYWJsZSB0aGUgY2xpZW50cyAqLwotCWd1 Y19jbGllbnRzX2VuYWJsZShndWMpOwotCi0JLyogZWFjaCBjbGllbnQgc2hvdWxkIG5vdyBoYXZl IHJlY2VpdmVkIGEgZG9vcmJlbGwgKi8KLQlpZiAoIWNsaWVudF9kb29yYmVsbF9pbl9zeW5jKGd1 Yy0+ZXhlY2J1Zl9jbGllbnQpKSB7Ci0JCXByX2VycigiZmFpbGVkIHRvIGluaXRpYWxpemUgdGhl IGRvb3JiZWxsc1xuIik7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwotCX0KLQotCS8q Ci0JICogQmFzaWMgdGVzdCAtIGFuIGF0dGVtcHQgdG8gcmVhbGxvY2F0ZSBhIHZhbGlkIGRvb3Ji ZWxsIHRvIHRoZQotCSAqIGNsaWVudCBpdCBpcyBjdXJyZW50bHkgYXNzaWduZWQgc2hvdWxkIG5v dCBjYXVzZSBhIGZhaWx1cmUuCi0JICovCi0JZXJyID0gY3JlYXRlX2Rvb3JiZWxsKGd1Yy0+ZXhl Y2J1Zl9jbGllbnQpOwotCi1vdXQ6Ci0JLyoKLQkgKiBMZWF2ZSBjbGVhbiBzdGF0ZSBmb3Igb3Ro ZXIgdGVzdCwgcGx1cyB0aGUgZHJpdmVyIGFsd2F5cyBkZXN0cm95IHRoZQotCSAqIGNsaWVudHMg ZHVyaW5nIHVubG9hZC4KLQkgKi8KLQlndWNfY2xpZW50c19kaXNhYmxlKGd1Yyk7Ci0JZ3VjX2Ns aWVudHNfZGVzdHJveShndWMpOwotCWd1Y19jbGllbnRzX2NyZWF0ZShndWMpOwotCWd1Y19jbGll bnRzX2VuYWJsZShndWMpOwotdW5sb2NrOgotCWludGVsX3J1bnRpbWVfcG1fcHV0KGd0LT51bmNv cmUtPnJwbSwgd2FrZXJlZik7Ci0JcmV0dXJuIGVycjsKLX0KLQotLyoKLSAqIENyZWF0ZSBhcyBt YW55IGNsaWVudHMgYXMgbnVtYmVyIG9mIGRvb3JiZWxscy4gTm90ZSB0aGF0IHRoZXJlJ3MgYWxy ZWFkeQotICogY2xpZW50KHMpL2Rvb3JiZWxsKHMpIGNyZWF0ZWQgZHVyaW5nIGRyaXZlciBsb2Fk LCBidXQgdGhpcyB0ZXN0IGNyZWF0ZXMKLSAqIGl0cyBvd24gYW5kIGRvIG5vdCBpbnRlcmFjdCB3 aXRoIHRoZSBleGlzdGluZyBvbmVzLgotICovCi1zdGF0aWMgaW50IGlndF9ndWNfZG9vcmJlbGxz KHZvaWQgKmFyZykKLXsKLQlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOwotCXN0cnVjdCBpbnRl bF9ndWMgKmd1YyA9ICZndC0+dWMuZ3VjOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWlu dCBpLCBlcnIgPSAwOwotCXUxNiBkYl9pZDsKLQotCUdFTV9CVUdfT04oIUhBU19HVF9VQyhndC0+ aTkxNSkpOwotCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChndC0+dW5jb3JlLT5ycG0p OwotCi0JZXJyID0gY2hlY2tfYWxsX2Rvb3JiZWxscyhndWMpOwotCWlmIChlcnIpCi0JCWdvdG8g dW5sb2NrOwotCi0JZm9yIChpID0gMDsgaSA8IEFUVEVNUFRTOyBpKyspIHsKLQkJY2xpZW50c1tp XSA9IGd1Y19jbGllbnRfYWxsb2MoZ3VjLCBpICUgR1VDX0NMSUVOVF9QUklPUklUWV9OVU0pOwot Ci0JCWlmICghY2xpZW50c1tpXSkgewotCQkJcHJfZXJyKCJbJWRdIE5vIGd1YyBjbGllbnRcbiIs IGkpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gb3V0OwotCQl9Ci0KLQkJaWYgKElTX0VS UihjbGllbnRzW2ldKSkgewotCQkJaWYgKFBUUl9FUlIoY2xpZW50c1tpXSkgIT0gLUVOT1NQQykg ewotCQkJCXByX2VycigiWyVkXSB1bmV4cGVjdGVkIGVycm9yXG4iLCBpKTsKLQkJCQllcnIgPSBQ VFJfRVJSKGNsaWVudHNbaV0pOwotCQkJCWdvdG8gb3V0OwotCQkJfQotCi0JCQlpZiAoYXZhaWxh YmxlX2RicyhndWMsIGkgJSBHVUNfQ0xJRU5UX1BSSU9SSVRZX05VTSkpIHsKLQkJCQlwcl9lcnIo IlslZF0gbm9uLWRiIHJlbGF0ZWQgYWxsb2MgZmFpbFxuIiwgaSk7Ci0JCQkJZXJyID0gLUVJTlZB TDsKLQkJCQlnb3RvIG91dDsKLQkJCX0KLQotCQkJLyogZXhwZWN0ZWQsIHJhbiBvdXQgb2YgZGJz IGZvciB0aGlzIGNsaWVudCB0eXBlICovCi0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAq IFRoZSBjaGVjayBiZWxvdyBpcyBvbmx5IHZhbGlkIGJlY2F1c2Ugd2Uga2VlcCBhIGRvb3JiZWxs Ci0JCSAqIGFzc2lnbmVkIGR1cmluZyB0aGUgd2hvbGUgbGlmZSBvZiB0aGUgY2xpZW50LgotCQkg Ki8KLQkJaWYgKGNsaWVudHNbaV0tPnN0YWdlX2lkID49IEdVQ19OVU1fRE9PUkJFTExTKSB7Ci0J CQlwcl9lcnIoIlslZF0gbW9yZSBjbGllbnRzIHRoYW4gZG9vcmJlbGxzICglZCA+PSAlZClcbiIs Ci0JCQkgICAgICAgaSwgY2xpZW50c1tpXS0+c3RhZ2VfaWQsIEdVQ19OVU1fRE9PUkJFTExTKTsK LQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCWVyciA9IHZhbGlkYXRl X2NsaWVudChjbGllbnRzW2ldLCBpICUgR1VDX0NMSUVOVF9QUklPUklUWV9OVU0pOwotCQlpZiAo ZXJyKSB7Ci0JCQlwcl9lcnIoIlslZF0gY2xpZW50X2FsbG9jIHNhbml0eSBjaGVjayBmYWlsZWQh XG4iLCBpKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCWRiX2lk ID0gY2xpZW50c1tpXS0+ZG9vcmJlbGxfaWQ7Ci0KLQkJZXJyID0gX19ndWNfY2xpZW50X2VuYWJs ZShjbGllbnRzW2ldKTsKLQkJaWYgKGVycikgewotCQkJcHJfZXJyKCJbJWRdIEZhaWxlZCB0byBj cmVhdGUgYSBkb29yYmVsbFxuIiwgaSk7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCS8qIGRvb3Ji ZWxsIGlkIHNob3VsZG4ndCBjaGFuZ2UsIHdlIGFyZSBob2xkaW5nIHRoZSBtdXRleCAqLwotCQlp ZiAoZGJfaWQgIT0gY2xpZW50c1tpXS0+ZG9vcmJlbGxfaWQpIHsKLQkJCXByX2VycigiWyVkXSBk b29yYmVsbCBpZCBjaGFuZ2VkICglZCAhPSAlZClcbiIsCi0JCQkgICAgICAgaSwgZGJfaWQsIGNs aWVudHNbaV0tPmRvb3JiZWxsX2lkKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsK LQkJfQotCi0JCWVyciA9IGNoZWNrX2FsbF9kb29yYmVsbHMoZ3VjKTsKLQkJaWYgKGVycikKLQkJ CWdvdG8gb3V0OwotCi0JCWVyciA9IHJpbmdfZG9vcmJlbGxfbm9wKGNsaWVudHNbaV0pOwotCQlp ZiAoZXJyKQotCQkJZ290byBvdXQ7Ci0JfQotCi1vdXQ6Ci0JZm9yIChpID0gMDsgaSA8IEFUVEVN UFRTOyBpKyspCi0JCWlmICghSVNfRVJSX09SX05VTEwoY2xpZW50c1tpXSkpIHsKLQkJCV9fZ3Vj X2NsaWVudF9kaXNhYmxlKGNsaWVudHNbaV0pOwotCQkJZ3VjX2NsaWVudF9mcmVlKGNsaWVudHNb aV0pOwotCQl9Ci11bmxvY2s6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZ3QtPnVuY29yZS0+cnBt LCB3YWtlcmVmKTsKLQlyZXR1cm4gZXJyOwotfQotCi1pbnQgaW50ZWxfZ3VjX2xpdmVfc2VsZnRl c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0Jc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKLQkJU1VCVEVTVChpZ3RfZ3VjX2NsaWVudHMpLAot CQlTVUJURVNUKGlndF9ndWNfZG9vcmJlbGxzKSwKLQl9OwotCi0JaWYgKCFVU0VTX0dVQ19TVUJN SVNTSU9OKGk5MTUpKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiBpbnRlbF9ndF9saXZlX3N1YnRl c3RzKHRlc3RzLCAmaTkxNS0+Z3QpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCBjYWI2MzI3OTFmNzMuLjVkNTk3NGU3ZjNlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTE4MTUsMTcgKzE4MTUsMTAgQEAgc3RhdGljIGludCBpOTE1X2d1Y19pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCUdFTV9CVUdfT04oIWd1Yy0+ZXhl Y2J1Zl9jbGllbnQpOwogCi0Jc2VxX3ByaW50ZihtLCAiXG5Eb29yYmVsbCBtYXA6XG4iKTsKLQlz ZXFfcHJpbnRmKG0sICJcdCUqcGJcbiIsIEdVQ19OVU1fRE9PUkJFTExTLCBndWMtPmRvb3JiZWxs X2JpdG1hcCk7Ci0Jc2VxX3ByaW50ZihtLCAiRG9vcmJlbGwgbmV4dCBjYWNoZWxpbmU6IDB4JXhc biIsIGd1Yy0+ZGJfY2FjaGVsaW5lKTsKLQogCXNlcV9wcmludGYobSwgIlxuR3VDIGV4ZWNidWYg Y2xpZW50IEAgJXA6XG4iLCBjbGllbnQpOwotCXNlcV9wcmludGYobSwgIlx0UHJpb3JpdHkgJWQs IEd1QyBzdGFnZSBpbmRleDogJXUsIFBEIG9mZnNldCAweCV4XG4iLAorCXNlcV9wcmludGYobSwg Ilx0UHJpb3JpdHkgJWQsIEd1QyBzdGFnZSBpbmRleDogJXVcbiIsCiAJCSAgIGNsaWVudC0+cHJp b3JpdHksCi0JCSAgIGNsaWVudC0+c3RhZ2VfaWQsCi0JCSAgIGNsaWVudC0+cHJvY19kZXNjX29m ZnNldCk7Ci0Jc2VxX3ByaW50ZihtLCAiXHREb29yYmVsbCBpZCAlZCwgb2Zmc2V0OiAweCVseFxu IiwKLQkJICAgY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQpOwor CQkgICBjbGllbnQtPnN0YWdlX2lkKTsKIAkvKiBBZGQgbW9yZSBhcyByZXF1aXJlZCAuLi4gKi8K IAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2xpdmVfc2VsZnRlc3RzLmgKaW5kZXggNGIzY2FjNzNlMjkxLi5mYjAzZjhhOTBjYWMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRl c3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxm dGVzdHMuaApAQCAtMzYsNSArMzYsNCBAQCBzZWxmdGVzdChyZXNldCwgaW50ZWxfcmVzZXRfbGl2 ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChtZW1vcnlfcmVnaW9uLCBpbnRlbF9tZW1vcnlfcmVnaW9u X2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoaGFuZ2NoZWNrLCBpbnRlbF9oYW5nY2hlY2tfbGl2 ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChleGVjbGlzdHMsIGludGVsX2V4ZWNsaXN0c19saXZlX3Nl bGZ0ZXN0cykKLXNlbGZ0ZXN0KGd1YywgaW50ZWxfZ3VjX2xpdmVfc2VsZnRlc3QpCiBzZWxmdGVz dChwZXJmLCBpOTE1X3BlcmZfbGl2ZV9zZWxmdGVzdHMpCi0tIAoyLjIzLjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== 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 314C8FC6194 for ; Wed, 6 Nov 2019 22:26:21 +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 0BD972166E for ; Wed, 6 Nov 2019 22:26:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0BD972166E 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 A9DB06EE37; Wed, 6 Nov 2019 22:26:20 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 745916EE3B for ; Wed, 6 Nov 2019 22:26:19 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 14:26:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,275,1569308400"; d="scan'208";a="214399320" Received: from dceraolo-linux.fm.intel.com ([10.1.27.145]) by orsmga002.jf.intel.com with ESMTP; 06 Nov 2019 14:26:18 -0800 From: Daniele Ceraolo Spurio To: intel-gfx@lists.freedesktop.org Date: Wed, 6 Nov 2019 14:25:49 -0800 Message-Id: <20191106222550.20752-4-daniele.ceraolospurio@intel.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> References: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 3/4] drm/i915/guc: kill doorbell code and selftests X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191106222549.KzUsdo-x-pSD1BIQ47Tv3BwE7QMK88X2Af8Pq5V8oQ8@z> SW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSB3b3JrcXVldWUsIHRoZSB1cGNvbWluZyByZXdvcmtl ZCBHdUMKc3VibWlzc2lvbiBmbG93IHdpbGwgb2ZmZXIgdGhlIGhvc3QgZHJpdmVyIGluZGlwZW5k ZW50IGNvbnRyb2wgb3Zlcgp0aGUgZXhlY3V0aW9uIHN0YXR1cyBvZiBlYWNoIGNvbnRleHQgc3Vi bWl0dGVkIHRvIEd1Qy4gQXMgcGFydCBvZiB0aGlzLAp0aGUgZG9vcmJlbGwgdXNhZ2UgbW9kZWwg aGFzIGJlZW4gcmV3b3JrZWQsIHdpdGggZWFjaCBkb29yYmVsbCBiZWluZwpwYWlyZWQgdG8gYSBz aW5nbGUgbHJjIGFuZCBhIGRvb3JiZWxsIHJpbmcgcmVwcmVzZW50aW5nIG5ldyB3b3JrCmF2YWls YWJsZSBmb3IgdGhhdCBzcGVjaWZpYyBjb250ZXh0LiBUaGlzIG1lY2hhbmlzbSwgaG93ZXZlciwg bGltaXRzCnRoZSBudW1iZXIgb2YgY29udGV4dHMgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRo IEd1QyB0byB0aGUgbnVtYmVyIG9mCmRvb3JiZWxscywgd2hpY2ggaXMgYW4gdW5kZXNpcmVkIGxp bWl0YXRpb24uIEx1Y2tpbHksIEd1QyB3aWxsIGFsc28KcHJvdmlkZSBhIEgyRyB0aGF0IHdpbGwg YWxsb3cgdGhlIGhvc3QgdG8gbm90aWZ5IHRoZSBHdUMgb2Ygd29yawphdmFpbGFibGUgZm9yIGEg c3BlY2lmaWVkIGxyYywgc28gd2UgY2FuIHVzZSB0aGF0IG1lY2hhbmlzbSBpbnN0ZWFkIG9mCnJl bHlpbmcgb24gdGhlIGRvb3JiZWxscy4gV2UgY2FuIHRoZXJlZm9yZSBkcm9wIHRoZSBkb29yYmVs bCBjb2RlIHdlCmN1cnJlbnRseSBoYXZlLCBhbHNvIGdpdmVuIHRoZSBmYWN0IHRoYXQgaW4gdGhl IHVubGlrZWx5IGNhc2Ugd2UnZCB3YW50CnRvIHN3aXRjaCBiYWNrIHRvIHVzaW5nIGRvb3JiZWxs cyB3ZSdkIGhhdmUgdG8gaGVhdmlseSByZXdvcmsgaXQuClRoZSB3b3JrcXVldWUgd2lsbCBzdGls bCBoYXZlIGEgdXNlIGluIHRoZSBuZXcgaW50ZXJmYWNlIHRvIHBhc3Mgc3BlY2lhbApjb21tYW5k cywgc28gdGhhdCBjb2RlIGhhcyBiZWVuIHJldGFpbmVkIGZvciBub3cuCgpXaXRoIHRoZSBkb29y YmVsbHMgZ29uZSBhbmQgdGhlIEd1QyBjbGllbnQgYmVjb21pbmcgZXZlbiBzaW1wbGVyLCB0aGUK ZXhpc3RpbmcgR3VDIHNlbGZ0ZXN0cyBkb24ndCBnaXZlIHVzIGFueSBtZWFuaW5nZnVsIGNvdmVy YWdlIHNvIHdlIGNhbgpyZW1vdmUgdGhlbSBhcyB3ZWxsLiBTb21lIHNlbGZ0ZXN0cyBtaWdodCBj b21lIHdpdGggdGhlIG5ldyBjb2RlLCBidXQKdGhleSB3aWxsIGxvb2sgZGlmZmVyZW50IGZyb20g d2hhdCB3ZSBoYXZlIG5vdyBzbyBpZiBkb2Vzbid0IHNlZW0gd29ydGgKaXQgdG8ga2VlcCB0aGUg ZmlsZSBhcm91bmQgaW4gdGhlIG1lYW50aW1lLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsZSBDZXJh b2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBX YWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogSm9obiBIYXJyaXNvbiA8 Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KQ2M6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5o ICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3 aWYuaCAgIHwgICAyICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNz aW9uLmMgfCAzNzMgKystLS0tLS0tLS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19zdWJtaXNzaW9uLmggfCAgIDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX3VjLmMgICAgICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv c2VsZnRlc3RfZ3VjLmMgICAgIHwgMjk5IC0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTEgKy0KIC4uLi9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICAgMSAtCiA4IGZpbGVzIGNoYW5nZWQsIDQy IGluc2VydGlvbnMoKyksIDY2OCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWMuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmgKaW5kZXggYmY0MzhmODIwYzM1Li5iMmQxNzY2ZTY4OWEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCkBAIC0yMCw4ICsyMCw4IEBAIHN0cnVj dCBfX2d1Y19hZHNfYmxvYjsKIAogLyoKICAqIFRvcCBsZXZlbCBzdHJ1Y3R1cmUgb2YgR3VDLiBJ dCBoYW5kbGVzIGZpcm13YXJlIGxvYWRpbmcgYW5kIG1hbmFnZXMgY2xpZW50Ci0gKiBwb29sIGFu ZCBkb29yYmVsbHMuIGludGVsX2d1YyBvd25zIGEgaW50ZWxfZ3VjX2NsaWVudCB0byByZXBsYWNl IHRoZSBsZWdhY3kKLSAqIEV4ZWNMaXN0IHN1Ym1pc3Npb24uCisgKiBwb29sLiBpbnRlbF9ndWMg b3ducyBhIGludGVsX2d1Y19jbGllbnQgdG8gcmVwbGFjZSB0aGUgbGVnYWN5IEV4ZWNMaXN0Cisg KiBzdWJtaXNzaW9uLgogICovCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfdWNf ZncgZnc7CkBAIC01MCwxMCArNTAsNiBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAogCXN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpleGVjYnVmX2NsaWVudDsKIAotCURFQ0xBUkVfQklUTUFQKGRvb3Ji ZWxsX2JpdG1hcCwgR1VDX05VTV9ET09SQkVMTFMpOwotCS8qIEN5Y2xpYyBjb3VudGVyIG1vZCBw YWdlc2l6ZQkqLwotCXUzMiBkYl9jYWNoZWxpbmU7Ci0KIAkvKiBDb250cm9sIHBhcmFtcyBmb3Ig ZncgaW5pdGlhbGl6YXRpb24gKi8KIAl1MzIgcGFyYW1zW0dVQ19DVExfTUFYX0RXT1JEU107CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCmluZGV4IGEyNmE4 NWQ1MDIwOS4uMWU4ZTRhZjdkOWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfZndpZi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19md2lmLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2RlZmluZSBHVUNfRE9PUkJFTExf SU5WQUxJRAkJMjU2CiAKLSNkZWZpbmUgR1VDX0RCX1NJWkUJCQkoUEFHRV9TSVpFKQorI2RlZmlu ZSBHVUNfUERfU0laRQkJCShQQUdFX1NJWkUpCiAjZGVmaW5lIEdVQ19XUV9TSVpFCQkJKFBBR0Vf U0laRSAqIDIpCiAKIC8qIFdvcmsgcXVldWUgaXRlbSBoZWFkZXIgZGVmaW5pdGlvbnMgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCmlu ZGV4IDZhYzIxM2RkYmZhMy4uMDA4OGMzNDE3NjQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKQEAgLTMwLDggKzMwLDggQEAKICAq IEd1QyBjbGllbnQ6CiAgKiBBIGludGVsX2d1Y19jbGllbnQgcmVmZXJzIHRvIGEgc3VibWlzc2lv biBwYXRoIHRocm91Z2ggR3VDLiBDdXJyZW50bHksIHRoZXJlCiAgKiBpcyBvbmx5IG9uZSBjbGll bnQsIHdoaWNoIGlzIGNoYXJnZWQgd2l0aCBhbGwgc3VibWlzc2lvbnMgdG8gdGhlIEd1Qy4gVGhp cwotICogc3RydWN0IGlzIHRoZSBvd25lciBvZiBhIGRvb3JiZWxsLCBhIHByb2Nlc3MgZGVzY3Jp cHRvciBhbmQgYSB3b3JrcXVldWUgKGFsbAotICogb2YgdGhlbSBpbnNpZGUgYSBzaW5nbGUgZ2Vt IG9iamVjdCB0aGF0IGNvbnRhaW5zIGFsbCByZXF1aXJlZCBwYWdlcyBmb3IgdGhlc2UKKyAqIHN0 cnVjdCBpcyB0aGUgb3duZXIgb2YgYSBwcm9jZXNzIGRlc2NyaXB0b3IgYW5kIGEgd29ya3F1ZXVl IChib3RoIG9mIHRoZW0KKyAqIGluc2lkZSBhIHNpbmdsZSBnZW0gb2JqZWN0IHRoYXQgY29udGFp bnMgYWxsIHJlcXVpcmVkIHBhZ2VzIGZvciB0aGVzZQogICogZWxlbWVudHMpLgogICoKICAqIEd1 QyBzdGFnZSBkZXNjcmlwdG9yOgpAQCAtMzksMTMgKzM5LDEzIEBACiAgKiBkZXNjcmlwdG9ycywg YW5kIHNoYXJlcyB0aGVtIHdpdGggdGhlIEd1Qy4KICAqIEN1cnJlbnRseSwgdGhlcmUgZXhpc3Rz IGEgMToxIG1hcHBpbmcgYmV0d2VlbiBhIGludGVsX2d1Y19jbGllbnQgYW5kIGEKICAqIGd1Y19z dGFnZV9kZXNjICh2aWEgdGhlIGNsaWVudCdzIHN0YWdlX2lkKSwgc28gZWZmZWN0aXZlbHkgb25s eSBvbmUKLSAqIGdldHMgdXNlZC4gVGhpcyBzdGFnZSBkZXNjcmlwdG9yIGxldHMgdGhlIEd1QyBr bm93IGFib3V0IHRoZSBkb29yYmVsbCwKLSAqIHdvcmtxdWV1ZSBhbmQgcHJvY2VzcyBkZXNjcmlw dG9yLiBUaGVvcmV0aWNhbGx5LCBpdCBhbHNvIGxldHMgdGhlIEd1QwotICoga25vdyBhYm91dCBv dXIgSFcgY29udGV4dHMgKGNvbnRleHQgSUQsIGV0Yy4uLiksIGJ1dCB3ZSBhY3R1YWxseQotICog ZW1wbG95IGEga2luZCBvZiBzdWJtaXNzaW9uIHdoZXJlIHRoZSBHdUMgdXNlcyB0aGUgTFJDQSBz ZW50IHZpYSB0aGUgd29yawotICogaXRlbSBpbnN0ZWFkICh0aGUgc2luZ2xlIGd1Y19zdGFnZV9k ZXNjIGFzc29jaWF0ZWQgdG8gZXhlY2J1ZiBjbGllbnQKLSAqIGNvbnRhaW5zIGluZm9ybWF0aW9u IGFib3V0IHRoZSBkZWZhdWx0IGtlcm5lbCBjb250ZXh0IG9ubHksIGJ1dCB0aGlzIGlzCi0gKiBl c3NlbnRpYWxseSB1bnVzZWQpLiBUaGlzIGlzIGNhbGxlZCBhICJwcm94eSIgc3VibWlzc2lvbi4K KyAqIGdldHMgdXNlZC4gVGhpcyBzdGFnZSBkZXNjcmlwdG9yIGxldHMgdGhlIEd1QyBrbm93IGFi b3V0IHRoZSB3b3JrcXVldWUgYW5kCisgKiBwcm9jZXNzIGRlc2NyaXB0b3IuIFRoZW9yZXRpY2Fs bHksIGl0IGFsc28gbGV0cyB0aGUgR3VDIGtub3cgYWJvdXQgb3VyIEhXCisgKiBjb250ZXh0cyAo Y29udGV4dCBJRCwgZXRjLi4uKSwgYnV0IHdlIGFjdHVhbGx5IGVtcGxveSBhIGtpbmQgb2Ygc3Vi bWlzc2lvbgorICogd2hlcmUgdGhlIEd1QyB1c2VzIHRoZSBMUkNBIHNlbnQgdmlhIHRoZSB3b3Jr IGl0ZW0gaW5zdGVhZCAodGhlIHNpbmdsZQorICogZ3VjX3N0YWdlX2Rlc2MgYXNzb2NpYXRlZCB0 byBleGVjYnVmIGNsaWVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIGRlZmF1 bHQga2VybmVsIGNvbnRleHQgb25seSwgYnV0IHRoaXMgaXMgZXNzZW50aWFsbHkgdW51c2VkKS4g VGhpcyBpcyBjYWxsZWQKKyAqIGEgInByb3h5IiBzdWJtaXNzaW9uLgogICoKICAqIFRoZSBTY3Jh dGNoIHJlZ2lzdGVyczoKICAqIFRoZXJlIGFyZSAxNiBNTUlPLWJhc2VkIHJlZ2lzdGVycyBzdGFy dCBmcm9tIDB4QzE4MC4gVGhlIGtlcm5lbCBkcml2ZXIgd3JpdGVzCkBAIC01NiwxMCArNTYsNiBA QAogICogdGhlbiBwcm9jZWVkcy4KICAqIFNlZSBpbnRlbF9ndWNfc2VuZCgpCiAgKgotICogRG9v cmJlbGxzOgotICogRG9vcmJlbGxzIGFyZSBpbnRlcnJ1cHRzIHRvIHVLZXJuZWwuIEEgZG9vcmJl bGwgaXMgYSBzaW5nbGUgY2FjaGUgbGluZSAoUVcpCi0gKiBtYXBwZWQgaW50byBwcm9jZXNzIHNw YWNlLgotICoKICAqIFdvcmsgSXRlbXM6CiAgKiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiB3 b3JrIGl0ZW1zIHRoYXQgdGhlIGhvc3QgbWF5IHBsYWNlIGludG8gYQogICogd29ya3F1ZXVlLCBl YWNoIHdpdGggaXRzIG93biByZXF1aXJlbWVudHMgYW5kIGxpbWl0YXRpb25zLiBDdXJyZW50bHkg b25seQpAQCAtODEsNzggKzc3LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3Jp dHkoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIAkJY2xpZW50LT5wcmlvcml0eSA9 PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0hJR0gpOwogfQogCi1zdGF0aWMgaW50IHJlc2VydmVfZG9v cmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQl1bnNpZ25lZCBsb25n IG9mZnNldDsKLQl1bnNpZ25lZCBsb25nIGVuZDsKLQl1MTYgaWQ7Ci0KLQlHRU1fQlVHX09OKGNs aWVudC0+ZG9vcmJlbGxfaWQgIT0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwotCi0JLyoKLQkgKiBU aGUgYml0bWFwIHRyYWNrcyB3aGljaCBkb29yYmVsbCByZWdpc3RlcnMgYXJlIGN1cnJlbnRseSBp biB1c2UuCi0JICogSXQgaXMgc3BsaXQgaW50byB0d28gaGFsdmVzOyB0aGUgZmlyc3QgaGFsZiBp cyB1c2VkIGZvciBub3JtYWwKLQkgKiBwcmlvcml0eSBjb250ZXh0cywgdGhlIHNlY29uZCBoYWxm IGZvciBoaWdoLXByaW9yaXR5IG9uZXMuCi0JICovCi0Jb2Zmc2V0ID0gMDsKLQllbmQgPSBHVUNf TlVNX0RPT1JCRUxMUyAvIDI7Ci0JaWYgKGlzX2hpZ2hfcHJpb3JpdHkoY2xpZW50KSkgewotCQlv ZmZzZXQgPSBlbmQ7Ci0JCWVuZCArPSBvZmZzZXQ7Ci0JfQotCi0JaWQgPSBmaW5kX25leHRfemVy b19iaXQoY2xpZW50LT5ndWMtPmRvb3JiZWxsX2JpdG1hcCwgZW5kLCBvZmZzZXQpOwotCWlmIChp ZCA9PSBlbmQpCi0JCXJldHVybiAtRU5PU1BDOwotCi0JX19zZXRfYml0KGlkLCBjbGllbnQtPmd1 Yy0+ZG9vcmJlbGxfYml0bWFwKTsKLQljbGllbnQtPmRvb3JiZWxsX2lkID0gaWQ7Ci0JRFJNX0RF QlVHX0RSSVZFUigiY2xpZW50ICV1IChoaWdoIHByaW89JXMpIHJlc2VydmVkIGRvb3JiZWxsOiAl ZFxuIiwKLQkJCSBjbGllbnQtPnN0YWdlX2lkLCB5ZXNubyhpc19oaWdoX3ByaW9yaXR5KGNsaWVu dCkpLAotCQkJIGlkKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGJvb2wgaGFzX2Rvb3JiZWxs KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCi17Ci0JaWYgKGNsaWVudC0+ZG9vcmJl bGxfaWQgPT0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVy biB0ZXN0X2JpdChjbGllbnQtPmRvb3JiZWxsX2lkLCBjbGllbnQtPmd1Yy0+ZG9vcmJlbGxfYml0 bWFwKTsKLX0KLQotc3RhdGljIHZvaWQgdW5yZXNlcnZlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9n dWNfY2xpZW50ICpjbGllbnQpCi17Ci0JR0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkp OwotCi0JX19jbGVhcl9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5ndWMtPmRvb3Ji ZWxsX2JpdG1hcCk7Ci0JY2xpZW50LT5kb29yYmVsbF9pZCA9IEdVQ19ET09SQkVMTF9JTlZBTElE OwotfQotCi0vKgotICogVGVsbCB0aGUgR3VDIHRvIGFsbG9jYXRlIG9yIGRlYWxsb2NhdGUgYSBz cGVjaWZpYyBkb29yYmVsbAotICovCi0KLXN0YXRpYyBpbnQgX19ndWNfYWxsb2NhdGVfZG9vcmJl bGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc3RhZ2VfaWQpCi17Ci0JdTMyIGFjdGlvbltd ID0gewotCQlJTlRFTF9HVUNfQUNUSU9OX0FMTE9DQVRFX0RPT1JCRUxMLAotCQlzdGFnZV9pZAot CX07Ci0KLQlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0 aW9uKSk7Ci19Ci0KLXN0YXRpYyBpbnQgX19ndWNfZGVhbGxvY2F0ZV9kb29yYmVsbChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHUzMiBzdGFnZV9pZCkKLXsKLQl1MzIgYWN0aW9uW10gPSB7Ci0JCUlO VEVMX0dVQ19BQ1RJT05fREVBTExPQ0FURV9ET09SQkVMTCwKLQkJc3RhZ2VfaWQKLQl9OwotCi0J cmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwot fQotCiBzdGF0aWMgc3RydWN0IGd1Y19zdGFnZV9kZXNjICpfX2dldF9zdGFnZV9kZXNjKHN0cnVj dCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CiAJc3RydWN0IGd1Y19zdGFnZV9kZXNjICpi YXNlID0gY2xpZW50LT5ndWMtPnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKQEAgLTE2MCwxMTggKzg0 LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MgKl9fZ2V0X3N0YWdlX2Rlc2Moc3Ry dWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gJmJhc2VbY2xpZW50LT5zdGFn ZV9pZF07CiB9CiAKLS8qCi0gKiBJbml0aWFsaXNlLCB1cGRhdGUsIG9yIGNsZWFyIGRvb3JiZWxs IGRhdGEgc2hhcmVkIHdpdGggdGhlIEd1QwotICoKLSAqIFRoZXNlIGZ1bmN0aW9ucyBtb2RpZnkg c2hhcmVkIGRhdGEgYW5kIHNvIG5lZWQgYWNjZXNzIHRvIHRoZSBtYXBwZWQKLSAqIGNsaWVudCBv YmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHBhZ2UgYmVpbmcgdXNlZCBmb3IgdGhlIGRvb3JiZWxs Ci0gKi8KLQotc3RhdGljIHZvaWQgX191cGRhdGVfZG9vcmJlbGxfZGVzYyhzdHJ1Y3QgaW50ZWxf Z3VjX2NsaWVudCAqY2xpZW50LCB1MTYgbmV3X2lkKQotewotCXN0cnVjdCBndWNfc3RhZ2VfZGVz YyAqZGVzYzsKLQotCS8qIFVwZGF0ZSB0aGUgR3VDJ3MgaWRlYSBvZiB0aGUgZG9vcmJlbGwgSUQg Ki8KLQlkZXNjID0gX19nZXRfc3RhZ2VfZGVzYyhjbGllbnQpOwotCWRlc2MtPmRiX2lkID0gbmV3 X2lkOwotfQotCi1zdGF0aWMgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpfX2dldF9kb29yYmVs bChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQotewotCXJldHVybiBjbGllbnQtPnZh ZGRyICsgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQ7Ci19Ci0KLXN0YXRpYyBib29sIF9fZG9vcmJl bGxfdmFsaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MTYgZGJfaWQpCi17Ci0Jc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKLQotCUdFTV9CVUdf T04oZGJfaWQgPj0gR1VDX05VTV9ET09SQkVMTFMpOwotCXJldHVybiBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIEdFTjhfRFJCUkVHTChkYl9pZCkpICYgR0VOOF9EUkJfVkFMSUQ7Ci19Ci0KLXN0 YXRpYyB2b2lkIF9faW5pdF9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50 KQotewotCXN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Ci0KLQlkb29yYmVsbCA9 IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Ci0JZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09S QkVMTF9FTkFCTEVEOwotCWRvb3JiZWxsLT5jb29raWUgPSAwOwotfQotCi1zdGF0aWMgdm9pZCBf X2ZpbmlfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1 Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxsOwotCXUxNiBkYl9pZCA9IGNsaWVudC0+ZG9v cmJlbGxfaWQ7Ci0KLQlkb29yYmVsbCA9IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Ci0JZG9vcmJl bGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKLQotCS8qIERvb3JiZWxsIHJl bGVhc2UgZmxvdyByZXF1aXJlcyB0aGF0IHdlIHdhaXQgZm9yIEdFTjhfRFJCX1ZBTElEIGJpdAot CSAqIHRvIGdvIHRvIHplcm8gYWZ0ZXIgdXBkYXRpbmcgZGJfc3RhdHVzIGJlZm9yZSB3ZSBjYWxs IHRoZSBHdUMgdG8KLQkgKiByZWxlYXNlIHRoZSBkb29yYmVsbAotCSAqLwotCWlmICh3YWl0X2Zv cl91cyghX19kb29yYmVsbF92YWxpZChjbGllbnQtPmd1YywgZGJfaWQpLCAxMCkpCi0JCVdBUk5f T05DRSh0cnVlLCAiRG9vcmJlbGwgbmV2ZXIgYmVjYW1lIGludmFsaWQgYWZ0ZXIgZGlzYWJsZVxu Iik7Ci19Ci0KLXN0YXRpYyBpbnQgY3JlYXRlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xp ZW50ICpjbGllbnQpCi17Ci0JaW50IHJldDsKLQotCWlmIChXQVJOX09OKCFoYXNfZG9vcmJlbGwo Y2xpZW50KSkpCi0JCXJldHVybiAtRU5PREVWOyAvKiBpbnRlcm5hbCBzZXR1cCBlcnJvciwgc2hv dWxkIG5ldmVyIGhhcHBlbiAqLwotCi0JX191cGRhdGVfZG9vcmJlbGxfZGVzYyhjbGllbnQsIGNs aWVudC0+ZG9vcmJlbGxfaWQpOwotCV9faW5pdF9kb29yYmVsbChjbGllbnQpOwotCi0JcmV0ID0g X19ndWNfYWxsb2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNsaWVudC0+c3RhZ2VfaWQpOwot CWlmIChyZXQpIHsKLQkJX19maW5pX2Rvb3JiZWxsKGNsaWVudCk7Ci0JCV9fdXBkYXRlX2Rvb3Ji ZWxsX2Rlc2MoY2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Ci0JCURSTV9ERUJVR19EUklW RVIoIkNvdWxkbid0IGNyZWF0ZSBjbGllbnQgJXUgZG9vcmJlbGw6ICVkXG4iLAotCQkJCSBjbGll bnQtPnN0YWdlX2lkLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiAwOwotfQot Ci1zdGF0aWMgaW50IGRlc3Ryb3lfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNs aWVudCkKLXsKLQlpbnQgcmV0OwotCi0JR0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkp OwotCi0JX19maW5pX2Rvb3JiZWxsKGNsaWVudCk7Ci0JcmV0ID0gX19ndWNfZGVhbGxvY2F0ZV9k b29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50LT5zdGFnZV9pZCk7Ci0JaWYgKHJldCkKLQkJRFJN X0VSUk9SKCJDb3VsZG4ndCBkZXN0cm95IGNsaWVudCAldSBkb29yYmVsbDogJWRcbiIsCi0JCQkg IGNsaWVudC0+c3RhZ2VfaWQsIHJldCk7Ci0KLQlfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGNsaWVu dCwgR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHVu c2lnbmVkIGxvbmcgX19zZWxlY3RfY2FjaGVsaW5lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsK LQl1bnNpZ25lZCBsb25nIG9mZnNldDsKLQotCS8qIERvb3JiZWxsIHVzZXMgYSBzaW5nbGUgY2Fj aGUgbGluZSB3aXRoaW4gYSBwYWdlICovCi0Jb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoZ3VjLT5k Yl9jYWNoZWxpbmUpOwotCi0JLyogTW92aW5nIHRvIG5leHQgY2FjaGUgbGluZSB0byByZWR1Y2Ug Y29udGVudGlvbiAqLwotCWd1Yy0+ZGJfY2FjaGVsaW5lICs9IGNhY2hlX2xpbmVfc2l6ZSgpOwot Ci0JRFJNX0RFQlVHX0RSSVZFUigicmVzZXJ2ZWQgY2FjaGVsaW5lIDB4JWx4LCBuZXh0IDB4JXgs IGxpbmVzaXplICV1XG4iLAotCQkJIG9mZnNldCwgZ3VjLT5kYl9jYWNoZWxpbmUsIGNhY2hlX2xp bmVfc2l6ZSgpKTsKLQlyZXR1cm4gb2Zmc2V0OwotfQotCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBn dWNfcHJvY2Vzc19kZXNjICoKIF9fZ2V0X3Byb2Nlc3NfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQogewotCXJldHVybiBjbGllbnQtPnZhZGRyICsgY2xpZW50LT5wcm9jX2Rl c2Nfb2Zmc2V0OworCXJldHVybiBjbGllbnQtPnZhZGRyOwogfQogCiAvKgpAQCAtMzMyLDggKzE0 OCw4IEBAIHN0YXRpYyB2b2lkIGd1Y19zdGFnZV9kZXNjX3Bvb2xfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCiAgKiBJbml0aWFsaXNlL2NsZWFyIHRoZSBzdGFnZSBkZXNjcmlwdG9yIHNo YXJlZCB3aXRoIHRoZSBHdUMgZmlybXdhcmUuCiAgKgogICogVGhpcyBkZXNjcmlwdG9yIHRlbGxz IHRoZSBHdUMgd2hlcmUgKGluIEdHVFQgc3BhY2UpIHRvIGZpbmQgdGhlIGltcG9ydGFudAotICog ZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0aW5nIHRvIHRoaXMgY2xpZW50IChkb29yYmVsbCwgcHJvY2Vz cyBkZXNjcmlwdG9yLAotICogd3JpdGUgcXVldWUsIGV0YykuCisgKiBkYXRhIHN0cnVjdHVyZXMg cmVsYXRpbmcgdG8gdGhpcyBjbGllbnQgKHByb2Nlc3MgZGVzY3JpcHRvciwgd3JpdGUgcXVldWUs CisgKiBldGMpLgogICovCiBzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CkBAIC0zNTAsMTkgKzE2NiwxNCBAQCBzdGF0aWMg dm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp CiAJCWRlc2MtPmF0dHJpYnV0ZSB8PSBHVUNfU1RBR0VfREVTQ19BVFRSX1BSRUVNUFQ7CiAJZGVz Yy0+c3RhZ2VfaWQgPSBjbGllbnQtPnN0YWdlX2lkOwogCWRlc2MtPnByaW9yaXR5ID0gY2xpZW50 LT5wcmlvcml0eTsKLQlkZXNjLT5kYl9pZCA9IGNsaWVudC0+ZG9vcmJlbGxfaWQ7CiAKIAkvKgot CSAqIFRoZSBkb29yYmVsbCwgcHJvY2VzcyBkZXNjcmlwdG9yLCBhbmQgd29ya3F1ZXVlIGFyZSBh bGwgcGFydHMKLQkgKiBvZiB0aGUgY2xpZW50IG9iamVjdCwgd2hpY2ggdGhlIEd1QyB3aWxsIHJl ZmVyZW5jZSB2aWEgdGhlIEdHVFQKKwkgKiBUaGUgcHJvY2VzcyBkZXNjcmlwdG9yIGFuZCB3b3Jr cXVldWUgYXJlIGFsbCBwYXJ0cyBvZiB0aGUgY2xpZW50CisJICogb2JqZWN0LCB3aGljaCB0aGUg R3VDIHdpbGwgcmVmZXJlbmNlIHZpYSB0aGUgR0dUVAogCSAqLwogCWdmeF9hZGRyID0gaW50ZWxf Z3VjX2dndHRfb2Zmc2V0KGd1YywgY2xpZW50LT52bWEpOwotCWRlc2MtPmRiX3RyaWdnZXJfcGh5 ID0gc2dfZG1hX2FkZHJlc3MoY2xpZW50LT52bWEtPnBhZ2VzLT5zZ2wpICsKLQkJCQljbGllbnQt PmRvb3JiZWxsX29mZnNldDsKLQlkZXNjLT5kYl90cmlnZ2VyX2NwdSA9IHB0cl90b191NjQoX19n ZXRfZG9vcmJlbGwoY2xpZW50KSk7Ci0JZGVzYy0+ZGJfdHJpZ2dlcl91ayA9IGdmeF9hZGRyICsg Y2xpZW50LT5kb29yYmVsbF9vZmZzZXQ7Ci0JZGVzYy0+cHJvY2Vzc19kZXNjID0gZ2Z4X2FkZHIg KyBjbGllbnQtPnByb2NfZGVzY19vZmZzZXQ7Ci0JZGVzYy0+d3FfYWRkciA9IGdmeF9hZGRyICsg R1VDX0RCX1NJWkU7CisJZGVzYy0+cHJvY2Vzc19kZXNjID0gZ2Z4X2FkZHI7CisJZGVzYy0+d3Ff YWRkciA9IGdmeF9hZGRyICsgR1VDX1BEX1NJWkU7CiAJZGVzYy0+d3Ffc2l6ZSA9IEdVQ19XUV9T SVpFOwogCiAJZGVzYy0+ZGVzY19wcml2YXRlID0gcHRyX3RvX3U2NChjbGllbnQpOwpAQCAtNDA4 LDQ4ICsyMTksMjMgQEAgc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBwZW5kKHN0cnVjdCBpbnRl bF9ndWNfY2xpZW50ICpjbGllbnQsCiAJCQkgICAgICBHVUNfV1FfU0laRSkgPCB3cWlfc2l6ZSk7 CiAJR0VNX0JVR19PTih3cV9vZmYgJiAod3FpX3NpemUgLSAxKSk7CiAKLQkvKiBXUSBzdGFydHMg ZnJvbSB0aGUgcGFnZSBhZnRlciBkb29yYmVsbCAvIHByb2Nlc3NfZGVzYyAqLwotCXdxaSA9IGNs aWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfREJfU0laRTsKLQotCWlmIChJOTE1X1NFTEZURVNU X09OTFkoY2xpZW50LT51c2Vfbm9wX3dxaSkpIHsKLQkJd3FpLT5oZWFkZXIgPSBXUV9UWVBFX05P T1AgfCAod3FpX2xlbiA8PCBXUV9MRU5fU0hJRlQpOwotCX0gZWxzZSB7Ci0JCS8qIE5vdyBmaWxs IGluIHRoZSA0LXdvcmQgd29yayBxdWV1ZSBpdGVtICovCi0JCXdxaS0+aGVhZGVyID0gV1FfVFlQ RV9JTk9SREVSIHwKLQkJCSAgICAgICh3cWlfbGVuIDw8IFdRX0xFTl9TSElGVCkgfAotCQkJICAg ICAgKHRhcmdldF9lbmdpbmUgPDwgV1FfVEFSR0VUX1NISUZUKSB8Ci0JCQkgICAgICBXUV9OT19X Q0ZMVVNIX1dBSVQ7Ci0JCXdxaS0+Y29udGV4dF9kZXNjID0gY29udGV4dF9kZXNjOwotCQl3cWkt PnN1Ym1pdF9lbGVtZW50X2luZm8gPSByaW5nX3RhaWwgPDwgV1FfUklOR19UQUlMX1NISUZUOwot CQlHRU1fQlVHX09OKHJpbmdfdGFpbCA+IFdRX1JJTkdfVEFJTF9NQVgpOwotCQl3cWktPmZlbmNl X2lkID0gZmVuY2VfaWQ7Ci0JfQorCS8qIFdRIHN0YXJ0cyBmcm9tIHRoZSBwYWdlIGFmdGVyIHBy b2Nlc3NfZGVzYyAqLworCXdxaSA9IGNsaWVudC0+dmFkZHIgKyB3cV9vZmYgKyBHVUNfUERfU0la RTsKKworCS8qIE5vdyBmaWxsIGluIHRoZSA0LXdvcmQgd29yayBxdWV1ZSBpdGVtICovCisJd3Fp LT5oZWFkZXIgPSBXUV9UWVBFX0lOT1JERVIgfAorCQkgICAgICAod3FpX2xlbiA8PCBXUV9MRU5f U0hJRlQpIHwKKwkJICAgICAgKHRhcmdldF9lbmdpbmUgPDwgV1FfVEFSR0VUX1NISUZUKSB8CisJ CSAgICAgIFdRX05PX1dDRkxVU0hfV0FJVDsKKwl3cWktPmNvbnRleHRfZGVzYyA9IGNvbnRleHRf ZGVzYzsKKwl3cWktPnN1Ym1pdF9lbGVtZW50X2luZm8gPSByaW5nX3RhaWwgPDwgV1FfUklOR19U QUlMX1NISUZUOworCUdFTV9CVUdfT04ocmluZ190YWlsID4gV1FfUklOR19UQUlMX01BWCk7CisJ d3FpLT5mZW5jZV9pZCA9IGZlbmNlX2lkOwogCiAJLyogTWFrZSB0aGUgdXBkYXRlIHZpc2libGUg dG8gR3VDICovCiAJV1JJVEVfT05DRShkZXNjLT50YWlsLCAod3Ffb2ZmICsgd3FpX3NpemUpICYg KEdVQ19XUV9TSVpFIC0gMSkpOwogfQogCi1zdGF0aWMgdm9pZCBndWNfcmluZ19kb29yYmVsbChz dHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQotewotCXN0cnVjdCBndWNfZG9vcmJlbGxf aW5mbyAqZGI7Ci0JdTMyIGNvb2tpZTsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNsaWVudC0+ d3FfbG9jayk7Ci0KLQkvKiBwb2ludGVyIG9mIGN1cnJlbnQgZG9vcmJlbGwgY2FjaGVsaW5lICov Ci0JZGIgPSBfX2dldF9kb29yYmVsbChjbGllbnQpOwotCi0JLyoKLQkgKiBXZSdyZSBub3QgZXhw ZWN0aW5nIHRoZSBkb29yYmVsbCBjb29raWUgdG8gY2hhbmdlIGJlaGluZCBvdXIgYmFjaywKLQkg KiB3ZSBhbHNvIG5lZWQgdG8gdHJlYXQgMCBhcyBhIHJlc2VydmVkIHZhbHVlLgotCSAqLwotCWNv b2tpZSA9IFJFQURfT05DRShkYi0+Y29va2llKTsKLQlXQVJOX09OX09OQ0UoeGNoZygmZGItPmNv b2tpZSwgY29va2llICsgMSA/OiBjb29raWUgKyAyKSAhPSBjb29raWUpOwotCi0JLyogWFhYOiBk b29yYmVsbCB3YXMgbG9zdCBhbmQgbmVlZCB0byBhY3F1aXJlIGl0IGFnYWluICovCi0JR0VNX0JV R19PTihkYi0+ZGJfc3RhdHVzICE9IEdVQ19ET09SQkVMTF9FTkFCTEVEKTsKLX0KLQogc3RhdGlj IHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCiB7CiAJc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ ZXhlY2J1Zl9jbGllbnQ7CkBAIC00NTksNyArMjQ1LDYgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAK IAlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCiAJ CQkgICByaW5nX3RhaWwsIHJxLT5mZW5jZS5zZXFubyk7Ci0JZ3VjX3JpbmdfZG9vcmJlbGwoY2xp ZW50KTsKIH0KIAogLyoKQEAgLTc0NCwzNiArNTI5LDYgQEAgc3RhdGljIHZvaWQgZ3VjX3Jlc2V0 X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAgKiBwYXRoIG9mIGd1Y19z dWJtaXQoKSBhYm92ZS4KICAqLwogCi0vKiBDaGVjayB0aGF0IGEgZG9vcmJlbGwgcmVnaXN0ZXIg aXMgaW4gdGhlIGV4cGVjdGVkIHN0YXRlICovCi1zdGF0aWMgYm9vbCBkb29yYmVsbF9vayhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsIHUxNiBkYl9pZCkKLXsKLQlib29sIHZhbGlkOwotCi0JR0VNX0JV R19PTihkYl9pZCA+PSBHVUNfTlVNX0RPT1JCRUxMUyk7Ci0KLQl2YWxpZCA9IF9fZG9vcmJlbGxf dmFsaWQoZ3VjLCBkYl9pZCk7Ci0KLQlpZiAodGVzdF9iaXQoZGJfaWQsIGd1Yy0+ZG9vcmJlbGxf Yml0bWFwKSA9PSB2YWxpZCkKLQkJcmV0dXJuIHRydWU7Ci0KLQlEUk1fREVCVUdfRFJJVkVSKCJE b29yYmVsbCAldSBoYXMgdW5leHBlY3RlZCBzdGF0ZTogdmFsaWQ9JXNcbiIsCi0JCQkgZGJfaWQs IHllc25vKHZhbGlkKSk7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGd1Y192 ZXJpZnlfZG9vcmJlbGxzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlib29sIGRvb3JiZWxs c19vayA9IHRydWU7Ci0JdTE2IGRiX2lkOwotCi0JZm9yIChkYl9pZCA9IDA7IGRiX2lkIDwgR1VD X05VTV9ET09SQkVMTFM7ICsrZGJfaWQpCi0JCWlmICghZG9vcmJlbGxfb2soZ3VjLCBkYl9pZCkp Ci0JCQlkb29yYmVsbHNfb2sgPSBmYWxzZTsKLQotCXJldHVybiBkb29yYmVsbHNfb2s7Ci19Ci0K IC8qKgogICogZ3VjX2NsaWVudF9hbGxvYygpIC0gQWxsb2NhdGUgYW4gaW50ZWxfZ3VjX2NsaWVu dAogICogQGd1YzoJdGhlIGludGVsX2d1YyBzdHJ1Y3R1cmUKQEAgLTc5OCw3ICs1NTMsNiBAQCBn dWNfY2xpZW50X2FsbG9jKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHByaW9yaXR5KQogCiAJ Y2xpZW50LT5ndWMgPSBndWM7CiAJY2xpZW50LT5wcmlvcml0eSA9IHByaW9yaXR5OwotCWNsaWVu dC0+ZG9vcmJlbGxfaWQgPSBHVUNfRE9PUkJFTExfSU5WQUxJRDsKIAlzcGluX2xvY2tfaW5pdCgm Y2xpZW50LT53cV9sb2NrKTsKIAogCXJldCA9IGlkYV9zaW1wbGVfZ2V0KCZndWMtPnN0YWdlX2lk cywgMCwgR1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUywKQEAgLTgwOSw3ICs1NjMsNyBAQCBndWNf Y2xpZW50X2FsbG9jKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHByaW9yaXR5KQogCWNsaWVu dC0+c3RhZ2VfaWQgPSByZXQ7CiAKIAkvKiBUaGUgZmlyc3QgcGFnZSBpcyBkb29yYmVsbC9wcm9j X2Rlc2MuIFR3byBmb2xsb3dlZCBwYWdlcyBhcmUgd3EuICovCi0Jdm1hID0gaW50ZWxfZ3VjX2Fs bG9jYXRlX3ZtYShndWMsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOworCXZtYSA9IGludGVs X2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBHVUNfUERfU0laRSArIEdVQ19XUV9TSVpFKTsKIAlpZiAo SVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQlnb3RvIGVycl9pZDsKQEAg LTgyNSwzMSArNTc5LDExIEBAIGd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGludGVsX2d1YyAqZ3Vj LCB1MzIgcHJpb3JpdHkpCiAJfQogCWNsaWVudC0+dmFkZHIgPSB2YWRkcjsKIAotCXJldCA9IHJl c2VydmVfZG9vcmJlbGwoY2xpZW50KTsKLQlpZiAocmV0KQotCQlnb3RvIGVycl92YWRkcjsKLQot CWNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0ID0gX19zZWxlY3RfY2FjaGVsaW5lKGd1Yyk7Ci0KLQkv KgotCSAqIFNpbmNlIHRoZSBkb29yYmVsbCBvbmx5IHJlcXVpcmVzIGEgc2luZ2xlIGNhY2hlbGlu ZSwgd2UgY2FuIHNhdmUKLQkgKiBzcGFjZSBieSBwdXR0aW5nIHRoZSBhcHBsaWNhdGlvbiBwcm9j ZXNzIGRlc2NyaXB0b3IgaW4gdGhlIHNhbWUKLQkgKiBwYWdlLiBVc2UgdGhlIGhhbGYgb2YgdGhl IHBhZ2UgdGhhdCBkb2Vzbid0IGluY2x1ZGUgdGhlIGRvb3JiZWxsLgotCSAqLwotCWlmIChjbGll bnQtPmRvb3JiZWxsX29mZnNldCA+PSAoR1VDX0RCX1NJWkUgLyAyKSkKLQkJY2xpZW50LT5wcm9j X2Rlc2Nfb2Zmc2V0ID0gMDsKLQllbHNlCi0JCWNsaWVudC0+cHJvY19kZXNjX29mZnNldCA9IChH VUNfREJfU0laRSAvIDIpOwotCiAJRFJNX0RFQlVHX0RSSVZFUigibmV3IHByaW9yaXR5ICV1IGNs aWVudCAlcDogc3RhZ2VfaWQgJXVcbiIsCiAJCQkgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50LT5z dGFnZV9pZCk7Ci0JRFJNX0RFQlVHX0RSSVZFUigiZG9vcmJlbGwgaWQgJXUsIGNhY2hlbGluZSBv ZmZzZXQgMHglbHhcbiIsCi0JCQkgY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5kb29yYmVs bF9vZmZzZXQpOwogCiAJcmV0dXJuIGNsaWVudDsKIAotZXJyX3ZhZGRyOgotCWk5MTVfZ2VtX29i amVjdF91bnBpbl9tYXAoY2xpZW50LT52bWEtPm9iaik7CiBlcnJfdm1hOgogCWk5MTVfdm1hX3Vu cGluX2FuZF9yZWxlYXNlKCZjbGllbnQtPnZtYSwgMCk7CiBlcnJfaWQ6CkBAIC04NjEsNyArNTk1 LDYgQEAgZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBwcmlvcml0 eSkKIAogc3RhdGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50 ICpjbGllbnQpCiB7Ci0JdW5yZXNlcnZlX2Rvb3JiZWxsKGNsaWVudCk7CiAJaTkxNV92bWFfdW5w aW5fYW5kX3JlbGVhc2UoJmNsaWVudC0+dm1hLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7CiAJaWRh X3NpbXBsZV9yZW1vdmUoJmNsaWVudC0+Z3VjLT5zdGFnZV9pZHMsIGNsaWVudC0+c3RhZ2VfaWQp OwogCWtmcmVlKGNsaWVudCk7CkBAIC04OTIsNDQgKzYyNSwyMSBAQCBzdGF0aWMgdm9pZCBndWNf Y2xpZW50c19kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJZ3VjX2NsaWVudF9mcmVl KGNsaWVudCk7CiB9CiAKLXN0YXRpYyBpbnQgX19ndWNfY2xpZW50X2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIHZvaWQgX19ndWNfY2xpZW50X2VuYWJsZShz dHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQogewotCWludCByZXQ7Ci0KIAlndWNfcHJv Y19kZXNjX2luaXQoY2xpZW50KTsKIAlndWNfc3RhZ2VfZGVzY19pbml0KGNsaWVudCk7Ci0KLQly ZXQgPSBjcmVhdGVfZG9vcmJlbGwoY2xpZW50KTsKLQlpZiAocmV0KQotCQlnb3RvIGZhaWw7Ci0K LQlyZXR1cm4gMDsKLQotZmFpbDoKLQlndWNfc3RhZ2VfZGVzY19maW5pKGNsaWVudCk7Ci0JZ3Vj X3Byb2NfZGVzY19maW5pKGNsaWVudCk7Ci0JcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQg X19ndWNfY2xpZW50X2Rpc2FibGUoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIHsK LQkvKgotCSAqIEJ5IHRoZSB0aW1lIHdlJ3JlIGhlcmUsIEd1QyBtYXkgaGF2ZSBhbHJlYWR5IGJl ZW4gcmVzZXQuIGlmIHRoYXQgaXMKLQkgKiB0aGUgY2FzZSwgaW5zdGVhZCBvZiB0cnlpbmcgKGlu IHZhaW4pIHRvIGNvbW11bmljYXRlIHdpdGggaXQsIGxldCdzCi0JICoganVzdCBjbGVhbnVwIHRo ZSBkb29yYmVsbCBIVyBhbmQgb3VyIGludGVybmFsIHN0YXRlLgotCSAqLwotCWlmIChpbnRlbF9n dWNfaXNfcnVubmluZyhjbGllbnQtPmd1YykpCi0JCWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsK LQllbHNlCi0JCV9fZmluaV9kb29yYmVsbChjbGllbnQpOwotCiAJZ3VjX3N0YWdlX2Rlc2NfZmlu aShjbGllbnQpOwogCWd1Y19wcm9jX2Rlc2NfZmluaShjbGllbnQpOwogfQogCi1zdGF0aWMgaW50 IGd1Y19jbGllbnRzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgdm9pZCBn dWNfY2xpZW50c19lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewotCXJldHVybiBfX2d1 Y19jbGllbnRfZW5hYmxlKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOworCV9fZ3VjX2NsaWVudF9lbmFi bGUoZ3VjLT5leGVjYnVmX2NsaWVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rp c2FibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQpAQCAtOTU4LDcgKzY2OCw2IEBAIGludCBpbnRl bF9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkgKi8KIAlHRU1f QlVHX09OKCFndWMtPnN0YWdlX2Rlc2NfcG9vbCk7CiAKLQlXQVJOX09OKCFndWNfdmVyaWZ5X2Rv b3JiZWxscyhndWMpKTsKIAlyZXQgPSBndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKIAlpZiAocmV0 KQogCQlnb3RvIGVycl9wb29sOwpAQCAtOTczLDcgKzY4Miw2IEBAIGludCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1p c3Npb25fZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJZ3VjX2NsaWVudHNfZGVzdHJv eShndWMpOwotCVdBUk5fT04oIWd1Y192ZXJpZnlfZG9vcmJlbGxzKGd1YykpOwogCiAJaWYgKGd1 Yy0+c3RhZ2VfZGVzY19wb29sKQogCQlndWNfc3RhZ2VfZGVzY19wb29sX2Rlc3Ryb3koZ3VjKTsK QEAgLTEwODksMTYgKzc5NywxMSBAQCBzdGF0aWMgdm9pZCBndWNfc2V0X2RlZmF1bHRfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJR0VNX0JVR19PTihlbmdpbmUt PmlycV9lbmFibGUgfHwgZW5naW5lLT5pcnFfZGlzYWJsZSk7CiB9CiAKLWludCBpbnRlbF9ndWNf c3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQordm9pZCBpbnRlbF9ndWNf c3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBpbnRl bF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Ci0JaW50IGVycjsKLQotCWVyciA9IGk5MTVf aW5qZWN0X3Byb2JlX2Vycm9yKGd0LT5pOTE1LCAtRU5YSU8pOwotCWlmIChlcnIpCi0JCXJldHVy biBlcnI7CiAKIAkvKgogCSAqIFdlJ3JlIHVzaW5nIEd1QyB3b3JrIGl0ZW1zIGZvciBzdWJtaXR0 aW5nIHdvcmsgdGhyb3VnaCBHdUMuIFNpbmNlCkBAIC0xMTE1LDkgKzgxOCw3IEBAIGludCBpbnRl bF9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCiAJR0VNX0JV R19PTighZ3VjLT5leGVjYnVmX2NsaWVudCk7CiAKLQllcnIgPSBndWNfY2xpZW50c19lbmFibGUo Z3VjKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCWd1Y19jbGllbnRzX2VuYWJsZShndWMp OwogCiAJLyogVGFrZSBvdmVyIGZyb20gbWFudWFsIGNvbnRyb2wgb2YgRUxTUCAoZXhlY2xpc3Rz KSAqLwogCWd1Y19pbnRlcnJ1cHRzX2NhcHR1cmUoZ3QpOwpAQCAtMTEyNiw4ICs4MjcsNiBAQCBp bnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJ ZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gZ3VjX3NldF9kZWZhdWx0X3N1Ym1pc3Np b247CiAJCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbihlbmdpbmUpOwogCX0KLQotCXJl dHVybiAwOwogfQogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQpAQCAtMTE1NSw3ICs4NTQsMyBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNz aW9uX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCWd1Yy0+c3VibWlzc2lv bl9zdXBwb3J0ZWQgPSBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnQoZ3VjKTsKIH0KLQotI2lmIElT X0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQotI2luY2x1ZGUgInNlbGZ0ZXN0X2d1 Yy5jIgotI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfc3VibWlzc2lvbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X3N1Ym1pc3Npb24uaAppbmRleCA1NGQ3MTY4MjgzNTIuLmUyZGViNGU2ZjQyYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oCkBAIC00 NCwyMSArNDQsMTQgQEAgc3RydWN0IGludGVsX2d1Y19jbGllbnQgewogCS8qIGJpdG1hcCBvZiAo aG9zdCkgZW5naW5lIGlkcyAqLwogCXUzMiBwcmlvcml0eTsKIAl1MzIgc3RhZ2VfaWQ7Ci0JdTMy IHByb2NfZGVzY19vZmZzZXQ7Ci0KLQl1MTYgZG9vcmJlbGxfaWQ7Ci0JdW5zaWduZWQgbG9uZyBk b29yYmVsbF9vZmZzZXQ7CiAKIAkvKiBQcm90ZWN0cyBHdUMgY2xpZW50J3MgV1EgYWNjZXNzICov CiAJc3BpbmxvY2tfdCB3cV9sb2NrOwotCi0JLyogRm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBu b3AgV1EgaXRlbXMgaW5zdGVhZCBvZiByZWFsIG9uZXMgKi8KLQlJOTE1X1NFTEZURVNUX0RFQ0xB UkUoYm9vbCB1c2Vfbm9wX3dxaSk7CiB9OwogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2lu aXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIGludCBpbnRlbF9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Ci1pbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f ZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9u X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lv bl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiB2b2lkIGludGVsX2d1Y19zdWJtaXNz aW9uX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIGludCBpbnRlbF9ndWNfcHJlZW1wdF93 b3JrX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX3VjLmMKaW5kZXggNjI5YjE5Mzc3YTI5Li5jNjUxOTA2NmEwZjYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwpAQCAtNDg2LDExICs0ODYsOCBAQCBpbnQgaW50ZWxf dWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX2Nv bW11bmljYXRpb247CiAKLQlpZiAoaW50ZWxfdWNfc3VwcG9ydHNfZ3VjX3N1Ym1pc3Npb24odWMp KSB7Ci0JCXJldCA9IGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShndWMpOwotCQlpZiAocmV0 KQotCQkJZ290byBlcnJfY29tbXVuaWNhdGlvbjsKLQl9CisJaWYgKGludGVsX3VjX3N1cHBvcnRz X2d1Y19zdWJtaXNzaW9uKHVjKSkKKwkJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKGd1Yyk7 CiAKIAlkZXZfaW5mbyhpOTE1LT5kcm0uZGV2LCAiJXMgZmlybXdhcmUgJXMgdmVyc2lvbiAldS4l dSAlczolc1xuIiwKIAkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcihJTlRFTF9VQ19GV19UWVBFX0dV QyksIGd1Yy0+ZncucGF0aCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L3NlbGZ0ZXN0X2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvc2VsZnRlc3RfZ3Vj LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YTgwMzg4YmQzMS4uMDAwMDAwMDAw MDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL3NlbGZ0ZXN0X2d1Yy5jCisrKyAv ZGV2L251bGwKQEAgLTEsMjk5ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQKLS8qCi0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotICovCi0KLSNp bmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCi0jaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3BtLmgiCi0K LS8qIG1heCBkb29yYmVsbCBudW1iZXIgKyBuZWdhdGl2ZSB0ZXN0IGZvciBlYWNoIGNsaWVudCB0 eXBlICovCi0jZGVmaW5lIEFUVEVNUFRTIChHVUNfTlVNX0RPT1JCRUxMUyArIEdVQ19DTElFTlRf UFJJT1JJVFlfTlVNKQotCi1zdGF0aWMgc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudHNb QVRURU1QVFNdOwotCi1zdGF0aWMgYm9vbCBhdmFpbGFibGVfZGJzKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywgdTMyIHByaW9yaXR5KQotewotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotCXVuc2lnbmVk IGxvbmcgZW5kOwotCXUxNiBpZDsKLQotCS8qIGZpcnN0IGhhbGYgaXMgdXNlZCBmb3Igbm9ybWFs IHByaW9yaXR5LCBzZWNvbmQgaGFsZiBmb3IgaGlnaCAqLwotCW9mZnNldCA9IDA7Ci0JZW5kID0g R1VDX05VTV9ET09SQkVMTFMgLyAyOwotCWlmIChwcmlvcml0eSA8PSBHVUNfQ0xJRU5UX1BSSU9S SVRZX0hJR0gpIHsKLQkJb2Zmc2V0ID0gZW5kOwotCQllbmQgKz0gb2Zmc2V0OwotCX0KLQotCWlk ID0gZmluZF9uZXh0X3plcm9fYml0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBlbmQsIG9mZnNldCk7 Ci0JaWYgKGlkIDwgZW5kKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQot c3RhdGljIGludCBjaGVja19hbGxfZG9vcmJlbGxzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsK LQl1MTYgZGJfaWQ7Ci0KLQlwcl9pbmZvX29uY2UoIk1heCBudW1iZXIgb2YgZG9vcmJlbGxzOiAl ZCIsIEdVQ19OVU1fRE9PUkJFTExTKTsKLQlmb3IgKGRiX2lkID0gMDsgZGJfaWQgPCBHVUNfTlVN X0RPT1JCRUxMUzsgKytkYl9pZCkgewotCQlpZiAoIWRvb3JiZWxsX29rKGd1YywgZGJfaWQpKSB7 Ci0JCQlwcl9lcnIoImRvb3JiZWxsICVkLCBub3Qgb2tcbiIsIGRiX2lkKTsKLQkJCXJldHVybiAt RUlPOwotCQl9Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgcmluZ19kb29yYmVs bF9ub3Aoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKLXsKLQlzdHJ1Y3QgZ3VjX3By b2Nlc3NfZGVzYyAqZGVzYyA9IF9fZ2V0X3Byb2Nlc3NfZGVzYyhjbGllbnQpOwotCWludCBlcnI7 Ci0KLQljbGllbnQtPnVzZV9ub3Bfd3FpID0gdHJ1ZTsKLQotCXNwaW5fbG9ja19pcnEoJmNsaWVu dC0+d3FfbG9jayk7Ci0KLQlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCAwLCAwLCAwLCAwKTsK LQlndWNfcmluZ19kb29yYmVsbChjbGllbnQpOwotCi0Jc3Bpbl91bmxvY2tfaXJxKCZjbGllbnQt PndxX2xvY2spOwotCi0JY2xpZW50LT51c2Vfbm9wX3dxaSA9IGZhbHNlOwotCi0JLyogaWYgdGhl cmUgYXJlIG5vIGlzc3VlcyBHdUMgd2lsbCB1cGRhdGUgdGhlIFdRIGhlYWQgYW5kIGtlZXAgdGhl Ci0JICogV1EgaW4gYWN0aXZlIHN0YXR1cwotCSAqLwotCWVyciA9IHdhaXRfZm9yKFJFQURfT05D RShkZXNjLT5oZWFkKSA9PSBSRUFEX09OQ0UoZGVzYy0+dGFpbCksIDEwKTsKLQlpZiAoZXJyKSB7 Ci0JCXByX2VycigiZG9vcmJlbGwgJXUgcmluZyBmYWlsZWQhXG4iLCBjbGllbnQtPmRvb3JiZWxs X2lkKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JaWYgKGRlc2MtPndxX3N0YXR1cyAhPSBXUV9T VEFUVVNfQUNUSVZFKSB7Ci0JCXByX2VycigiZG9vcmJlbGwgJXUgcmluZyBwdXQgV1EgaW4gYmFk IHN0YXRlICgldSkhXG4iLAotCQkgICAgICAgY2xpZW50LT5kb29yYmVsbF9pZCwgZGVzYy0+d3Ff c3RhdHVzKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBC YXNpYyBjbGllbnQgc2FuaXR5IGNoZWNrLCBoYW5keSB0byB2YWxpZGF0ZSBjcmVhdGVfY2xpZW50 cy4KLSAqLwotc3RhdGljIGludCB2YWxpZGF0ZV9jbGllbnQoc3RydWN0IGludGVsX2d1Y19jbGll bnQgKmNsaWVudCwgaW50IGNsaWVudF9wcmlvcml0eSkKLXsKLQlpZiAoY2xpZW50LT5wcmlvcml0 eSAhPSBjbGllbnRfcHJpb3JpdHkgfHwKLQkgICAgY2xpZW50LT5kb29yYmVsbF9pZCA9PSBHVUNf RE9PUkJFTExfSU5WQUxJRCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JZWxzZQotCQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIGJvb2wgY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoc3RydWN0IGludGVsX2d1 Y19jbGllbnQgKmNsaWVudCkKLXsKLQlyZXR1cm4gIWNsaWVudCB8fCBkb29yYmVsbF9vayhjbGll bnQtPmd1YywgY2xpZW50LT5kb29yYmVsbF9pZCk7Ci19Ci0KLS8qCi0gKiBDaGVjayB0aGF0IHdl J3JlIGFibGUgdG8gc3luY2hyb25pemUgZ3VjX2NsaWVudHMgd2l0aCB0aGVpciBkb29yYmVsbHMK LSAqCi0gKiBXZSdyZSBjcmVhdGluZyBjbGllbnRzIGFuZCByZXNlcnZpbmcgZG9vcmJlbGxzIG9u Y2UsIGF0IG1vZHVsZSBsb2FkLiBEdXJpbmcKLSAqIG1vZHVsZSBsaWZldGltZSwgR3VDLCBkb29y YmVsbCBIVywgYW5kIGk5MTUgc3RhdGUgbWF5IGdvIG91dCBvZiBzeW5jIGR1ZSB0bwotICogR3VD IGJlaW5nIHJlc2V0LiBJbiBvdGhlciB3b3JkcyAtIEd1QyBjbGllbnRzIGFyZSBzdGlsbCBhcm91 bmQsIGJ1dCB0aGUKLSAqIHN0YXR1cyBvZiB0aGVpciBkb29yYmVsbHMgbWF5IGJlIGluY29ycmVj dC4gVGhpcyBpcyB0aGUgcmVhc29uIGJlaGluZAotICogdmFsaWRhdGluZyB0aGF0IHRoZSBkb29y YmVsbHMgc3RhdHVzIGV4cGVjdGVkIGJ5IHRoZSBkcml2ZXIgbWF0Y2hlcyB3aGF0IHRoZQotICog R3VDL0hXIGhhdmUuCi0gKi8KLXN0YXRpYyBpbnQgaWd0X2d1Y19jbGllbnRzKHZvaWQgKmFyZykK LXsKLQlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOwotCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9 ICZndC0+dWMuZ3VjOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWludCBlcnIgPSAwOwot Ci0JR0VNX0JVR19PTighSEFTX0dUX1VDKGd0LT5pOTE1KSk7Ci0Jd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KGd0LT51bmNvcmUtPnJwbSk7Ci0KLQllcnIgPSBjaGVja19hbGxfZG9vcmJl bGxzKGd1Yyk7Ci0JaWYgKGVycikKLQkJZ290byB1bmxvY2s7Ci0KLQkvKgotCSAqIEdldCByaWQg b2YgY2xpZW50cyBjcmVhdGVkIGR1cmluZyBkcml2ZXIgbG9hZCBiZWNhdXNlIHRoZSB0ZXN0IHdp bGwKLQkgKiByZWNyZWF0ZSB0aGVtLgotCSAqLwotCWd1Y19jbGllbnRzX2Rpc2FibGUoZ3VjKTsK LQlndWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Ci0JaWYgKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpIHsK LQkJcHJfZXJyKCJndWNfY2xpZW50c19kZXN0cm95IGxpZWQhXG4iKTsKLQkJZXJyID0gLUVJTlZB TDsKLQkJZ290byB1bmxvY2s7Ci0JfQotCi0JZXJyID0gZ3VjX2NsaWVudHNfY3JlYXRlKGd1Yyk7 Ci0JaWYgKGVycikgewotCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgY2xpZW50c1xuIik7Ci0J CWdvdG8gdW5sb2NrOwotCX0KLQlHRU1fQlVHX09OKCFndWMtPmV4ZWNidWZfY2xpZW50KTsKLQot CWVyciA9IHZhbGlkYXRlX2NsaWVudChndWMtPmV4ZWNidWZfY2xpZW50LAotCQkJICAgICAgR1VD X0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMKTsKLQlpZiAoZXJyKSB7Ci0JCXByX2VycigiZXhl Y2J1ZyBjbGllbnQgdmFsaWRhdGlvbiBmYWlsZWRcbiIpOwotCQlnb3RvIG91dDsKLQl9Ci0KLQkv KiB0aGUgY2xpZW50IHNob3VsZCBub3cgaGF2ZSByZXNlcnZlZCBhIGRvb3JiZWxsICovCi0JaWYg KCFoYXNfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKLQkJcHJfZXJyKCJndWNfY2xp ZW50c19jcmVhdGUgZGlkbid0IHJlc2VydmUgZG9vcmJlbGxzXG4iKTsKLQkJZXJyID0gLUVJTlZB TDsKLQkJZ290byBvdXQ7Ci0JfQotCi0JLyogTm93IGVuYWJsZSB0aGUgY2xpZW50cyAqLwotCWd1 Y19jbGllbnRzX2VuYWJsZShndWMpOwotCi0JLyogZWFjaCBjbGllbnQgc2hvdWxkIG5vdyBoYXZl IHJlY2VpdmVkIGEgZG9vcmJlbGwgKi8KLQlpZiAoIWNsaWVudF9kb29yYmVsbF9pbl9zeW5jKGd1 Yy0+ZXhlY2J1Zl9jbGllbnQpKSB7Ci0JCXByX2VycigiZmFpbGVkIHRvIGluaXRpYWxpemUgdGhl IGRvb3JiZWxsc1xuIik7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwotCX0KLQotCS8q Ci0JICogQmFzaWMgdGVzdCAtIGFuIGF0dGVtcHQgdG8gcmVhbGxvY2F0ZSBhIHZhbGlkIGRvb3Ji ZWxsIHRvIHRoZQotCSAqIGNsaWVudCBpdCBpcyBjdXJyZW50bHkgYXNzaWduZWQgc2hvdWxkIG5v dCBjYXVzZSBhIGZhaWx1cmUuCi0JICovCi0JZXJyID0gY3JlYXRlX2Rvb3JiZWxsKGd1Yy0+ZXhl Y2J1Zl9jbGllbnQpOwotCi1vdXQ6Ci0JLyoKLQkgKiBMZWF2ZSBjbGVhbiBzdGF0ZSBmb3Igb3Ro ZXIgdGVzdCwgcGx1cyB0aGUgZHJpdmVyIGFsd2F5cyBkZXN0cm95IHRoZQotCSAqIGNsaWVudHMg ZHVyaW5nIHVubG9hZC4KLQkgKi8KLQlndWNfY2xpZW50c19kaXNhYmxlKGd1Yyk7Ci0JZ3VjX2Ns aWVudHNfZGVzdHJveShndWMpOwotCWd1Y19jbGllbnRzX2NyZWF0ZShndWMpOwotCWd1Y19jbGll bnRzX2VuYWJsZShndWMpOwotdW5sb2NrOgotCWludGVsX3J1bnRpbWVfcG1fcHV0KGd0LT51bmNv cmUtPnJwbSwgd2FrZXJlZik7Ci0JcmV0dXJuIGVycjsKLX0KLQotLyoKLSAqIENyZWF0ZSBhcyBt YW55IGNsaWVudHMgYXMgbnVtYmVyIG9mIGRvb3JiZWxscy4gTm90ZSB0aGF0IHRoZXJlJ3MgYWxy ZWFkeQotICogY2xpZW50KHMpL2Rvb3JiZWxsKHMpIGNyZWF0ZWQgZHVyaW5nIGRyaXZlciBsb2Fk LCBidXQgdGhpcyB0ZXN0IGNyZWF0ZXMKLSAqIGl0cyBvd24gYW5kIGRvIG5vdCBpbnRlcmFjdCB3 aXRoIHRoZSBleGlzdGluZyBvbmVzLgotICovCi1zdGF0aWMgaW50IGlndF9ndWNfZG9vcmJlbGxz KHZvaWQgKmFyZykKLXsKLQlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOwotCXN0cnVjdCBpbnRl bF9ndWMgKmd1YyA9ICZndC0+dWMuZ3VjOwotCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWlu dCBpLCBlcnIgPSAwOwotCXUxNiBkYl9pZDsKLQotCUdFTV9CVUdfT04oIUhBU19HVF9VQyhndC0+ aTkxNSkpOwotCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChndC0+dW5jb3JlLT5ycG0p OwotCi0JZXJyID0gY2hlY2tfYWxsX2Rvb3JiZWxscyhndWMpOwotCWlmIChlcnIpCi0JCWdvdG8g dW5sb2NrOwotCi0JZm9yIChpID0gMDsgaSA8IEFUVEVNUFRTOyBpKyspIHsKLQkJY2xpZW50c1tp XSA9IGd1Y19jbGllbnRfYWxsb2MoZ3VjLCBpICUgR1VDX0NMSUVOVF9QUklPUklUWV9OVU0pOwot Ci0JCWlmICghY2xpZW50c1tpXSkgewotCQkJcHJfZXJyKCJbJWRdIE5vIGd1YyBjbGllbnRcbiIs IGkpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gb3V0OwotCQl9Ci0KLQkJaWYgKElTX0VS UihjbGllbnRzW2ldKSkgewotCQkJaWYgKFBUUl9FUlIoY2xpZW50c1tpXSkgIT0gLUVOT1NQQykg ewotCQkJCXByX2VycigiWyVkXSB1bmV4cGVjdGVkIGVycm9yXG4iLCBpKTsKLQkJCQllcnIgPSBQ VFJfRVJSKGNsaWVudHNbaV0pOwotCQkJCWdvdG8gb3V0OwotCQkJfQotCi0JCQlpZiAoYXZhaWxh YmxlX2RicyhndWMsIGkgJSBHVUNfQ0xJRU5UX1BSSU9SSVRZX05VTSkpIHsKLQkJCQlwcl9lcnIo IlslZF0gbm9uLWRiIHJlbGF0ZWQgYWxsb2MgZmFpbFxuIiwgaSk7Ci0JCQkJZXJyID0gLUVJTlZB TDsKLQkJCQlnb3RvIG91dDsKLQkJCX0KLQotCQkJLyogZXhwZWN0ZWQsIHJhbiBvdXQgb2YgZGJz IGZvciB0aGlzIGNsaWVudCB0eXBlICovCi0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAq IFRoZSBjaGVjayBiZWxvdyBpcyBvbmx5IHZhbGlkIGJlY2F1c2Ugd2Uga2VlcCBhIGRvb3JiZWxs Ci0JCSAqIGFzc2lnbmVkIGR1cmluZyB0aGUgd2hvbGUgbGlmZSBvZiB0aGUgY2xpZW50LgotCQkg Ki8KLQkJaWYgKGNsaWVudHNbaV0tPnN0YWdlX2lkID49IEdVQ19OVU1fRE9PUkJFTExTKSB7Ci0J CQlwcl9lcnIoIlslZF0gbW9yZSBjbGllbnRzIHRoYW4gZG9vcmJlbGxzICglZCA+PSAlZClcbiIs Ci0JCQkgICAgICAgaSwgY2xpZW50c1tpXS0+c3RhZ2VfaWQsIEdVQ19OVU1fRE9PUkJFTExTKTsK LQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCWVyciA9IHZhbGlkYXRl X2NsaWVudChjbGllbnRzW2ldLCBpICUgR1VDX0NMSUVOVF9QUklPUklUWV9OVU0pOwotCQlpZiAo ZXJyKSB7Ci0JCQlwcl9lcnIoIlslZF0gY2xpZW50X2FsbG9jIHNhbml0eSBjaGVjayBmYWlsZWQh XG4iLCBpKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCWRiX2lk ID0gY2xpZW50c1tpXS0+ZG9vcmJlbGxfaWQ7Ci0KLQkJZXJyID0gX19ndWNfY2xpZW50X2VuYWJs ZShjbGllbnRzW2ldKTsKLQkJaWYgKGVycikgewotCQkJcHJfZXJyKCJbJWRdIEZhaWxlZCB0byBj cmVhdGUgYSBkb29yYmVsbFxuIiwgaSk7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCS8qIGRvb3Ji ZWxsIGlkIHNob3VsZG4ndCBjaGFuZ2UsIHdlIGFyZSBob2xkaW5nIHRoZSBtdXRleCAqLwotCQlp ZiAoZGJfaWQgIT0gY2xpZW50c1tpXS0+ZG9vcmJlbGxfaWQpIHsKLQkJCXByX2VycigiWyVkXSBk b29yYmVsbCBpZCBjaGFuZ2VkICglZCAhPSAlZClcbiIsCi0JCQkgICAgICAgaSwgZGJfaWQsIGNs aWVudHNbaV0tPmRvb3JiZWxsX2lkKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDsK LQkJfQotCi0JCWVyciA9IGNoZWNrX2FsbF9kb29yYmVsbHMoZ3VjKTsKLQkJaWYgKGVycikKLQkJ CWdvdG8gb3V0OwotCi0JCWVyciA9IHJpbmdfZG9vcmJlbGxfbm9wKGNsaWVudHNbaV0pOwotCQlp ZiAoZXJyKQotCQkJZ290byBvdXQ7Ci0JfQotCi1vdXQ6Ci0JZm9yIChpID0gMDsgaSA8IEFUVEVN UFRTOyBpKyspCi0JCWlmICghSVNfRVJSX09SX05VTEwoY2xpZW50c1tpXSkpIHsKLQkJCV9fZ3Vj X2NsaWVudF9kaXNhYmxlKGNsaWVudHNbaV0pOwotCQkJZ3VjX2NsaWVudF9mcmVlKGNsaWVudHNb aV0pOwotCQl9Ci11bmxvY2s6Ci0JaW50ZWxfcnVudGltZV9wbV9wdXQoZ3QtPnVuY29yZS0+cnBt LCB3YWtlcmVmKTsKLQlyZXR1cm4gZXJyOwotfQotCi1pbnQgaW50ZWxfZ3VjX2xpdmVfc2VsZnRl c3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0Jc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKLQkJU1VCVEVTVChpZ3RfZ3VjX2NsaWVudHMpLAot CQlTVUJURVNUKGlndF9ndWNfZG9vcmJlbGxzKSwKLQl9OwotCi0JaWYgKCFVU0VTX0dVQ19TVUJN SVNTSU9OKGk5MTUpKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiBpbnRlbF9ndF9saXZlX3N1YnRl c3RzKHRlc3RzLCAmaTkxNS0+Z3QpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCBjYWI2MzI3OTFmNzMuLjVkNTk3NGU3ZjNlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKQEAgLTE4MTUsMTcgKzE4MTUsMTAgQEAgc3RhdGljIGludCBpOTE1X2d1Y19pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCUdFTV9CVUdfT04oIWd1Yy0+ZXhl Y2J1Zl9jbGllbnQpOwogCi0Jc2VxX3ByaW50ZihtLCAiXG5Eb29yYmVsbCBtYXA6XG4iKTsKLQlz ZXFfcHJpbnRmKG0sICJcdCUqcGJcbiIsIEdVQ19OVU1fRE9PUkJFTExTLCBndWMtPmRvb3JiZWxs X2JpdG1hcCk7Ci0Jc2VxX3ByaW50ZihtLCAiRG9vcmJlbGwgbmV4dCBjYWNoZWxpbmU6IDB4JXhc biIsIGd1Yy0+ZGJfY2FjaGVsaW5lKTsKLQogCXNlcV9wcmludGYobSwgIlxuR3VDIGV4ZWNidWYg Y2xpZW50IEAgJXA6XG4iLCBjbGllbnQpOwotCXNlcV9wcmludGYobSwgIlx0UHJpb3JpdHkgJWQs IEd1QyBzdGFnZSBpbmRleDogJXUsIFBEIG9mZnNldCAweCV4XG4iLAorCXNlcV9wcmludGYobSwg Ilx0UHJpb3JpdHkgJWQsIEd1QyBzdGFnZSBpbmRleDogJXVcbiIsCiAJCSAgIGNsaWVudC0+cHJp b3JpdHksCi0JCSAgIGNsaWVudC0+c3RhZ2VfaWQsCi0JCSAgIGNsaWVudC0+cHJvY19kZXNjX29m ZnNldCk7Ci0Jc2VxX3ByaW50ZihtLCAiXHREb29yYmVsbCBpZCAlZCwgb2Zmc2V0OiAweCVseFxu IiwKLQkJICAgY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQpOwor CQkgICBjbGllbnQtPnN0YWdlX2lkKTsKIAkvKiBBZGQgbW9yZSBhcyByZXF1aXJlZCAuLi4gKi8K IAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2xpdmVfc2VsZnRlc3RzLmgKaW5kZXggNGIzY2FjNzNlMjkxLi5mYjAzZjhhOTBjYWMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRl c3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxm dGVzdHMuaApAQCAtMzYsNSArMzYsNCBAQCBzZWxmdGVzdChyZXNldCwgaW50ZWxfcmVzZXRfbGl2 ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChtZW1vcnlfcmVnaW9uLCBpbnRlbF9tZW1vcnlfcmVnaW9u X2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoaGFuZ2NoZWNrLCBpbnRlbF9oYW5nY2hlY2tfbGl2 ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChleGVjbGlzdHMsIGludGVsX2V4ZWNsaXN0c19saXZlX3Nl bGZ0ZXN0cykKLXNlbGZ0ZXN0KGd1YywgaW50ZWxfZ3VjX2xpdmVfc2VsZnRlc3QpCiBzZWxmdGVz dChwZXJmLCBpOTE1X3BlcmZfbGl2ZV9zZWxmdGVzdHMpCi0tIAoyLjIzLjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==