From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [CI 5/7] drm/i915/guc: Extract doorbell creation from client allocation Date: Wed, 13 Dec 2017 23:13:50 +0100 Message-ID: <20171213221352.7173-5-michal.winiarski@intel.com> References: <20171213221352.7173-1-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDD5A6E5F0 for ; Wed, 13 Dec 2017 22:16:00 +0000 (UTC) In-Reply-To: <20171213221352.7173-1-michal.winiarski@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 RnVsbCBHUFUgcmVzZXQgY2F1c2VzIEd1QyB0byBiZSByZXNldC4gVGhpcyBtZWFucyB0aGF0IGV2 ZXJ5IHRpbWUgd2UncmUKZG9pbmcgYSByZXNldCwgd2UgbmVlZCB0byB0YWxrIHRvIEd1QyBhbmQg dGVsbCBpdCBhYm91dCBkb29yYmVsbHMuCkxldCdzIHNlcGFyYXRlIHRoZSBjb21tdW5pY2F0aW9u IHBhcnQgKGNyZWF0ZV9kb29yYmVsbCkgZnJvbSBvdXIKaW50ZXJuYWwgYm9va2tlZXBpbmcgKHJl c2VydmVfZG9vcmJlbGwpIHNvIHRoYXQgd2UgY2FuIGNsZWFubHkgc2VwYXJhdGUKdGhlIGluaXRp YWxpemF0aW9uIGRvbmUgYXQgbW9kdWxlIGxvYWQgZnJvbSByZWluaXRpYWxpemF0aW9uIGRvbmUg YXQKcmVzZXQgaW4gdGhlIGZvbGxvd2luZyBwYXRjaC4KV2hpbGUgSSdtIGhlcmUsIGxldCdzIGFs c28gYWRkIGEgcHJvcGVyIChhbHRob3VnaCBzbGlnaHRseSBhc3ltZXRyaWMpCmNsZWFudXAgdGhh dCBkb2Vzbid0IHRyeSB0byBjb21tdW5pY2F0ZSB3aXRoIEd1QyBhZnRlciBpdCdzIGFscmVhZHkK Z29uZSwgZ2V0dGluZyByaWQgb2YgImV4cGVjdGVkIiB3YXJuaW5ncyBjYXVzZWQgYnkgR3VDIGFj dGlvbiBmYWlsdXJlcwpvbiBtb2R1bGUgdW5sb2FkLgoKTm90ZSB0aGF0IEkndmUgYWxzbyByZW1v dmVkIG9uZSBvZiB0aGUgdGVzdHMgKGJpdG1hcCBvdXQgb2Ygc3luYyksIHNpbmNlCml0IGRvZXNu J3QgbWFrZSBtdWNoIHNlbnNlIGFueW1vcmUgLSBiaXRtYXBzIGFyZSBub3cgbm90IGV4cGVjdGVk IHRvCmNoYW5nZSBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIGEgY2xpZW50LgoKU2lnbmVkLW9mZi1i eTogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgpDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBNaWNoYWwgV2FqZGVjemtvIDxt aWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhp ZXJyeUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVy cnlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNz aW9uLmMgfCAxNTEgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jICB8IDExMCArKysrKysrKystLS0tLS0tLS0tLQog MiBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspLCAxNzMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggOGY0YjI3NGQ2 NmE3Li5jNzRlNzhiNmJhNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGlnaF9w cmlvcml0eShzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQogCQljbGllbnQtPnByaW9y aXR5ID09IEdVQ19DTElFTlRfUFJJT1JJVFlfSElHSCk7CiB9CiAKLXN0YXRpYyBpbnQgX19yZXNl cnZlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgaW50 IHJlc2VydmVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKIHsKIAl1 bnNpZ25lZCBsb25nIG9mZnNldDsKIAl1bnNpZ25lZCBsb25nIGVuZDsKQEAgLTEyMCw3ICsxMjAs NyBAQCBzdGF0aWMgaW50IF9fcmVzZXJ2ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVu dCAqY2xpZW50KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBfX3VucmVzZXJ2ZV9kb29y YmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQorc3RhdGljIHZvaWQgdW5yZXNl cnZlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CiAJR0VNX0JV R19PTihjbGllbnQtPmRvb3JiZWxsX2lkID09IEdVQ19ET09SQkVMTF9JTlZBTElEKTsKIApAQCAt MTg4LDMyICsxODgsMjEgQEAgc3RhdGljIGJvb2wgaGFzX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9n dWNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIHRlc3RfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQs IGNsaWVudC0+Z3VjLT5kb29yYmVsbF9iaXRtYXApOwogfQogCi1zdGF0aWMgaW50IF9fY3JlYXRl X2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgdm9pZCBf X2NyZWF0ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQogewogCXN0 cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Ci0JaW50IGVycjsKIAogCWRvb3JiZWxs ID0gX19nZXRfZG9vcmJlbGwoY2xpZW50KTsKIAlkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RP T1JCRUxMX0VOQUJMRUQ7CiAJZG9vcmJlbGwtPmNvb2tpZSA9IDA7Ci0KLQllcnIgPSBfX2d1Y19h bGxvY2F0ZV9kb29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50LT5zdGFnZV9pZCk7Ci0JaWYgKGVy cikgewotCQlkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxMX0RJU0FCTEVEOwotCQlE Uk1fRVJST1IoIkNvdWxkbid0IGNyZWF0ZSBjbGllbnQgJXUgZG9vcmJlbGw6ICVkXG4iLAotCQkJ ICBjbGllbnQtPnN0YWdlX2lkLCBlcnIpOwotCX0KLQotCXJldHVybiBlcnI7CiB9CiAKLXN0YXRp YyBpbnQgX19kZXN0cm95X2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp CitzdGF0aWMgdm9pZCBfX2Rlc3Ryb3lfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQg KmNsaWVudCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9f aTkxNShjbGllbnQtPmd1Yyk7CiAJc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpkb29yYmVsbDsK IAl1MTYgZGJfaWQgPSBjbGllbnQtPmRvb3JiZWxsX2lkOwogCi0JR0VNX0JVR19PTihkYl9pZCA+ PSBHVUNfRE9PUkJFTExfSU5WQUxJRCk7CiAKIAlkb29yYmVsbCA9IF9fZ2V0X2Rvb3JiZWxsKGNs aWVudCk7CiAJZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKQEAg LTIyNSw1MCArMjE0LDQyIEBAIHN0YXRpYyBpbnQgX19kZXN0cm95X2Rvb3JiZWxsKHN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiAJICovCiAJaWYgKHdhaXRfZm9yX3VzKCEoSTkxNV9S RUFEKEdFTjhfRFJCUkVHTChkYl9pZCkpICYgR0VOOF9EUkJfVkFMSUQpLCAxMCkpCiAJCVdBUk5f T05DRSh0cnVlLCAiRG9vcmJlbGwgbmV2ZXIgYmVjYW1lIGludmFsaWQgYWZ0ZXIgZGlzYWJsZVxu Iik7Ci0KLQlyZXR1cm4gX19ndWNfZGVhbGxvY2F0ZV9kb29yYmVsbChjbGllbnQtPmd1YywgY2xp ZW50LT5zdGFnZV9pZCk7CiB9CiAKIHN0YXRpYyBpbnQgY3JlYXRlX2Rvb3JiZWxsKHN0cnVjdCBp bnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IF9fcmVzZXJ2 ZV9kb29yYmVsbChjbGllbnQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KIAlfX3VwZGF0 ZV9kb29yYmVsbF9kZXNjKGNsaWVudCwgY2xpZW50LT5kb29yYmVsbF9pZCk7CisJX19jcmVhdGVf ZG9vcmJlbGwoY2xpZW50KTsKIAotCXJldCA9IF9fY3JlYXRlX2Rvb3JiZWxsKGNsaWVudCk7Ci0J aWYgKHJldCkKLQkJZ290byBlcnI7CisJcmV0ID0gX19ndWNfYWxsb2NhdGVfZG9vcmJlbGwoY2xp ZW50LT5ndWMsIGNsaWVudC0+c3RhZ2VfaWQpOworCWlmIChyZXQpIHsKKwkJX19kZXN0cm95X2Rv b3JiZWxsKGNsaWVudCk7CisJCV9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBHVUNfRE9P UkJFTExfSU5WQUxJRCk7CisJCURSTV9FUlJPUigiQ291bGRuJ3QgY3JlYXRlIGNsaWVudCAldSBk b29yYmVsbDogJWRcbiIsCisJCQkgIGNsaWVudC0+c3RhZ2VfaWQsIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQogCiAJcmV0dXJuIDA7Ci0KLWVycjoKLQlfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGNs aWVudCwgR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwotCV9fdW5yZXNlcnZlX2Rvb3JiZWxsKGNsaWVu dCk7Ci0JcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBkZXN0cm95X2Rvb3JiZWxsKHN0cnVj dCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCiB7Ci0JaW50IGVycjsKKwlpbnQgcmV0OwogCiAJ R0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkpOwogCi0JLyogWFhYOiB3YWl0IGZvciBh bnkgaW50ZXJydXB0cyAqLwotCS8qIFhYWDogd2FpdCBmb3Igd29ya3F1ZXVlIHRvIGRyYWluICov Ci0KLQllcnIgPSBfX2Rlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsKLQlpZiAoZXJyKQotCQlyZXR1 cm4gZXJyOworCV9fZGVzdHJveV9kb29yYmVsbChjbGllbnQpOworCXJldCA9IF9fZ3VjX2RlYWxs b2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNsaWVudC0+c3RhZ2VfaWQpOworCWlmIChyZXQp CisJCURSTV9FUlJPUigiQ291bGRuJ3QgZGVzdHJveSBjbGllbnQgJXUgZG9vcmJlbGw6ICVkXG4i LAorCQkJICBjbGllbnQtPnN0YWdlX2lkLCByZXQpOwogCiAJX191cGRhdGVfZG9vcmJlbGxfZGVz YyhjbGllbnQsIEdVQ19ET09SQkVMTF9JTlZBTElEKTsKIAotCV9fdW5yZXNlcnZlX2Rvb3JiZWxs KGNsaWVudCk7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdW5zaWdu ZWQgbG9uZyBfX3NlbGVjdF9jYWNoZWxpbmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQpAQCAtODM5 LDczICs4MjAsMTggQEAgc3RhdGljIGJvb2wgZG9vcmJlbGxfb2soc3RydWN0IGludGVsX2d1YyAq Z3VjLCB1MTYgZGJfaWQpCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICogSWYgdGhlIEd1QyB0 aGlua3MgdGhhdCB0aGUgZG9vcmJlbGwgaXMgdW5hc3NpZ25lZCAoZS5nLiBiZWNhdXNlIHdlIHJl c2V0IGFuZAotICogcmVsb2FkZWQgdGhlIEd1QyBGVykgd2UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9u IHRvIHRlbGwgdGhlIEd1QyB0byByZWFzc2lnbiB0aGUKLSAqIGRvb3JiZWxsIHRvIHRoZSByaWdo dGZ1bCBvd25lci4KLSAqLwotc3RhdGljIGludCBfX3Jlc2V0X2Rvb3JiZWxsKHN0cnVjdCBpbnRl bF9ndWNfY2xpZW50ICpjbGllbnQsIHUxNiBkYl9pZCkKLXsKLQlpbnQgZXJyOwotCi0JX191cGRh dGVfZG9vcmJlbGxfZGVzYyhjbGllbnQsIGRiX2lkKTsKLQllcnIgPSBfX2NyZWF0ZV9kb29yYmVs bChjbGllbnQpOwotCWlmICghZXJyKQotCQllcnIgPSBfX2Rlc3Ryb3lfZG9vcmJlbGwoY2xpZW50 KTsKLQotCXJldHVybiBlcnI7Ci19Ci0KLS8qCi0gKiBTZXQgdXAgJiB0ZWFyIGRvd24gZWFjaCB1 bnVzZWQgZG9vcmJlbGwgaW4gdHVybiwgdG8gZW5zdXJlIHRoYXQgYWxsIGRvb3JiZWxsCi0gKiBI VyBpcyAocmUpaW5pdGlhbGlzZWQuIEZvciB0aGF0IGVuZCwgd2UgbWlnaHQgaGF2ZSB0byBib3Jy b3cgdGhlIGZpcnN0Ci0gKiBjbGllbnQuIEFsc28sIHRlbGwgR3VDIGFib3V0IGFsbCB0aGUgZG9v cmJlbGxzIGluIHVzZSBieSBhbGwgY2xpZW50cy4KLSAqIFdlIGRvIHRoaXMgYmVjYXVzZSB0aGUg S01ELCB0aGUgR3VDIGFuZCB0aGUgZG9vcmJlbGwgSFcgY2FuIGVhc2lseSBnbyBvdXQgb2YKLSAq IHN5bmMgKGUuZy4gd2UgY2FuIHJlc2V0IHRoZSBHdUMsIGJ1dCBub3QgdGhlIGRvb3JiZWwgSFcp LgotICovCi1zdGF0aWMgaW50IGd1Y19pbml0X2Rvb3JiZWxsX2h3KHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKK3N0YXRpYyBpbnQgZ3VjX2NsaWVudHNfZG9vcmJlbGxfaW5pdChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ZXhl Y2J1Zl9jbGllbnQ7Ci0JYm9vbCByZWNyZWF0ZV9maXJzdF9jbGllbnQgPSBmYWxzZTsKIAl1MTYg ZGJfaWQ7CiAJaW50IHJldDsKIAotCS8qIEZvciB1bnVzZWQgZG9vcmJlbGxzLCBtYWtlIHN1cmUg dGhleSBhcmUgZGlzYWJsZWQgKi8KLQlmb3JfZWFjaF9jbGVhcl9iaXQoZGJfaWQsIGd1Yy0+ZG9v cmJlbGxfYml0bWFwLCBHVUNfTlVNX0RPT1JCRUxMUykgewotCQlpZiAoZG9vcmJlbGxfb2soZ3Vj LCBkYl9pZCkpCi0JCQljb250aW51ZTsKLQotCQlpZiAoaGFzX2Rvb3JiZWxsKGNsaWVudCkpIHsK LQkJCS8qIEJvcnJvdyBleGVjYnVmX2NsaWVudCAod2Ugd2lsbCByZWNyZWF0ZSBpdCBsYXRlcikg Ki8KLQkJCWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsKLQkJCXJlY3JlYXRlX2ZpcnN0X2NsaWVu dCA9IHRydWU7Ci0JCX0KLQotCQlyZXQgPSBfX3Jlc2V0X2Rvb3JiZWxsKGNsaWVudCwgZGJfaWQp OwotCQlXQVJOKHJldCwgIkRvb3JiZWxsICV1IHJlc2V0IGZhaWxlZCwgZXJyICVkXG4iLCBkYl9p ZCwgcmV0KTsKLQl9Ci0KLQlpZiAocmVjcmVhdGVfZmlyc3RfY2xpZW50KSB7Ci0JCXJldCA9IF9f cmVzZXJ2ZV9kb29yYmVsbChjbGllbnQpOwotCQlpZiAodW5saWtlbHkocmV0KSkgewotCQkJRFJN X0VSUk9SKCJDb3VsZG4ndCByZS1yZXNlcnZlIGZpcnN0IGNsaWVudCBkYjogJWRcbiIsCi0JCQkJ ICByZXQpOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCV9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2Mo Y2xpZW50LCBjbGllbnQtPmRvb3JiZWxsX2lkKTsKLQl9Ci0KLQkvKiBOb3cgZm9yIGV2ZXJ5IGNs aWVudCAoYW5kIG5vdCBvbmx5IGV4ZWNidWZfY2xpZW50KSBtYWtlIHN1cmUgdGhlaXIKLQkgKiBk b29yYmVsbHMgYXJlIGtub3duIGJ5IHRoZSBHdUMKLQkgKi8KLQlyZXQgPSBfX2NyZWF0ZV9kb29y YmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKKwlyZXQgPSBjcmVhdGVfZG9vcmJlbGwoZ3VjLT5l eGVjYnVmX2NsaWVudCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IF9fY3Jl YXRlX2Rvb3JiZWxsKGd1Yy0+cHJlZW1wdF9jbGllbnQpOworCXJldCA9IGNyZWF0ZV9kb29yYmVs bChndWMtPnByZWVtcHRfY2xpZW50KTsKIAlpZiAocmV0KSB7Ci0JCV9fZGVzdHJveV9kb29yYmVs bChndWMtPmV4ZWNidWZfY2xpZW50KTsKKwkJZGVzdHJveV9kb29yYmVsbChndWMtPmV4ZWNidWZf Y2xpZW50KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTkxNiw2ICs4NDIsMTkgQEAgc3RhdGlj IGludCBndWNfaW5pdF9kb29yYmVsbF9odyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rvb3JiZWxsX2Zpbmkoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCS8qCisJICogQnkgdGhlIHRpbWUgd2UncmUgaGVyZSwgR3VDIGhh cyBhbHJlYWR5IGJlZW4gcmVzZXQuCisJICogSW5zdGVhZCBvZiB0cnlpbmcgKGluIHZhaW4pIHRv IGNvbW11bmljYXRlIHdpdGggaXQsIGxldCdzIGp1c3QKKwkgKiBjbGVhbnVwIHRoZSBkb29yYmVs bCBIVyBhbmQgb3VyIGludGVybmFsIHN0YXRlLgorCSAqLworCV9fZGVzdHJveV9kb29yYmVsbChn dWMtPnByZWVtcHRfY2xpZW50KTsKKwlfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGd1Yy0+cHJlZW1w dF9jbGllbnQsIEdVQ19ET09SQkVMTF9JTlZBTElEKTsKKwlfX2Rlc3Ryb3lfZG9vcmJlbGwoZ3Vj LT5leGVjYnVmX2NsaWVudCk7CisJX191cGRhdGVfZG9vcmJlbGxfZGVzYyhndWMtPmV4ZWNidWZf Y2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Cit9CisKIC8qKgogICogZ3VjX2NsaWVudF9h bGxvYygpIC0gQWxsb2NhdGUgYW4gaW50ZWxfZ3VjX2NsaWVudAogICogQGRldl9wcml2Oglkcml2 ZXIgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZQpAQCAtOTkxLDcgKzkzMCw3IEBAIGd1Y19jbGllbnRf YWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWd1Y19wcm9jX2Rlc2Nf aW5pdChndWMsIGNsaWVudCk7CiAJZ3VjX3N0YWdlX2Rlc2NfaW5pdChndWMsIGNsaWVudCk7CiAK LQlyZXQgPSBjcmVhdGVfZG9vcmJlbGwoY2xpZW50KTsKKwlyZXQgPSByZXNlcnZlX2Rvb3JiZWxs KGNsaWVudCk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJfdmFkZHI7CiAKQEAgLTEwMTUsMTYgKzk1 NCw3IEBAIGd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCiBzdGF0aWMgdm9pZCBndWNfY2xpZW50X2ZyZWUoc3RydWN0IGludGVsX2d1Y19jbGllbnQg KmNsaWVudCkKIHsKLQkvKgotCSAqIFhYWDogd2FpdCBmb3IgYW55IG91dHN0YW5kaW5nIHN1Ym1p c3Npb25zIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4KLQkgKiBCZSBzdXJlIHRvIGRyb3AgYW55IGxv Y2tzCi0JICovCi0KLQkvKiBGSVhNRTogaW4gbWFueSBjYXNlcywgYnkgdGhlIHRpbWUgd2UgZ2V0 IGhlcmUgdGhlIEd1QyBoYXMgYmVlbgotCSAqIHJlc2V0LCBzbyB3ZSBjYW5ub3QgZGVzdHJveSB0 aGUgZG9vcmJlbGwgcHJvcGVybHkuIElnbm9yZSB0aGUKLQkgKiBlcnJvciBtZXNzYWdlIGZvciBu b3cKLQkgKi8KLQlkZXN0cm95X2Rvb3JiZWxsKGNsaWVudCk7CisJdW5yZXNlcnZlX2Rvb3JiZWxs KGNsaWVudCk7CiAJZ3VjX3N0YWdlX2Rlc2NfZmluaShjbGllbnQtPmd1YywgY2xpZW50KTsKIAlp OTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNsaWVudC0+dm1hLT5vYmopOwogCWk5MTVfdm1hX3Vu cGluX2FuZF9yZWxlYXNlKCZjbGllbnQtPnZtYSk7CkBAIC0xMzY2LDcgKzEyOTYsNyBAQCBpbnQg aW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlpZiAo ZXJyKQogCQlnb3RvIGVycl9mcmVlX2NsaWVudHM7CiAKLQllcnIgPSBndWNfaW5pdF9kb29yYmVs bF9odyhndWMpOworCWVyciA9IGd1Y19jbGllbnRzX2Rvb3JiZWxsX2luaXQoZ3VjKTsKIAlpZiAo ZXJyKQogCQlnb3RvIGVycl9mcmVlX2NsaWVudHM7CiAKQEAgLTEzOTgsNiArMTMyOCw3IEBAIHZv aWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJ R0VNX0JVR19PTihkZXZfcHJpdi0+Z3QuYXdha2UpOyAvKiBHVCBzaG91bGQgYmUgcGFya2VkIGZp cnN0ICovCiAKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKKwlndWNfY2xpZW50 c19kb29yYmVsbF9maW5pKGd1Yyk7CiAKIAkvKiBSZXZlcnQgYmFjayB0byBtYW51YWwgRUxTUCBz dWJtaXNzaW9uICovCiAJaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oZGV2 X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jCmluZGV4 IDY4ZDZhNjljNzM4Zi4uM2Y5MDE2NDY2ZGVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX2d1Yy5jCkBAIC04NSwyMSArODUsMjYgQEAgc3RhdGljIGludCB2YWxpZGF0 ZV9jbGllbnQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCwKIAkJcmV0dXJuIDA7CiB9 CiAKK3N0YXRpYyBib29sIGNsaWVudF9kb29yYmVsbF9pbl9zeW5jKHN0cnVjdCBpbnRlbF9ndWNf Y2xpZW50ICpjbGllbnQpCit7CisJcmV0dXJuIGRvb3JiZWxsX29rKGNsaWVudC0+Z3VjLCBjbGll bnQtPmRvb3JiZWxsX2lkKTsKK30KKwogLyoKLSAqIENoZWNrIHRoYXQgZ3VjX2luaXRfZG9vcmJl bGxfaHcgaXMgZG9pbmcgd2hhdCBpdCBzaG91bGQuCisgKiBDaGVjayB0aGF0IHdlJ3JlIGFibGUg dG8gc3luY2hyb25pemUgZ3VjX2NsaWVudHMgd2l0aCB0aGVpciBkb29yYmVsbHMKICAqCi0gKiBE dXJpbmcgR3VDIHN1Ym1pc3Npb24gZW5hYmxlLCB3ZSBjcmVhdGUgR3VDIGNsaWVudHMgYW5kIHRo ZWlyIGRvb3JiZWxscywKLSAqIGJ1dCBhZnRlciByZXNldHRpbmcgdGhlIG1pY3JvY29udHJvbGxl ciAocmVzdW1lICYgZ3B1IHJlc2V0KSwgdGhlc2UKLSAqIEd1QyBjbGllbnRzIGFyZSBzdGlsbCBh cm91bmQsIGJ1dCB0aGUgc3RhdHVzIG9mIHRoZWlyIGRvb3JiZWxscyBtYXkgYmUKLSAqIGluY29y cmVjdC4gVGhpcyBpcyB0aGUgcmVhc29uIGJlaGluZCB2YWxpZGF0aW5nIHRoYXQgdGhlIGRvb3Ji ZWxscyBzdGF0dXMKLSAqIGV4cGVjdGVkIGJ5IHRoZSBkcml2ZXIgbWF0Y2hlcyB3aGF0IHRoZSBH dUMvSFcgaGF2ZS4KKyAqIFdlJ3JlIGNyZWF0aW5nIGNsaWVudHMgYW5kIHJlc2VydmluZyBkb29y YmVsbHMgb25jZSwgYXQgbW9kdWxlIGxvYWQuIER1cmluZworICogbW9kdWxlIGxpZmV0aW1lLCBH dUMsIGRvb3JiZWxsIEhXLCBhbmQgaTkxNSBzdGF0ZSBtYXkgZ28gb3V0IG9mIHN5bmMgZHVlIHRv CisgKiBHdUMgYmVpbmcgcmVzZXQuIEluIG90aGVyIHdvcmRzIC0gR3VDIGNsaWVudHMgYXJlIHN0 aWxsIGFyb3VuZCwgYnV0IHRoZQorICogc3RhdHVzIG9mIHRoZWlyIGRvb3JiZWxscyBtYXkgYmUg aW5jb3JyZWN0LiBUaGlzIGlzIHRoZSByZWFzb24gYmVoaW5kCisgKiB2YWxpZGF0aW5nIHRoYXQg dGhlIGRvb3JiZWxscyBzdGF0dXMgZXhwZWN0ZWQgYnkgdGhlIGRyaXZlciBtYXRjaGVzIHdoYXQg dGhlCisgKiBHdUMvSFcgaGF2ZS4KICAqLwotc3RhdGljIGludCBpZ3RfZ3VjX2luaXRfZG9vcmJl bGxfaHcodm9pZCAqYXJncykKK3N0YXRpYyBpbnQgaWd0X2d1Y19jbGllbnRzKHZvaWQgKmFyZ3Mp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gYXJnczsKIAlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWM7Ci0JREVDTEFSRV9CSVRNQVAoZGJfYml0bWFwX2JrLCBHVUNfTlVNX0RP T1JCRUxMUyk7Ci0JaW50IGksIGVyciA9IDA7CisJaW50IGVyciA9IDA7CiAKIAlHRU1fQlVHX09O KCFIQVNfR1VDKGRldl9wcml2KSk7CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwpAQCAtMTQ4LDEwICsxNTMsMjEgQEAgc3RhdGljIGludCBpZ3RfZ3VjX2luaXRfZG9v cmJlbGxfaHcodm9pZCAqYXJncykKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogZWFjaCBjbGllbnQg c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBkb29yYmVsbCBkdXJpbmcgYWxsb2MgKi8KKwkvKiBlYWNo IGNsaWVudCBzaG91bGQgbm93IGhhdmUgcmVzZXJ2ZWQgYSBkb29yYmVsbCAqLwogCWlmICghaGFz X2Rvb3JiZWxsKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpIHx8CiAJICAgICFoYXNfZG9vcmJlbGwoZ3Vj LT5wcmVlbXB0X2NsaWVudCkpIHsKLQkJcHJfZXJyKCJndWNfY2xpZW50c19jcmVhdGUgZGlkbid0 IGNyZWF0ZSBkb29yYmVsbHNcbiIpOworCQlwcl9lcnIoImd1Y19jbGllbnRzX2NyZWF0ZSBkaWRu J3QgcmVzZXJ2ZSBkb29yYmVsbHNcbiIpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dDsK Kwl9CisKKwkvKiBOb3cgY3JlYXRlIHRoZSBkb29yYmVsbHMgKi8KKwlndWNfY2xpZW50c19kb29y YmVsbF9pbml0KGd1Yyk7CisKKwkvKiBlYWNoIGNsaWVudCBzaG91bGQgbm93IGhhdmUgcmVjZWl2 ZWQgYSBkb29yYmVsbCAqLworCWlmICghY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoZ3VjLT5leGVj YnVmX2NsaWVudCkgfHwKKwkgICAgIWNsaWVudF9kb29yYmVsbF9pbl9zeW5jKGd1Yy0+cHJlZW1w dF9jbGllbnQpKSB7CisJCXByX2VycigiZmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGRvb3JiZWxs c1xuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTE2MCwyNSArMTc2 LDI2IEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19pbml0X2Rvb3JiZWxsX2h3KHZvaWQgKmFyZ3MpCiAJ ICogQmFzaWMgdGVzdCAtIGFuIGF0dGVtcHQgdG8gcmVhbGxvY2F0ZSBhIHZhbGlkIGRvb3JiZWxs IHRvIHRoZQogCSAqIGNsaWVudCBpdCBpcyBjdXJyZW50bHkgYXNzaWduZWQgc2hvdWxkIG5vdCBj YXVzZSBhIGZhaWx1cmUuCiAJICovCi0JZXJyID0gZ3VjX2luaXRfZG9vcmJlbGxfaHcoZ3VjKTsK KwllcnIgPSBndWNfY2xpZW50c19kb29yYmVsbF9pbml0KGd1Yyk7CiAJaWYgKGVycikKIAkJZ290 byBvdXQ7CiAKIAkvKgogCSAqIE5lZ2F0aXZlIHRlc3QgLSBhIGNsaWVudCB3aXRoIG5vIGRvb3Ji ZWxsIChpbnZhbGlkIGRiIGlkKS4KLQkgKiBFYWNoIGNsaWVudCBnZXRzIGEgZG9vcmJlbGwgd2hl biBpdCBpcyBjcmVhdGVkLCBhZnRlciBkZXN0cm95aW5nCi0JICogdGhlIGRvb3JiZWxsLCB0aGUg ZGIgaWQgaXMgY2hhbmdlZCB0byBHVUNfRE9PUkJFTExfSU5WQUxJRCBhbmQgdGhlCi0JICogZmly bXdhcmUgd2lsbCByZWplY3QgYW55IGF0dGVtcHQgdG8gYWxsb2NhdGUgYSBkb29yYmVsbCB3aXRo IGFuCi0JICogaW52YWxpZCBpZCAoZGIgaGFzIHRvIGJlIHJlc2VydmVkIGJlZm9yZSBhbGxvY2F0 aW9uKS4KKwkgKiBBZnRlciBkZXN0cm95aW5nIHRoZSBkb29yYmVsbCwgdGhlIGRiIGlkIGlzIGNo YW5nZWQgdG8KKwkgKiBHVUNfRE9PUkJFTExfSU5WQUxJRCBhbmQgdGhlIGZpcm13YXJlIHdpbGwg cmVqZWN0IGFueSBhdHRlbXB0IHRvCisJICogYWxsb2NhdGUgYSBkb29yYmVsbCB3aXRoIGFuIGlu dmFsaWQgaWQgKGRiIGhhcyB0byBiZSByZXNlcnZlZCBiZWZvcmUKKwkgKiBhbGxvY2F0aW9uKS4K IAkgKi8KIAlkZXN0cm95X2Rvb3JiZWxsKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwotCWlmIChoYXNf ZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKKwlpZiAoY2xpZW50X2Rvb3JiZWxsX2lu X3N5bmMoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKIAkJcHJfZXJyKCJkZXN0cm95IGRiIGRpZCBu b3Qgd29ya1xuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0OwogCX0KIAotCWVyciA9 IGd1Y19pbml0X2Rvb3JiZWxsX2h3KGd1Yyk7CisJdW5yZXNlcnZlX2Rvb3JiZWxsKGd1Yy0+ZXhl Y2J1Zl9jbGllbnQpOworCWVyciA9IGd1Y19jbGllbnRzX2Rvb3JiZWxsX2luaXQoZ3VjKTsKIAlp ZiAoZXJyICE9IC1FSU8pIHsKIAkJcHJfZXJyKCJ1bmV4cGVjdGVkIChlcnIgPSAlZCkiLCBlcnIp OwogCQlnb3RvIG91dDsKQEAgLTE5MSwzMyArMjA4LDEzIEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19p bml0X2Rvb3JiZWxsX2h3KHZvaWQgKmFyZ3MpCiAJfQogCiAJLyogY2xlYW4gYWZ0ZXIgdGVzdCAq LwotCWVyciA9IGNyZWF0ZV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKLQlpZiAoZXJy KSB7Ci0JCXByX2VycigicmVjcmVhdGUgZG9vcmJlbGwgZmFpbGVkXG4iKTsKLQkJZ290byBvdXQ7 Ci0JfQotCi0JLyoKLQkgKiBOZWdhdGl2ZSB0ZXN0IC0gZG9vcmJlbGxfYml0bWFwIG91dCBvZiBz eW5jLCB3aWxsIHRyaWdnZXIgYSBmZXcgb2YKLQkgKiBXQVJOX09OKCFkb29yYmVsbF9vayhndWMs IGRiX2lkKSkgYnV0IHRoYXQncyBvayBhcyBsb25nIGFzIHRoZQotCSAqIGRvb3JiZWxscyBmcm9t IG91ciBjbGllbnRzIGRvbid0IGZhaWwuCi0JICovCi0JYml0bWFwX2NvcHkoZGJfYml0bWFwX2Jr LCBndWMtPmRvb3JiZWxsX2JpdG1hcCwgR1VDX05VTV9ET09SQkVMTFMpOwotCWZvciAoaSA9IDA7 IGkgPCBHVUNfTlVNX0RPT1JCRUxMUzsgaSsrKQotCQlpZiAoaSAlIDIpCi0JCQl0ZXN0X2FuZF9j aGFuZ2VfYml0KGksIGd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKLQotCWVyciA9IGd1Y19pbml0X2Rv b3JiZWxsX2h3KGd1Yyk7CisJZXJyID0gcmVzZXJ2ZV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xp ZW50KTsKIAlpZiAoZXJyKSB7Ci0JCXByX2Vycigib3V0IG9mIHN5bmMgZG9vcmJlbGwgY2F1c2Vk IGFuIGVycm9yXG4iKTsKLQkJZ290byBvdXQ7CisJCXByX2VycigiZmFpbGVkIHRvIHJlc2VydmUg YmFjayB0aGUgZG9vcmJlbGwgYmFja1xuIik7CiAJfQotCi0JLyogcmVzdG9yZSAnY29ycmVjdCcg ZGIgYml0bWFwICovCi0JYml0bWFwX2NvcHkoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIGRiX2JpdG1h cF9iaywgR1VDX05VTV9ET09SQkVMTFMpOwotCWVyciA9IGd1Y19pbml0X2Rvb3JiZWxsX2h3KGd1 Yyk7CisJZXJyID0gY3JlYXRlX2Rvb3JiZWxsKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwogCWlmIChl cnIpIHsKLQkJcHJfZXJyKCJyZXN0b3JlZCBkb29yYmVsbCBjYXVzZWQgYW4gZXJyb3JcbiIpOwor CQlwcl9lcnIoInJlY3JlYXRlIGRvb3JiZWxsIGZhaWxlZFxuIik7CiAJCWdvdG8gb3V0OwogCX0K IApAQCAtMjI2LDggKzIyMywxMSBAQCBzdGF0aWMgaW50IGlndF9ndWNfaW5pdF9kb29yYmVsbF9o dyh2b2lkICphcmdzKQogCSAqIExlYXZlIGNsZWFuIHN0YXRlIGZvciBvdGhlciB0ZXN0LCBwbHVz IHRoZSBkcml2ZXIgYWx3YXlzIGRlc3Ryb3kgdGhlCiAJICogY2xpZW50cyBkdXJpbmcgdW5sb2Fk LgogCSAqLworCWRlc3Ryb3lfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCk7CisJZGVzdHJv eV9kb29yYmVsbChndWMtPnByZWVtcHRfY2xpZW50KTsKIAlndWNfY2xpZW50c19kZXN0cm95KGd1 Yyk7CiAJZ3VjX2NsaWVudHNfY3JlYXRlKGd1Yyk7CisJZ3VjX2NsaWVudHNfZG9vcmJlbGxfaW5p dChndWMpOwogdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwogCXJldHVybiBlcnI7CkBAIC0zMDksMjUgKzMwOSw3IEBAIHN0YXRpYyBpbnQgaWd0X2d1 Y19kb29yYmVsbHModm9pZCAqYXJnKQogCiAJCWRiX2lkID0gY2xpZW50c1tpXS0+ZG9vcmJlbGxf aWQ7CiAKLQkJLyoKLQkJICogQ2xpZW50IGFsbG9jIGdpdmVzIHVzIGEgZG9vcmJlbGwsIGJ1dCB3 ZSB3YW50IHRvIGV4ZXJjaXNlCi0JCSAqIHRoaXMgb3Vyc2VsdmVzICh0aGlzIHJlc2VtYmxlcyBn dWNfaW5pdF9kb29yYmVsbF9odykKLQkJICovCi0JCWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50c1tp XSk7Ci0JCWlmIChjbGllbnRzW2ldLT5kb29yYmVsbF9pZCAhPSBHVUNfRE9PUkJFTExfSU5WQUxJ RCkgewotCQkJcHJfZXJyKCJbJWRdIGRlc3Ryb3kgZGIgZGlkIG5vdCB3b3JrIVxuIiwgaSk7Ci0J CQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBvdXQ7Ci0JCX0KLQotCQllcnIgPSBfX3Jlc2VydmVf ZG9vcmJlbGwoY2xpZW50c1tpXSk7Ci0JCWlmIChlcnIpIHsKLQkJCXByX2VycigiWyVkXSBGYWls ZWQgdG8gcmVzZXJ2ZSBhIGRvb3JiZWxsXG4iLCBpKTsKLQkJCWdvdG8gb3V0OwotCQl9Ci0KLQkJ X191cGRhdGVfZG9vcmJlbGxfZGVzYyhjbGllbnRzW2ldLCBjbGllbnRzW2ldLT5kb29yYmVsbF9p ZCk7Ci0JCWVyciA9IF9fY3JlYXRlX2Rvb3JiZWxsKGNsaWVudHNbaV0pOworCQllcnIgPSBjcmVh dGVfZG9vcmJlbGwoY2xpZW50c1tpXSk7CiAJCWlmIChlcnIpIHsKIAkJCXByX2VycigiWyVkXSBG YWlsZWQgdG8gY3JlYXRlIGEgZG9vcmJlbGxcbiIsIGkpOwogCQkJZ290byBvdXQ7CkBAIC0zNDgs OCArMzMwLDEwIEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19kb29yYmVsbHModm9pZCAqYXJnKQogCiBv dXQ6CiAJZm9yIChpID0gMDsgaSA8IEFUVEVNUFRTOyBpKyspCi0JCWlmICghSVNfRVJSX09SX05V TEwoY2xpZW50c1tpXSkpCisJCWlmICghSVNfRVJSX09SX05VTEwoY2xpZW50c1tpXSkpIHsKKwkJ CWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50c1tpXSk7CiAJCQlndWNfY2xpZW50X2ZyZWUoY2xpZW50 c1tpXSk7CisJCX0KIHVubG9jazoKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKIAlyZXR1cm4gZXJyOwpAQCAtMzU4LDcgKzM0Miw3IEBAIHN0YXRpYyBpbnQgaWd0 X2d1Y19kb29yYmVsbHModm9pZCAqYXJnKQogaW50IGludGVsX2d1Y19saXZlX3NlbGZ0ZXN0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewotCQlTVUJURVNUKGlndF9ndWNfaW5pdF9kb29yYmVs bF9odyksCisJCVNVQlRFU1QoaWd0X2d1Y19jbGllbnRzKSwKIAkJU1VCVEVTVChpZ3RfZ3VjX2Rv b3JiZWxscyksCiAJfTsKIAotLSAKMi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK