From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A0F96E09E for ; Fri, 24 May 2019 08:07:53 +0000 (UTC) From: Simon Ser Date: Fri, 24 May 2019 11:07:29 +0300 Message-Id: <20190524080736.9173-2-simon.ser@intel.com> In-Reply-To: <20190524080736.9173-1-simon.ser@intel.com> References: <20190524080736.9173-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/8] 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 Y29tPgotLS0KIHRlc3RzL2ttc19jaGFtZWxpdW0uYyB8IDMyNCArKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygr KSwgMTM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBi L3Rlc3RzL2ttc19jaGFtZWxpdW0uYwppbmRleCBmNGZlMzg0NTlkZDkuLjFmYjRkZjMwMjBkNiAx MDA2NDQKLS0tIGEvdGVzdHMva21zX2NoYW1lbGl1bS5jCisrKyBiL3Rlc3RzL2ttc19jaGFtZWxp dW0uYwpAQCAtODEyLDE3ICs4MTIsMTczIEBAIHN0YXRpYyBjb25zdCBzbmRfcGNtX2Zvcm1hdF90 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 PnN0cmVhbSk7Cit9CisKK3N0YXRpYyB2b2lkICpydW5fYXVkaW9fdGhyZWFkKHZvaWQgKmRhdGEp Cit7CisJc3RydWN0IGFsc2EgKmFsc2EgPSBkYXRhOworCisJYWxzYV9ydW4oYWxzYSwgLTEpOwor CXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCBhdWRpb19zdGF0ZV9zdGFydChzdHJ1Y3Qg YXVkaW9fc3RhdGUgKnN0YXRlKQoreworCWludCByZXQ7CisJYm9vbCBvazsKKwlzaXplX3QgaSwg ajsKKwllbnVtIGNoYW1lbGl1bV9zdHJlYW1fcmVhbHRpbWVfbW9kZSBzdHJlYW1fbW9kZTsKKwlj aGFyIGR1bXBfc3VmZml4WzY0XTsKKworCWlndF9kZWJ1ZygiU3RhcnRpbmcgdGVzdCB3aXRoIHBs YXliYWNrIGZvcm1hdCAlcywgc2FtcGxpbmcgcmF0ZSAlZCBIeiAiCisJCSAgImFuZCAlZCBjaGFu bmVsc1xuIiwKKwkJICBzbmRfcGNtX2Zvcm1hdF9uYW1lKHN0YXRlLT5wbGF5YmFjay5mb3JtYXQp LAorCQkgIHN0YXRlLT5wbGF5YmFjay5yYXRlLCBzdGF0ZS0+cGxheWJhY2suY2hhbm5lbHMpOwor CisJY2hhbWVsaXVtX3N0YXJ0X2NhcHR1cmluZ19hdWRpbyhzdGF0ZS0+Y2hhbWVsaXVtLCBzdGF0 ZS0+cG9ydCwgZmFsc2UpOworCisJc3RyZWFtX21vZGUgPSBDSEFNRUxJVU1fU1RSRUFNX1JFQUxU SU1FX1NUT1BfV0hFTl9PVkVSRkxPVzsKKwlvayA9IGNoYW1lbGl1bV9zdHJlYW1fZHVtcF9yZWFs dGltZV9hdWRpbyhzdGF0ZS0+c3RyZWFtLCBzdHJlYW1fbW9kZSk7CisJaWd0X2Fzc2VydChvayk7 CisKKwkvKiBTdGFydCBwbGF5aW5nIGF1ZGlvICovCisJc3RhdGUtPnJ1biA9IHRydWU7CisJcmV0 ID0gcHRocmVhZF9jcmVhdGUoJnN0YXRlLT50aHJlYWQsIE5VTEwsCisJCQkgICAgIHJ1bl9hdWRp b190aHJlYWQsIHN0YXRlLT5hbHNhKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCS8qIFRo ZSBDaGFtZWxpdW0gZGV2aWNlIG9ubHkgc3VwcG9ydHMgdGhpcyBQQ00gZm9ybWF0LiAqLworCXN0 YXRlLT5jYXB0dXJlLmZvcm1hdCA9IFNORF9QQ01fRk9STUFUX1MzMl9MRTsKKworCS8qIE9ubHkg YWZ0ZXIgd2UndmUgc3RhcnRlZCBwbGF5aW5nIGF1ZGlvLCB3ZSBjYW4gcmV0cmlldmUgdGhlIGNh cHR1cmUKKwkgKiBmb3JtYXQgdXNlZCBieSB0aGUgQ2hhbWVsaXVtIGRldmljZS4gKi8KKwljaGFt ZWxpdW1fZ2V0X2F1ZGlvX2Zvcm1hdChzdGF0ZS0+Y2hhbWVsaXVtLCBzdGF0ZS0+cG9ydCwKKwkJ CQkgICAmc3RhdGUtPmNhcHR1cmUucmF0ZSwKKwkJCQkgICAmc3RhdGUtPmNhcHR1cmUuY2hhbm5l bHMpOworCWlmIChzdGF0ZS0+Y2FwdHVyZS5yYXRlID09IDApIHsKKwkJaWd0X2RlYnVnKCJBdWRp byByZWNlaXZlciBkb2Vzbid0IGluZGljYXRlIHRoZSBjYXB0dXJlICIKKwkJCSAic2FtcGxpbmcg cmF0ZSwgYXNzdW1pbmcgaXQncyAlZCBIelxuIiwKKwkJCSBzdGF0ZS0+cGxheWJhY2sucmF0ZSk7 CisJCXN0YXRlLT5jYXB0dXJlLnJhdGUgPSBzdGF0ZS0+cGxheWJhY2sucmF0ZTsKKwl9CisKKwlj aGFtZWxpdW1fZ2V0X2F1ZGlvX2NoYW5uZWxfbWFwcGluZyhzdGF0ZS0+Y2hhbWVsaXVtLCBzdGF0 ZS0+cG9ydCwKKwkJCQkJICAgIHN0YXRlLT5jaGFubmVsX21hcHBpbmcpOworCS8qIE1ha2Ugc3Vy ZSB3ZSBjYW4gY2FwdHVyZSBhbGwgY2hhbm5lbHMgd2Ugc2VuZC4gKi8KKwlmb3IgKGkgPSAwOyBp IDwgc3RhdGUtPnBsYXliYWNrLmNoYW5uZWxzOyBpKyspIHsKKwkJb2sgPSBmYWxzZTsKKwkJZm9y IChqID0gMDsgaiA8IHN0YXRlLT5jYXB0dXJlLmNoYW5uZWxzOyBqKyspIHsKKwkJCWlmIChzdGF0 ZS0+Y2hhbm5lbF9tYXBwaW5nW2pdID09IGkpIHsKKwkJCQlvayA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQl9CisJCX0KKwkJaWd0X2Fzc2VydChvayk7CisJfQorCisJaWYgKGlndF9mcmFtZV9kdW1w X2lzX2VuYWJsZWQoKSkgeworCQlzbnByaW50ZihkdW1wX3N1ZmZpeCwgc2l6ZW9mKGR1bXBfc3Vm Zml4KSwKKwkJCSAiY2FwdHVyZS0lcy0lZGNoLSVkSHoiLAorCQkJIHNuZF9wY21fZm9ybWF0X25h bWUoc3RhdGUtPnBsYXliYWNrLmZvcm1hdCksCisJCQkgc3RhdGUtPnBsYXliYWNrLmNoYW5uZWxz LCBzdGF0ZS0+cGxheWJhY2sucmF0ZSk7CisKKwkJc3RhdGUtPmR1bXBfZmQgPSBhdWRpb19jcmVh dGVfd2F2X2ZpbGVfczMyX2xlKGR1bXBfc3VmZml4LAorCQkJCQkJCSAgICAgIHN0YXRlLT5jYXB0 dXJlLnJhdGUsCisJCQkJCQkJICAgICAgc3RhdGUtPmNhcHR1cmUuY2hhbm5lbHMsCisJCQkJCQkJ ICAgICAgJnN0YXRlLT5kdW1wX3BhdGgpOworCQlpZ3RfYXNzZXJ0KHN0YXRlLT5kdW1wX2ZkID49 IDApOworCX0KK30KKworc3RhdGljIHZvaWQgYXVkaW9fc3RhdGVfc3RvcChzdHJ1Y3QgYXVkaW9f c3RhdGUgKnN0YXRlLCBib29sIHN1Y2Nlc3MpCit7CisJYm9vbCBvazsKKwlpbnQgcmV0OworCXN0 cnVjdCBjaGFtZWxpdW1fYXVkaW9fZmlsZSAqYXVkaW9fZmlsZTsKKworCWlndF9kZWJ1ZygiU3Rv cHBpbmcgYXVkaW8gcGxheWJhY2tcbiIpOworCXN0YXRlLT5ydW4gPSBmYWxzZTsKKwlyZXQgPSBw dGhyZWFkX2pvaW4oc3RhdGUtPnRocmVhZCwgTlVMTCk7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7 CisKKwlvayA9IGNoYW1lbGl1bV9zdHJlYW1fc3RvcF9yZWFsdGltZV9hdWRpbyhzdGF0ZS0+c3Ry ZWFtKTsKKwlpZ3RfYXNzZXJ0KG9rKTsKKworCWF1ZGlvX2ZpbGUgPSBjaGFtZWxpdW1fc3RvcF9j YXB0dXJpbmdfYXVkaW8oc3RhdGUtPmNoYW1lbGl1bSwKKwkJCQkJCSAgICBzdGF0ZS0+cG9ydCk7 CisJaWYgKGF1ZGlvX2ZpbGUpIHsKKwkJaWd0X2RlYnVnKCJBdWRpbyBmaWxlIHNhdmVkIG9uIHRo ZSBDaGFtZWxpdW0gaW4gJXNcbiIsCisJCQkgIGF1ZGlvX2ZpbGUtPnBhdGgpOworCQljaGFtZWxp dW1fZGVzdHJveV9hdWRpb19maWxlKGF1ZGlvX2ZpbGUpOworCX0KKworCWlmIChzdGF0ZS0+ZHVt cF9mZCA+PSAwKSB7CisJCWNsb3NlKHN0YXRlLT5kdW1wX2ZkKTsKKwkJc3RhdGUtPmR1bXBfZmQg PSAtMTsKKworCQlpZiAoc3VjY2VzcykgeworCQkJLyogVGVzdCBzdWNjZWVkZWQsIG5vIG5lZWQg dG8ga2VlcCB0aGUgY2FwdHVyZWQgZGF0YSAqLworCQkJdW5saW5rKHN0YXRlLT5kdW1wX3BhdGgp OworCQl9IGVsc2UKKwkJCWlndF9kZWJ1ZygiU2F2ZWQgY2FwdHVyZWQgYXVkaW8gZGF0YSB0byAl c1xuIiwKKwkJCQkgIHN0YXRlLT5kdW1wX3BhdGgpOworCQlmcmVlKHN0YXRlLT5kdW1wX3BhdGgp OworCQlzdGF0ZS0+ZHVtcF9wYXRoID0gTlVMTDsKKwl9Cit9CisKIHN0YXRpYyBpbnQKIGF1ZGlv X291dHB1dF9jYWxsYmFjayh2b2lkICpkYXRhLCB2b2lkICpidWZmZXIsIGludCBzYW1wbGVzKQog ewogCXN0cnVjdCBhdWRpb19zdGF0ZSAqc3RhdGUgPSBkYXRhOwogCi0Jc3dpdGNoIChzdGF0ZS0+ Zm9ybWF0KSB7CisJc3dpdGNoIChzdGF0ZS0+cGxheWJhY2suZm9ybWF0KSB7CiAJY2FzZSBTTkRf UENNX0ZPUk1BVF9TMTZfTEU6CiAJCWF1ZGlvX3NpZ25hbF9maWxsX3MxNl9sZShzdGF0ZS0+c2ln bmFsLCBidWZmZXIsIHNhbXBsZXMpOwogCQlicmVhazsKQEAgLTgzOSw1NSArOTk1LDE5IEBAIGF1 ZGlvX291dHB1dF9jYWxsYmFjayh2b2lkICpkYXRhLCB2b2lkICpidWZmZXIsIGludCBzYW1wbGVz KQogCXJldHVybiBzdGF0ZS0+cnVuID8gMCA6IC0xOwogfQogCi1zdGF0aWMgdm9pZCAqCi1ydW5f YXVkaW9fdGhyZWFkKHZvaWQgKmRhdGEpCitzdGF0aWMgYm9vbCBkb190ZXN0X2Rpc3BsYXlfYXVk aW8oc3RydWN0IGF1ZGlvX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgYWxzYSAqYWxzYSA9IGRh dGE7Ci0KLQlhbHNhX3J1bihhbHNhLCAtMSk7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBi b29sCi1kb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVt X3BvcnQgKnBvcnQsCi0JCSAgICAgIHN0cnVjdCBhbHNhICphbHNhLCBzbmRfcGNtX2Zvcm1hdF90 IHBsYXliYWNrX2Zvcm1hdCwKLQkJICAgICAgaW50IHBsYXliYWNrX2NoYW5uZWxzLCBpbnQgcGxh eWJhY2tfcmF0ZSkKLXsKLQlpbnQgcmV0LCBjYXB0dXJlX3JhdGUsIGNhcHR1cmVfY2hhbm5lbHMs IG1zZWMsIGZyZXEsIHN0ZXA7Ci0Jc3RydWN0IGNoYW1lbGl1bV9hdWRpb19maWxlICphdWRpb19m aWxlOwotCXN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpzdHJlYW07Ci0JZW51bSBjaGFtZWxpdW1f c3RyZWFtX3JlYWx0aW1lX21vZGUgc3RyZWFtX21vZGU7Ci0Jc3RydWN0IGF1ZGlvX3NpZ25hbCAq c2lnbmFsOworCWludCBtc2VjLCBmcmVxLCBzdGVwOwogCWludDMyX3QgKnJlY3YsICpidWY7CiAJ ZG91YmxlICpjaGFubmVsOwogCXNpemVfdCBpLCBqLCBzdHJlYWssIHBhZ2VfY291bnQ7CiAJc2l6 ZV90IHJlY3ZfbGVuLCBidWZfbGVuLCBidWZfY2FwLCBidWZfc2l6ZSwgY2hhbm5lbF9sZW47CiAJ Ym9vbCBvaywgc3VjY2VzczsKLQljaGFyIGR1bXBfc3VmZml4WzY0XTsKLQljaGFyICpkdW1wX3Bh dGggPSBOVUxMOwotCWludCBkdW1wX2ZkID0gLTE7Ci0JcHRocmVhZF90IHRocmVhZDsKLQlzdHJ1 Y3QgYXVkaW9fc3RhdGUgc3RhdGUgPSB7fTsKLQlpbnQgY2hhbm5lbF9tYXBwaW5nWzhdLCBjYXB0 dXJlX2NoYW47CisJaW50IGNhcHR1cmVfY2hhbjsKIAotCWlndF9kZWJ1ZygiVGVzdGluZyB3aXRo IHBsYXliYWNrIGZvcm1hdCAlcywgc2FtcGxpbmcgcmF0ZSAlZCBIeiBhbmQgIgotCQkgICIlZCBj aGFubmVsc1xuIiwKLQkJICBzbmRfcGNtX2Zvcm1hdF9uYW1lKHBsYXliYWNrX2Zvcm1hdCksCi0J CSAgcGxheWJhY2tfcmF0ZSwgcGxheWJhY2tfY2hhbm5lbHMpOwotCWFsc2FfY29uZmlndXJlX291 dHB1dChhbHNhLCBwbGF5YmFja19mb3JtYXQsCi0JCQkgICAgICBwbGF5YmFja19jaGFubmVscywg cGxheWJhY2tfcmF0ZSk7Ci0KLQljaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvKGRhdGEt PmNoYW1lbGl1bSwgcG9ydCwgZmFsc2UpOwotCi0Jc3RyZWFtID0gY2hhbWVsaXVtX3N0cmVhbV9p bml0KCk7Ci0JaWd0X2Fzc2VydChzdHJlYW0pOwotCi0Jc3RyZWFtX21vZGUgPSBDSEFNRUxJVU1f U1RSRUFNX1JFQUxUSU1FX1NUT1BfV0hFTl9PVkVSRkxPVzsKLQlvayA9IGNoYW1lbGl1bV9zdHJl YW1fZHVtcF9yZWFsdGltZV9hdWRpbyhzdHJlYW0sIHN0cmVhbV9tb2RlKTsKLQlpZ3RfYXNzZXJ0 KG9rKTsKLQotCXNpZ25hbCA9IGF1ZGlvX3NpZ25hbF9pbml0KHBsYXliYWNrX2NoYW5uZWxzLCBw bGF5YmFja19yYXRlKTsKLQlpZ3RfYXNzZXJ0KHNpZ25hbCk7CisJc3RhdGUtPnNpZ25hbCA9IGF1 ZGlvX3NpZ25hbF9pbml0KHN0YXRlLT5wbGF5YmFjay5jaGFubmVscywKKwkJCQkJICBzdGF0ZS0+ cGxheWJhY2sucmF0ZSk7CisJaWd0X2Fzc2VydChzdGF0ZS0+c2lnbmFsKTsKIAogCS8qIFdlJ2xs IGNob29zZSBkaWZmZXJlbnQgZnJlcXVlbmNpZXMgcGVyIGNoYW5uZWwgdG8gbWFrZSBzdXJlIHRo ZXkgYXJlCiAJICogaW5kZXBlbmRlbnQgZnJvbSBlYWNoIG90aGVyLiBUbyBkbyBzbywgd2UnbGwg YWRkIGEgZGlmZmVyZW50IG9mZnNldApAQCAtOTAwLDYyICsxMDIwLDIxIEBAIGRvX3Rlc3RfZGlz cGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAkg KiBsYXRlciBvbi4gV2UgY2Fubm90IHJldHJpZXZlIHRoZSBjYXB0dXJlIHJhdGUgYmVmb3JlIHN0 YXJ0aW5nCiAJICogcGxheWluZyBhdWRpbywgc28gd2UgZG9uJ3QgcmVhbGx5IGhhdmUgdGhlIGNo b2ljZS4KIAkgKi8KLQlzdGVwID0gMiAqIHBsYXliYWNrX3JhdGUgLyBDQVBUVVJFX1NBTVBMRVM7 CisJc3RlcCA9IDIgKiBzdGF0ZS0+cGxheWJhY2sucmF0ZSAvIENBUFRVUkVfU0FNUExFUzsKIAlm b3IgKGkgPSAwOyBpIDwgdGVzdF9mcmVxdWVuY2llc19jb3VudDsgaSsrKSB7Ci0JCWZvciAoaiA9 IDA7IGogPCBwbGF5YmFja19jaGFubmVsczsgaisrKSB7CisJCWZvciAoaiA9IDA7IGogPCBzdGF0 ZS0+cGxheWJhY2suY2hhbm5lbHM7IGorKykgewogCQkJZnJlcSA9IHRlc3RfZnJlcXVlbmNpZXNb aV0gKyBqICogc3RlcDsKLQkJCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KHNpZ25hbCwgZnJl cSwgaik7CisJCQlhdWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzdGF0ZS0+c2lnbmFsLCBmcmVx LCBqKTsKIAkJfQogCX0KLQlhdWRpb19zaWduYWxfc3ludGhlc2l6ZShzaWduYWwpOworCWF1ZGlv X3NpZ25hbF9zeW50aGVzaXplKHN0YXRlLT5zaWduYWwpOwogCi0Jc3RhdGUuc2lnbmFsID0gc2ln bmFsOwotCXN0YXRlLmZvcm1hdCA9IHBsYXliYWNrX2Zvcm1hdDsKLQlzdGF0ZS5ydW4gPSB0cnVl OwotCWFsc2FfcmVnaXN0ZXJfb3V0cHV0X2NhbGxiYWNrKGFsc2EsIGF1ZGlvX291dHB1dF9jYWxs YmFjaywgJnN0YXRlLAorCWFsc2FfcmVnaXN0ZXJfb3V0cHV0X2NhbGxiYWNrKHN0YXRlLT5hbHNh LCBhdWRpb19vdXRwdXRfY2FsbGJhY2ssIHN0YXRlLAogCQkJCSAgICAgIFBMQVlCQUNLX1NBTVBM RVMpOwogCi0JLyogU3RhcnQgcGxheWluZyBhdWRpbyAqLwotCXJldCA9IHB0aHJlYWRfY3JlYXRl KCZ0aHJlYWQsIE5VTEwsIHJ1bl9hdWRpb190aHJlYWQsIGFsc2EpOwotCWlndF9hc3NlcnQocmV0 ID09IDApOworCWF1ZGlvX3N0YXRlX3N0YXJ0KHN0YXRlKTsKIAotCS8qIE9ubHkgYWZ0ZXIgd2Un dmUgc3RhcnRlZCBwbGF5aW5nIGF1ZGlvLCB3ZSBjYW4gcmV0cmlldmUgdGhlIGNhcHR1cmUKLQkg KiBmb3JtYXQgdXNlZCBieSB0aGUgQ2hhbWVsaXVtIGRldmljZS4gKi8KLQljaGFtZWxpdW1fZ2V0 X2F1ZGlvX2Zvcm1hdChkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCi0JCQkJICAgJmNhcHR1cmVfcmF0 ZSwgJmNhcHR1cmVfY2hhbm5lbHMpOwotCWlmIChjYXB0dXJlX3JhdGUgPT0gMCkgewotCQlpZ3Rf ZGVidWcoIkF1ZGlvIHJlY2VpdmVyIGRvZXNuJ3QgaW5kaWNhdGUgdGhlIGNhcHR1cmUgIgotCQkJ ICJzYW1wbGluZyByYXRlLCBhc3N1bWluZyBpdCdzICVkIEh6XG4iLCBwbGF5YmFja19yYXRlKTsK LQkJY2FwdHVyZV9yYXRlID0gcGxheWJhY2tfcmF0ZTsKLQl9IGVsc2UKLQkJaWd0X2Fzc2VydChj YXB0dXJlX3JhdGUgPT0gcGxheWJhY2tfcmF0ZSk7Ci0KLQljaGFtZWxpdW1fZ2V0X2F1ZGlvX2No YW5uZWxfbWFwcGluZyhkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCi0JCQkJCSAgICBjaGFubmVsX21h cHBpbmcpOwotCS8qIE1ha2Ugc3VyZSB3ZSBjYW4gY2FwdHVyZSBhbGwgY2hhbm5lbHMgd2Ugc2Vu ZC4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgcGxheWJhY2tfY2hhbm5lbHM7IGkrKykgewotCQlvayA9 IGZhbHNlOwotCQlmb3IgKGogPSAwOyBqIDwgY2FwdHVyZV9jaGFubmVsczsgaisrKSB7Ci0JCQlp ZiAoY2hhbm5lbF9tYXBwaW5nW2pdID09IGkpIHsKLQkJCQlvayA9IHRydWU7Ci0JCQkJYnJlYWs7 Ci0JCQl9Ci0JCX0KLQkJaWd0X2Fzc2VydChvayk7Ci0JfQotCi0JaWYgKGlndF9mcmFtZV9kdW1w X2lzX2VuYWJsZWQoKSkgewotCQlzbnByaW50ZihkdW1wX3N1ZmZpeCwgc2l6ZW9mKGR1bXBfc3Vm Zml4KSwKLQkJCSAiY2FwdHVyZS0lcy0lZGNoLSVkSHoiLAotCQkJIHNuZF9wY21fZm9ybWF0X25h bWUocGxheWJhY2tfZm9ybWF0KSwKLQkJCSBwbGF5YmFja19jaGFubmVscywgcGxheWJhY2tfcmF0 ZSk7Ci0KLQkJZHVtcF9mZCA9IGF1ZGlvX2NyZWF0ZV93YXZfZmlsZV9zMzJfbGUoZHVtcF9zdWZm aXgsCi0JCQkJCQkgICAgICAgY2FwdHVyZV9yYXRlLAotCQkJCQkJICAgICAgIGNhcHR1cmVfY2hh bm5lbHMsCi0JCQkJCQkgICAgICAgJmR1bXBfcGF0aCk7Ci0JCWlndF9hc3NlcnQoZHVtcF9mZCA+ PSAwKTsKLQl9CisJaWd0X2Fzc2VydChzdGF0ZS0+Y2FwdHVyZS5yYXRlID09IHN0YXRlLT5wbGF5 YmFjay5yYXRlKTsKIAogCS8qIE5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTI4LCBiZWNhdXNl IHRoYXQncyB0aGUgbnVtYmVyIG9mIHNhbXBsZXMKIAkgKiB3ZSBnZXQgcGVyIGNoYW5uZWwgZWFj aCB0aW1lIHdlIHJlY2VpdmUgYW4gYXVkaW8gcGFnZSBmcm9tIHRoZQpAQCAtOTcwLDcgKzEwNDks NyBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVt X3BvcnQgKnBvcnQsCiAJY2hhbm5lbF9sZW4gPSBDQVBUVVJFX1NBTVBMRVM7CiAJY2hhbm5lbCA9 IG1hbGxvYyhzaXplb2YoZG91YmxlKSAqIGNoYW5uZWxfbGVuKTsKIAotCWJ1Zl9jYXAgPSBjYXB0 dXJlX2NoYW5uZWxzICogY2hhbm5lbF9sZW47CisJYnVmX2NhcCA9IHN0YXRlLT5jYXB0dXJlLmNo YW5uZWxzICogY2hhbm5lbF9sZW47CiAJYnVmID0gbWFsbG9jKHNpemVvZihpbnQzMl90KSAqIGJ1 Zl9jYXApOwogCWJ1Zl9sZW4gPSAwOwogCkBAIC05ODIsNyArMTA2MSw3IEBAIGRvX3Rlc3RfZGlz cGxheV9hdWRpbyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAlt c2VjID0gMDsKIAlpID0gMDsKIAl3aGlsZSAoIXN1Y2Nlc3MgJiYgbXNlYyA8IEFVRElPX1RJTUVP VVQpIHsKLQkJb2sgPSBjaGFtZWxpdW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRpbWVfYXVkaW8oc3Ry ZWFtLAorCQlvayA9IGNoYW1lbGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhzdGF0 ZS0+c3RyZWFtLAogCQkJCQkJCSAgICAgJnBhZ2VfY291bnQsCiAJCQkJCQkJICAgICAmcmVjdiwg JnJlY3ZfbGVuKTsKIAkJaWd0X2Fzc2VydChvayk7CkBAIC05OTQsMjYgKzEwNzMsMjcgQEAgZG9f dGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpw b3J0LAogCQkJY29udGludWU7CiAJCWlndF9hc3NlcnQoYnVmX2xlbiA9PSBidWZfY2FwKTsKIAot CQlpZiAoZHVtcF9mZCA+PSAwKSB7CisJCWlmIChzdGF0ZS0+ZHVtcF9mZCA+PSAwKSB7CiAJCQli dWZfc2l6ZSA9IGJ1Zl9sZW4gKiBzaXplb2YoaW50MzJfdCk7Ci0JCQlpZ3RfYXNzZXJ0KHdyaXRl KGR1bXBfZmQsIGJ1ZiwgYnVmX3NpemUpID09IGJ1Zl9zaXplKTsKKwkJCWlndF9hc3NlcnQod3Jp dGUoc3RhdGUtPmR1bXBfZmQsIGJ1ZiwgYnVmX3NpemUpID09IGJ1Zl9zaXplKTsKIAkJfQogCi0J CW1zZWMgPSBpICogY2hhbm5lbF9sZW4gLyAoZG91YmxlKSBjYXB0dXJlX3JhdGUgKiAxMDAwOwor CQltc2VjID0gaSAqIGNoYW5uZWxfbGVuIC8gKGRvdWJsZSkgc3RhdGUtPmNhcHR1cmUucmF0ZSAq IDEwMDA7CiAJCWlndF9kZWJ1ZygiRGV0ZWN0aW5nIGF1ZGlvIHNpZ25hbCwgdD0lZCBtc2VjXG4i LCBtc2VjKTsKIAotCQlmb3IgKGogPSAwOyBqIDwgcGxheWJhY2tfY2hhbm5lbHM7IGorKykgewot CQkJY2FwdHVyZV9jaGFuID0gY2hhbm5lbF9tYXBwaW5nW2pdOworCQlmb3IgKGogPSAwOyBqIDwg c3RhdGUtPnBsYXliYWNrLmNoYW5uZWxzOyBqKyspIHsKKwkJCWNhcHR1cmVfY2hhbiA9IHN0YXRl LT5jaGFubmVsX21hcHBpbmdbal07CiAJCQlpZ3RfYXNzZXJ0KGNhcHR1cmVfY2hhbiA+PSAwKTsK IAkJCWlndF9kZWJ1ZygiUHJvY2Vzc2luZyBjaGFubmVsICV6dSAoY2FwdHVyZWQgYXMgIgogCQkJ CSAgImNoYW5uZWwgJWQpXG4iLCBqLCBjYXB0dXJlX2NoYW4pOwogCiAJCQlhdWRpb19leHRyYWN0 X2NoYW5uZWxfczMyX2xlKGNoYW5uZWwsIGNoYW5uZWxfbGVuLAogCQkJCQkJICAgICBidWYsIGJ1 Zl9sZW4sCi0JCQkJCQkgICAgIGNhcHR1cmVfY2hhbm5lbHMsCisJCQkJCQkgICAgIHN0YXRlLT5j YXB0dXJlLmNoYW5uZWxzLAogCQkJCQkJICAgICBjYXB0dXJlX2NoYW4pOwogCi0JCQlpZiAoYXVk aW9fc2lnbmFsX2RldGVjdChzaWduYWwsIGNhcHR1cmVfcmF0ZSwgaiwKKwkJCWlmIChhdWRpb19z aWduYWxfZGV0ZWN0KHN0YXRlLT5zaWduYWwsCisJCQkJCQlzdGF0ZS0+Y2FwdHVyZS5yYXRlLCBq LAogCQkJCQkJY2hhbm5lbCwgY2hhbm5lbF9sZW4pKQogCQkJCXN0cmVhaysrOwogCQkJZWxzZQpA QCAtMTAyMyw0MyArMTEwMywxNSBAQCBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YV90ICpkYXRh LCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCiAJCWJ1Zl9sZW4gPSAwOwogCQlpKys7CiAK LQkJc3VjY2VzcyA9IHN0cmVhayA9PSBNSU5fU1RSRUFLICogcGxheWJhY2tfY2hhbm5lbHM7CisJ CXN1Y2Nlc3MgPSBzdHJlYWsgPT0gTUlOX1NUUkVBSyAqIHN0YXRlLT5wbGF5YmFjay5jaGFubmVs czsKIAl9CiAKLQlpZ3RfZGVidWcoIlN0b3BwaW5nIGF1ZGlvIHBsYXliYWNrXG4iKTsKLQlzdGF0 ZS5ydW4gPSBmYWxzZTsKLQlyZXQgPSBwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTsKLQlpZ3Rf YXNzZXJ0KHJldCA9PSAwKTsKLQotCWFsc2FfY2xvc2Vfb3V0cHV0KGFsc2EpOwotCi0JaWYgKGR1 bXBfZmQgPj0gMCkgewotCQljbG9zZShkdW1wX2ZkKTsKLQkJaWYgKHN1Y2Nlc3MpIHsKLQkJCS8q IFRlc3Qgc3VjY2VlZGVkLCBubyBuZWVkIHRvIGtlZXAgdGhlIGNhcHR1cmVkIGRhdGEgKi8KLQkJ CXVubGluayhkdW1wX3BhdGgpOwotCQl9IGVsc2UKLQkJCWlndF9kZWJ1ZygiU2F2ZWQgY2FwdHVy ZWQgYXVkaW8gZGF0YSB0byAlc1xuIiwgZHVtcF9wYXRoKTsKLQkJZnJlZShkdW1wX3BhdGgpOwot CX0KKwlhdWRpb19zdGF0ZV9zdG9wKHN0YXRlLCBzdWNjZXNzKTsKIAogCWZyZWUocmVjdik7CiAJ ZnJlZShidWYpOwogCWZyZWUoY2hhbm5lbCk7Ci0KLQlvayA9IGNoYW1lbGl1bV9zdHJlYW1fc3Rv cF9yZWFsdGltZV9hdWRpbyhzdHJlYW0pOwotCWlndF9hc3NlcnQob2spOwotCi0JYXVkaW9fZmls ZSA9IGNoYW1lbGl1bV9zdG9wX2NhcHR1cmluZ19hdWRpbyhkYXRhLT5jaGFtZWxpdW0sCi0JCQkJ CQkgICAgcG9ydCk7Ci0JaWYgKGF1ZGlvX2ZpbGUpIHsKLQkJaWd0X2RlYnVnKCJBdWRpbyBmaWxl IHNhdmVkIG9uIHRoZSBDaGFtZWxpdW0gaW4gJXNcbiIsCi0JCQkgIGF1ZGlvX2ZpbGUtPnBhdGgp OwotCQljaGFtZWxpdW1fZGVzdHJveV9hdWRpb19maWxlKGF1ZGlvX2ZpbGUpOwotCX0KLQotCWF1 ZGlvX3NpZ25hbF9maW5pKHNpZ25hbCk7Ci0JY2hhbWVsaXVtX3N0cmVhbV9kZWluaXQoc3RyZWFt KTsKKwlhdWRpb19zaWduYWxfZmluaShzdGF0ZS0+c2lnbmFsKTsKIAogCXJldHVybiBzdWNjZXNz OwogfQpAQCAtMTEwNiw2ICsxMTU4LDcgQEAgdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0 YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCWludCBmYl9pZCwgaSwgajsKIAlpbnQg Y2hhbm5lbHMsIHNhbXBsaW5nX3JhdGU7CiAJc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQ7CisJc3Ry dWN0IGF1ZGlvX3N0YXRlIHN0YXRlOwogCiAJaWd0X3JlcXVpcmUoYWxzYV9oYXNfZXhjbHVzaXZl X2FjY2VzcygpKTsKIApAQCAtMTE1NSw5ICsxMjA4LDEwIEBAIHRlc3RfZGlzcGxheV9hdWRpbyhk YXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAogCQkJcnVuID0gdHJ1 ZTsKIAotCQkJc3VjY2VzcyAmPSBkb190ZXN0X2Rpc3BsYXlfYXVkaW8oZGF0YSwgcG9ydCwgYWxz YSwKLQkJCQkJCQkgZm9ybWF0LCBjaGFubmVscywKLQkJCQkJCQkgc2FtcGxpbmdfcmF0ZSk7CisJ CQlhdWRpb19zdGF0ZV9pbml0KCZzdGF0ZSwgZGF0YSwgYWxzYSwgcG9ydCwKKwkJCQkJIGZvcm1h dCwgY2hhbm5lbHMsIHNhbXBsaW5nX3JhdGUpOworCQkJc3VjY2VzcyAmPSBkb190ZXN0X2Rpc3Bs YXlfYXVkaW8oJnN0YXRlKTsKKwkJCWF1ZGlvX3N0YXRlX2ZpbmkoJnN0YXRlKTsKIAogCQkJYWxz YV9jbG9zZV9vdXRwdXQoYWxzYSk7CiAJCX0KLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2