From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 38D5F6EB9C for ; Fri, 17 Apr 2020 21:10:41 +0000 (UTC) From: Lyude Date: Fri, 17 Apr 2020 17:10:25 -0400 Message-Id: <20200417211025.109574-6-lyude@redhat.com> In-Reply-To: <20200417211025.109574-1-lyude@redhat.com> References: <20200417211025.109574-1-lyude@redhat.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 5/5] tests: Add nouveau-crc 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: nouveau@lists.freedesktop.org, igt-dev@lists.freedesktop.org List-ID: RnJvbTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KCldlJ3JlIGZpbmFsbHkgZ2V0dGlu ZyBDUkMgc3VwcG9ydCBpbiBub3V2ZWF1LCBzbyBsZXQncyBzdGFydCB0ZXN0aW5nCnRoaXMgaW4g aWd0IGFzIHdlbGwhIFdoaWxlIHRoZSBub3JtYWwgQ1JDIGNhcHR1cmUgdGVzdHMgYXJlIG5pY2Us CnRoZXJlJ3MgYSBudW1iZXIgb2YgTnZpZGlhLXNwZWNpZmljIGhhcmR3YXJlIGNoYXJhY3Rlcmlz dGljcyB0aGF0IHdlCm5lZWQgdG8gdGVzdCBhcyB3ZWxsLgoKVGhlIG1vc3QgaW1wb3J0YW50IG9u ZSBpcyBrbm93biBhcyBhICJub3RpZmllciBjb250ZXh0IGZsaXAiLiBCYXNpY2FsbHksCk52aWRp YSBHUFVzIHN0b3JlIGdlbmVyYXRlZCBDUkNzIGluIGFuIGFsbG9jYXRlZCBtZW1vcnkgcmVnaW9u LCByZWZlcnJlZAp0byBhcyB0aGUgbm90aWZpZXIgY29udGV4dCwgdGhhdCB0aGUgZHJpdmVyIHBy b2dyYW1zIGl0c2VsZi4gU3RyYW5nZWx5LAp0aGlzIHJlZ2lvbiBjYW4gb25seSBob2xkIGEgbGlt aXRlZCBudW1iZXIgb2YgQ1JDIGVudHJpZXMsIGFuZCBvbmNlIGl0CnJ1bnMgb3V0IG9mIGF2YWls YWJsZSBlbnRyaWVzIHRoZSBoYXJkd2FyZSBzaW1wbHkgc2V0cyBhbiBvdmVycnVuIGJpdAphbmQg c3RvcHMgd3JpdGluZyBhbnkgbmV3IENSQyBlbnRyaWVzLgoKU2luY2UgaWd0LWdwdS10b29scyBk b2Vzbid0IHJlYWxseSBoYXZlIGFuIGV4cGVjdGF0aW9uIG9mIG9ubHkgYmVpbmcKYWJsZSB0byBn cmFiIGEgbGltaXRlZCBudW1iZXIgb2YgQ1JDcywgd2Ugd29yayBhcm91bmQgdGhpcyBpbiBub3V2 ZWF1IGJ5CmFsbG9jYXRpbmcgdHdvIHNlcGFyYXRlIENSQyBub3RpZmllciByZWdpb25zIGVhY2gg dGltZSB3ZSBzdGFydApjYXB0dXJpbmcgQ1JDcywgYW5kIHRoZW4gZmxpcCBiZXR3ZWVuIHRoZW0g d2hlbmV2ZXIgd2UgZ2V0IGNsb3NlIHRvCmZpbGxpbmcgb3VyIGN1cnJlbnRseSBwcm9ncmFtbWVk IG5vdGlmaWVyIGNvbnRleHQuIFdoaWxlIHRoaXMga2VlcHMgdGhlCm51bWJlciBvZiBDUkMgZW50 cmllcyB3ZSBsb3NlIHRvIGFuIGFic29sdXRlIG1pbmltdW0sIHdlIGFyZSBndWFyYW50ZWVkCnRv IGxvc2UgZXhhY3RseSBvbmUgQ1JDIGVudHJ5IGJldHdlZW4gY29udGV4dCBmbGlwcy4gVGh1cywg d2UgYWRkIHNvbWUKdGVzdHMgdG8gZW5zdXJlIHRoYXQgbm91dmVhdSBoYW5kbGVzIHRoZXNlIGZs aXBzIGNvcnJlY3RseQoocGlwZS1bQS1GXS1jdHgtZmxpcC1kZXRlY3Rpb24pLCBhbmQgdGhhdCBp Z3QgaXRzZWxmIGlzIGFsc28gYWJsZSB0bwpoYW5kbGUgdGhlbSBjb3JyZWN0bHkgKHBpcGUtW0Et Rl0tY3R4LWZsaXAtc2tpcC1jdXJyZW50LWZyYW1lKS4gU2luY2UKdGhlc2UgdGVzdHMgdXNlIGEg ZGVidWdmcyBpbnRlcmZhY2UgdG8gbWFudWFsbHkgY29udHJvbCB0aGUgbm90aWZpZXIKY29udGV4 dCBmbGlwIHRocmVzaG9sZCwgd2UgYWxzbyBhZGQgb25lIHRlc3QgdG8gZW5zdXJlIHRoYXQgYW55 IGZsaXAKdGhyZXNob2xkcyB3ZSBzZXQgYXJlIGNsZWFyZWQgYWZ0ZXIgYSBzaW5nbGUgQ1JDIGNh cHR1cmUKKGN0eC1mbGlwLXRocmVzaG9sZC1yZXNldC1hZnRlci1jYXB0dXJlKS4KCkluIGFkZGl0 aW9uLCB3ZSBhbHNvIGFkZCBzb21lIHNpbXBsZSB0ZXN0cyB0byB0ZXN0IE52aWRpYS1zcGVjaWZp YyBDUkMKc291cmNlcy4KCkNoYW5nZXMgc2luY2UgdjI6CiogRml4IG1pc3NpbmcgaW5jbHVkZSBp biB0ZXN0cy9ub3V2ZWF1X2NyYy5jLCB0aGlzIHNob3VsZCBmaXggYnVpbGRzIGZvcgogIGFhcmNo NjQKQ2hhbmdlcyBzaW5jZSB2MToKKiBGaXggY29weXJpZ2h0IHllYXIgaW4gbm91dmVhdV9jcmMu YwoKU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KLS0tCiBsaWIv ZHJtdGVzdC5jICAgICAgIHwgIDEwICsrCiBsaWIvZHJtdGVzdC5oICAgICAgIHwgICAyICsKIHRl c3RzL21lc29uLmJ1aWxkICAgfCAgIDEgKwogdGVzdHMvbm91dmVhdV9jcmMuYyB8IDM5NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCA0MTAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL25vdXZlYXVfY3Jj LmMKCmRpZmYgLS1naXQgYS9saWIvZHJtdGVzdC5jIGIvbGliL2RybXRlc3QuYwppbmRleCAxZmMz OTkyNS4uNTNjMDE3NTQgMTAwNjQ0Ci0tLSBhL2xpYi9kcm10ZXN0LmMKKysrIGIvbGliL2RybXRl c3QuYwpAQCAtMTEyLDYgKzExMiwxMSBAQCBib29sIGlzX2k5MTVfZGV2aWNlKGludCBmZCkKIAly ZXR1cm4gX19pc19kZXZpY2UoZmQsICJpOTE1Iik7CiB9CiAKK2Jvb2wgaXNfbm91dmVhdV9kZXZp Y2UoaW50IGZkKQoreworCXJldHVybiBfX2lzX2RldmljZShmZCwgIm5vdXZlYXUiKTsKK30KKwog Ym9vbCBpc192YzRfZGV2aWNlKGludCBmZCkKIHsKIAlyZXR1cm4gX19pc19kZXZpY2UoZmQsICJ2 YzQiKTsKQEAgLTUzNyw2ICs1NDIsMTEgQEAgdm9pZCBpZ3RfcmVxdWlyZV9pbnRlbChpbnQgZmQp CiAJaWd0X3JlcXVpcmUoaXNfaTkxNV9kZXZpY2UoZmQpICYmIGhhc19rbm93bl9pbnRlbF9jaGlw c2V0KGZkKSk7CiB9CiAKK3ZvaWQgaWd0X3JlcXVpcmVfbm91dmVhdShpbnQgZmQpCit7CisJaWd0 X3JlcXVpcmUoaXNfbm91dmVhdV9kZXZpY2UoZmQpKTsKK30KKwogdm9pZCBpZ3RfcmVxdWlyZV92 YzQoaW50IGZkKQogewogCWlndF9yZXF1aXJlKGlzX3ZjNF9kZXZpY2UoZmQpKTsKZGlmZiAtLWdp dCBhL2xpYi9kcm10ZXN0LmggYi9saWIvZHJtdGVzdC5oCmluZGV4IDYzMmM2MTZiLi40OTM3ZTlk MiAxMDA2NDQKLS0tIGEvbGliL2RybXRlc3QuaAorKysgYi9saWIvZHJtdGVzdC5oCkBAIC05Nywx MCArOTcsMTIgQEAgdm9pZCBnZW1fcXVpZXNjZW50X2dwdShpbnQgZmQpOwogCiB2b2lkIGlndF9y ZXF1aXJlX2FtZGdwdShpbnQgZmQpOwogdm9pZCBpZ3RfcmVxdWlyZV9pbnRlbChpbnQgZmQpOwor dm9pZCBpZ3RfcmVxdWlyZV9ub3V2ZWF1KGludCBmZCk7CiB2b2lkIGlndF9yZXF1aXJlX3ZjNChp bnQgZmQpOwogCiBib29sIGlzX2FtZGdwdV9kZXZpY2UoaW50IGZkKTsKIGJvb2wgaXNfaTkxNV9k ZXZpY2UoaW50IGZkKTsKK2Jvb2wgaXNfbm91dmVhdV9kZXZpY2UoaW50IGZkKTsKIGJvb2wgaXNf dmM0X2RldmljZShpbnQgZmQpOwogCiAvKioKZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxk IGIvdGVzdHMvbWVzb24uYnVpbGQKaW5kZXggMGJkY2ZiZTQuLjM5ZjEzNjJlIDEwMDY0NAotLS0g YS90ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtNzEsNiArNzEs NyBAQCB0ZXN0X3Byb2dzID0gWwogCSdrbXNfdmJsYW5rJywKIAkna21zX3ZycicsCiAJJ21ldGFf dGVzdCcsCisJJ25vdXZlYXVfY3JjJywKIAkncGFuZnJvc3RfZ2V0X3BhcmFtJywKIAkncGFuZnJv c3RfZ2VtX25ldycsCiAJJ3BhbmZyb3N0X3ByaW1lJywKZGlmZiAtLWdpdCBhL3Rlc3RzL25vdXZl YXVfY3JjLmMgYi90ZXN0cy9ub3V2ZWF1X2NyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi4wNWMyZjRkZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL25vdXZlYXVfY3Jj LmMKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBSZWQgSGF0IElu Yy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICov CisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImlndF9z eXNmcy5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigKKyJUZXN0cyBjZXJ0YWluIGFzcGVjdHMg b2YgQ1JDIGNhcHR1cmUgdGhhdCBhcmUgZXhjbHVzaXZlIHRvIG52aWRpYSBoYXJkd2FyZSwgIgor InN1Y2ggYXMgY29udGV4dCBmbGlwcGluZy4iKTsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWludCBw aXBlOworCWludCBkcm1fZmQ7CisJaW50IG52X2NyY19kaXI7CisJaWd0X2Rpc3BsYXlfdCBkaXNw bGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCWRy bU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpZ3RfZmJfdCBkZWZhdWx0X2ZiOworfSBkYXRhX3Q7CisK K3N0cnVjdCBjb2xvcl9mYiB7CisJZG91YmxlIHIsIGcsIGI7CisJaWd0X2NyY190IGNyYzsKKwlp Z3RfZmJfdCBmYjsKK307CisKKyNkZWZpbmUgSEVYX0NPTE9SKHJfLCBnXywgYl8pIFwKKwl7IC5y ID0gKHJfIC8gMjU1LjApLCAuZyA9IChnXyAvIDI1NS4wKSwgLmIgPSAoYl8gLyAyNTUuMCkgfQor CitzdGF0aWMgdm9pZCBzZXRfY3JjX2ZsaXBfdGhyZXNob2xkKGRhdGFfdCAqZGF0YSwgdW5zaWdu ZWQgaW50IHRocmVzaG9sZCkKK3sKKwlpZ3RfZGVidWcoIlNldHRpbmcgQ1JDIG5vdGlmaWVyIGZs aXAgdGhyZXNob2xkIHRvICVkXG4iLCB0aHJlc2hvbGQpOworCWlndF9hc3NlcnRfbHQoMCwgaWd0 X3N5c2ZzX3ByaW50ZihkYXRhLT5udl9jcmNfZGlyLCAiZmxpcF90aHJlc2hvbGQiLCAiJWQiLCB0 aHJlc2hvbGQpKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2NvbG9ycyhkYXRhX3QgKmRhdGEs CisJCQkgIHN0cnVjdCBjb2xvcl9mYiAqY29sb3JzLAorCQkJICBzaXplX3QgbGVuLAorCQkJICBp Z3RfcGlwZV9jcmNfdCAqcGlwZV9jcmMpCit7CisJY2hhciAqY3JjX3N0cjsKKworCWlndF9waXBl X2NyY19zdGFydChwaXBlX2NyYyk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7 CisJCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLAorCQkJCSAgICBkYXRhLT5tb2Rl LT5oZGlzcGxheSwKKwkJCQkgICAgZGF0YS0+bW9kZS0+dmRpc3BsYXksCisJCQkJICAgIERSTV9G T1JNQVRfWFJHQjg4ODgsCisJCQkJICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkJ ICAgIGNvbG9yc1tpXS5yLCBjb2xvcnNbaV0uZywgY29sb3JzW2ldLmIsCisJCQkJICAgICZjb2xv cnNbaV0uZmIpOworCisJCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmNvbG9yc1tp XS5mYik7CisJCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7CisJCWlndF9waXBl X2NyY19nZXRfY3VycmVudChkYXRhLT5kcm1fZmQsIHBpcGVfY3JjLCAmY29sb3JzW2ldLmNyYyk7 CisKKwkJY3JjX3N0ciA9IGlndF9jcmNfdG9fc3RyaW5nKCZjb2xvcnNbaV0uY3JjKTsKKwkJaWd0 X2RlYnVnKCJDUkMgZm9yIGZyYW1lICVkIG9mIHBhdHRlcm46ICVzXG4iLAorCQkJICBpLCBjcmNf c3RyKTsKKwkJZnJlZShjcmNfc3RyKTsKKwl9CisKKwlpZ3RfcGlwZV9jcmNfc3RvcChwaXBlX2Ny Yyk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfY29sb3JzKGRhdGFfdCAqZGF0YSwgc3RydWN0 IGNvbG9yX2ZiICpjb2xvcnMsIHNpemVfdCBsZW4pCit7CisJLyogU28gd2UgZG9uJ3QgdHVybiBv ZmYgdGhlIHBpcGUgaWYgd2UgcmVtb3ZlIGl0J3MgY3VycmVudCBmYiAqLworCWlndF9wbGFuZV9z ZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmRhdGEtPmRlZmF1bHRfZmIpOworCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBsZW47IGkrKykKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZjb2xvcnNb aV0uZmIpOworfQorCisvKiBIYXJkLWNvZGVkIHRvIFBJUEVfQSBmb3Igbm93LCB3ZSBkb24ndCBy ZWFsbHkgbmVlZCB0byB0ZXN0IHRoaXMgb24gbW9yZSB0aGVuCisgKiBvbmUgaGVhZAorICovCitz dGF0aWMgdm9pZCB0ZXN0X2N0eF9mbGlwX2RldGVjdGlvbihkYXRhX3QgKmRhdGEpCit7CisJc3Ry dWN0IGNvbG9yX2ZiIGNvbG9yc1tdID0geworCQlIRVhfQ09MT1IoMHhGRiwgMHgwMCwgMHgxOCks CisJCUhFWF9DT0xPUigweEZGLCAweEE1LCAweDJDKSwKKwkJSEVYX0NPTE9SKDB4RkYsIDB4RkYs IDB4NDEpLAorCQlIRVhfQ09MT1IoMHgwMCwgMHg4MCwgMHgxOCksCisJCUhFWF9DT0xPUigweDAw LCAweDAwLCAweEY5KSwKKwkJSEVYX0NPTE9SKDB4ODYsIDB4MDAsIDB4N0QpLAorCX07CisJaWd0 X291dHB1dF90ICpvdXRwdXQgPSBkYXRhLT5vdXRwdXQ7CisJaWd0X3BsYW5lX3QgKnByaW1hcnkg PSBkYXRhLT5wcmltYXJ5OworCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKKwljb25zdCBpbnQg bl9jb2xvcnMgPSBBUlJBWV9TSVpFKGNvbG9ycyk7CisJY29uc3QgaW50IG5fY3JjcyA9IDIwOwor CWlndF9jcmNfdCAqY3JjcyA9IE5VTEw7CisJaW50IHN0YXJ0ID0gLTEsIGZyYW1lLCBzdGFydF9j b2xvciA9IC0xLCBpOworCWJvb2wgZm91bmRfc2tpcCA9IGZhbHNlOworCisJcGlwZV9jcmMgPSBp Z3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRybV9mZCwgZGF0YS0+cGlwZSwgImF1dG8iKTsKKworCWNy ZWF0ZV9jb2xvcnMoZGF0YSwgY29sb3JzLCBuX2NvbG9ycywgcGlwZV9jcmMpOworCisJc2V0X2Ny Y19mbGlwX3RocmVzaG9sZChkYXRhLCBuX2NyY3MgLyAyKTsKKwlpZ3RfcGlwZV9jcmNfc3RhcnQo cGlwZV9jcmMpOworCisJZm9yIChpID0gMDsgaSA8IG5fY3JjczsgaSsrKSB7CisJCWNvbnN0IGlu dCBjb2xvcl9pZHggPSBpICUgbl9jb2xvcnM7CisKKwkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5 LCAmY29sb3JzW2NvbG9yX2lkeF0uZmIpOworCQlkb19vcl9kaWUoZHJtTW9kZVBhZ2VGbGlwKGRh dGEtPmRybV9mZCwKKwkJCQkJICBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLAorCQkJCQkg IGNvbG9yc1tjb2xvcl9pZHhdLmZiLmZiX2lkLAorCQkJCQkgIERSTV9NT0RFX1BBR0VfRkxJUF9F VkVOVCwKKwkJCQkJICBOVUxMKSk7CisJCWttc3Rlc3Rfd2FpdF9mb3JfcGFnZWZsaXAoZGF0YS0+ ZHJtX2ZkKTsKKwl9CisKKwlpZ3RfcGlwZV9jcmNfZ2V0X2NyY3MocGlwZV9jcmMsIG5fY3Jjcywg JmNyY3MpOworCWlndF9waXBlX2NyY19zdG9wKHBpcGVfY3JjKTsKKworCS8qCisJICogRmluZCB0 aGUgZmlyc3QgY29sb3IgaW4gb3VyIHBhdHRlcm4gd2l0aCBhIENSQyB0aGF0IGRpZmZlcnMgZnJv bSB0aGUKKwkgKiBsYXN0IENSQywgc28gd2UgY2FuIHVzZSBpdCB0byBmaW5kIHRoZSBzdGFydCBv ZiB0aGUgcGF0dGVybgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBuX2NvbG9ycyAtIDE7IGkrKykg eworCQlpZiAoaWd0X2NoZWNrX2NyY19lcXVhbCgmY29sb3JzW2ldLmNyYywgJmNvbG9yc1tuX2Nv bG9ycyAtIDFdLmNyYykpCisJCQljb250aW51ZTsKKworCQlpZ3RfZGVidWcoIlVzaW5nIGZyYW1l ICVkIG9mIHBhdHRlcm4gZm9yIGZpbmRpbmcgc3RhcnRcbiIsIGkpOworCQlzdGFydF9jb2xvciA9 IGk7CisJCWJyZWFrOworCX0KKwlpZ3RfYXNzZXJ0X2x0ZSgwLCBzdGFydF9jb2xvcik7CisKKwkv KiBOb3csIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIHBhdHRlcm4gc3RhcnRzICovCisJZm9yIChpID0g MDsgaSA8IG5fY3JjczsgaSsrKSB7CisJCWlmICghaWd0X2NoZWNrX2NyY19lcXVhbCgmY29sb3Jz W3N0YXJ0X2NvbG9yXS5jcmMsICZjcmNzW2ldKSkKKwkJCWNvbnRpbnVlOworCisJCXN0YXJ0ID0g aSAtIHN0YXJ0X2NvbG9yOworCQlmcmFtZSA9IGNyY3NbaV0uZnJhbWU7CisJCWlndF9kZWJ1Zygi UGF0dGVybiBzdGFydGVkIG9uIGZyYW1lICVkXG4iLCBmcmFtZSk7CisJCWJyZWFrOworCX0KKwlp Z3RfYXNzZXJ0X2x0ZSgwLCBzdGFydCk7CisKKwkvKiBBbmQgZmluYWxseSwgYXNzZXJ0IHRoYXQg YWNjb3JkaW5nIHRvIHRoZSBDUkNzIGV4YWN0bHkgYWxsIGJ1dCBvbmUKKwkgKiBmcmFtZSB3YXMg ZGlzcGxheWVkIGluIG9yZGVyLiBUaGUgbWlzc2luZyBmcmFtZSBjb21lcyBmcm9tCisJICogKGlu ZXZpdGFibHkpIGxvc2luZyBhIHNpbmdsZSBDUkMgZXZlbnQgd2hlbiBub3V2ZWF1IHN3aXRjaGVz IG5vdGlmaWVyCisJICogY29udGV4dHMKKwkgKi8KKwlmb3IgKGkgPSBzdGFydDsgaSA8IG5fY3Jj czsgaSsrLCBmcmFtZSsrKSB7CisJCWlndF9jcmNfdCAqY3JjID0gJmNyY3NbaV07CisJCWNoYXIg KmNyY19zdHI7CisJCWludCBjb2xvcl9pZHg7CisKKwkJY3JjX3N0ciA9IGlndF9jcmNfdG9fc3Ry aW5nKGNyYyk7CisJCWlndF9kZWJ1ZygiQ1JDICVkOiB2Ymw9JWQgdmFsPSVzXG4iLCBpLCBjcmMt PmZyYW1lLCBjcmNfc3RyKTsKKwkJZnJlZShjcmNfc3RyKTsKKworCQlpZiAoIWZvdW5kX3NraXAg JiYgY3JjLT5mcmFtZSAhPSBmcmFtZSkgeworCQkJaWd0X2RlYnVnKCJeXl4gRm91bmQgZXhwZWN0 ZWQgc2tpcHBlZCBDUkMgJWQgXl5eXG4iLAorCQkJCSAgY3JjLT5mcmFtZSAtIDEpOworCQkJZm91 bmRfc2tpcCA9IHRydWU7CisJCQlmcmFtZSsrOworCQl9CisKKwkJLyogV2Ugc2hvdWxkIG5ldmVy IHNraXAgbW9yZSB0aGVuIG9uZSBmcmFtZSAqLworCQlpZiAoZm91bmRfc2tpcCkgeworCQkJaWd0 X2Fzc2VydF9lcShjcmMtPmZyYW1lLCBmcmFtZSk7CisJCQljb2xvcl9pZHggPSAoaSAtIHN0YXJ0 ICsgMSkgJSBuX2NvbG9yczsKKwkJfSBlbHNlIHsKKwkJCWNvbG9yX2lkeCA9IChpIC0gc3RhcnQp ICUgbl9jb2xvcnM7CisJCX0KKworCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbChjcmMsICZjb2xvcnNb Y29sb3JfaWR4XS5jcmMpOworCX0KKwlpZ3RfYXNzZXJ0KGZvdW5kX3NraXApOworCisJZnJlZShj cmNzKTsKKwlpZ3RfcGlwZV9jcmNfZnJlZShwaXBlX2NyYyk7CisJZGVzdHJveV9jb2xvcnMoZGF0 YSwgY29sb3JzLCBBUlJBWV9TSVpFKGNvbG9ycykpOworfQorCisvKiBUZXN0IHdoZXRoZXIgb3Ig bm90IElHVCBpcyBhYmxlIHRvIGhhbmRsZSBmcmFtZSBza2lwcyB3aGVuIHJlcXVlc3RpbmcgdGhl CisgKiBDUkMgZm9yIHRoZSBjdXJyZW50IGZyYW1lCisgKi8KK3N0YXRpYyB2b2lkIHRlc3RfY3R4 X2ZsaXBfc2tpcF9jdXJyZW50X2ZyYW1lKGRhdGFfdCAqZGF0YSkKK3sKKwlzdHJ1Y3QgY29sb3Jf ZmIgY29sb3JzW10gPSB7CisJCXsgLnIgPSAxLjAsIC5nID0gMC4wLCAuYiA9IDAuMCB9LAorCQl7 IC5yID0gMC4wLCAuZyA9IDEuMCwgLmIgPSAwLjAgfSwKKwkJeyAuciA9IDAuMCwgLmcgPSAwLjAs IC5iID0gMS4wIH0sCisJfTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsK KwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJaWd0X3BsYW5lX3QgKnByaW1hcnkgPSBkYXRh LT5wcmltYXJ5OworCWNvbnN0IGludCBmZCA9IGRhdGEtPmRybV9mZDsKKwljb25zdCBpbnQgbl9j b2xvcnMgPSBBUlJBWV9TSVpFKGNvbG9ycyk7CisJY29uc3QgaW50IG5fY3JjcyA9IDMwOworCisJ cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGZkLCBkYXRhLT5waXBlLCAiYXV0byIpOworCWNy ZWF0ZV9jb2xvcnMoZGF0YSwgY29sb3JzLCBuX2NvbG9ycywgcGlwZV9jcmMpOworCisJc2V0X2Ny Y19mbGlwX3RocmVzaG9sZChkYXRhLCA1KTsKKwlpZ3RfcGlwZV9jcmNfc3RhcnQocGlwZV9jcmMp OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuX2NyY3M7IGkrKykgeworCQlpZ3RfY3JjX3QgY3Jj OworCQljb25zdCBpbnQgY29sb3JfaWR4ID0gaSAlIG5fY29sb3JzOworCisJCWlndF9wbGFuZV9z ZXRfZmIocHJpbWFyeSwgJmNvbG9yc1tjb2xvcl9pZHhdLmZiKTsKKwkJZG9fb3JfZGllKGRybU1v ZGVQYWdlRmxpcChmZCwKKwkJCQkJICBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLAorCQkJ CQkgIGNvbG9yc1tjb2xvcl9pZHhdLmZiLmZiX2lkLAorCQkJCQkgIERSTV9NT0RFX1BBR0VfRkxJ UF9FVkVOVCwKKwkJCQkJICBOVUxMKSk7CisJCWttc3Rlc3Rfd2FpdF9mb3JfcGFnZWZsaXAoZmQp OworCisJCWlndF9waXBlX2NyY19nZXRfY3VycmVudChmZCwgcGlwZV9jcmMsICZjcmMpOworCQlp Z3RfYXNzZXJ0X2NyY19lcXVhbCgmY29sb3JzW2NvbG9yX2lkeF0uY3JjLCAmY3JjKTsKKwl9CisK KwlpZ3RfcGlwZV9jcmNfc3RvcChwaXBlX2NyYyk7CisJaWd0X3BpcGVfY3JjX2ZyZWUocGlwZV9j cmMpOworCWRlc3Ryb3lfY29sb3JzKGRhdGEsIGNvbG9ycywgbl9jb2xvcnMpOworfQorCitzdGF0 aWMgdm9pZCB0ZXN0X2N0eF9mbGlwX3RocmVzaG9sZF9yZXNldF9hZnRlcl9jYXB0dXJlKGRhdGFf dCAqZGF0YSkKK3sKKwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJY29uc3QgaW50IGZkID0g ZGF0YS0+ZHJtX2ZkOworCisJcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGZkLCBkYXRhLT5w aXBlLCAiYXV0byIpOworCisJc2V0X2NyY19mbGlwX3RocmVzaG9sZChkYXRhLCA1KTsKKwlpZ3Rf cGlwZV9jcmNfc3RhcnQocGlwZV9jcmMpOworCWlndF9waXBlX2NyY19zdG9wKHBpcGVfY3JjKTsK KworCWlndF9hc3NlcnRfbmVxKGlndF9zeXNmc19nZXRfdTMyKGRhdGEtPm52X2NyY19kaXIsICJm bGlwX3RocmVzaG9sZCIpLCA1KTsKKwlpZ3RfcGlwZV9jcmNfZnJlZShwaXBlX2NyYyk7Cit9CisK K3N0YXRpYyB2b2lkIHRlc3Rfc291cmNlKGRhdGFfdCAqZGF0YSwgY29uc3QgY2hhciAqc291cmNl KQoreworCWlndF9waXBlX2NyY190ICpwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS0+ ZHJtX2ZkLCBkYXRhLT5waXBlLCBzb3VyY2UpOworCWlndF9jcmNfdCAqY3JjczsKKworCWlndF9w aXBlX2NyY19zdGFydChwaXBlX2NyYyk7CisJaWd0X3BpcGVfY3JjX2dldF9jcmNzKHBpcGVfY3Jj LCAyLCAmY3Jjcyk7CisJaWd0X3BpcGVfY3JjX3N0b3AocGlwZV9jcmMpOworCisJLyogVGhlIENS QyBzaG91bGRuJ3QgY2hhbmdlIGlmIHRoZSBzb3VyY2UgY29udGVudCBoYXNuJ3QgY2hhbmdlZCAq LworCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZjcmNzWzBdLCAmY3Jjc1sxXSk7CisKKwlpZ3RfcGlw ZV9jcmNfZnJlZShwaXBlX2NyYyk7CisJZnJlZShjcmNzKTsKK30KKworc3RhdGljIHZvaWQgdGVz dF9zb3VyY2Vfb3V0cF9pbmFjdGl2ZShkYXRhX3QgKmRhdGEpCit7CisJc3RydWN0IGNvbG9yX2Zi IGNvbG9yc1tdID0geworCQl7IC5yID0gMS4wLCAuZyA9IDAuMCwgLmIgPSAwLjAgfSwKKwkJeyAu ciA9IDAuMCwgLmcgPSAxLjAsIC5iID0gMC4wIH0sCisJfTsKKwlpZ3RfcGlwZV9jcmNfdCAqcGlw ZV9jcmM7CisJY29uc3QgaW50IGZkID0gZGF0YS0+ZHJtX2ZkOworCWNvbnN0IGludCBuX2NvbG9y cyA9IEFSUkFZX1NJWkUoY29sb3JzKTsKKworCXBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhm ZCwgZGF0YS0+cGlwZSwgIm91dHAtaW5hY3RpdmUiKTsKKwljcmVhdGVfY29sb3JzKGRhdGEsIGNv bG9ycywgbl9jb2xvcnMsIHBpcGVfY3JjKTsKKworCS8qIENoYW5naW5nIHRoZSBjb2xvciBzaG91 bGQgbm90IGNoYW5nZSB3aGF0J3Mgb3V0c2lkZSB0aGUgYWN0aXZlIHJhc3RlciAqLworCWlndF9h c3NlcnRfY3JjX2VxdWFsKCZjb2xvcnNbMF0uY3JjLCAmY29sb3JzWzFdLmNyYyk7CisKKwlpZ3Rf cGlwZV9jcmNfZnJlZShwaXBlX2NyYyk7CisJZGVzdHJveV9jb2xvcnMoZGF0YSwgY29sb3JzLCBu X2NvbG9ycyk7Cit9CisKK2RhdGFfdCBkYXRhID0gezAsIH07CisKKyNkZWZpbmUgcGlwZV90ZXN0 KG5hbWUpIGlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtIiBuYW1lLCBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlKSkKK2lndF9tYWluCit7CisJaW50IHBpcGU7CisKKwlpZ3RfZml4dHVyZSB7CisJCWRhdGEu ZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5ZKTsKKwkJaWd0X3JlcXVp cmVfbm91dmVhdShkYXRhLmRybV9mZCk7CisKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9k ZSgpOworCisJCWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZHJtX2ZkKTsKKwkJaWd0X2Rpc3Bs YXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7CisJCWlndF9kaXNwbGF5X3Jl c2V0KCZkYXRhLmRpc3BsYXkpOworCX0KKworCWZvcl9lYWNoX3BpcGVfc3RhdGljKHBpcGUpIHsK KwkJaWd0X2ZpeHR1cmUgeworCQkJaW50IGRpcjsKKworCQkJZGF0YS5waXBlID0gcGlwZTsKKwkJ CWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3BpcGUoJmRhdGEuZGlzcGxheSwgcGlwZSk7 CisJCQlkYXRhLm91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZSgmZGF0YS5k aXNwbGF5LCBwaXBlKTsKKwkJCWRhdGEubW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS5v dXRwdXQpOworCisJCQkvKiBOb25lIG9mIHRoZXNlIHRlc3RzIG5lZWQgdG8gcGVyZm9ybSBtb2Rl c2V0cywKKwkJCSAqIGp1c3QgcGFnZSBmbGlwcy4gU28gcnVubmluZyBkaXNwbGF5IHNldHVwCisJ CQkgKiBoZXJlIGlzIGZpbmUKKwkJCSAqLworCQkJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLm91 dHB1dCwgcGlwZSk7CisJCQlkYXRhLnByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShkYXRh Lm91dHB1dCwgMCk7CisJCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEuZHJtX2ZkLAorCQkJCQkg ICAgZGF0YS5tb2RlLT5oZGlzcGxheSwKKwkJCQkJICAgIGRhdGEubW9kZS0+dmRpc3BsYXksCisJ CQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSwKKwkJCQkJICAgIDAuMCwgMC4wLCAwLjAsCisJCQkJCSAgICAmZGF0YS5kZWZhdWx0 X2ZiKTsKKwkJCWlndF9wbGFuZV9zZXRfZmIoZGF0YS5wcmltYXJ5LCAmZGF0YS5kZWZhdWx0X2Zi KTsKKwkJCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS5kaXNwbGF5KTsKKworCQkJZGlyID0gaWd0 X2RlYnVnZnNfcGlwZV9kaXIoZGF0YS5kcm1fZmQsIHBpcGUsIE9fRElSRUNUT1JZKTsKKwkJCWln dF9yZXF1aXJlX2ZkKGRpcik7CisJCQlkYXRhLm52X2NyY19kaXIgPSBvcGVuYXQoZGlyLCAibnZf Y3JjIiwgT19ESVJFQ1RPUlkpOworCQkJY2xvc2UoZGlyKTsKKwkJCWlndF9yZXF1aXJlX2ZkKGRh dGEubnZfY3JjX2Rpcik7CisJCX0KKworCQkvKiBXZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhpcyBv biBldmVyeSBwaXBlLCBidXQgdGhlCisJCSAqIHNldHVwIGlzIHRoZSBzYW1lICovCisJCWlmIChw aXBlID09IFBJUEVfQSkgeworCQkJaWd0X2Rlc2NyaWJlKCJNYWtlIHN1cmUgdGhhdCB0aGUgQ1JD IG5vdGlmaWVyIGNvbnRleHQgZmxpcCB0aHJlc2hvbGQgIgorCQkJCSAgICAgImlzIHJlc2V0IHRv IGl0cyBkZWZhdWx0IHZhbHVlIGFmdGVyIGEgc2luZ2xlIGNhcHR1cmUuIik7CisJCQlpZ3Rfc3Vi dGVzdCgiY3R4LWZsaXAtdGhyZXNob2xkLXJlc2V0LWFmdGVyLWNhcHR1cmUiKQorCQkJCXRlc3Rf Y3R4X2ZsaXBfdGhyZXNob2xkX3Jlc2V0X2FmdGVyX2NhcHR1cmUoJmRhdGEpOworCQl9CisKKwkJ aWd0X2Rlc2NyaWJlKCJNYWtlIHN1cmUgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gZWFjaCBDUkMg YW5kIGl0cyAiCisJCQkgICAgICJyZXNwZWN0aXZlIGZyYW1lIGluZGV4IGlzIG5vdCBicm9rZW4g d2hlbiB0aGUgZHJpdmVyICIKKwkJCSAgICAgInBlcmZvcm1zIGEgbm90aWZpZXIgY29udGV4dCBm bGlwLiIpOworCQlwaXBlX3Rlc3QoImN0eC1mbGlwLWRldGVjdGlvbiIpCisJCQl0ZXN0X2N0eF9m bGlwX2RldGVjdGlvbigmZGF0YSk7CisKKwkJaWd0X2Rlc2NyaWJlKCJNYWtlIHN1cmUgdGhhdCBp Z3RfcGlwZV9jcmNfZ2V0X2N1cnJlbnQoKSB3b3JrcyBldmVuICIKKwkJCSAgICAgIndoZW4gdGhl IENSQyBmb3IgdGhlIGN1cnJlbnQgZnJhbWUgaW5kZXggaXMgbG9zdC4iKTsKKwkJcGlwZV90ZXN0 KCJjdHgtZmxpcC1za2lwLWN1cnJlbnQtZnJhbWUiKQorCQkJdGVzdF9jdHhfZmxpcF9za2lwX2N1 cnJlbnRfZnJhbWUoJmRhdGEpOworCisJCWlndF9kZXNjcmliZSgiQ2hlY2sgdGhhdCBiYXNpYyBD UkMgcmVhZGJhY2sgdXNpbmcgdGhlIG91dHAtY29tcGxldGUgIgorCQkJICAgICAic291cmNlIHdv cmtzLiIpOworCQlwaXBlX3Rlc3QoInNvdXJjZS1vdXRwLWNvbXBsZXRlIikKKwkJCXRlc3Rfc291 cmNlKCZkYXRhLCAib3V0cC1jb21wbGV0ZSIpOworCisJCWlndF9kZXNjcmliZSgiQ2hlY2sgdGhh dCBiYXNpYyBDUkMgcmVhZGJhY2sgdXNpbmcgdGhlIHJnIHNvdXJjZSAiCisJCQkgICAgICJ3b3Jr cy4iKTsKKwkJcGlwZV90ZXN0KCJzb3VyY2UtcmciKQorCQkJdGVzdF9zb3VyY2UoJmRhdGEsICJy ZyIpOworCisJCWlndF9kZXNjcmliZSgiTWFrZSBzdXJlIHRoYXQgdGhlIG91dHAtaW5hY3RpdmUg c291cmNlIGlzIGFjdHVhbGx5ICIKKwkJCSAgICAgImNhcHR1cmluZyB0aGUgaW5hY3RpdmUgcmFz dGVyLiIpOworCQlwaXBlX3Rlc3QoInNvdXJjZS1vdXRwLWluYWN0aXZlIikKKwkJCXRlc3Rfc291 cmNlX291dHBfaW5hY3RpdmUoJmRhdGEpOworCisJCWlndF9maXh0dXJlIHsKKwkJCWlndF9vdXRw dXRfc2V0X3BpcGUoZGF0YS5vdXRwdXQsIFBJUEVfTk9ORSk7CisJCQlpZ3RfZGlzcGxheV9jb21t aXQoJmRhdGEuZGlzcGxheSk7CisJCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEuZHJtX2ZkLCAmZGF0YS5k ZWZhdWx0X2ZiKTsKKwkJCWNsb3NlKGRhdGEubnZfY3JjX2Rpcik7CisJCX0KKwl9CisJaWd0X2Zp eHR1cmUKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKworfQotLSAKMi4yNS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK