Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 00B386E7BE for ; Tue, 20 Mar 2018 15:14:08 +0000 (UTC) From: Tomasz Lis Date: Tue, 20 Mar 2018 16:12:32 +0100 Message-Id: <1521558752-25601-1-git-send-email-tomasz.lis@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC v1] Data Port 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: RnJvbTogIkxpcywgVG9tYXN6IiA8dG9tYXN6Lmxpc0BpbnRlbC5jb20+CgpUaGlzIGFkZHMgYSBu ZXcgdGVzdCBiaW5hcnksIGNvbnRhaW5pbmcgdGVzdHMgZm9yIHRoZSBEYXRhIFBvcnQgQ29oZXJl bmN5Cm9wdGlvbi4gVGhlIHRlc3RzIGNoZWNrIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBjb3JyZWN0 bHkgc2V0IHRvIHByb3BlciBHUFUKcmVnaXN0ZXIuCi0tLQogaW5jbHVkZS9kcm0tdWFwaS9pOTE1 X2RybS5oICAgICAgfCAgMTIgKy0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgIHwg ICAxICsKIHRlc3RzL2dlbV9leGVjX2NhY2hlX2NvaGVyZW5jeS5jIHwgMzA3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAzMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2dlbV9leGVjX2NhY2hlX2NvaGVyZW5j eS5jCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9pOTE1X2RybS5oIGIvaW5jbHVkZS9k cm0tdWFwaS9pOTE1X2RybS5oCmluZGV4IDE2ZTQ1MmEuLmE4NGUwMGYgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvZHJtLXVhcGkvaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL2RybS11YXBpL2k5MTVfZHJt LmgKQEAgLTUyOSw2ICs1MjksMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfaXJxX3dhaXQg ewogICovCiAjZGVmaW5lIEk5MTVfUEFSQU1fQ1NfVElNRVNUQU1QX0ZSRVFVRU5DWSA1MQogCisv KiBRdWVyeSB3aGV0aGVyIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSMiBzdXBwb3J0cyB0aGUgYWJp bGl0eSB0byBzd2l0Y2gKKyAgIERhdGEgQ2FjaGUgYWNjZXNzIGludG8gRGF0YSBQb3J0IENvaGVy ZW5jeSBtb2RlLgorICovCisjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfREFUQV9QT1JUX0NP SEVSRU5DWSA1MgorCiB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7CiAJX19zMzIg cGFyYW07CiAJLyoKQEAgLTEwNDgsNyArMTA1MywxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyIHsKICAqLwogI2RlZmluZSBJOTE1X0VYRUNfRkVOQ0VfQVJSQVkgICAoMTw8MTkp CiAKLSNkZWZpbmUgX19JOTE1X0VYRUNfVU5LTk9XTl9GTEFHUyAoLShJOTE1X0VYRUNfRkVOQ0Vf QVJSQVk8PDEpKQorLyogRGF0YSBQb3J0IENvaGVyZW5jeSBjYXBhYmlsaXR5IHdpbGwgYmUgc3dp dGNoZWQgYmVmb3JlIGFuIGV4ZWMgY2FsbAorICogd2hpY2ggaGFzIHRoaXMgZmxhZyBkaWZmZXJl bnQgdGhhbiBwcmV2aW91cyBjYWxsIGZvciB0aGUgY29udGV4dC4KKyAqLworI2RlZmluZSBJOTE1 X0VYRUNfREFUQV9QT1JUX0NPSEVSRU5UICAgKDE8PDIwKQorCisjZGVmaW5lIF9fSTkxNV9FWEVD X1VOS05PV05fRkxBR1MgKC0oSTkxNV9FWEVDX0RBVEFfUE9SVF9DT0hFUkVOVDw8MSkpCiAKICNk ZWZpbmUgSTkxNV9FWEVDX0NPTlRFWFRfSURfTUFTSwkoMHhmZmZmZmZmZikKICNkZWZpbmUgaTkx NV9leGVjYnVmZmVyMl9zZXRfY29udGV4dF9pZChlYjIsIGNvbnRleHQpIFwKZGlmZiAtLWdpdCBh L3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDRl NmY1MzEuLjFlMDMwMTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKKysrIGIv dGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNzMsNiArNzMsNyBAQCBURVNUU19wcm9ncyA9IFwK IAlnZW1fZXhlY19iYXNpYyBcCiAJZ2VtX2V4ZWNfYmlnIFwKIAlnZW1fZXhlY19ibHQgXAorCWdl bV9leGVjX2NhY2hlX2NvaGVyZW5jeSBcCiAJZ2VtX2V4ZWNfY2FwdHVyZSBcCiAJZ2VtX2V4ZWNf Y3JlYXRlIFwKIAlnZW1fZXhlY19mYXVsdGluZ19yZWxvYyBcCmRpZmYgLS1naXQgYS90ZXN0cy9n ZW1fZXhlY19jYWNoZV9jb2hlcmVuY3kuYyBiL3Rlc3RzL2dlbV9leGVjX2NhY2hlX2NvaGVyZW5j eS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNTdkMzUKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9nZW1fZXhlY19jYWNoZV9jb2hlcmVuY3kuYwpAQCAtMCwwICsxLDMw NyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisvKiogQGZp bGUgZ2VtX2V4ZWNfY2FjaGVfY29oZXJlbmN5LmMKKyAqCisgKiBDaGVjayB0aGF0IHRoZSBjYWNo ZSBjb2hlcmVuY3kgYXQgZGF0YSBwb3J0IGxldmVsIHNldHRpbmcgaXMgd29ya2luZy4KKyAqLwor CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJp Z3RfZ3QuaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKKworZW51bSB7CisJTk9ORSwKKwlSRVNF VCwKKwlSQzYsCisJU1VTUEVORCwKKwlISUJFUk5BVEUsCisJTUFYX0NPSEVSRU5DWV9URVNUX01P REVTCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRlc3RfbW9kZXNbXSA9IHsKKwlb Tk9ORV0gPSAic2V0dGluZ3MiLAorCVtSRVNFVF0gPSAicmVzZXQiLAorCVtSQzZdID0gInJjNiIs CisJW1NVU1BFTkRdID0gInN1c3BlbmQiLAorCVtISUJFUk5BVEVdID0gImhpYmVybmF0ZSIKK307 CisKKy8qKiBNYWtlIHRoZSB0ZXN0IGJlIHBlcmZvcm1lZCBvbiBub24tZGVmYXVsdCBjb250ZXh0 IChjcmVhdGVkIGJ5IHRoZSB0ZXN0KSAqLworI2RlZmluZSBDT0hFUkVOQ1lfTk9OX0RFRkFVTFRf Q1RYCSgxPDwwKQorLyoqIENoZWNrIGZvciB0ZXN0IHZhbHVlIHNlcGFyYXRpb24gYmV0d2VlbiBj b250ZXh0cyAqLworI2RlZmluZSBDT0hFUkVOQ1lfQ1RYX1NFUEFSQVRJT04JKDE8PDEpCisvKiog VmFsdWUgb2YgYWxsIGZsYWdzIHNldCAqLworI2RlZmluZSBBTExfQ09IRVJFTkNZX0ZMQUdTCQko Q09IRVJFTkNZX05PTl9ERUZBVUxUX0NUWCB8IFwKKwkJCQkJQ09IRVJFTkNZX0NUWF9TRVBBUkFU SU9OKQorCisvKiBJT0NUTCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFS QU1fQ09IRVJFTkNZCTB4NworCisvKiBIYXJkd2FyZSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgSERD X0NISUNLRU4wCQkoMHg3MzAwKQorI2RlZmluZSBDTkxfSERDX0NISUNLRU4wCSgweEU1RjApCisj ZGVmaW5lIElDTF9IRENfQ0hJQ0tFTjAJKDB4RTVGNCkKKy8qKiBDb2hlcmVuY3kgYml0IHdpdGhp biBjaGlja2VuMCByZWdpc3RlciAqLworI2RlZmluZSBIRENfRk9SQ0VfTk9OX0NPSEVSRU5UCSgx PDw0KQorCitzdGF0aWMgdWludDMyX3QgZ2V0X2NvbnRleHRfY29oZXJlbmN5X3N0b3JlX3JlZ2lz dGVyKGludCBmZCwgdWludDMyX3QgZW5naW5lKQoreworCWNvbnN0IGludCBnZW4gPSBpbnRlbF9n ZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOworCWlmIChnZW4gPj0gMTEpCisJCXJldHVybiBJ Q0xfSERDX0NISUNLRU4wOworCWlmIChnZW4gPj0gMTApCisJCXJldHVybiBDTkxfSERDX0NISUNL RU4wOworCXJldHVybiBIRENfQ0hJQ0tFTjA7Cit9CisKKyNkZWZpbmUgTUlfU1RPUkVfUkVHSVNU RVJfTUVNXzY0X0JJVF9BRERSCSgoMHgyNCA8PCAyMykgfCAyKQorCitzdGF0aWMgaW50IGNyZWF0 ZV9yZWFkX2JhdGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2Ms CisJCQkgICAgIHVpbnQzMl90ICpiYXRjaCwKKwkJCSAgICAgdWludDMyX3QgZHN0X2hhbmRsZSwK KwkJCSAgICAgdWludDMyX3Qgc2l6ZSwKKwkJCSAgICAgdWludDMyX3QgcmVnX2Jhc2UpCit7CisJ dW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisKKwlmb3IgKHVpbnQzMl90IGluZGV4ID0gMDsgaW5k ZXggPCBzaXplOyBpbmRleCsrLCBvZmZzZXQgKz0gNCkgeworCQliYXRjaFtvZmZzZXRdICAgPSBN SV9TVE9SRV9SRUdJU1RFUl9NRU1fNjRfQklUX0FERFI7CisJCWJhdGNoW29mZnNldCsxXSA9IHJl Z19iYXNlICsgKGluZGV4ICogc2l6ZW9mKHVpbnQzMl90KSk7CisJCWJhdGNoW29mZnNldCsyXSA9 IGluZGV4ICogc2l6ZW9mKHVpbnQzMl90KTsJLyogcmVsb2MgKi8KKwkJYmF0Y2hbb2Zmc2V0KzNd ID0gMDsKKworCQlyZWxvY1tpbmRleF0ub2Zmc2V0ID0gKG9mZnNldCArIDIpICogc2l6ZW9mKHVp bnQzMl90KTsKKwkJcmVsb2NbaW5kZXhdLmRlbHRhID0gaW5kZXggKiBzaXplb2YodWludDMyX3Qp OworCQlyZWxvY1tpbmRleF0udGFyZ2V0X2hhbmRsZSA9IGRzdF9oYW5kbGU7CisJCXJlbG9jW2lu ZGV4XS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCQlyZWxvY1tpbmRl eF0ucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKKwl9CisKKwliYXRjaFtv ZmZzZXQrK10gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCWJhdGNoW29mZnNldCsrXSA9IDA7CisK KwlyZXR1cm4gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90KTsKK30KKworc3RhdGljIHZvaWQgZG9f cmVhZF9yZWdpc3RlcnMoaW50IGZkLAorCQkJICAgICAgdWludDMyX3QgY3R4X2lkLAorCQkJICAg ICAgdWludDMyX3QgZHN0X2hhbmRsZSwKKwkJCSAgICAgIHVpbnQzMl90IHJlZ19iYXNlLAorCQkJ ICAgICAgdWludDMyX3Qgc2l6ZSwKKwkJCSAgICAgIHVpbnQzMl90IGVuZ2luZV9pZCwKKwkJCSAg ICAgIHVpbnQzMl90IGV4ZWNfZmxhZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2Nbc2l6ZV07CisJdWlu dDMyX3QgYmF0Y2hbc2l6ZSAqIDQgKyA0XTsKKwl1aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRl KGZkLCA0MDk2KTsKKworCW1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7CisJbWVtc2V0 KG9iaiwgMCwgc2l6ZW9mKG9iaikpOworCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNi dWYpKTsKKworCW9ialswXS5oYW5kbGUgPSBkc3RfaGFuZGxlOworCisJb2JqWzFdLmhhbmRsZSA9 IGhhbmRsZTsKKwlvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IHNpemU7CisJb2JqWzFdLnJlbG9j c19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOworCisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9 IHRvX3VzZXJfcG9pbnRlcihvYmopOworCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsKKwlleGVj YnVmLmJhdGNoX2xlbiA9CisJCWNyZWF0ZV9yZWFkX2JhdGNoKHJlbG9jLCBiYXRjaCwgZHN0X2hh bmRsZSwgc2l6ZSwgcmVnX2Jhc2UpOworCWk5MTVfZXhlY2J1ZmZlcjJfc2V0X2NvbnRleHRfaWQo ZXhlY2J1ZiwgY3R4X2lkKTsKKwlleGVjYnVmLmZsYWdzID0gSTkxNV9FWEVDX1NFQ1VSRSB8IGV4 ZWNfZmxhZ3MgfCBlbmdpbmVfaWQ7CisKKwlnZW1fd3JpdGUoZmQsIGhhbmRsZSwgMCwgYmF0Y2gs IGV4ZWNidWYuYmF0Y2hfbGVuKTsKKwlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOworCWdlbV9j bG9zZShmZCwgaGFuZGxlKTsKK30KKworc3RhdGljIGludCBnZW1faW9jdGwoaW50IGZkLCB1bnNp Z25lZCBsb25nIHJlcXVlc3QsIHZvaWQgKmFyZ3ApCit7CisJaW50IHJldDsKKworCWRvIHsKKwkJ cmV0ID0gaW9jdGwoZmQsIHJlcXVlc3QsIGFyZ3ApOworCX0gd2hpbGUgKHJldCA9PSAtMSAmJiAo ZXJybm8gPT0gRUlOVFIgfHwgZXJybm8gPT0gRUFHQUlOKSk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGdlbV9nZXRfcGFyYW0oaW50IGZkLCB1aW50MzJfdCBwYXJhbSkKK3sKKwlp bnQgdmFsdWUgPSAwOworCWRybV9pOTE1X2dldHBhcmFtX3QgZ3AgPSB7CisJCS5wYXJhbSA9IHBh cmFtLAorCQkudmFsdWUgPSAmdmFsdWUKKwl9OworCisJaWd0X2Fzc2VydChnZW1faW9jdGwoZmQs IERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApICE9IC0xKTsKKworCXJldHVybiB2YWx1ZTsK K30KKworLyoqCisgKiBjaGVja19jaGlja2VuX3JlZ2lzdGVyX2NvaGVyZW5jeV9mbGFnOgorICog QGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGVuZ2luZTogZW5naW5lCisg KiBAY3R4X2lkOiBpOTE1IGNvbnRleHQgaWQKKyAqCisgKiBTZW5kcyBhbiBleGVjIGNhbGwgd2l0 aCBnaXZlbiBjb2hlcmVuY3kgc3RhdGUsIGFuZCBjaGVja3MgaWYgdGhlIGZsYWcgd2FzCisgKiBz ZXQgaW4gaGFyZHdhcmUuCisgKi8KK3N0YXRpYyB2b2lkIGNoZWNrX2NoaWNrZW5fcmVnaXN0ZXJf Y29oZXJlbmN5X2ZsYWcoaW50IGZkLAorCQkJCSAgICB1bnNpZ25lZCBlbmdpbmUsCisJCQkJICAg IHVpbnQzMl90IGN0eF9pZCwKKwkJCQkgICAgYm9vbCBjb2hlcmVuY3lfZW5hYmxlKQoreworCWNv bnN0IHVpbnQzMl90IHJlZ19iYXNlID0gZ2V0X2NvbnRleHRfY29oZXJlbmN5X3N0b3JlX3JlZ2lz dGVyKGZkLCBlbmdpbmUpOworCXVpbnQzMl90IGRzdF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKKwl1aW50MzJfdCAqcmVhZF9yZWdzOworCisJZG9fcmVhZF9yZWdpc3RlcnMoZmQsCisJ CQkgIGN0eF9pZCwKKwkJCSAgZHN0X2hhbmRsZSwKKwkJCSAgcmVnX2Jhc2UsCisJCQkgIDEsCisJ CQkgIGVuZ2luZSwKKwkJCSAgY29oZXJlbmN5X2VuYWJsZSA/IEk5MTVfRVhFQ19EQVRBX1BPUlRf Q09IRVJFTlQgOiAwKTsKKworCXJlYWRfcmVncyA9IGdlbV9tbWFwX19jcHUoZmQsIGRzdF9oYW5k bGUsIDAsIDQwOTYsIFBST1RfUkVBRCk7CisKKwlnZW1fc2V0X2RvbWFpbihmZCwgZHN0X2hhbmRs ZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7CisJLyogQ29oZXJlbmN5IGlzIGVuYWJsZWQgd2hl biBub24taG9oZXJlbnQgYml0IGlzIGRpc2FibGVkICovCisJaWd0X2Fzc2VydCgoKHJlYWRfcmVn c1swXSAmIEhEQ19GT1JDRV9OT05fQ09IRVJFTlQpICE9IDApICE9IGNvaGVyZW5jeV9lbmFibGUp OworCisJbXVubWFwKHJlYWRfcmVncywgNDA5Nik7CisJZ2VtX2Nsb3NlKGZkLCBkc3RfaGFuZGxl KTsKK30KKworc3RhdGljIHVpbnQzMl90IHJjNl9yZXNpZGVuY3koaW50IGRpcikKK3sKKwlyZXR1 cm4gaWd0X3N5c2ZzX2dldF91MzIoZGlyLCAicG93ZXIvcmM2X3Jlc2lkZW5jeV9tcyIpOworfQor CitzdGF0aWMgdm9pZCByYzZfd2FpdChpbnQgZmQpCit7CisJaW50IHN5c2ZzOworCXVpbnQzMl90 IHJlc2lkZW5jeTsKKworCXN5c2ZzID0gaWd0X3N5c2ZzX29wZW4oZmQsIE5VTEwpOworCWlndF9h c3NlcnRfbHRlKDAsIHN5c2ZzKTsKKworCXJlc2lkZW5jeSA9IHJjNl9yZXNpZGVuY3koc3lzZnMp OworCWlndF9yZXF1aXJlKGlndF93YWl0KHJjNl9yZXNpZGVuY3koc3lzZnMpICE9IHJlc2lkZW5j eSwgMTAwMDAsIDIpKTsKKworCWNsb3NlKHN5c2ZzKTsKK30KKworc3RhdGljIHZvaWQgcnVuX3Rl c3QoaW50IGZkLCB1bnNpZ25lZCBlbmdpbmUsIHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25lZCBtb2Rl KQoreworCXVpbnQzMl90IGN0eF9pZCA9IDA7CisJdWludDMyX3QgY3R4X2NsZWFuX2lkOworCXVp bnQzMl90IGN0eF9kaXJ0eV9pZDsKKworCWdlbV9yZXF1aXJlX3JpbmcoZmQsIGVuZ2luZSk7CisJ aWd0X3JlcXVpcmUoZ2VtX2dldF9wYXJhbShmZCwgSTkxNV9QQVJBTV9IQVNfRVhFQ19EQVRBX1BP UlRfQ09IRVJFTkNZKSA9PSAxKTsKKwkvKiBPbmx5IHJ1biBSRVNFVCB0ZXN0cyB3aGVuIEdQVSBS ZXNldCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZS4KKwkgKi8KKwlpZiAobW9kZSA9PSBSRVNF VCkKKwkJaWd0X3JlcXVpcmUoZ2VtX2dwdV9yZXNldF9lbmFibGVkKGZkKSk7CisKKwlpZiAoZmxh Z3MgJiBDT0hFUkVOQ1lfTk9OX0RFRkFVTFRfQ1RYKQorCQljdHhfaWQgPSBnZW1fY29udGV4dF9j cmVhdGUoZmQpOworCisJY2hlY2tfY2hpY2tlbl9yZWdpc3Rlcl9jb2hlcmVuY3lfZmxhZyhmZCwg ZW5naW5lLCBjdHhfaWQsIDApOworCisJaWYgKGZsYWdzICYgQ09IRVJFTkNZX0NUWF9TRVBBUkFU SU9OKSB7CisJCWN0eF9kaXJ0eV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJCWNoZWNr X2NoaWNrZW5fcmVnaXN0ZXJfY29oZXJlbmN5X2ZsYWcoZmQsIGVuZ2luZSwgY3R4X2RpcnR5X2lk LCAwKTsKKwl9CisKKwljaGVja19jaGlja2VuX3JlZ2lzdGVyX2NvaGVyZW5jeV9mbGFnKGZkLCBl bmdpbmUsIGN0eF9pZCwgMSk7CisKKwkvKiBDaGVjayBpZiB0aGUgdmFsdWVzIGFyZSBwcmVzZXJ2 ZWQgYWNyb3NzIHBvd2VyIG1vZGUgY2hhbmdlcyAtIG9uZSBjaGFuZ2UgcGVyIHJ1biAqLworCXN3 aXRjaCAobW9kZSkgeworCWNhc2UgTk9ORToJYnJlYWs7CisJY2FzZSBSRVNFVDoJaWd0X2ZvcmNl X2dwdV9yZXNldChmZCk7CWJyZWFrOworCWNhc2UgU1VTUEVORDoJaWd0X3N5c3RlbV9zdXNwZW5k X2F1dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sCisJCQkJCQkgICAgICBTVVNQRU5EX1RFU1Rf Tk9ORSk7IGJyZWFrOworCWNhc2UgSElCRVJOQVRFOglpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jl c3VtZShTVVNQRU5EX1NUQVRFX0RJU0ssCisJCQkJCQkgICAgICBTVVNQRU5EX1RFU1RfTk9ORSk7 IGJyZWFrOworCWNhc2UgUkM2OglyYzZfd2FpdChmZCk7CQkJYnJlYWs7CisJfQorCisJY2hlY2tf Y2hpY2tlbl9yZWdpc3Rlcl9jb2hlcmVuY3lfZmxhZyhmZCwgZW5naW5lLCBjdHhfaWQsIDEpOwor CisJaWYgKGZsYWdzICYgQ09IRVJFTkNZX0NUWF9TRVBBUkFUSU9OKSB7CisJCWN0eF9jbGVhbl9p ZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJCWNoZWNrX2NoaWNrZW5fcmVnaXN0ZXJfY29o ZXJlbmN5X2ZsYWcoZmQsIGVuZ2luZSwgY3R4X2RpcnR5X2lkLCAwKTsKKwkJY2hlY2tfY2hpY2tl bl9yZWdpc3Rlcl9jb2hlcmVuY3lfZmxhZyhmZCwgZW5naW5lLCBjdHhfY2xlYW5faWQsIDApOwor CQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfZGlydHlfaWQpOworCQlnZW1fY29udGV4dF9k ZXN0cm95KGZkLCBjdHhfY2xlYW5faWQpOworCX0KKworCWlmIChjdHhfaWQpCisJCWdlbV9jb250 ZXh0X2Rlc3Ryb3koZmQsIGN0eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmU7CisJaW50IGZkID0gLTE7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWlndF9yZXF1aXJl X2dlbShmZCk7CisJfQorCisJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5h bWU7IGUrKykgeworCQkvKiBDaGVjayBvbmx5IHRoZSByZW5kZXIgZW5naW5lLCB3aGljaCBpcyBh bHNvIHVzZWQgZm9yIGNvbXB1dGUKKwkJICovCisJCWlmIChlLT5leGVjX2lkICE9IEk5MTVfRVhF Q19SRU5ERVIpCisJCQljb250aW51ZTsKKworCQlmb3IgKHVuc2lnbmVkIG1vZGUgPSBOT05FOyBt b2RlIDwgTUFYX0NPSEVSRU5DWV9URVNUX01PREVTOyBtb2RlKyspIHsKKwkJCWZvciAodW5zaWdu ZWQgZmxhZ3MgPSAwOyBmbGFncyA8IEFMTF9DT0hFUkVOQ1lfRkxBR1MgKyAxOyBmbGFncysrKSB7 CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJjb2hlcmVuY3ktJXMlcyVzLSVzIiwKKwkJCQkJICAgICAg dGVzdF9tb2Rlc1ttb2RlXSwKKwkJCQkJICAgICAgZmxhZ3MgJiBDT0hFUkVOQ1lfTk9OX0RFRkFV TFRfQ1RYID8gIi1jdHgiOiAiIiwKKwkJCQkJICAgICAgZmxhZ3MgJiBDT0hFUkVOQ1lfQ1RYX1NF UEFSQVRJT04gPyAiLXNlcCI6ICIiLAorCQkJCQkgICAgICBlLT5uYW1lKSB7CisJCQkJCXJ1bl90 ZXN0KGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIGZsYWdzLCBtb2RlKTsKKwkJCQl9CisJCQl9 CisJCX0KKwl9CisKKwlpZ3RfZml4dHVyZQorCQljbG9zZShmZCk7Cit9CmRpZmYgLS1naXQgYS90 ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDExNzY0NjMuLjc4MWZm ZmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxk CkBAIC01MCw2ICs1MCw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2dlbV9leGVjX2Jhc2ljJywKIAkn Z2VtX2V4ZWNfYmlnJywKIAknZ2VtX2V4ZWNfYmx0JywKKwknZ2VtX2V4ZWNfY2FjaGVfY29oZXJl bmN5JywKIAknZ2VtX2V4ZWNfY2FwdHVyZScsCiAJJ2dlbV9leGVjX2NyZWF0ZScsCiAJJ2dlbV9l eGVjX2ZhdWx0aW5nX3JlbG9jJywKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK