From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6AD8E6E197 for ; Wed, 20 Jun 2018 15:14:41 +0000 (UTC) From: Tomasz Lis Date: Wed, 20 Jun 2018 17:14:38 +0200 Message-Id: <1529507678-6180-1-git-send-email-tomasz.lis@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v1] Data Port Cache Coherency tests. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: bartosz.dunajski@intel.com List-ID: VGhpcyBhZGRzIGEgbmV3IHRlc3QgYmluYXJ5LCBjb250YWluaW5nIHRlc3RzIGZvciB0aGUgRGF0 YSBQb3J0IENvaGVyZW5jeQpvcHRpb24uIFRoZSB0ZXN0cyBjaGVjayB3aGV0aGVyIHRoZSBvcHRp b24gdmFsdWUgaXMgc3RvcmVkIHByb3Blcmx5IG9uIHRoZQprZXJuZWwgc2lkZSwgYnV0IGFsc28g d2hldGhlciBpcyBpcyBjb3JyZWN0bHkgc2V0IHRvIHByb3BlciBHUFUgcmVnaXN0ZXIuCgpDYzog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBNaWNoYWwgV2luaWFyc2tp IDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KClNpZ25lZC1vZmYtYnk6IFRvbWFzeiBMaXMg PHRvbWFzei5saXNAaW50ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgICAg ICAgfCAgIDEgKwogdGVzdHMvZ2VtX2N0eF9jYWNoZV9jb2hlcmVuY3kuYyB8IDMyNCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMzI2IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9nZW1fY3R4X2NhY2hlX2NvaGVyZW5jeS5jCgpkaWZmIC0t Z2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKaW5k ZXggYWQ2MjYxMS4uMTgxYmE5ZCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwor KysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC01Niw2ICs1Niw3IEBAIFRFU1RTX3Byb2dz ID0gXAogCWdlbV9jc190bGIgXAogCWdlbV9jdHhfYmFkX2Rlc3Ryb3kgXAogCWdlbV9jdHhfYmFk X2V4ZWMgXAorCWdlbV9jdHhfY2FjaGVfY29oZXJlbmN5IFwKIAlnZW1fY3R4X2NyZWF0ZSBcCiAJ Z2VtX2N0eF9leGVjIFwKIAlnZW1fY3R4X2lzb2xhdGlvbiBcCmRpZmYgLS1naXQgYS90ZXN0cy9n ZW1fY3R4X2NhY2hlX2NvaGVyZW5jeS5jIGIvdGVzdHMvZ2VtX2N0eF9jYWNoZV9jb2hlcmVuY3ku YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTVmMjEyCi0tLSAvZGV2L251 bGwKKysrIGIvdGVzdHMvZ2VtX2N0eF9jYWNoZV9jb2hlcmVuY3kuYwpAQCAtMCwwICsxLDMyNCBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisvKiogQGZpbGUg Z2VtX2N0eF9jYWNoZV9jb2hlcmVuY3kuYworICoKKyAqIENoZWNrIHRoYXQgdGhlIERhdGEgcG9y dCBjb2hlcmVuY3kgc2V0dGluZ3MgYXJlIHdvcmtpbmcuCisgKi8KKworI2luY2x1ZGUgImlndC5o IgorI2luY2x1ZGUgImlndF9ndC5oIgorI2luY2x1ZGUgImlndF9zeXNmcy5oIgorCitlbnVtIHsK KwlOT05FLAorCVJFU0VULAorCVJDNiwKKwlTVVNQRU5ELAorCUhJQkVSTkFURSwKKwlNQVhfQ09I RVJFTkNZX1RFU1RfTU9ERVMKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGVzdF9t b2Rlc1tdID0geworCVtOT05FXSA9ICJzZXR0aW5ncyIsCisJW1JFU0VUXSA9ICJyZXNldCIsCisJ W1JDNl0gPSAicmM2IiwKKwlbU1VTUEVORF0gPSAic3VzcGVuZCIsCisJW0hJQkVSTkFURV0gPSAi aGliZXJuYXRlIgorfTsKKworLyoqIE1ha2UgdGhlIHRlc3QgYmUgcGVyZm9ybWVkIG9uIG5vbi1k ZWZhdWx0IGNvbnRleHQgKGNyZWF0ZWQgYnkgdGhlIHRlc3QpICovCisjZGVmaW5lIENPSEVSRU5D WV9OT05fREVGQVVMVF9DVFgJKDE8PDApCisvKiogQ2hlY2sgZm9yIHRlc3QgdmFsdWUgc2VwYXJh dGlvbiBiZXR3ZWVuIGNvbnRleHRzICovCisjZGVmaW5lIENPSEVSRU5DWV9DVFhfU0VQQVJBVElP TgkoMTw8MSkKKy8qKiBWYWx1ZSBvZiBhbGwgZmxhZ3Mgc2V0ICovCisjZGVmaW5lIEFMTF9DT0hF UkVOQ1lfRkxBR1MJCShDT0hFUkVOQ1lfTk9OX0RFRkFVTFRfQ1RYIHwgXAorCQkJCQlDT0hFUkVO Q1lfQ1RYX1NFUEFSQVRJT04pCisKKy8qIElPQ1RMIGRlZmluaXRpb25zICovCisjZGVmaW5lIEk5 MTVfQ09OVEVYVF9QQVJBTV9DT0hFUkVOQ1kJMHg3CisKKy8qIEhhcmR3YXJlIHJlZ2lzdGVycyAq LworI2RlZmluZSBIRENfQ0hJQ0tFTjAJCSgweDczMDApCisjZGVmaW5lIENOTF9IRENfQ0hJQ0tF TjAJKDB4RTVGMCkKKyNkZWZpbmUgSUNMX0hEQ19DSElDS0VOMAkoMHhFNUY0KQorLyoqIENvaGVy ZW5jeSBiaXQgd2l0aGluIGNoaWNrZW4wIHJlZ2lzdGVyICovCisjZGVmaW5lIEhEQ19GT1JDRV9O T05fQ09IRVJFTlQJKDE8PDQpCisKK3N0YXRpYyB1aW50MzJfdCBnZXRfY29udGV4dF9jb2hlcmVu Y3lfc3RvcmVfcmVnaXN0ZXIoaW50IGZkLCB1aW50MzJfdCBlbmdpbmUpCit7CisJY29uc3QgaW50 IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJaWYgKGdlbiA+PSAx MSkKKwkJcmV0dXJuIElDTF9IRENfQ0hJQ0tFTjA7CisJaWYgKGdlbiA+PSAxMCkKKwkJcmV0dXJu IENOTF9IRENfQ0hJQ0tFTjA7CisJcmV0dXJuIEhEQ19DSElDS0VOMDsKK30KKworI2RlZmluZSBN SV9TVE9SRV9SRUdJU1RFUl9NRU1fNjRfQklUX0FERFIJKCgweDI0IDw8IDIzKSB8IDIpCisKK3N0 YXRpYyBpbnQgY3JlYXRlX3JlYWRfYmF0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9u X2VudHJ5ICpyZWxvYywKKwkJCSAgICAgdWludDMyX3QgKmJhdGNoLAorCQkJICAgICB1aW50MzJf dCBkc3RfaGFuZGxlLAorCQkJICAgICB1aW50MzJfdCBzaXplLAorCQkJICAgICB1aW50MzJfdCBy ZWdfYmFzZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMDsKKworCWZvciAodWludDMyX3Qg aW5kZXggPSAwOyBpbmRleCA8IHNpemU7IGluZGV4KyssIG9mZnNldCArPSA0KSB7CisJCWJhdGNo W29mZnNldF0gICA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV82NF9CSVRfQUREUjsKKwkJYmF0Y2hb b2Zmc2V0KzFdID0gcmVnX2Jhc2UgKyAoaW5kZXggKiBzaXplb2YodWludDMyX3QpKTsKKwkJYmF0 Y2hbb2Zmc2V0KzJdID0gaW5kZXggKiBzaXplb2YodWludDMyX3QpOwkvKiByZWxvYyAqLworCQli YXRjaFtvZmZzZXQrM10gPSAwOworCisJCXJlbG9jW2luZGV4XS5vZmZzZXQgPSAob2Zmc2V0ICsg MikgKiBzaXplb2YodWludDMyX3QpOworCQlyZWxvY1tpbmRleF0uZGVsdGEgPSBpbmRleCAqIHNp emVvZih1aW50MzJfdCk7CisJCXJlbG9jW2luZGV4XS50YXJnZXRfaGFuZGxlID0gZHN0X2hhbmRs ZTsKKwkJcmVsb2NbaW5kZXhdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7 CisJCXJlbG9jW2luZGV4XS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwor CX0KKworCWJhdGNoW29mZnNldCsrXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJYmF0Y2hbb2Zm c2V0KytdID0gMDsKKworCXJldHVybiBvZmZzZXQgKiBzaXplb2YodWludDMyX3QpOworfQorCitz dGF0aWMgdm9pZCBkb19yZWFkX3JlZ2lzdGVycyhpbnQgZmQsCisJCQkgICAgICB1aW50MzJfdCBj dHhfaWQsCisJCQkgICAgICB1aW50MzJfdCBkc3RfaGFuZGxlLAorCQkJICAgICAgdWludDMyX3Qg cmVnX2Jhc2UsCisJCQkgICAgICB1aW50MzJfdCBzaXplLAorCQkJICAgICAgdWludDMyX3QgZW5n aW5lX2lkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1 X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jW3NpemVdOworCXVpbnQzMl90IGJhdGNoW3NpemUg KiA0ICsgNF07CisJdWludDMyX3QgaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKwlt ZW1zZXQocmVsb2MsIDAsIHNpemVvZihyZWxvYykpOworCW1lbXNldChvYmosIDAsIHNpemVvZihv YmopKTsKKwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisKKwlvYmpbMF0u aGFuZGxlID0gZHN0X2hhbmRsZTsKKworCW9ialsxXS5oYW5kbGUgPSBoYW5kbGU7CisJb2JqWzFd LnJlbG9jYXRpb25fY291bnQgPSBzaXplOworCW9ialsxXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9w b2ludGVyKHJlbG9jKTsKKworCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIo b2JqKTsKKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDI7CisJZXhlY2J1Zi5iYXRjaF9sZW4gPQor CQljcmVhdGVfcmVhZF9iYXRjaChyZWxvYywgYmF0Y2gsIGRzdF9oYW5kbGUsIHNpemUsIHJlZ19i YXNlKTsKKwlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKGV4ZWNidWYsIGN0eF9pZCk7 CisJZXhlY2J1Zi5mbGFncyA9IEk5MTVfRVhFQ19TRUNVUkUgfCBlbmdpbmVfaWQ7CisKKwlnZW1f d3JpdGUoZmQsIGhhbmRsZSwgMCwgYmF0Y2gsIGV4ZWNidWYuYmF0Y2hfbGVuKTsKKwlnZW1fZXhl Y2J1ZihmZCwgJmV4ZWNidWYpOworCWdlbV9jbG9zZShmZCwgaGFuZGxlKTsKK30KKworLyoqCisg KiBfX2dlbV9jb250ZXh0X3NldF9jb2hlcmVuY3k6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmls ZSBkZXNjcmlwdG9yCisgKiBAY3R4X2lkOiBpOTE1IGNvbnRleHQgaWQKKyAqIEBlbmFibGU6IGRl c2lyZWQgY29udGV4dCBjb2hlcmVuY3kgc3RhdGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1vZGlm aWVzIERhdGEgcG9ydCBjb2hlcmVuY3kgcHJvcGVydHkgb2YgdGhlIGNvbnRleHQuCisgKgorICog UmV0dXJuczogQW4gaW50ZWdlciBlcXVhbCB0byB6ZXJvIGZvciBzdWNjZXNzIGFuZCBuZWdhdGl2 ZSBmb3IgZmFpbHVyZQorICovCitzdGF0aWMgaW50IF9fZ2VtX2NvbnRleHRfc2V0X2NvaGVyZW5j eShpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCwgaW50IGVuYWJsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcDsKKworCW1lbXNldCgmcCwgMCwgc2l6ZW9mKHApKTsKKwlw LmN0eF9pZCA9IGN0eF9pZDsKKwlwLnNpemUgPSAwOworCXAucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fQ09IRVJFTkNZOworCXAudmFsdWUgPSBlbmFibGU7CisKKwlyZXR1cm4gX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZwKTsKK30KKworLyoqCisgKiBnZW1fY29udGV4dF9zZXRfY29o ZXJlbmN5OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGN0eF9p ZDogaTkxNSBjb250ZXh0IGlkCisgKiBAZW5hYmxlOiBkZXNpcmVkIGNvbnRleHQgY29oZXJlbmN5 IHN0YXRlCisgKgorICogTGlrZSBfX2dlbV9jb250ZXh0X3NldF9jb2hlcmVuY3koKSwgZXhjZXB0 IHdlIGFzc2VydCBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgdm9pZCBnZW1fY29udGV4dF9zZXRf Y29oZXJlbmN5KGludCBmZCwgdWludDMyX3QgY3R4X2lkLCBpbnQgZW5hYmxlKQoreworCWlndF9h c3NlcnQoX19nZW1fY29udGV4dF9zZXRfY29oZXJlbmN5KGZkLCBjdHhfaWQsIGVuYWJsZSkgPT0g MCk7Cit9CisKK3N0YXRpYyBpbnQgZ2VtX2NvbnRleHRfZ2V0X2NvaGVyZW5jeShpbnQgZmQsIHVp bnQzMl90IGN0eF9pZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcDsK KwltZW1zZXQoJnAsIDAsIHNpemVvZihwKSk7CisJcC5jdHhfaWQgPSBjdHhfaWQ7CisJcC5zaXpl ID0gMDsKKwlwLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0NPSEVSRU5DWTsKKworCWlndF9h c3NlcnQoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZwKSA9PSAwKTsKKworCXJldHVybiBw LnZhbHVlOworfQorCitzdGF0aWMgdm9pZCBjaGVja19jaGlja2VuX3JlZ2lzdGVyX2NvaGVyZW5j eV9mbGFnKGludCBmZCwKKwkJCQkgICAgdW5zaWduZWQgZW5naW5lLAorCQkJCSAgICB1aW50MzJf dCBjdHhfaWQpCit7CisJY29uc3QgdWludDMyX3QgcmVnX2Jhc2UgPSBnZXRfY29udGV4dF9jb2hl cmVuY3lfc3RvcmVfcmVnaXN0ZXIoZmQsIGVuZ2luZSk7CisJdWludDMyX3QgZHN0X2hhbmRsZSA9 IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCXVpbnQzMl90ICpyZWFkX3JlZ3M7CisJaW50IGZnX2Nv aGVyZW5jeTsKKworCWZnX2NvaGVyZW5jeSA9IGdlbV9jb250ZXh0X2dldF9jb2hlcmVuY3koZmQs IGN0eF9pZCk7CisKKwlkb19yZWFkX3JlZ2lzdGVycyhmZCwKKwkJCSAgY3R4X2lkLAorCQkJICBk c3RfaGFuZGxlLAorCQkJICByZWdfYmFzZSwKKwkJCSAgMSwKKwkJCSAgZW5naW5lKTsKKworCXJl YWRfcmVncyA9IGdlbV9tbWFwX19jcHUoZmQsIGRzdF9oYW5kbGUsIDAsIDQwOTYsIFBST1RfUkVB RCk7CisKKwlnZW1fc2V0X2RvbWFpbihmZCwgZHN0X2hhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQ VSwgMCk7CisJLyogQ29oZXJlbmN5IGlzIGVuYWJsZWQgd2hlbiBub24taG9oZXJlbnQgYml0IGlz IGRpc2FibGVkICovCisJaWd0X2Fzc2VydCgoKHJlYWRfcmVnc1swXSAmIEhEQ19GT1JDRV9OT05f Q09IRVJFTlQpICE9IDApICE9IGZnX2NvaGVyZW5jeSk7CisKKwltdW5tYXAocmVhZF9yZWdzLCA0 MDk2KTsKKwlnZW1fY2xvc2UoZmQsIGRzdF9oYW5kbGUpOworfQorCitzdGF0aWMgdWludDMyX3Qg cmM2X3Jlc2lkZW5jeShpbnQgZGlyKQoreworCXJldHVybiBpZ3Rfc3lzZnNfZ2V0X3UzMihkaXIs ICJwb3dlci9yYzZfcmVzaWRlbmN5X21zIik7Cit9CisKK3N0YXRpYyB2b2lkIHJjNl93YWl0KGlu dCBmZCkKK3sKKwlpbnQgc3lzZnM7CisJdWludDMyX3QgcmVzaWRlbmN5OworCisJc3lzZnMgPSBp Z3Rfc3lzZnNfb3BlbihmZCwgTlVMTCk7CisJaWd0X2Fzc2VydF9sdGUoMCwgc3lzZnMpOworCisJ cmVzaWRlbmN5ID0gcmM2X3Jlc2lkZW5jeShzeXNmcyk7CisJaWd0X3JlcXVpcmUoaWd0X3dhaXQo cmM2X3Jlc2lkZW5jeShzeXNmcykgIT0gcmVzaWRlbmN5LCAxMDAwMCwgMikpOworCisJY2xvc2Uo c3lzZnMpOworfQorCitzdGF0aWMgdm9pZCBydW5fdGVzdChpbnQgZmQsIHVuc2lnbmVkIGVuZ2lu ZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIG1vZGUpCit7CisJdWludDMyX3QgY3R4X2lkID0g MDsKKwl1aW50MzJfdCBjdHhfY2xlYW5faWQ7CisJdWludDMyX3QgY3R4X2RpcnR5X2lkOworCisJ Z2VtX3JlcXVpcmVfcmluZyhmZCwgZW5naW5lKTsKKwkvKiBPbmx5IHJ1biBSRVNFVCB0ZXN0cyB3 aGVuIEdQVSBSZXNldCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZS4KKwkgKi8KKwlpZiAobW9k ZSA9PSBSRVNFVCkKKwkJaWd0X3JlcXVpcmUoZ2VtX2dwdV9yZXNldF9lbmFibGVkKGZkKSk7CisK KwlpZiAoZmxhZ3MgJiBDT0hFUkVOQ1lfTk9OX0RFRkFVTFRfQ1RYKQorCQljdHhfaWQgPSBnZW1f Y29udGV4dF9jcmVhdGUoZmQpOworCisJZ2VtX2NvbnRleHRfc2V0X2NvaGVyZW5jeShmZCwgY3R4 X2lkLCAxKTsKKworCWlmIChmbGFncyAmIENPSEVSRU5DWV9DVFhfU0VQQVJBVElPTikgeworCQlj dHhfZGlydHlfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOworCQkvL2dlbV9jb250ZXh0X3Nl dF9jb2hlcmVuY3koZmQsIGN0eF9kaXJ0eV9pZCwgMCk7IC8vIHRoaXMgaXMgZGVmYXVsdCwgbm8g bmVlZCB0byBzZXQKKwkJaWd0X2Fzc2VydChnZW1fY29udGV4dF9nZXRfY29oZXJlbmN5KGZkLCBj dHhfZGlydHlfaWQpID09IDApOworCQljaGVja19jaGlja2VuX3JlZ2lzdGVyX2NvaGVyZW5jeV9m bGFnKGZkLCBlbmdpbmUsIGN0eF9kaXJ0eV9pZCk7CisJfQorCisJaWd0X2Fzc2VydChnZW1fY29u dGV4dF9nZXRfY29oZXJlbmN5KGZkLCBjdHhfaWQpID09IDEpOworCWNoZWNrX2NoaWNrZW5fcmVn aXN0ZXJfY29oZXJlbmN5X2ZsYWcoZmQsIGVuZ2luZSwgY3R4X2lkKTsKKworCS8qIENoZWNrIGlm IHRoZSB2YWx1ZXMgYXJlIHByZXNlcnZlZCBhY3Jvc3MgcG93ZXIgbW9kZSBjaGFuZ2VzIC0gb25l IGNoYW5nZSBwZXIgcnVuICovCisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBOT05FOglicmVhazsK KwljYXNlIFJFU0VUOglpZ3RfZm9yY2VfZ3B1X3Jlc2V0KGZkKTsJYnJlYWs7CisJY2FzZSBTVVNQ RU5EOglpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShTVVNQRU5EX1NUQVRFX01FTSwKKwkJ CQkJCSAgICAgIFNVU1BFTkRfVEVTVF9OT05FKTsgYnJlYWs7CisJY2FzZSBISUJFUk5BVEU6CWln dF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKFNVU1BFTkRfU1RBVEVfRElTSywKKwkJCQkJCSAg ICAgIFNVU1BFTkRfVEVTVF9OT05FKTsgYnJlYWs7CisJY2FzZSBSQzY6CXJjNl93YWl0KGZkKTsJ CQlicmVhazsKKwl9CisKKwlpZ3RfYXNzZXJ0KGdlbV9jb250ZXh0X2dldF9jb2hlcmVuY3koZmQs IGN0eF9pZCkgPT0gMSk7CisJY2hlY2tfY2hpY2tlbl9yZWdpc3Rlcl9jb2hlcmVuY3lfZmxhZyhm ZCwgZW5naW5lLCBjdHhfaWQpOworCisJaWYgKGZsYWdzICYgQ09IRVJFTkNZX0NUWF9TRVBBUkFU SU9OKSB7CisJCWN0eF9jbGVhbl9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJCWNoZWNr X2NoaWNrZW5fcmVnaXN0ZXJfY29oZXJlbmN5X2ZsYWcoZmQsIGVuZ2luZSwgY3R4X2RpcnR5X2lk KTsKKwkJY2hlY2tfY2hpY2tlbl9yZWdpc3Rlcl9jb2hlcmVuY3lfZmxhZyhmZCwgZW5naW5lLCBj dHhfY2xlYW5faWQpOworCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfZGlydHlfaWQpOwor CQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfY2xlYW5faWQpOworCX0KKworCWlmIChjdHhf aWQpCisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7 CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmU7CisJaW50IGZkID0gLTE7 CisKKwlpZ3RfZml4dHVyZSB7CisJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7 CisJCWlndF9yZXF1aXJlX2dlbShmZCk7CisJfQorCisJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXM7IGUtPm5hbWU7IGUrKykgeworCQkvKiBDaGVjayBvbmx5IHRoZSByZW5kZXIgZW5n aW5lLCB3aGljaCBpcyBhbHNvIHVzZWQgZm9yIGNvbXB1dGUKKwkJICovCisJCWlmIChlLT5leGVj X2lkICE9IEk5MTVfRVhFQ19SRU5ERVIpCisJCQljb250aW51ZTsKKworCQlmb3IgKHVuc2lnbmVk IG1vZGUgPSBOT05FOyBtb2RlIDwgTUFYX0NPSEVSRU5DWV9URVNUX01PREVTOyBtb2RlKyspIHsK KwkJCWZvciAodW5zaWduZWQgZmxhZ3MgPSAwOyBmbGFncyA8IEFMTF9DT0hFUkVOQ1lfRkxBR1Mg KyAxOyBmbGFncysrKSB7CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJjb2hlcmVuY3ktJXMlcyVzLSVz IiwKKwkJCQkJICAgICAgdGVzdF9tb2Rlc1ttb2RlXSwKKwkJCQkJICAgICAgZmxhZ3MgJiBDT0hF UkVOQ1lfTk9OX0RFRkFVTFRfQ1RYID8gIi1jdHgiOiAiIiwKKwkJCQkJICAgICAgZmxhZ3MgJiBD T0hFUkVOQ1lfQ1RYX1NFUEFSQVRJT04gPyAiLXNlcCI6ICIiLAorCQkJCQkgICAgICBlLT5uYW1l KSB7CisJCQkJCXJ1bl90ZXN0KGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIGZsYWdzLCBtb2Rl KTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZ3RfZml4dHVyZQorCQljbG9zZShmZCk7Cit9 CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4 IGNlZGI0ZmYuLmI3MDk0Y2UgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rl c3RzL21lc29uLmJ1aWxkCkBAIC0zMyw2ICszMyw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2dlbV9j c190bGInLAogCSdnZW1fY3R4X2JhZF9kZXN0cm95JywKIAknZ2VtX2N0eF9iYWRfZXhlYycsCisJ J2dlbV9jdHhfY2FjaGVfY29oZXJlbmN5JywKIAknZ2VtX2N0eF9jcmVhdGUnLAogCSdnZW1fY3R4 X2V4ZWMnLAogCSdnZW1fY3R4X2lzb2xhdGlvbicsCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0 LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==