From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6966989C53 for ; Thu, 23 May 2019 11:59:40 +0000 (UTC) From: Simon Ser Date: Thu, 23 May 2019 14:59:23 +0300 Message-Id: <20190523115924.30524-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/2] tests/kms_chamelium: refactor audio test 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 List-ID: SW5zdGVhZCBvZiBzaGF2aW5nIGV2ZXJ5dGhpbmcgaW50byBkb190ZXN0X2Rpc3BsYXlfYXVkaW8s IGV4dHJhY3QgdGhlIGxvZ2ljIHRvCmluaXRpYWxpemUsIHN0YXJ0LCBzdG9wLCBmaW5pc2ggYW4g YXVkaW8gdGVzdCBpbiBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgc3RydWN0CmF1ZGlvX3N0YXRlIG5v dyBjYXJyaWVzIGFsbCBhdWRpby1yZWxhdGVkIHN0YXRlLgoKVGhpcyB3aWxsIGFsbG93IHRvIGVh c2lseSBhZGQgbW9yZSBhdWRpbyB0ZXN0cyB0aGF0IGRvbid0IHVzZSBzaW5lIHdhdmVzICh2aWEK YXVkaW9fc2lnbmFsKS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGZ1dHVyZSBkZWxheSBhbmQgYW1w bGl0dWRlIHRlc3RzLgoKU2lnbmVkLW9mZi1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50ZWwu Y29tPgotLS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8IDMyNSArKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygr KSwgMTM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBi L3Rlc3RzL2ttc19jaGFtZWxpdW0uYwppbmRleCBmNGZlMzg0NTlkZDkuLmZhYTRjNTM5ZGJlMyAx MDA2NDQKLS0tIGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCisrKyBiL3Rlc3RzL2ttc19jaGFtZWxp dW0uYwpAQCAtODEyLDE3ICs4MTIsMTcyIEBAIHN0YXRpYyBjb25zdCBzbmRfcGNtX2Zvcm1hdF90 IHRlc3RfZm9ybWF0c1tdID0gewogc3RhdGljIGNvbnN0IHNpemVfdCB0ZXN0X2Zvcm1hdHNfY291 bnQgPSBzaXplb2YodGVzdF9mb3JtYXRzKSAvIHNpemVvZih0ZXN0X2Zvcm1hdHNbMF0pOwogCiBz dHJ1Y3QgYXVkaW9fc3RhdGUgeworCXN0cnVjdCBhbHNhICphbHNhOworCXN0cnVjdCBjaGFtZWxp dW0gKmNoYW1lbGl1bTsKKwlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7CisJc3RydWN0IGNo YW1lbGl1bV9zdHJlYW0gKnN0cmVhbTsKKworCS8qIFRoZSBjYXB0dXJlIGZvcm1hdCBpcyBvbmx5 IGF2YWlsYWJsZSBhZnRlciBjYXB0dXJlIGhhcyBzdGFydGVkLiAqLworCXN0cnVjdCB7CisJCXNu ZF9wY21fZm9ybWF0X3QgZm9ybWF0OworCQlpbnQgY2hhbm5lbHM7CisJCWludCByYXRlOworCX0g cGxheWJhY2ssIGNhcHR1cmU7CisKIAlzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7Ci0Jc25k X3BjbV9mb3JtYXRfdCBmb3JtYXQ7CisJaW50IGNoYW5uZWxfbWFwcGluZ1s4XTsKKworCWludCBk dW1wX2ZkOworCWNoYXIgKmR1bXBfcGF0aDsKKworCXB0aHJlYWRfdCB0aHJlYWQ7CiAJYXRvbWlj X2Jvb2wgcnVuOwogfTsKIAorc3RhdGljIHZvaWQgYXVkaW9fc3RhdGVfaW5pdChzdHJ1Y3QgYXVk aW9fc3RhdGUgKnN0YXRlLCBkYXRhX3QgKmRhdGEsCisJCQkgICAgIHN0cnVjdCBhbHNhICphbHNh LCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCisJCQkgICAgIHNuZF9wY21fZm9ybWF0X3Qg Zm9ybWF0LCBpbnQgY2hhbm5lbHMsIGludCByYXRlKQoreworCW1lbXNldChzdGF0ZSwgMCwgc2l6 ZW9mKCpzdGF0ZSkpOworCXN0YXRlLT5kdW1wX2ZkID0gLTE7CisKKwlzdGF0ZS0+YWxzYSA9IGFs c2E7CisJc3RhdGUtPmNoYW1lbGl1bSA9IGRhdGEtPmNoYW1lbGl1bTsKKwlzdGF0ZS0+cG9ydCA9 IHBvcnQ7CisKKwlzdGF0ZS0+cGxheWJhY2suZm9ybWF0ID0gZm9ybWF0OworCXN0YXRlLT5wbGF5 YmFjay5jaGFubmVscyA9IGNoYW5uZWxzOworCXN0YXRlLT5wbGF5YmFjay5yYXRlID0gcmF0ZTsK KworCWFsc2FfY29uZmlndXJlX291dHB1dChhbHNhLCBmb3JtYXQsIGNoYW5uZWxzLCByYXRlKTsK KworCXN0YXRlLT5zdHJlYW0gPSBjaGFtZWxpdW1fc3RyZWFtX2luaXQoKTsKKwlpZ3RfYXNzZXJ0 KHN0YXRlLT5zdHJlYW0pOworfQorCitzdGF0aWMgdm9pZCBhdWRpb19zdGF0ZV9maW5pKHN0cnVj dCBhdWRpb19zdGF0ZSAqc3RhdGUpCit7CisJY2hhbWVsaXVtX3N0cmVhbV9kZWluaXQoc3RhdGUt PnN0cmVhbSk7CisJZnJlZShzdGF0ZS0+ZHVtcF9wYXRoKTsKK30KKworc3RhdGljIHZvaWQgKnJ1 bl9hdWRpb190aHJlYWQodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgYWxzYSAqYWxzYSA9IGRhdGE7 CisKKwlhbHNhX3J1bihhbHNhLCAtMSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lk IGF1ZGlvX3N0YXRlX3N0YXJ0KHN0cnVjdCBhdWRpb19zdGF0ZSAqc3RhdGUpCit7CisJaW50IHJl dDsKKwlib29sIG9rOworCXNpemVfdCBpLCBqOworCWVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFs dGltZV9tb2RlIHN0cmVhbV9tb2RlOworCWNoYXIgZHVtcF9zdWZmaXhbNjRdOworCisJaWd0X2Rl YnVnKCJTdGFydGluZyB0ZXN0IHdpdGggcGxheWJhY2sgZm9ybWF0ICVzLCBzYW1wbGluZyByYXRl ICVkIEh6ICIKKwkJICAiYW5kICVkIGNoYW5uZWxzXG4iLAorCQkgIHNuZF9wY21fZm9ybWF0X25h bWUoc3RhdGUtPnBsYXliYWNrLmZvcm1hdCksCisJCSAgc3RhdGUtPnBsYXliYWNrLnJhdGUsIHN0 YXRlLT5wbGF5YmFjay5jaGFubmVscyk7CisKKwljaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1 ZGlvKHN0YXRlLT5jaGFtZWxpdW0sIHN0YXRlLT5wb3J0LCBmYWxzZSk7CisKKwlzdHJlYW1fbW9k ZSA9IENIQU1FTElVTV9TVFJFQU1fUkVBTFRJTUVfU1RPUF9XSEVOX09WRVJGTE9XOworCW9rID0g Y2hhbWVsaXVtX3N0cmVhbV9kdW1wX3JlYWx0aW1lX2F1ZGlvKHN0YXRlLT5zdHJlYW0sIHN0cmVh bV9tb2RlKTsKKwlpZ3RfYXNzZXJ0KG9rKTsKKworCS8qIFN0YXJ0IHBsYXlpbmcgYXVkaW8gKi8K KwlzdGF0ZS0+cnVuID0gdHJ1ZTsKKwlyZXQgPSBwdGhyZWFkX2NyZWF0ZSgmc3RhdGUtPnRocmVh ZCwgTlVMTCwKKwkJCSAgICAgcnVuX2F1ZGlvX3RocmVhZCwgc3RhdGUtPmFsc2EpOworCWlndF9h c3NlcnQocmV0ID09IDApOworCisJLyogVGhlIENoYW1lbGl1bSBkZXZpY2Ugb25seSBzdXBwb3J0 cyB0aGlzIFBDTSBmb3JtYXQuICovCisJc3RhdGUtPmNhcHR1cmUuZm9ybWF0ID0gU05EX1BDTV9G T1JNQVRfUzMyX0xFOworCisJLyogT25seSBhZnRlciB3ZSd2ZSBzdGFydGVkIHBsYXlpbmcgYXVk aW8sIHdlIGNhbiByZXRyaWV2ZSB0aGUgY2FwdHVyZQorCSAqIGZvcm1hdCB1c2VkIGJ5IHRoZSBD aGFtZWxpdW0gZGV2aWNlLiAqLworCWNoYW1lbGl1bV9nZXRfYXVkaW9fZm9ybWF0KHN0YXRlLT5j aGFtZWxpdW0sIHN0YXRlLT5wb3J0LAorCQkJCSAgICZzdGF0ZS0+Y2FwdHVyZS5yYXRlLAorCQkJ CSAgICZzdGF0ZS0+Y2FwdHVyZS5jaGFubmVscyk7CisJaWYgKHN0YXRlLT5jYXB0dXJlLnJhdGUg PT0gMCkgeworCQlpZ3RfZGVidWcoIkF1ZGlvIHJlY2VpdmVyIGRvZXNuJ3QgaW5kaWNhdGUgdGhl IGNhcHR1cmUgIgorCQkJICJzYW1wbGluZyByYXRlLCBhc3N1bWluZyBpdCdzICVkIEh6XG4iLAor CQkJIHN0YXRlLT5wbGF5YmFjay5yYXRlKTsKKwkJc3RhdGUtPmNhcHR1cmUucmF0ZSA9IHN0YXRl LT5wbGF5YmFjay5yYXRlOworCX0KKworCWNoYW1lbGl1bV9nZXRfYXVkaW9fY2hhbm5lbF9tYXBw aW5nKHN0YXRlLT5jaGFtZWxpdW0sIHN0YXRlLT5wb3J0LAorCQkJCQkgICAgc3RhdGUtPmNoYW5u ZWxfbWFwcGluZyk7CisJLyogTWFrZSBzdXJlIHdlIGNhbiBjYXB0dXJlIGFsbCBjaGFubmVscyB3 ZSBzZW5kLiAqLworCWZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+cGxheWJhY2suY2hhbm5lbHM7IGkr KykgeworCQlvayA9IGZhbHNlOworCQlmb3IgKGogPSAwOyBqIDwgc3RhdGUtPmNhcHR1cmUuY2hh bm5lbHM7IGorKykgeworCQkJaWYgKHN0YXRlLT5jaGFubmVsX21hcHBpbmdbal0gPT0gaSkgewor CQkJCW9rID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZ3RfYXNzZXJ0KG9rKTsK Kwl9CisKKwlpZiAoaWd0X2ZyYW1lX2R1bXBfaXNfZW5hYmxlZCgpKSB7CisJCXNucHJpbnRmKGR1 bXBfc3VmZml4LCBzaXplb2YoZHVtcF9zdWZmaXgpLAorCQkJICJjYXB0dXJlLSVzLSVkY2gtJWRI eiIsCisJCQkgc25kX3BjbV9mb3JtYXRfbmFtZShzdGF0ZS0+cGxheWJhY2suZm9ybWF0KSwKKwkJ CSBzdGF0ZS0+cGxheWJhY2suY2hhbm5lbHMsIHN0YXRlLT5wbGF5YmFjay5yYXRlKTsKKworCQlz dGF0ZS0+ZHVtcF9mZCA9IGF1ZGlvX2NyZWF0ZV93YXZfZmlsZV9zMzJfbGUoZHVtcF9zdWZmaXgs CisJCQkJCQkJICAgICAgc3RhdGUtPmNhcHR1cmUucmF0ZSwKKwkJCQkJCQkgICAgICBzdGF0ZS0+ Y2FwdHVyZS5jaGFubmVscywKKwkJCQkJCQkgICAgICAmc3RhdGUtPmR1bXBfcGF0aCk7CisJCWln dF9hc3NlcnQoc3RhdGUtPmR1bXBfZmQgPj0gMCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBhdWRp b19zdGF0ZV9zdG9wKHN0cnVjdCBhdWRpb19zdGF0ZSAqc3RhdGUsIGJvb2wgc3VjY2VzcykKK3sK Kwlib29sIG9rOworCWludCByZXQ7CisJc3RydWN0IGNoYW1lbGl1bV9hdWRpb19maWxlICphdWRp b19maWxlOworCisJaWd0X2RlYnVnKCJTdG9wcGluZyBhdWRpbyBwbGF5YmFja1xuIik7CisJc3Rh dGUtPnJ1biA9IGZhbHNlOworCXJldCA9IHB0aHJlYWRfam9pbihzdGF0ZS0+dGhyZWFkLCBOVUxM KTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCWFsc2FfY2xvc2Vfb3V0cHV0KHN0YXRlLT5h bHNhKTsKKworCW9rID0gY2hhbWVsaXVtX3N0cmVhbV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0YXRl LT5zdHJlYW0pOworCWlndF9hc3NlcnQob2spOworCisJYXVkaW9fZmlsZSA9IGNoYW1lbGl1bV9z dG9wX2NhcHR1cmluZ19hdWRpbyhzdGF0ZS0+Y2hhbWVsaXVtLAorCQkJCQkJICAgIHN0YXRlLT5w b3J0KTsKKwlpZiAoYXVkaW9fZmlsZSkgeworCQlpZ3RfZGVidWcoIkF1ZGlvIGZpbGUgc2F2ZWQg b24gdGhlIENoYW1lbGl1bSBpbiAlc1xuIiwKKwkJCSAgYXVkaW9fZmlsZS0+cGF0aCk7CisJCWNo YW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoYXVkaW9fZmlsZSk7CisJfQorCisJaWYgKHN0YXRl LT5kdW1wX2ZkID49IDApIHsKKwkJY2xvc2Uoc3RhdGUtPmR1bXBfZmQpOworCQlpZiAoc3VjY2Vz cykgeworCQkJLyogVGVzdCBzdWNjZWVkZWQsIG5vIG5lZWQgdG8ga2VlcCB0aGUgY2FwdHVyZWQg ZGF0YSAqLworCQkJdW5saW5rKHN0YXRlLT5kdW1wX3BhdGgpOworCQl9IGVsc2UKKwkJCWlndF9k ZWJ1ZygiU2F2ZWQgY2FwdHVyZWQgYXVkaW8gZGF0YSB0byAlc1xuIiwKKwkJCQkgIHN0YXRlLT5k dW1wX3BhdGgpOworCX0KK30KKwogc3RhdGljIGludAogYXVkaW9fb3V0cHV0X2NhbGxiYWNrKHZv aWQgKmRhdGEsIHZvaWQgKmJ1ZmZlciwgaW50IHNhbXBsZXMpCiB7CiAJc3RydWN0IGF1ZGlvX3N0 YXRlICpzdGF0ZSA9IGRhdGE7CiAKLQlzd2l0Y2ggKHN0YXRlLT5mb3JtYXQpIHsKKwlzd2l0Y2gg KHN0YXRlLT5wbGF5YmFjay5mb3JtYXQpIHsKIAljYXNlIFNORF9QQ01fRk9STUFUX1MxNl9MRToK IAkJYXVkaW9fc2lnbmFsX2ZpbGxfczE2X2xlKHN0YXRlLT5zaWduYWwsIGJ1ZmZlciwgc2FtcGxl cyk7CiAJCWJyZWFrOwpAQCAtODM5LDU1ICs5OTQsMTkgQEAgYXVkaW9fb3V0cHV0X2NhbGxiYWNr KHZvaWQgKmRhdGEsIHZvaWQgKmJ1ZmZlciwgaW50IHNhbXBsZXMpCiAJcmV0dXJuIHN0YXRlLT5y dW4gPyAwIDogLTE7CiB9CiAKLXN0YXRpYyB2b2lkICoKLXJ1bl9hdWRpb190aHJlYWQodm9pZCAq ZGF0YSkKK3N0YXRpYyBib29sIGRvX3Rlc3RfZGlzcGxheV9hdWRpbyhzdHJ1Y3QgYXVkaW9fc3Rh dGUgKnN0YXRlKQogewotCXN0cnVjdCBhbHNhICphbHNhID0gZGF0YTsKLQotCWFsc2FfcnVuKGFs c2EsIC0xKTsKLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGJvb2wKLWRvX3Rlc3RfZGlzcGxh eV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKLQkJICAg ICAgc3RydWN0IGFsc2EgKmFsc2EsIHNuZF9wY21fZm9ybWF0X3QgcGxheWJhY2tfZm9ybWF0LAot CQkgICAgICBpbnQgcGxheWJhY2tfY2hhbm5lbHMsIGludCBwbGF5YmFja19yYXRlKQotewotCWlu dCByZXQsIGNhcHR1cmVfcmF0ZSwgY2FwdHVyZV9jaGFubmVscywgbXNlYywgZnJlcSwgc3RlcDsK LQlzdHJ1Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmF1ZGlvX2ZpbGU7Ci0Jc3RydWN0IGNoYW1l bGl1bV9zdHJlYW0gKnN0cmVhbTsKLQllbnVtIGNoYW1lbGl1bV9zdHJlYW1fcmVhbHRpbWVfbW9k ZSBzdHJlYW1fbW9kZTsKLQlzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWw7CisJaW50IG1zZWMs IGZyZXEsIHN0ZXA7CiAJaW50MzJfdCAqcmVjdiwgKmJ1ZjsKIAlkb3VibGUgKmNoYW5uZWw7CiAJ c2l6ZV90IGksIGosIHN0cmVhaywgcGFnZV9jb3VudDsKIAlzaXplX3QgcmVjdl9sZW4sIGJ1Zl9s ZW4sIGJ1Zl9jYXAsIGJ1Zl9zaXplLCBjaGFubmVsX2xlbjsKIAlib29sIG9rLCBzdWNjZXNzOwot CWNoYXIgZHVtcF9zdWZmaXhbNjRdOwotCWNoYXIgKmR1bXBfcGF0aCA9IE5VTEw7Ci0JaW50IGR1 bXBfZmQgPSAtMTsKLQlwdGhyZWFkX3QgdGhyZWFkOwotCXN0cnVjdCBhdWRpb19zdGF0ZSBzdGF0 ZSA9IHt9OwotCWludCBjaGFubmVsX21hcHBpbmdbOF0sIGNhcHR1cmVfY2hhbjsKKwlpbnQgY2Fw dHVyZV9jaGFuOwogCi0JaWd0X2RlYnVnKCJUZXN0aW5nIHdpdGggcGxheWJhY2sgZm9ybWF0ICVz LCBzYW1wbGluZyByYXRlICVkIEh6IGFuZCAiCi0JCSAgIiVkIGNoYW5uZWxzXG4iLAotCQkgIHNu ZF9wY21fZm9ybWF0X25hbWUocGxheWJhY2tfZm9ybWF0KSwKLQkJICBwbGF5YmFja19yYXRlLCBw bGF5YmFja19jaGFubmVscyk7Ci0JYWxzYV9jb25maWd1cmVfb3V0cHV0KGFsc2EsIHBsYXliYWNr X2Zvcm1hdCwKLQkJCSAgICAgIHBsYXliYWNrX2NoYW5uZWxzLCBwbGF5YmFja19yYXRlKTsKLQot CWNoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdfYXVkaW8oZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LCBm YWxzZSk7Ci0KLQlzdHJlYW0gPSBjaGFtZWxpdW1fc3RyZWFtX2luaXQoKTsKLQlpZ3RfYXNzZXJ0 KHN0cmVhbSk7Ci0KLQlzdHJlYW1fbW9kZSA9IENIQU1FTElVTV9TVFJFQU1fUkVBTFRJTUVfU1RP UF9XSEVOX09WRVJGTE9XOwotCW9rID0gY2hhbWVsaXVtX3N0cmVhbV9kdW1wX3JlYWx0aW1lX2F1 ZGlvKHN0cmVhbSwgc3RyZWFtX21vZGUpOwotCWlndF9hc3NlcnQob2spOwotCi0Jc2lnbmFsID0g YXVkaW9fc2lnbmFsX2luaXQocGxheWJhY2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOwotCWln dF9hc3NlcnQoc2lnbmFsKTsKKwlzdGF0ZS0+c2lnbmFsID0gYXVkaW9fc2lnbmFsX2luaXQoc3Rh dGUtPnBsYXliYWNrLmNoYW5uZWxzLAorCQkJCQkgIHN0YXRlLT5wbGF5YmFjay5yYXRlKTsKKwlp Z3RfYXNzZXJ0KHN0YXRlLT5zaWduYWwpOwogCiAJLyogV2UnbGwgY2hvb3NlIGRpZmZlcmVudCBm cmVxdWVuY2llcyBwZXIgY2hhbm5lbCB0byBtYWtlIHN1cmUgdGhleSBhcmUKIAkgKiBpbmRlcGVu ZGVudCBmcm9tIGVhY2ggb3RoZXIuIFRvIGRvIHNvLCB3ZSdsbCBhZGQgYSBkaWZmZXJlbnQgb2Zm c2V0CkBAIC05MDAsNjIgKzEwMTksMjEgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCSAqIGxhdGVyIG9uLiBXZSBjYW5u b3QgcmV0cmlldmUgdGhlIGNhcHR1cmUgcmF0ZSBiZWZvcmUgc3RhcnRpbmcKIAkgKiBwbGF5aW5n IGF1ZGlvLCBzbyB3ZSBkb24ndCByZWFsbHkgaGF2ZSB0aGUgY2hvaWNlLgogCSAqLwotCXN0ZXAg PSAyICogcGxheWJhY2tfcmF0ZSAvIENBUFRVUkVfU0FNUExFUzsKKwlzdGVwID0gMiAqIHN0YXRl LT5wbGF5YmFjay5yYXRlIC8gQ0FQVFVSRV9TQU1QTEVTOwogCWZvciAoaSA9IDA7IGkgPCB0ZXN0 X2ZyZXF1ZW5jaWVzX2NvdW50OyBpKyspIHsKLQkJZm9yIChqID0gMDsgaiA8IHBsYXliYWNrX2No YW5uZWxzOyBqKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IHN0YXRlLT5wbGF5YmFjay5jaGFubmVs czsgaisrKSB7CiAJCQlmcmVxID0gdGVzdF9mcmVxdWVuY2llc1tpXSArIGogKiBzdGVwOwotCQkJ YXVkaW9fc2lnbmFsX2FkZF9mcmVxdWVuY3koc2lnbmFsLCBmcmVxLCBqKTsKKwkJCWF1ZGlvX3Np Z25hbF9hZGRfZnJlcXVlbmN5KHN0YXRlLT5zaWduYWwsIGZyZXEsIGopOwogCQl9CiAJfQotCWF1 ZGlvX3NpZ25hbF9zeW50aGVzaXplKHNpZ25hbCk7CisJYXVkaW9fc2lnbmFsX3N5bnRoZXNpemUo c3RhdGUtPnNpZ25hbCk7CiAKLQlzdGF0ZS5zaWduYWwgPSBzaWduYWw7Ci0Jc3RhdGUuZm9ybWF0 ID0gcGxheWJhY2tfZm9ybWF0OwotCXN0YXRlLnJ1biA9IHRydWU7Ci0JYWxzYV9yZWdpc3Rlcl9v dXRwdXRfY2FsbGJhY2soYWxzYSwgYXVkaW9fb3V0cHV0X2NhbGxiYWNrLCAmc3RhdGUsCisJYWxz YV9yZWdpc3Rlcl9vdXRwdXRfY2FsbGJhY2soc3RhdGUtPmFsc2EsIGF1ZGlvX291dHB1dF9jYWxs YmFjaywgc3RhdGUsCiAJCQkJICAgICAgUExBWUJBQ0tfU0FNUExFUyk7CiAKLQkvKiBTdGFydCBw bGF5aW5nIGF1ZGlvICovCi0JcmV0ID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgcnVu X2F1ZGlvX3RocmVhZCwgYWxzYSk7Ci0JaWd0X2Fzc2VydChyZXQgPT0gMCk7Ci0KLQkvKiBPbmx5 IGFmdGVyIHdlJ3ZlIHN0YXJ0ZWQgcGxheWluZyBhdWRpbywgd2UgY2FuIHJldHJpZXZlIHRoZSBj YXB0dXJlCi0JICogZm9ybWF0IHVzZWQgYnkgdGhlIENoYW1lbGl1bSBkZXZpY2UuICovCi0JY2hh bWVsaXVtX2dldF9hdWRpb19mb3JtYXQoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LAotCQkJCSAgICZj YXB0dXJlX3JhdGUsICZjYXB0dXJlX2NoYW5uZWxzKTsKLQlpZiAoY2FwdHVyZV9yYXRlID09IDAp IHsKLQkJaWd0X2RlYnVnKCJBdWRpbyByZWNlaXZlciBkb2Vzbid0IGluZGljYXRlIHRoZSBjYXB0 dXJlICIKLQkJCSAic2FtcGxpbmcgcmF0ZSwgYXNzdW1pbmcgaXQncyAlZCBIelxuIiwgcGxheWJh Y2tfcmF0ZSk7Ci0JCWNhcHR1cmVfcmF0ZSA9IHBsYXliYWNrX3JhdGU7Ci0JfSBlbHNlCi0JCWln dF9hc3NlcnQoY2FwdHVyZV9yYXRlID09IHBsYXliYWNrX3JhdGUpOwotCi0JY2hhbWVsaXVtX2dl dF9hdWRpb19jaGFubmVsX21hcHBpbmcoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LAotCQkJCQkgICAg Y2hhbm5lbF9tYXBwaW5nKTsKLQkvKiBNYWtlIHN1cmUgd2UgY2FuIGNhcHR1cmUgYWxsIGNoYW5u ZWxzIHdlIHNlbmQuICovCi0JZm9yIChpID0gMDsgaSA8IHBsYXliYWNrX2NoYW5uZWxzOyBpKysp IHsKLQkJb2sgPSBmYWxzZTsKLQkJZm9yIChqID0gMDsgaiA8IGNhcHR1cmVfY2hhbm5lbHM7IGor KykgewotCQkJaWYgKGNoYW5uZWxfbWFwcGluZ1tqXSA9PSBpKSB7Ci0JCQkJb2sgPSB0cnVlOwot CQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JCWlndF9hc3NlcnQob2spOwotCX0KKwlhdWRpb19zdGF0 ZV9zdGFydChzdGF0ZSk7CiAKLQlpZiAoaWd0X2ZyYW1lX2R1bXBfaXNfZW5hYmxlZCgpKSB7Ci0J CXNucHJpbnRmKGR1bXBfc3VmZml4LCBzaXplb2YoZHVtcF9zdWZmaXgpLAotCQkJICJjYXB0dXJl LSVzLSVkY2gtJWRIeiIsCi0JCQkgc25kX3BjbV9mb3JtYXRfbmFtZShwbGF5YmFja19mb3JtYXQp LAotCQkJIHBsYXliYWNrX2NoYW5uZWxzLCBwbGF5YmFja19yYXRlKTsKLQotCQlkdW1wX2ZkID0g YXVkaW9fY3JlYXRlX3dhdl9maWxlX3MzMl9sZShkdW1wX3N1ZmZpeCwKLQkJCQkJCSAgICAgICBj YXB0dXJlX3JhdGUsCi0JCQkJCQkgICAgICAgY2FwdHVyZV9jaGFubmVscywKLQkJCQkJCSAgICAg ICAmZHVtcF9wYXRoKTsKLQkJaWd0X2Fzc2VydChkdW1wX2ZkID49IDApOwotCX0KKwlpZ3RfYXNz ZXJ0KHN0YXRlLT5jYXB0dXJlLnJhdGUgPT0gc3RhdGUtPnBsYXliYWNrLnJhdGUpOwogCiAJLyog TmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxMjgsIGJlY2F1c2UgdGhhdCdzIHRoZSBudW1iZXIg b2Ygc2FtcGxlcwogCSAqIHdlIGdldCBwZXIgY2hhbm5lbCBlYWNoIHRpbWUgd2UgcmVjZWl2ZSBh biBhdWRpbyBwYWdlIGZyb20gdGhlCkBAIC05NzAsNyArMTA0OCw3IEBAIGRvX3Rlc3RfZGlzcGxh eV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAljaGFu bmVsX2xlbiA9IENBUFRVUkVfU0FNUExFUzsKIAljaGFubmVsID0gbWFsbG9jKHNpemVvZihkb3Vi bGUpICogY2hhbm5lbF9sZW4pOwogCi0JYnVmX2NhcCA9IGNhcHR1cmVfY2hhbm5lbHMgKiBjaGFu bmVsX2xlbjsKKwlidWZfY2FwID0gc3RhdGUtPmNhcHR1cmUuY2hhbm5lbHMgKiBjaGFubmVsX2xl bjsKIAlidWYgPSBtYWxsb2Moc2l6ZW9mKGludDMyX3QpICogYnVmX2NhcCk7CiAJYnVmX2xlbiA9 IDA7CiAKQEAgLTk4Miw3ICsxMDYwLDcgQEAgZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCW1zZWMgPSAwOwogCWkgPSAwOwog CXdoaWxlICghc3VjY2VzcyAmJiBtc2VjIDwgQVVESU9fVElNRU9VVCkgewotCQlvayA9IGNoYW1l bGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhzdHJlYW0sCisJCW9rID0gY2hhbWVs aXVtX3N0cmVhbV9yZWNlaXZlX3JlYWx0aW1lX2F1ZGlvKHN0YXRlLT5zdHJlYW0sCiAJCQkJCQkJ ICAgICAmcGFnZV9jb3VudCwKIAkJCQkJCQkgICAgICZyZWN2LCAmcmVjdl9sZW4pOwogCQlpZ3Rf YXNzZXJ0KG9rKTsKQEAgLTk5NCwyNiArMTA3MiwyNyBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8o ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCiAJCQljb250aW51ZTsK IAkJaWd0X2Fzc2VydChidWZfbGVuID09IGJ1Zl9jYXApOwogCi0JCWlmIChkdW1wX2ZkID49IDAp IHsKKwkJaWYgKHN0YXRlLT5kdW1wX2ZkID49IDApIHsKIAkJCWJ1Zl9zaXplID0gYnVmX2xlbiAq IHNpemVvZihpbnQzMl90KTsKLQkJCWlndF9hc3NlcnQod3JpdGUoZHVtcF9mZCwgYnVmLCBidWZf c2l6ZSkgPT0gYnVmX3NpemUpOworCQkJaWd0X2Fzc2VydCh3cml0ZShzdGF0ZS0+ZHVtcF9mZCwg YnVmLCBidWZfc2l6ZSkgPT0gYnVmX3NpemUpOwogCQl9CiAKLQkJbXNlYyA9IGkgKiBjaGFubmVs X2xlbiAvIChkb3VibGUpIGNhcHR1cmVfcmF0ZSAqIDEwMDA7CisJCW1zZWMgPSBpICogY2hhbm5l bF9sZW4gLyAoZG91YmxlKSBzdGF0ZS0+Y2FwdHVyZS5yYXRlICogMTAwMDsKIAkJaWd0X2RlYnVn KCJEZXRlY3RpbmcgYXVkaW8gc2lnbmFsLCB0PSVkIG1zZWNcbiIsIG1zZWMpOwogCi0JCWZvciAo aiA9IDA7IGogPCBwbGF5YmFja19jaGFubmVsczsgaisrKSB7Ci0JCQljYXB0dXJlX2NoYW4gPSBj aGFubmVsX21hcHBpbmdbal07CisJCWZvciAoaiA9IDA7IGogPCBzdGF0ZS0+cGxheWJhY2suY2hh bm5lbHM7IGorKykgeworCQkJY2FwdHVyZV9jaGFuID0gc3RhdGUtPmNoYW5uZWxfbWFwcGluZ1tq XTsKIAkJCWlndF9hc3NlcnQoY2FwdHVyZV9jaGFuID49IDApOwogCQkJaWd0X2RlYnVnKCJQcm9j ZXNzaW5nIGNoYW5uZWwgJXp1IChjYXB0dXJlZCBhcyAiCiAJCQkJICAiY2hhbm5lbCAlZClcbiIs IGosIGNhcHR1cmVfY2hhbik7CiAKIAkJCWF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoY2hh bm5lbCwgY2hhbm5lbF9sZW4sCiAJCQkJCQkgICAgIGJ1ZiwgYnVmX2xlbiwKLQkJCQkJCSAgICAg Y2FwdHVyZV9jaGFubmVscywKKwkJCQkJCSAgICAgc3RhdGUtPmNhcHR1cmUuY2hhbm5lbHMsCiAJ CQkJCQkgICAgIGNhcHR1cmVfY2hhbik7CiAKLQkJCWlmIChhdWRpb19zaWduYWxfZGV0ZWN0KHNp Z25hbCwgY2FwdHVyZV9yYXRlLCBqLAorCQkJaWYgKGF1ZGlvX3NpZ25hbF9kZXRlY3Qoc3RhdGUt PnNpZ25hbCwKKwkJCQkJCXN0YXRlLT5jYXB0dXJlLnJhdGUsIGosCiAJCQkJCQljaGFubmVsLCBj aGFubmVsX2xlbikpCiAJCQkJc3RyZWFrKys7CiAJCQllbHNlCkBAIC0xMDIzLDQzICsxMTAyLDE1 IEBAIGRvX3Rlc3RfZGlzcGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1f cG9ydCAqcG9ydCwKIAkJYnVmX2xlbiA9IDA7CiAJCWkrKzsKIAotCQlzdWNjZXNzID0gc3RyZWFr ID09IE1JTl9TVFJFQUsgKiBwbGF5YmFja19jaGFubmVsczsKKwkJc3VjY2VzcyA9IHN0cmVhayA9 PSBNSU5fU1RSRUFLICogc3RhdGUtPnBsYXliYWNrLmNoYW5uZWxzOwogCX0KIAotCWlndF9kZWJ1 ZygiU3RvcHBpbmcgYXVkaW8gcGxheWJhY2tcbiIpOwotCXN0YXRlLnJ1biA9IGZhbHNlOwotCXJl dCA9IHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOwotCWlndF9hc3NlcnQocmV0ID09IDApOwot Ci0JYWxzYV9jbG9zZV9vdXRwdXQoYWxzYSk7Ci0KLQlpZiAoZHVtcF9mZCA+PSAwKSB7Ci0JCWNs b3NlKGR1bXBfZmQpOwotCQlpZiAoc3VjY2VzcykgewotCQkJLyogVGVzdCBzdWNjZWVkZWQsIG5v IG5lZWQgdG8ga2VlcCB0aGUgY2FwdHVyZWQgZGF0YSAqLwotCQkJdW5saW5rKGR1bXBfcGF0aCk7 Ci0JCX0gZWxzZQotCQkJaWd0X2RlYnVnKCJTYXZlZCBjYXB0dXJlZCBhdWRpbyBkYXRhIHRvICVz XG4iLCBkdW1wX3BhdGgpOwotCQlmcmVlKGR1bXBfcGF0aCk7Ci0JfQorCWF1ZGlvX3N0YXRlX3N0 b3Aoc3RhdGUsIHN1Y2Nlc3MpOwogCiAJZnJlZShyZWN2KTsKIAlmcmVlKGJ1Zik7CiAJZnJlZShj aGFubmVsKTsKLQotCW9rID0gY2hhbWVsaXVtX3N0cmVhbV9zdG9wX3JlYWx0aW1lX2F1ZGlvKHN0 cmVhbSk7Ci0JaWd0X2Fzc2VydChvayk7Ci0KLQlhdWRpb19maWxlID0gY2hhbWVsaXVtX3N0b3Bf Y2FwdHVyaW5nX2F1ZGlvKGRhdGEtPmNoYW1lbGl1bSwKLQkJCQkJCSAgICBwb3J0KTsKLQlpZiAo YXVkaW9fZmlsZSkgewotCQlpZ3RfZGVidWcoIkF1ZGlvIGZpbGUgc2F2ZWQgb24gdGhlIENoYW1l bGl1bSBpbiAlc1xuIiwKLQkJCSAgYXVkaW9fZmlsZS0+cGF0aCk7Ci0JCWNoYW1lbGl1bV9kZXN0 cm95X2F1ZGlvX2ZpbGUoYXVkaW9fZmlsZSk7Ci0JfQotCi0JYXVkaW9fc2lnbmFsX2Zpbmkoc2ln bmFsKTsKLQljaGFtZWxpdW1fc3RyZWFtX2RlaW5pdChzdHJlYW0pOworCWF1ZGlvX3NpZ25hbF9m aW5pKHN0YXRlLT5zaWduYWwpOwogCiAJcmV0dXJuIHN1Y2Nlc3M7CiB9CkBAIC0xMTA2LDYgKzEx NTcsNyBAQCB0ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVt X3BvcnQgKnBvcnQsCiAJaW50IGZiX2lkLCBpLCBqOwogCWludCBjaGFubmVscywgc2FtcGxpbmdf cmF0ZTsKIAlzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdDsKKwlzdHJ1Y3QgYXVkaW9fc3RhdGUgc3Rh dGU7CiAKIAlpZ3RfcmVxdWlyZShhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKCkpOwogCkBAIC0x MTU1LDExICsxMjA3LDEwIEBAIHRlc3RfZGlzcGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVj dCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAogCQkJcnVuID0gdHJ1ZTsKIAotCQkJc3VjY2VzcyAm PSBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YSwgcG9ydCwgYWxzYSwKLQkJCQkJCQkgZm9ybWF0 LCBjaGFubmVscywKLQkJCQkJCQkgc2FtcGxpbmdfcmF0ZSk7Ci0KLQkJCWFsc2FfY2xvc2Vfb3V0 cHV0KGFsc2EpOworCQkJYXVkaW9fc3RhdGVfaW5pdCgmc3RhdGUsIGRhdGEsIGFsc2EsIHBvcnQs CisJCQkJCSBmb3JtYXQsIGNoYW5uZWxzLCBzYW1wbGluZ19yYXRlKTsKKwkJCXN1Y2Nlc3MgJj0g ZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKCZzdGF0ZSk7CisJCQlhdWRpb19zdGF0ZV9maW5pKCZzdGF0 ZSk7CiAJCX0KIAl9CiAKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2