From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vijay Purushothaman Subject: =?utf-8?q?=5BPATCH_intel-gpu-tools=5D_tools=3A_Added_?= =?utf-8?q?intel=5Fdpio=5Fread_and_intel=5Fdpio=5Fwrite?= Date: Fri, 17 Aug 2012 18:06:52 +0530 Message-ID: <1345207012-20439-1-git-send-email-vijay.a.purushothaman@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 044B19E7AD for ; Fri, 17 Aug 2012 05:35:21 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Intel Graphics List-Id: intel-gfx@lists.freedesktop.org SW4gVmFsbGV5dmlldyB0aGUgRFBMTCBhbmQgbGFuZSBjb250cm9sIHJlZ2lzdGVycyBhcmUgYWNj ZXNzaWJsZSBvbmx5CnRocm91Z2ggc2lkZSBiYW5kIGZhYnJpYyBjYWxsZWQgRFBJTy4gQWRkZWQg dHdvIHRvb2xzIHRvIHJlYWQgYW5kIHdyaXRlCnJlZ2lzdGVycyByZXNpZGluZyBpbiB0aGlzIHNw YWNlLgoKdjI6IE1vdmVkIHRoZSBjb3JlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIHRvIGxpYi9pbnRl bF9kcGlvLmMgYmFzZWQgb24KQmVuJ3MgZmVlZGJhY2sKClNpZ25lZC1vZmYtYnk6IFZpamF5IFB1 cnVzaG90aGFtYW4gPHZpamF5LmEucHVydXNob3RoYW1hbkBpbnRlbC5jb20+Ci0tLQogbGliL01h a2VmaWxlLmFtICAgICAgICAgIHwgICAgMSArCiBsaWIvaW50ZWxfY2hpcHNldC5oICAgICAgfCAg ICAyICsKIGxpYi9pbnRlbF9kcGlvLmMgICAgICAgICB8ICAgOTQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2ludGVsX2dwdV90b29scy5oICAgIHwg ICAgMyArKwogbGliL2ludGVsX3JlZy5oICAgICAgICAgIHwgICAxMyArKysrKysrCiB0b29scy9N YWtlZmlsZS5hbSAgICAgICAgfCAgICAyICsKIHRvb2xzL2ludGVsX2RwaW9fcmVhZC5jICB8ICAg NjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9pbnRlbF9kcGlvX3dy aXRlLmMgfCAgIDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBj aGFuZ2VkLCAyNTAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbnRlbF9k cGlvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9pbnRlbF9kcGlvX3JlYWQuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL2ludGVsX2RwaW9fd3JpdGUuYwoKZGlmZiAtLWdpdCBhL2xpYi9N YWtlZmlsZS5hbSBiL2xpYi9NYWtlZmlsZS5hbQppbmRleCA4ODI5MGNiLi5kOGYwODFmIDEwMDY0 NAotLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC0yOSw2ICsy OSw3IEBAIGxpYmludGVsX3Rvb2xzX2xhX1NPVVJDRVMgPSAJXAogCXJlbmRlcmNvcHlfZ2VuNy5j CVwKIAlyZW5kZXJjb3B5LmgJCVwKIAlpbnRlbF9yZWdfbWFwLmMJCVwKKwlpbnRlbF9kcGlvLmMJ CVwKIAkkKE5VTEwpCiAKIExEQUREID0gJChDQUlST19MSUJTKQpkaWZmIC0tZ2l0IGEvbGliL2lu dGVsX2NoaXBzZXQuaCBiL2xpYi9pbnRlbF9jaGlwc2V0LmgKaW5kZXggYTIyOWVhMS4uOWRkNGM5 NCAxMDA3NTUKLS0tIGEvbGliL2ludGVsX2NoaXBzZXQuaAorKysgYi9saWIvaW50ZWxfY2hpcHNl dC5oCkBAIC0xOTYsNiArMTk2LDggQEAKIAkJCQkgZGV2ID09IFBDSV9DSElQX0lWWUJSSURHRV9T X0dUMiB8fCBcCiAJCQkJIGRldiA9PSBQQ0lfQ0hJUF9WQUxMRVlWSUVXX1BPKQogCisjZGVmaW5l IElTX1ZBTExFWVZJRVcoZGV2aWQpCShkZXZpZCA9PSBQQ0lfQ0hJUF9WQUxMRVlWSUVXX1BPKQor CiAjZGVmaW5lIElTX0hTV19HVDEoZGV2aWQpICAgICAgIChkZXZpZCA9PSBQQ0lfQ0hJUF9IQVNX RUxMX0dUMSB8fCBcCiAJCQkJIGRldmlkID09IFBDSV9DSElQX0hBU1dFTExfTV9HVDEgfHwgXAog CQkJCSBkZXZpZCA9PSBQQ0lfQ0hJUF9IQVNXRUxMX1NfR1QxIHx8IFwKZGlmZiAtLWdpdCBhL2xp Yi9pbnRlbF9kcGlvLmMgYi9saWIvaW50ZWxfZHBpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmFjZmQyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaW50ZWxfZHBpby5j CkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAwOCBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQor ICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg KiBBdXRob3JzOgorICogICAgVmlqYXkgUHVydXNob3RoYW1hbiA8dmlqYXkuYS5wdXJ1c2hvdGhh bWFuQGludGVsLmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxz dGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVyci5oPgorI2luY2x1ZGUg ImludGVsX2dwdV90b29scy5oIgorCitzdGF0aWMgdWludDMyX3QgaW50ZWxfZGlzcGxheV9yZWdf cmVhZCh1aW50MzJfdCByZWcpCit7CisJc3RydWN0IHBjaV9kZXZpY2UgKmRldiA9IGludGVsX2dl dF9wY2lfZGV2aWNlKCk7CisKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYtPmRldmljZV9pZCkpCisJ CXJlZyArPSBWTFZfRElTUExBWV9CQVNFOworCXJldHVybiAoKih2b2xhdGlsZSB1aW50MzJfdCop KCh2b2xhdGlsZSBjaGFyKiltbWlvICsgcmVnKSk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2Rp c3BsYXlfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQoreworCXZvbGF0aWxl IHVpbnQzMl90ICpwdHI7CisJc3RydWN0IHBjaV9kZXZpY2UgKmRldiA9IGludGVsX2dldF9wY2lf ZGV2aWNlKCk7CisKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYtPmRldmljZV9pZCkpCisJCXJlZyAr PSBWTFZfRElTUExBWV9CQVNFOworCXB0ciA9ICh2b2xhdGlsZSB1aW50MzJfdCopKCh2b2xhdGls ZSBjaGFyKiltbWlvICsgcmVnKTsKKwkqcHRyID0gdmFsOworfQorCisvKgorICogSW4gU29DcyBs aWtlIFZhbGxleXZpZXcgc29tZSBvZiB0aGUgUExMICYgTGFuZSBjb250cm9sIHJlZ2lzdGVycwor ICogY2FuIGJlIGFjY2Vzc2VkIG9ubHkgdGhyb3VnaCBJTyBzaWRlIGJhbmQgZmFicmljIGNhbGxl ZCBEUElPCisgKi8KK3VpbnQzMl90CitpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZykK K3sKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBzaWRlIGJhbmQgZmFicmljIGlzIHJlYWR5IHRvIGFj Y2VwdCBjb21tYW5kcyAqLworCWRvIHsKKwkJdXNsZWVwKDEpOworCX0gd2hpbGUgKGludGVsX2Rp c3BsYXlfcmVnX3JlYWQoRFBJT19QS1QpICYgRFBJT19CVVNZKTsKKworCWludGVsX2Rpc3BsYXlf cmVnX3dyaXRlKERQSU9fUkVHLCByZWcpOworCWludGVsX2Rpc3BsYXlfcmVnX3dyaXRlKERQSU9f UEtULCBEUElPX1JJRCB8CisJCQkJCQlEUElPX09QX1JFQUQgfCBEUElPX1BPUlRJRCB8IERQSU9f QllURSk7CisJZG8geworCQl1c2xlZXAoMSk7CisJfSB3aGlsZSAoaW50ZWxfZGlzcGxheV9yZWdf cmVhZChEUElPX1BLVCkgJiBEUElPX0JVU1kpOworCisJcmV0dXJuIGludGVsX2Rpc3BsYXlfcmVn X3JlYWQoRFBJT19EQVRBKTsKK30KKworLyoKKyAqIEluIFNvQ3MgbGlrZSBWYWxsZXl2aWV3IHNv bWUgb2YgdGhlIFBMTCAmIExhbmUgY29udHJvbCByZWdpc3RlcnMKKyAqIGNhbiBiZSBhY2Nlc3Nl ZCBvbmx5IHRocm91Z2ggSU8gc2lkZSBiYW5kIGZhYnJpYyBjYWxsZWQgRFBJTworICovCit2b2lk CitpbnRlbF9kcGlvX3JlZ193cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3sKKwkv KiBDaGVjayB3aGV0aGVyIHRoZSBzaWRlIGJhbmQgZmFicmljIGlzIHJlYWR5IHRvIGFjY2VwdCBj b21tYW5kcyAqLworCWRvIHsKKwkJdXNsZWVwKDEpOworCX0gd2hpbGUgKGludGVsX2Rpc3BsYXlf cmVnX3JlYWQoRFBJT19QS1QpICYgRFBJT19CVVNZKTsKKworCWludGVsX2Rpc3BsYXlfcmVnX3dy aXRlKERQSU9fREFUQSwgdmFsKTsKKwlpbnRlbF9kaXNwbGF5X3JlZ193cml0ZShEUElPX1JFRywg cmVnKTsKKwlpbnRlbF9kaXNwbGF5X3JlZ193cml0ZShEUElPX1BLVCwgRFBJT19SSUQgfAorCQkJ CQkJRFBJT19PUF9XUklURSB8IERQSU9fUE9SVElEIHwgRFBJT19CWVRFKTsKKwlkbyB7CisJCXVz bGVlcCgxKTsKKwl9IHdoaWxlIChpbnRlbF9kaXNwbGF5X3JlZ19yZWFkKERQSU9fUEtUKSAmIERQ SU9fQlVTWSk7Cit9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfZ3B1X3Rvb2xzLmggYi9saWIvaW50 ZWxfZ3B1X3Rvb2xzLmgKaW5kZXggZWIyMWExNi4uMjQ1ZDFkZSAxMDA2NDQKLS0tIGEvbGliL2lu dGVsX2dwdV90b29scy5oCisrKyBiL2xpYi9pbnRlbF9ncHVfdG9vbHMuaApAQCAtNDUsNiArNDUs OSBAQCBpbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZpY2UgKnBj aV9kZXYsIGludCBzYWZlKTsKIHZvaWQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCk7 CiB1aW50MzJfdCBpbnRlbF9yZWdpc3Rlcl9yZWFkKHVpbnQzMl90IHJlZyk7CiB2b2lkIGludGVs X3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKKy8qIEZvbGxvd2lu ZyBmdW5jdGlvbnMgYXJlIHJlbGV2YW50IG9ubHkgZm9yIFNvQ3MgbGlrZSBWYWxsZXl2aWV3ICov Cit1aW50MzJfdCBpbnRlbF9kcGlvX3JlZ19yZWFkKHVpbnQzMl90IHJlZyk7Cit2b2lkIGludGVs X2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKIAogI2RlZmluZSBJ TlRFTF9SQU5HRV9SU1ZECSgwPDwwKSAvKiAgU2hvdWxkbid0IGJlIHJlYWQgb3Igd3JpdHRlbiAq LwogI2RlZmluZSBJTlRFTF9SQU5HRV9SRUFECSgxPDwwKQpkaWZmIC0tZ2l0IGEvbGliL2ludGVs X3JlZy5oIGIvbGliL2ludGVsX3JlZy5oCmluZGV4IGEzNzFkNjcuLmZmZGVkNjQgMTAwNjQ0Ci0t LSBhL2xpYi9pbnRlbF9yZWcuaAorKysgYi9saWIvaW50ZWxfcmVnLmgKQEAgLTM3NDEsNSArMzc0 MSwxOCBAQCB0eXBlZGVmIGVudW0gewogI2RlZmluZSAgU0ZVU0VfU1RSQVBfRERJQ19ERVRFQ1RF RAkoMTw8MSkKICNkZWZpbmUgIFNGVVNFX1NUUkFQX0RESURfREVURUNURUQJKDE8PDApCiAKKy8q IFZhbGxleXZpZXcgcmVsYXRlZCBpdGVtcyAqLworCisvKiBWYWxsZXl2aWV3IERQSU8gcmVnaXN0 ZXJzICovCisjZGVmaW5lIFZMVl9ESVNQTEFZX0JBU0UJMHgxODAwMDAKKyNkZWZpbmUgRFBJT19Q S1QJCQkweDIxMDAKKyNkZWZpbmUgIERQSU9fUklECQkJKDAgPDwgMjQpCisjZGVmaW5lICBEUElP X09QX1dSSVRFCQkoMSA8PCAxNikKKyNkZWZpbmUgIERQSU9fT1BfUkVBRAkJKDAgPDwgMTYpCisj ZGVmaW5lICBEUElPX1BPUlRJRAkJKDB4MTIgPDwgOCkKKyNkZWZpbmUgIERQSU9fQllURQkJCSgw eGYgPDwgNCkKKyNkZWZpbmUgIERQSU9fQlVTWQkJCSgxIDw8IDApCisjZGVmaW5lIERQSU9fREFU QQkJCTB4MjEwNAorI2RlZmluZSBEUElPX1JFRwkJCTB4MjEwOAogCiAjZW5kaWYgLyogX0k4MTBf UkVHX0ggKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2VmaWxlLmFtIGIvdG9vbHMvTWFrZWZpbGUu YW0KaW5kZXggZDQ2MWYzOC4uNzFmYjA4NyAxMDA2NDQKLS0tIGEvdG9vbHMvTWFrZWZpbGUuYW0K KysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KQEAgLTE1LDYgKzE1LDggQEAgYmluX1BST0dSQU1TID0g CQkJCVwKIAlpbnRlbF9yZWdfd3JpdGUgCQlcCiAJaW50ZWxfcmVnX3JlYWQgCQkJXAogCWludGVs X2ZvcmNld2FrZWQJCVwKKwlpbnRlbF9kcGlvX3JlYWQJCQlcCisJaW50ZWxfZHBpb193cml0ZQkJ XAogCWludGVsX2wzX3Bhcml0eQogCiBub2luc3RfUFJPR1JBTVMgPSAJCQlcCmRpZmYgLS1naXQg YS90b29scy9pbnRlbF9kcGlvX3JlYWQuYyBiL3Rvb2xzL2ludGVsX2RwaW9fcmVhZC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzkwNGEKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy9pbnRlbF9kcGlvX3JlYWQuYwpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp Z2h0IMKpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqCQlWaWpheSBQdXJ1c2hvdGhh bWFuIDx2aWpheS5hLnB1cnVzaG90aGFtYW5AaW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVk ZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxlcnIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJpbnRlbF9ncHVf dG9vbHMuaCIKKworc3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqY21kbmFtZSkKK3sKKwlwcmludGYo Ildhcm5pbmcgOiBUaGlzIHByb2dyYW0gd2lsbCB3b3JrIG9ubHkgb24gVmFsbGV5dmlld1xuIik7 CisJcHJpbnRmKCJVc2FnZTogJXMgW2FkZHJdXG4iLCBjbWRuYW1lKTsKKwlwcmludGYoIlx0IGFk ZHIgOiBpbiAweFhYWFggZm9ybWF0XG4iKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq KiBhcmd2KQoreworCWludCByZXQgPSAwOworCXVpbnQzMl90IHJlZywgdmFsOworCWNoYXIgKmNt ZG5hbWUgPSBzdHJkdXAoYXJndlswXSk7CisJc3RydWN0IHBjaV9kZXZpY2UgKmRldiA9IGludGVs X2dldF9wY2lfZGV2aWNlKCk7CisKKwlpZiAoYXJnYyAhPSAyIHx8ICFJU19WQUxMRVlWSUVXKGRl di0+ZGV2aWNlX2lkKSkgeworCQl1c2FnZShjbWRuYW1lKTsKKwkJcmV0ID0gMTsKKwkJZ290byBv dXQ7CisJfQorCisJc3NjYW5mKGFyZ3ZbMV0sICIweCV4IiwgJnJlZyk7CisKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdChkZXYsIDApOworCisJdmFsID0gaW50ZWxfZHBpb19yZWdfcmVhZChy ZWcpOworCisJcHJpbnRmKCJSZWFkIERQSU8gcmVnaXN0ZXI6IDB4JXggLSBWYWx1ZSA6IDB4JXhc biIsIHJlZywgdmFsKTsKKworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisKK291dDoK KwlmcmVlKGNtZG5hbWUpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS90b29scy9pbnRl bF9kcGlvX3dyaXRlLmMgYi90b29scy9pbnRlbF9kcGlvX3dyaXRlLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjg0Mjk5OQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2lu dGVsX2RwaW9fd3JpdGUuYwpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqCQlWaWpheSBQdXJ1c2hvdGhhbWFuIDx2aWph eS5hLnB1cnVzaG90aGFtYW5AaW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVkZSA8dW5pc3Rk Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxl cnIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJpbnRlbF9ncHVfdG9vbHMuaCIK Kworc3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqY21kbmFtZSkKK3sKKwlwcmludGYoIldhcm5pbmcg OiBUaGlzIHByb2dyYW0gd2lsbCB3b3JrIG9ubHkgb24gVmFsbGV5dmlld1xuIik7CisJcHJpbnRm KCJVc2FnZTogJXMgW2FkZHJdIFt2YWxdXG4iLCBjbWRuYW1lKTsKKwlwcmludGYoIlx0IGFkZHIg OiBpbiAweFhYWFggZm9ybWF0XG4iKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh cmd2KQoreworCWludCByZXQgPSAwOworCXVpbnQzMl90IHJlZywgdmFsOworCWNoYXIgKmNtZG5h bWUgPSBzdHJkdXAoYXJndlswXSk7CisJc3RydWN0IHBjaV9kZXZpY2UgKmRldiA9IGludGVsX2dl dF9wY2lfZGV2aWNlKCk7CisKKwlpZiAoYXJnYyAhPSAzIHx8ICFJU19WQUxMRVlWSUVXKGRldi0+ ZGV2aWNlX2lkKSkgeworCQl1c2FnZShjbWRuYW1lKTsKKwkJcmV0ID0gMTsKKwkJZ290byBvdXQ7 CisJfQorCisJc3NjYW5mKGFyZ3ZbMV0sICIweCV4IiwgJnJlZyk7CisJc3NjYW5mKGFyZ3ZbMl0s ICIweCV4IiwgJnZhbCk7CisKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChkZXYsIDApOwor CisJaW50ZWxfZHBpb19yZWdfd3JpdGUocmVnLCB2YWwpOworCisJaW50ZWxfcmVnaXN0ZXJfYWNj ZXNzX2ZpbmkoKTsKKworb3V0OgorCWZyZWUoY21kbmFtZSk7CisJcmV0dXJuIHJldDsKK30KLS0g CjEuNy45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==