From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [V3,1/5] dmaengine: dmatest: Add support for multi channel testing From: Seraj Alijan Message-Id: <1537386774-20749-2-git-send-email-seraj.alijan@sondrel.com> Date: Wed, 19 Sep 2018 20:52:50 +0100 To: vkoul@kernel.org Cc: dmaengine@vger.kernel.org, dan.j.williams@intel.com, james.hartley@sondrel.com, sifan.naeem@sondrel.com, ed.blake@sondrel.com, Seraj Alijan List-ID: QWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgdGVzdHMgb24gbXVsdGlwbGUgY2hhbm5lbHMgc2ltdWx0 YW5lb3VzbHkgYXMgdGhlCmRyaXZlciBjdXJyZW50bHkgbGltaXRzIHRvIDEgY2hhbm5lbCBwZXIg dGVzdCBydW4uIFRoaXMgd2lsbCBhZGQgc3VwcG9ydApmb3Igc3RyZXNzIHRlc3RpbmcgRE1BIGNv bnRyb2xsZXJzIHdpdGggbXVsdGkgY2hhbm5lbCBjYXBhYmlsaXRpZXMuCgpUaGlzIGlzIGRvbmUg YnkgYWRkaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlICJjaGFubmVsIiBwYXJhbWV0ZXIK dGhhdCByZWdpc3RlcnMgdGhlIHJlcXVlc3RlZCBjaGFubmVsIHByaW9yIHRvIHRoZSAicnVuIiBw YXJhbWV0ZXIgYmVpbmcKc2V0IHRvIDEuIEVhY2ggdGltZSB0aGUgImNoYW5uZWwiIHBhcmFtZXRl ciBpcyBwb3B1bGF0ZWQgd2l0aCBhIG5ldwpkbWEgY2hhbm5lbCwgYSBuZXcgdGVzdCBpcyBhcHBl bmRlZCB0byB0aGUgdGhyZWFkIHF1ZXVlLiBPbmNlIHRoZSAicnVuIgpwYXJhbWV0ZXIgaXMgc2V0 IHRvIDEsIHRoZSB0ZXN0IHdpbGwga2ljayBzdGFydCBhbGwgcGVuZGluZyB0aHJlYWRzLgoKU2ln bmVkLW9mZi1ieTogU2VyYWogQWxpamFuIDxzZXJhai5hbGlqYW5Ac29uZHJlbC5jb20+Ci0tLQog ZHJpdmVycy9kbWEvZG1hdGVzdC5jIHwgMTk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMoKyks IDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2RtYXRlc3QuYyBiL2Ry aXZlcnMvZG1hL2RtYXRlc3QuYwppbmRleCBhYTE3MTJiLi5lYTY5MDMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2RtYS9kbWF0ZXN0LmMKKysrIGIvZHJpdmVycy9kbWEvZG1hdGVzdC5jCkBAIC0yNywx MSArMjcsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHRlc3RfYnVmX3NpemUgPSAxNjM4NDsKIG1v ZHVsZV9wYXJhbSh0ZXN0X2J1Zl9zaXplLCB1aW50LCBTX0lSVUdPIHwgU19JV1VTUik7CiBNT0RV TEVfUEFSTV9ERVNDKHRlc3RfYnVmX3NpemUsICJTaXplIG9mIHRoZSBtZW1jcHkgdGVzdCBidWZm ZXIiKTsKIAotc3RhdGljIGNoYXIgdGVzdF9jaGFubmVsWzIwXTsKLW1vZHVsZV9wYXJhbV9zdHJp bmcoY2hhbm5lbCwgdGVzdF9jaGFubmVsLCBzaXplb2YodGVzdF9jaGFubmVsKSwKLQkJU19JUlVH TyB8IFNfSVdVU1IpOwotTU9EVUxFX1BBUk1fREVTQyhjaGFubmVsLCAiQnVzIElEIG9mIHRoZSBj aGFubmVsIHRvIHRlc3QgKGRlZmF1bHQ6IGFueSkiKTsKLQogc3RhdGljIGNoYXIgdGVzdF9kZXZp Y2VbMzJdOwogbW9kdWxlX3BhcmFtX3N0cmluZyhkZXZpY2UsIHRlc3RfZGV2aWNlLCBzaXplb2Yo dGVzdF9kZXZpY2UpLAogCQlTX0lSVUdPIHwgU19JV1VTUik7CkBAIC0xMzksNiArMTM0LDI4IEBA IHN0YXRpYyBib29sIGRtYXRlc3RfcnVuOwogbW9kdWxlX3BhcmFtX2NiKHJ1biwgJnJ1bl9vcHMs ICZkbWF0ZXN0X3J1biwgU19JUlVHTyB8IFNfSVdVU1IpOwogTU9EVUxFX1BBUk1fREVTQyhydW4s ICJSdW4gdGhlIHRlc3QgKGRlZmF1bHQ6IGZhbHNlKSIpOwogCitzdGF0aWMgaW50IGRtYXRlc3Rf Y2hhbl9zZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCk7 CitzdGF0aWMgaW50IGRtYXRlc3RfY2hhbl9nZXQoY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2Vy bmVsX3BhcmFtICprcCk7CitzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgbXVs dGlfY2hhbl9vcHMgPSB7CisJLnNldCA9IGRtYXRlc3RfY2hhbl9zZXQsCisJLmdldCA9IGRtYXRl c3RfY2hhbl9nZXQsCit9OworCitzdGF0aWMgY2hhciB0ZXN0X2NoYW5uZWxbMjBdOworc3RhdGlj IHN0cnVjdCBrcGFyYW1fc3RyaW5nIG5ld2NoYW5fa3BzID0geworCS5zdHJpbmcgPSB0ZXN0X2No YW5uZWwsCisJLm1heGxlbiA9IDIwLAorfTsKK21vZHVsZV9wYXJhbV9jYihjaGFubmVsLCAmbXVs dGlfY2hhbl9vcHMsICZuZXdjaGFuX2twcywgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGNoYW5u ZWwsICJCdXMgSUQgb2YgdGhlIGNoYW5uZWwgdG8gdGVzdCAoZGVmYXVsdDogYW55KSIpOworCitz dGF0aWMgaW50IGRtYXRlc3RfdGVzdF9saXN0X2dldChjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBr ZXJuZWxfcGFyYW0gKmtwKTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyB0 ZXN0X2xpc3Rfb3BzID0geworCS5nZXQgPSBkbWF0ZXN0X3Rlc3RfbGlzdF9nZXQsCit9OworbW9k dWxlX3BhcmFtX2NiKHRlc3RfbGlzdCwgJnRlc3RfbGlzdF9vcHMsIE5VTEwsIDA0NDQpOworTU9E VUxFX1BBUk1fREVTQyh0ZXN0X2xpc3QsICJQcmludCBjdXJyZW50IHRlc3QgbGlzdCIpOworCiAv KiBNYXhpbXVtIGFtb3VudCBvZiBtaXNtYXRjaGVkIGJ5dGVzIGluIGJ1ZmZlciB0byBwcmludCAq LwogI2RlZmluZSBNQVhfRVJST1JfQ09VTlQJCTMyCiAKQEAgLTE3OSw2ICsxOTYsNyBAQCBzdHJ1 Y3QgZG1hdGVzdF90aHJlYWQgewogCXdhaXRfcXVldWVfaGVhZF90IGRvbmVfd2FpdDsKIAlzdHJ1 Y3QgZG1hdGVzdF9kb25lIHRlc3RfZG9uZTsKIAlib29sCQkJZG9uZTsKKwlib29sCQkJcGVuZGlu ZzsKIH07CiAKIHN0cnVjdCBkbWF0ZXN0X2NoYW4gewpAQCAtMjA2LDYgKzIyNCwyMiBAQCBzdGF0 aWMgYm9vbCBpc190aHJlYWRlZF90ZXN0X3J1bihzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZvKQog CXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgaXNfdGhyZWFkZWRfdGVzdF9wZW5kaW5n KHN0cnVjdCBkbWF0ZXN0X2luZm8gKmluZm8pCit7CisJc3RydWN0IGRtYXRlc3RfY2hhbiAqZHRj OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShkdGMsICZpbmZvLT5jaGFubmVscywgbm9kZSkgewor CQlzdHJ1Y3QgZG1hdGVzdF90aHJlYWQgKnRocmVhZDsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHRocmVhZCwgJmR0Yy0+dGhyZWFkcywgbm9kZSkgeworCQkJaWYgKHRocmVhZC0+cGVuZGluZykK KwkJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGlj IGludCBkbWF0ZXN0X3dhaXRfZ2V0KGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJh bSAqa3ApCiB7CiAJc3RydWN0IGRtYXRlc3RfaW5mbyAqaW5mbyA9ICZ0ZXN0X2luZm87CkBAIC00 NzYsNiArNTEwLDcgQEAgc3RhdGljIGludCBkbWF0ZXN0X2Z1bmModm9pZCAqZGF0YSkKIAlyZXQg PSAtRU5PTUVNOwogCiAJc21wX3JtYigpOworCXRocmVhZC0+cGVuZGluZyA9IGZhbHNlOwogCWlu Zm8gPSB0aHJlYWQtPmluZm87CiAJcGFyYW1zID0gJmluZm8tPnBhcmFtczsKIAljaGFuID0gdGhy ZWFkLT5jaGFuOwpAQCAtODg2LDcgKzkyMSw3IEBAIHN0YXRpYyBpbnQgZG1hdGVzdF9hZGRfdGhy ZWFkcyhzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZvLAogCQkvKiBzcmNidWYgYW5kIGRzdGJ1ZiBh cmUgYWxsb2NhdGVkIGJ5IHRoZSB0aHJlYWQgaXRzZWxmICovCiAJCWdldF90YXNrX3N0cnVjdCh0 aHJlYWQtPnRhc2spOwogCQlsaXN0X2FkZF90YWlsKCZ0aHJlYWQtPm5vZGUsICZkdGMtPnRocmVh ZHMpOwotCQl3YWtlX3VwX3Byb2Nlc3ModGhyZWFkLT50YXNrKTsKKwkJdGhyZWFkLT5wZW5kaW5n ID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gaTsKQEAgLTkzMiw3ICs5NjcsNyBAQCBzdGF0aWMgaW50 IGRtYXRlc3RfYWRkX2NoYW5uZWwoc3RydWN0IGRtYXRlc3RfaW5mbyAqaW5mbywKIAkJdGhyZWFk X2NvdW50ICs9IGNudCA+IDAgPyBjbnQgOiAwOwogCX0KIAotCXByX2luZm8oIlN0YXJ0ZWQgJXUg dGhyZWFkcyB1c2luZyAlc1xuIiwKKwlwcl9pbmZvKCJBZGRlZCAldSB0aHJlYWRzIHVzaW5nICVz XG4iLAogCQl0aHJlYWRfY291bnQsIGRtYV9jaGFuX25hbWUoY2hhbikpOwogCiAJbGlzdF9hZGRf dGFpbCgmZHRjLT5ub2RlLCAmaW5mby0+Y2hhbm5lbHMpOwpAQCAtOTc3LDcgKzEwMTIsNyBAQCBz dGF0aWMgdm9pZCByZXF1ZXN0X2NoYW5uZWxzKHN0cnVjdCBkbWF0ZXN0X2luZm8gKmluZm8sCiAJ fQogfQogCi1zdGF0aWMgdm9pZCBydW5fdGhyZWFkZWRfdGVzdChzdHJ1Y3QgZG1hdGVzdF9pbmZv ICppbmZvKQorc3RhdGljIHZvaWQgYWRkX3RocmVhZGVkX3Rlc3Qoc3RydWN0IGRtYXRlc3RfaW5m byAqaW5mbykKIHsKIAlzdHJ1Y3QgZG1hdGVzdF9wYXJhbXMgKnBhcmFtcyA9ICZpbmZvLT5wYXJh bXM7CiAKQEAgLTEwMDAsNiArMTAzNSwyNCBAQCBzdGF0aWMgdm9pZCBydW5fdGhyZWFkZWRfdGVz dChzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZvKQogCXJlcXVlc3RfY2hhbm5lbHMoaW5mbywgRE1B X1BRKTsKIH0KIAorc3RhdGljIHZvaWQgcnVuX3BlbmRpbmdfdGVzdHMoc3RydWN0IGRtYXRlc3Rf aW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZG1hdGVzdF9jaGFuICpkdGM7CisJdW5zaWduZWQgaW50 IHRocmVhZF9jb3VudCA9IDA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGR0YywgJmluZm8tPmNo YW5uZWxzLCBub2RlKSB7CisJCXN0cnVjdCBkbWF0ZXN0X3RocmVhZCAqdGhyZWFkOworCisJCXRo cmVhZF9jb3VudCA9IDA7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkodGhyZWFkLCAmZHRjLT50aHJl YWRzLCBub2RlKSB7CisJCQl3YWtlX3VwX3Byb2Nlc3ModGhyZWFkLT50YXNrKTsKKwkJCXRocmVh ZF9jb3VudCsrOworCQl9CisJCXByX2luZm8oIlN0YXJ0ZWQgJXUgdGhyZWFkcyB1c2luZyAlc1xu IiwKKwkJCXRocmVhZF9jb3VudCwgZG1hX2NoYW5fbmFtZShkdGMtPmNoYW4pKTsKKwl9Cit9CisK IHN0YXRpYyB2b2lkIHN0b3BfdGhyZWFkZWRfdGVzdChzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZv KQogewogCXN0cnVjdCBkbWF0ZXN0X2NoYW4gKmR0YywgKl9kdGM7CkBAIC0xMDE2LDcgKzEwNjks NyBAQCBzdGF0aWMgdm9pZCBzdG9wX3RocmVhZGVkX3Rlc3Qoc3RydWN0IGRtYXRlc3RfaW5mbyAq aW5mbykKIAlpbmZvLT5ucl9jaGFubmVscyA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RhcnRf dGhyZWFkZWRfdGVzdChzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZvLCBib29sIHJ1bikKK3N0YXRp YyB2b2lkIHN0YXJ0X3RocmVhZGVkX3Rlc3RzKHN0cnVjdCBkbWF0ZXN0X2luZm8gKmluZm8pCiB7 CiAJLyogd2UgbWlnaHQgYmUgY2FsbGVkIGVhcmx5IHRvIHNldCBydW49LCBkZWZlciBydW5uaW5n IHVudGlsIGFsbAogCSAqIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGV2YWx1YXRlZApAQCAtMTAyNCwx MSArMTA3Nyw3IEBAIHN0YXRpYyB2b2lkIHJlc3RhcnRfdGhyZWFkZWRfdGVzdChzdHJ1Y3QgZG1h dGVzdF9pbmZvICppbmZvLCBib29sIHJ1bikKIAlpZiAoIWluZm8tPmRpZF9pbml0KQogCQlyZXR1 cm47CiAKLQkvKiBTdG9wIGFueSBydW5uaW5nIHRlc3QgZmlyc3QgKi8KLQlzdG9wX3RocmVhZGVk X3Rlc3QoaW5mbyk7Ci0KLQkvKiBSdW4gdGVzdCB3aXRoIG5ldyBwYXJhbWV0ZXJzICovCi0JcnVu X3RocmVhZGVkX3Rlc3QoaW5mbyk7CisJcnVuX3BlbmRpbmdfdGVzdHMoaW5mbyk7CiB9CiAKIHN0 YXRpYyBpbnQgZG1hdGVzdF9ydW5fZ2V0KGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9w YXJhbSAqa3ApCkBAIC0xMDM5LDcgKzEwODgsOCBAQCBzdGF0aWMgaW50IGRtYXRlc3RfcnVuX2dl dChjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQogCWlmIChpc190aHJl YWRlZF90ZXN0X3J1bihpbmZvKSkgewogCQlkbWF0ZXN0X3J1biA9IHRydWU7CiAJfSBlbHNlIHsK LQkJc3RvcF90aHJlYWRlZF90ZXN0KGluZm8pOworCQlpZiAoIWlzX3RocmVhZGVkX3Rlc3RfcGVu ZGluZyhpbmZvKSkKKwkJCXN0b3BfdGhyZWFkZWRfdGVzdChpbmZvKTsKIAkJZG1hdGVzdF9ydW4g PSBmYWxzZTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZpbmZvLT5sb2NrKTsKQEAgLTEwNTcsMTggKzEx MDcsMTI1IEBAIHN0YXRpYyBpbnQgZG1hdGVzdF9ydW5fc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29u c3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCiAJaWYgKHJldCkgewogCQltdXRleF91bmxvY2so JmluZm8tPmxvY2spOwogCQlyZXR1cm4gcmV0OworCX0gZWxzZSBpZiAoZG1hdGVzdF9ydW4pIHsK KwkJaWYgKGlzX3RocmVhZGVkX3Rlc3RfcGVuZGluZyhpbmZvKSkKKwkJCXN0YXJ0X3RocmVhZGVk X3Rlc3RzKGluZm8pOworCQllbHNlCisJCQlwcl9pbmZvKCJDb3VsZCBub3Qgc3RhcnQgdGVzdCwg bm8gY2hhbm5lbHMgY29uZmlndXJlZFxuIik7CisJfSBlbHNlIHsKKwkJc3RvcF90aHJlYWRlZF90 ZXN0KGluZm8pOworCX0KKworCW11dGV4X3VubG9jaygmaW5mby0+bG9jayk7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgaW50IGRtYXRlc3RfY2hhbl9zZXQoY29uc3QgY2hhciAqdmFsLCBj b25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkKK3sKKwlzdHJ1Y3QgZG1hdGVzdF9pbmZvICpp bmZvID0gJnRlc3RfaW5mbzsKKwlzdHJ1Y3QgZG1hdGVzdF9jaGFuICpkdGM7CisJY2hhciBjaGFu X3Jlc2V0X3ZhbFsyMF07CisJaW50IHJldCA9IDA7CisKKwltdXRleF9sb2NrKCZpbmZvLT5sb2Nr KTsKKwlyZXQgPSBwYXJhbV9zZXRfY29weXN0cmluZyh2YWwsIGtwKTsKKwlpZiAocmV0KSB7CisJ CW11dGV4X3VubG9jaygmaW5mby0+bG9jayk7CisJCXJldHVybiByZXQ7CisJfQorCS8qQ2xlYXIg YW55IHByZXZpb3VzbHkgcnVuIHRocmVhZHMgKi8KKwlpZiAoIWlzX3RocmVhZGVkX3Rlc3RfcnVu KGluZm8pICYmICFpc190aHJlYWRlZF90ZXN0X3BlbmRpbmcoaW5mbykpCisJCXN0b3BfdGhyZWFk ZWRfdGVzdChpbmZvKTsKKwkvKiBSZWplY3QgY2hhbm5lbHMgdGhhdCBhcmUgYWxyZWFkeSByZWdp c3RlcmVkICovCisJaWYgKGlzX3RocmVhZGVkX3Rlc3RfcGVuZGluZyhpbmZvKSkgeworCQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGR0YywgJmluZm8tPmNoYW5uZWxzLCBub2RlKSB7CisJCQlpZiAoc3Ry Y21wKGRtYV9jaGFuX25hbWUoZHRjLT5jaGFuKSwKKwkJCQkgICBzdHJpbSh0ZXN0X2NoYW5uZWwp KSA9PSAwKSB7CisJCQkJZHRjID0gbGlzdF9sYXN0X2VudHJ5KCZpbmZvLT5jaGFubmVscywKKwkJ CQkJCSAgICAgIHN0cnVjdCBkbWF0ZXN0X2NoYW4sCisJCQkJCQkgICAgICBub2RlKTsKKwkJCQlz dHJsY3B5KGNoYW5fcmVzZXRfdmFsLAorCQkJCQlkbWFfY2hhbl9uYW1lKGR0Yy0+Y2hhbiksCisJ CQkJCXNpemVvZihjaGFuX3Jlc2V0X3ZhbCkpOworCQkJCXJldCA9IC1FQlVTWTsKKwkJCQlnb3Rv IGFkZF9jaGFuX2VycjsKKwkJCX0KKwkJfQogCX0KIAotCWlmIChpc190aHJlYWRlZF90ZXN0X3J1 bihpbmZvKSkKKwlhZGRfdGhyZWFkZWRfdGVzdChpbmZvKTsKKworCS8qIENoZWNrIGlmIGNoYW5u ZWwgd2FzIGFkZGVkIHN1Y2Nlc3NmdWxseSAqLworCWR0YyA9IGxpc3RfbGFzdF9lbnRyeSgmaW5m by0+Y2hhbm5lbHMsIHN0cnVjdCBkbWF0ZXN0X2NoYW4sIG5vZGUpOworCisJaWYgKGR0Yy0+Y2hh bikgeworCQkvKgorCQkgKiBpZiBuZXcgY2hhbm5lbCB3YXMgbm90IHN1Y2Nlc3NmdWxseSBhZGRl ZCwgcmV2ZXJ0IHRoZSB0aGUKKwkJICogInRlc3RfY2hhbm5lbCIgc3RyaW5nIHRvIHRoZSBuYW1l IG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWxseQorCQkgKiBhZGRlZCBjaGFubmVsLiBleGNlcHRpb24g Zm9yIHdoZW4gdXNlcnMgaXNzdWVzIGVtcHR5IHN0cmluZworCQkgKiB0byBjaGFubmVsIHBhcmFt ZXRlci4KKwkJICovCisJCWlmICgoc3RyY21wKGRtYV9jaGFuX25hbWUoZHRjLT5jaGFuKSwgc3Ry aW0odGVzdF9jaGFubmVsKSkgIT0gMCkKKwkJICAgICYmIChzdHJjbXAoIiIsIHN0cmltKHRlc3Rf Y2hhbm5lbCkpICE9IDApKSB7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJc3RybGNweShjaGFuX3Jl c2V0X3ZhbCwgZG1hX2NoYW5fbmFtZShkdGMtPmNoYW4pLAorCQkJCXNpemVvZihjaGFuX3Jlc2V0 X3ZhbCkpOworCQkJZ290byBhZGRfY2hhbl9lcnI7CisJCX0KKworCX0gZWxzZSB7CisJCS8qIENs ZWFyIHRlc3RfY2hhbm5lbCBpZiBubyBjaGFubmVscyB3ZXJlIGFkZGVkIHN1Y2Nlc3NmdWxseSAq LworCQlzdHJsY3B5KGNoYW5fcmVzZXRfdmFsLCAiIiwgc2l6ZW9mKGNoYW5fcmVzZXRfdmFsKSk7 CiAJCXJldCA9IC1FQlVTWTsKLQllbHNlIGlmIChkbWF0ZXN0X3J1bikKLQkJcmVzdGFydF90aHJl YWRlZF90ZXN0KGluZm8sIGRtYXRlc3RfcnVuKTsKKwkJZ290byBhZGRfY2hhbl9lcnI7CisJfQor CisJbXV0ZXhfdW5sb2NrKCZpbmZvLT5sb2NrKTsKKworCXJldHVybiByZXQ7CiAKK2FkZF9jaGFu X2VycjoKKwlwYXJhbV9zZXRfY29weXN0cmluZyhjaGFuX3Jlc2V0X3ZhbCwga3ApOwogCW11dGV4 X3VubG9jaygmaW5mby0+bG9jayk7CiAKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGRt YXRlc3RfY2hhbl9nZXQoY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkK K3sKKwlzdHJ1Y3QgZG1hdGVzdF9pbmZvICppbmZvID0gJnRlc3RfaW5mbzsKKworCW11dGV4X2xv Y2soJmluZm8tPmxvY2spOworCWlmICghaXNfdGhyZWFkZWRfdGVzdF9ydW4oaW5mbykgJiYgIWlz X3RocmVhZGVkX3Rlc3RfcGVuZGluZyhpbmZvKSkgeworCQlzdG9wX3RocmVhZGVkX3Rlc3QoaW5m byk7CisJCXN0cmxjcHkodGVzdF9jaGFubmVsLCAiIiwgc2l6ZW9mKHRlc3RfY2hhbm5lbCkpOwor CX0KKwltdXRleF91bmxvY2soJmluZm8tPmxvY2spOworCisJcmV0dXJuIHBhcmFtX2dldF9zdHJp bmcodmFsLCBrcCk7Cit9CisKK3N0YXRpYyBpbnQgZG1hdGVzdF90ZXN0X2xpc3RfZ2V0KGNoYXIg KnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCit7CisJc3RydWN0IGRtYXRlc3Rf aW5mbyAqaW5mbyA9ICZ0ZXN0X2luZm87CisJc3RydWN0IGRtYXRlc3RfY2hhbiAqZHRjOworCXVu c2lnbmVkIGludCB0aHJlYWRfY291bnQgPSAwOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShkdGMs ICZpbmZvLT5jaGFubmVscywgbm9kZSkgeworCQlzdHJ1Y3QgZG1hdGVzdF90aHJlYWQgKnRocmVh ZDsKKworCQl0aHJlYWRfY291bnQgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRocmVhZCwg JmR0Yy0+dGhyZWFkcywgbm9kZSkgeworCQkJdGhyZWFkX2NvdW50Kys7CisJCX0KKwkJcHJfaW5m bygiJXUgdGhyZWFkcyB1c2luZyAlc1xuIiwKKwkJCXRocmVhZF9jb3VudCwgZG1hX2NoYW5fbmFt ZShkdGMtPmNoYW4pKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBfX2luaXQg ZG1hdGVzdF9pbml0KHZvaWQpCiB7CiAJc3RydWN0IGRtYXRlc3RfaW5mbyAqaW5mbyA9ICZ0ZXN0 X2luZm87CkBAIC0xMDc2LDcgKzEyMzMsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBkbWF0ZXN0X2lu aXQodm9pZCkKIAogCWlmIChkbWF0ZXN0X3J1bikgewogCQltdXRleF9sb2NrKCZpbmZvLT5sb2Nr KTsKLQkJcnVuX3RocmVhZGVkX3Rlc3QoaW5mbyk7CisJCWFkZF90aHJlYWRlZF90ZXN0KGluZm8p OworCQlydW5fcGVuZGluZ190ZXN0cyhpbmZvKTsKIAkJbXV0ZXhfdW5sb2NrKCZpbmZvLT5sb2Nr KTsKIAl9CiAK