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] usb: dwc2: gadget: Add scatter-gather mode From: Marek Szyprowski Message-Id: <20190121134447.13944-1-m.szyprowski@samsung.com> Date: Mon, 21 Jan 2019 14:44:47 +0100 To: linux-usb@vger.kernel.org Cc: Marek Szyprowski , Greg Kroah-Hartman , Minas Harutyunyan , Felipe Balbi , Bartlomiej Zolnierkiewicz , Andrzej Pietrasiewicz List-ID: RnJvbTogQW5kcnplaiBQaWV0cmFzaWV3aWN6IDxhbmRyemVqLnBAc2Ftc3VuZy5jb20+CgpUaGlz IHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdHJhbnNmZXJyaW5nIHJlcXVlc3RzLCB3aGljaCBhcmUK bm9uLWNvbnRpZ3VvdXMgaW4gcGh5c2ljYWwgbWVtb3J5LCBpLmUuIHRoZSBkYXRhIGJ1ZmZlciBp cyBkZXNjcmliZWQgYnkKYSBzY2F0dGVyLWxpc3QuIFRoaXMgYWxsb3dzIHRyYW5zZmVycmluZyBs YXJnZSByZXF1ZXN0cyB3aXRob3V0IHJlbHlpbmcKb24gZXJyb3ItcHJvbmUgY29udGlndW91cyBi dWZmZXIgYWxsb2NhdGlvbnMuIFRoaXMgd2F5IG9mIGFsbG9jYXRpbmcKcmVxdWVzdHMgaXMgYWxy ZWFkeSBpbXBsZW1lbnRlZCBpbiBmdW5jdGlvbmZzIGFuZCBUQ00gVVNCIGZ1bmN0aW9ucyBhbmQK YXV0b21hdGljYWxseSB1c2VkIGlmIFVEQyBkcml2ZXIgYWR2ZXJ0aXNlcyBzY2F0dGVyLWdhdGhl ciBzdXBwcG9ydC4KClNpZ25lZC1vZmYtYnk6IEFuZHJ6ZWogUGlldHJhc2lld2ljeiA8YW5kcnpl ai5wQHNhbXN1bmcuY29tPgpbbXN6eXByb3c6IGZpeGVkIG51bGwgcG9pbnRlciBpc3N1ZSwgcmV3 cm90ZSBjb21taXQgbWVzc2FnZV0KU2lnbmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5z enlwcm93c2tpQHNhbXN1bmcuY29tPgotLS0KQW5kcnplaiBubyBsb25nZXIgd29ya3MgYXQgU2Ft c3VuZywgc28gSSBkZWNpZGVkIHRvIGNvbnRpbnVlIHRoaXMgd29yay4KCkhlcmUgYXJlIHNvbWUg aW1wbGVtZW50YXRpb24gZGV0YWlscywgd2hpY2ggaGVscHMgdG8gdW5kZXJzdGFuZCB0aGUKcHJv cG9zZWQgY2hhbmdlcy4KCk5vbi1pc29jaHJvbm91cyB0cmFuc2ZlcnM6ClRoZSBjb2RlIGZvciBm aWxsaW5nIGEgc2luZ2xlIERETUEgZW50cnkgaXMgZXh0cmFjdGVkIGZyb20KZHdjMl9nYWRnZXRf Y29uZmlnX25vbmlzb2NfeGZlcl9kZG1hKCkgYXMKZHdjMl9nYWRnZXRfZmlsbF9ub25pc29jX3hm ZXJfZGRtYV9vbmUoKSBmdW5jdGlvbi4gVGhlIG9yaWdpbmFsIGZ1bmN0aW9uCm5vdyBlaXRoZXIg Y2FsbHMgdGhlIGV4dHJhY3RlZCBjb2RlIChpbiBjYXNlIG9mIHBoeXNpY2FsbHkgY29udGlndW91 cwpyZXF1ZXN0IGJ1ZmZlcikgb3IgaXRlcmF0ZXMgb3ZlciBzY2F0dGVybGlzdCBlbGVtZW50cywg Zm9yIGVhY2ggb2YgdGhlbQpjYWxsaW5nIHRoZSBtZW50aW9uZWQgY29kZS4KCklzb2Nocm9ub3Vz IHRyYW5zZmVyczoKSWYgdGhlIHVzYiByZXF1ZXN0IGNvbnRhaW5zIGEgc2NhdHRlcmxpc3QsIHRo ZSBhZGRyZXNzIGZyb20gdGhlIGZpcnN0CmVsZW1lbnQgaXMgdXNlZCBhcyBkbWEgYWRkcmVzcyBh dCBkd2MyX2dhZGdldF9maWxsX2lzb2NfZGVzYygpIGludm9jYXRpb25zLgpDdXJyZW50IGNvZGUg Zm9yIGlzb2MgdHJhbnNmZXJzIGRvZXMgbm90IGFsbG93IG1vcmUgdGhhbiA0MDk2IGJ5dGVzIHBl cgp0cmFuc2Zlciwgc28gaXQgaXMgYXNzdW1lZCB0aGVyZSBpcyBvbmx5IG9uZSBlbGVtZW50IGlu IHRoZSBzY2F0dGVybGlzdC4KSWYgdGhlcmUgYXJlIG1vcmUsIGEgd2FybmluZyBpcyBpc3N1ZWQu IFBsZWFzZSBzZWUgdGhlIGZyYWdtZW50IHVuZGVyCnRoZSBjb21tZW50OgoKLyogSW4gRERNQSBt b2RlIGZvciBJU09DJ3MgZG9uJ3QgcXVldWUgcmVxdWVzdCBpZiBsZW5ndGggZ3JlYXRlcgogKiB0 aGFuIGRlc2NyaXB0b3IgbGltaXRzLgogKi8KCmluIGR3YzJfaHNvdGdfZXBfcXVldWUoKSB0byBz ZWUgdGhlIGxpbWl0cyBmb3IgaXNvYyB0cmFuc2ZlcnMuCi0tLQpDaGFuZ2Vsb2c6CnYyLi52MzoK CS0gZml4ZWQgbnVsbCBwb2ludGVyIGlzc3VlIHdoZW4gcHJvY2Vzc2luZyBlcDAgemxwCgktIHJl bmFtZWQgX2R3YzJfZ2FkZ2V0X2NvbmZpZ19ub25pc29jX3hmZXJfZGRtYSgpIHRvCgkgIGR3YzJf Z2FkZ2V0X2ZpbGxfbm9uaXNvY194ZmVyX2RkbWFfb25lKCkKCS0gcmV3cm90ZSBjb21taXQgbWVz c2FnZSB0byBleHBsYWluIHRoZSByZWFzb24gZm9yCgkgIHRoZSBwcm9wb3NlZCBjaGFuZ2VzCgp2 MS4udjI6CgktIHVzaW5nX2Rlc2NfZG1hKCkgY2FsbGVkIHRvIGNoZWNrIGlmIERETUEgYXZhaWxh YmxlCi0tLQogZHJpdmVycy91c2IvZHdjMi9nYWRnZXQuYyB8IDExMyArKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvZ2FkZ2V0LmMg Yi9kcml2ZXJzL3VzYi9kd2MyL2dhZGdldC5jCmluZGV4IDM1N2JlYjQwYjdhMy4uYWY0MTkwMzRl NDM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9kd2MyL2dhZGdldC5jCisrKyBiL2RyaXZlcnMv dXNiL2R3YzIvZ2FkZ2V0LmMKQEAgLTgzNSwyMiArODM1LDEzIEBAIHN0YXRpYyB1MzIgZHdjMl9n YWRnZXRfZ2V0X2Rlc2NfcGFyYW1zKHN0cnVjdCBkd2MyX2hzb3RnX2VwICpoc19lcCwgdTMyICpt YXNrKQogCXJldHVybiBkZXNjX3NpemU7CiB9CiAKLS8qCi0gKiBkd2MyX2dhZGdldF9jb25maWdf bm9uaXNvY194ZmVyX2RkbWEgLSBwcmVwYXJlIG5vbiBJU09DIERNQSBkZXNjIGNoYWluLgotICog QGhzX2VwOiBUaGUgZW5kcG9pbnQKLSAqIEBkbWFfYnVmZjogRE1BIGFkZHJlc3MgdG8gdXNlCi0g KiBAbGVuOiBMZW5ndGggb2YgdGhlIHRyYW5zZmVyCi0gKgotICogVGhpcyBmdW5jdGlvbiB3aWxs IGl0ZXJhdGUgb3ZlciBkZXNjcmlwdG9yIGNoYWluIGFuZCBmaWxsIGl0cyBlbnRyaWVzCi0gKiB3 aXRoIGNvcnJlc3BvbmRpbmcgaW5mb3JtYXRpb24gYmFzZWQgb24gdHJhbnNmZXIgZGF0YS4KLSAq Lwotc3RhdGljIHZvaWQgZHdjMl9nYWRnZXRfY29uZmlnX25vbmlzb2NfeGZlcl9kZG1hKHN0cnVj dCBkd2MyX2hzb3RnX2VwICpoc19lcCwKK3N0YXRpYyB2b2lkIGR3YzJfZ2FkZ2V0X2ZpbGxfbm9u aXNvY194ZmVyX2RkbWFfb25lKHN0cnVjdCBkd2MyX2hzb3RnX2VwICpoc19lcCwKKwkJCQkJCSBz dHJ1Y3QgZHdjMl9kbWFfZGVzYyAqKmRlc2MsCiAJCQkJCQkgZG1hX2FkZHJfdCBkbWFfYnVmZiwK LQkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuKQorCQkJCQkJIHVuc2lnbmVkIGludCBsZW4sCisJCQkJ CQkgYm9vbCB0cnVlX2xhc3QpCiB7Ci0Jc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnID0gaHNfZXAt PnBhcmVudDsKIAlpbnQgZGlyX2luID0gaHNfZXAtPmRpcl9pbjsKLQlzdHJ1Y3QgZHdjMl9kbWFf ZGVzYyAqZGVzYyA9IGhzX2VwLT5kZXNjX2xpc3Q7CiAJdTMyIG1wcyA9IGhzX2VwLT5lcC5tYXhw YWNrZXQ7CiAJdTMyIG1heHNpemUgPSAwOwogCXUzMiBvZmZzZXQgPSAwOwpAQCAtODY1LDM5ICs4 NTYsNzcgQEAgc3RhdGljIHZvaWQgZHdjMl9nYWRnZXRfY29uZmlnX25vbmlzb2NfeGZlcl9kZG1h KHN0cnVjdCBkd2MyX2hzb3RnX2VwICpoc19lcCwKIAkJaHNfZXAtPmRlc2NfY291bnQgPSAxOwog CiAJZm9yIChpID0gMDsgaSA8IGhzX2VwLT5kZXNjX2NvdW50OyArK2kpIHsKLQkJZGVzYy0+c3Rh dHVzID0gMDsKLQkJZGVzYy0+c3RhdHVzIHw9IChERVZfRE1BX0JVRkZfU1RTX0hCVVNZCisJCSgq ZGVzYyktPnN0YXR1cyA9IDA7CisJCSgqZGVzYyktPnN0YXR1cyB8PSAoREVWX0RNQV9CVUZGX1NU U19IQlVTWQogCQkJCSA8PCBERVZfRE1BX0JVRkZfU1RTX1NISUZUKTsKIAogCQlpZiAobGVuID4g bWF4c2l6ZSkgewogCQkJaWYgKCFoc19lcC0+aW5kZXggJiYgIWRpcl9pbikKLQkJCQlkZXNjLT5z dGF0dXMgfD0gKERFVl9ETUFfTCB8IERFVl9ETUFfSU9DKTsKKwkJCQkoKmRlc2MpLT5zdGF0dXMg fD0gKERFVl9ETUFfTCB8IERFVl9ETUFfSU9DKTsKIAotCQkJZGVzYy0+c3RhdHVzIHw9IChtYXhz aXplIDw8Ci0JCQkJCQlERVZfRE1BX05CWVRFU19TSElGVCAmIG1hc2spOwotCQkJZGVzYy0+YnVm ID0gZG1hX2J1ZmYgKyBvZmZzZXQ7CisJCQkoKmRlc2MpLT5zdGF0dXMgfD0KKwkJCQltYXhzaXpl IDw8IERFVl9ETUFfTkJZVEVTX1NISUZUICYgbWFzazsKKwkJCSgqZGVzYyktPmJ1ZiA9IGRtYV9i dWZmICsgb2Zmc2V0OwogCiAJCQlsZW4gLT0gbWF4c2l6ZTsKIAkJCW9mZnNldCArPSBtYXhzaXpl OwogCQl9IGVsc2UgewotCQkJZGVzYy0+c3RhdHVzIHw9IChERVZfRE1BX0wgfCBERVZfRE1BX0lP Qyk7CisJCQlpZiAodHJ1ZV9sYXN0KQorCQkJCSgqZGVzYyktPnN0YXR1cyB8PSAoREVWX0RNQV9M IHwgREVWX0RNQV9JT0MpOwogCiAJCQlpZiAoZGlyX2luKQotCQkJCWRlc2MtPnN0YXR1cyB8PSAo bGVuICUgbXBzKSA/IERFVl9ETUFfU0hPUlQgOgotCQkJCQkoKGhzX2VwLT5zZW5kX3pscCkgPyBE RVZfRE1BX1NIT1JUIDogMCk7Ci0JCQlpZiAobGVuID4gbWF4c2l6ZSkKLQkJCQlkZXZfZXJyKGhz b3RnLT5kZXYsICJ3cm9uZyBsZW4gJWRcbiIsIGxlbik7CisJCQkJKCpkZXNjKS0+c3RhdHVzIHw9 IChsZW4gJSBtcHMpID8gREVWX0RNQV9TSE9SVCA6CisJCQkJCSgoaHNfZXAtPnNlbmRfemxwICYm IHRydWVfbGFzdCkgPworCQkJCQlERVZfRE1BX1NIT1JUIDogMCk7CiAKLQkJCWRlc2MtPnN0YXR1 cyB8PQorCQkJKCpkZXNjKS0+c3RhdHVzIHw9CiAJCQkJbGVuIDw8IERFVl9ETUFfTkJZVEVTX1NI SUZUICYgbWFzazsKLQkJCWRlc2MtPmJ1ZiA9IGRtYV9idWZmICsgb2Zmc2V0OworCQkJKCpkZXNj KS0+YnVmID0gZG1hX2J1ZmYgKyBvZmZzZXQ7CiAJCX0KIAotCQlkZXNjLT5zdGF0dXMgJj0gfkRF Vl9ETUFfQlVGRl9TVFNfTUFTSzsKLQkJZGVzYy0+c3RhdHVzIHw9IChERVZfRE1BX0JVRkZfU1RT X0hSRUFEWQorCQkoKmRlc2MpLT5zdGF0dXMgJj0gfkRFVl9ETUFfQlVGRl9TVFNfTUFTSzsKKwkJ KCpkZXNjKS0+c3RhdHVzIHw9IChERVZfRE1BX0JVRkZfU1RTX0hSRUFEWQogCQkJCSA8PCBERVZf RE1BX0JVRkZfU1RTX1NISUZUKTsKLQkJZGVzYysrOworCQkoKmRlc2MpKys7CisJfQorfQorCisv KgorICogZHdjMl9nYWRnZXRfY29uZmlnX25vbmlzb2NfeGZlcl9kZG1hIC0gcHJlcGFyZSBub24g SVNPQyBETUEgZGVzYyBjaGFpbi4KKyAqIEBoc19lcDogVGhlIGVuZHBvaW50CisgKiBAdXJlcTog UmVxdWVzdCB0byB0cmFuc2ZlcgorICogQG9mZnNldDogb2Zmc2V0IGluIGJ5dGVzCisgKiBAbGVu OiBMZW5ndGggb2YgdGhlIHRyYW5zZmVyCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGl0ZXJh dGUgb3ZlciBkZXNjcmlwdG9yIGNoYWluIGFuZCBmaWxsIGl0cyBlbnRyaWVzCisgKiB3aXRoIGNv cnJlc3BvbmRpbmcgaW5mb3JtYXRpb24gYmFzZWQgb24gdHJhbnNmZXIgZGF0YS4KKyAqLworc3Rh dGljIHZvaWQgZHdjMl9nYWRnZXRfY29uZmlnX25vbmlzb2NfeGZlcl9kZG1hKHN0cnVjdCBkd2My X2hzb3RnX2VwICpoc19lcCwKKwkJCQkJCSBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnVyZXEsCisJCQkJ CQkgdW5zaWduZWQgaW50IG9mZnNldCwKKwkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0 cnVjdCBkd2MyX2RtYV9kZXNjICpkZXNjID0gaHNfZXAtPmRlc2NfbGlzdDsKKwlzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnOworCWludCBpOworCXU4IGRlc2NfY291bnQgPSAwOworCisJLyogbm9uLURN QSBzZyBidWZmZXIgKi8KKwlpZiAoIXVyZXEtPm51bV9zZ3MpIHsKKwkJZHdjMl9nYWRnZXRfZmls bF9ub25pc29jX3hmZXJfZGRtYV9vbmUoaHNfZXAsICZkZXNjLAorCQkJdXJlcS0+ZG1hICsgb2Zm c2V0LCBsZW4sIHRydWUpOworCQlyZXR1cm47CiAJfQorCisJLyogRE1BIHNnIGJ1ZmZlciAqLwor CWZvcl9lYWNoX3NnKHVyZXEtPnNnLCBzZywgdXJlcS0+bnVtX3NncywgaSkgeworCQlkd2MyX2dh ZGdldF9maWxsX25vbmlzb2NfeGZlcl9kZG1hX29uZShoc19lcCwgJmRlc2MsCisJCQlzZ19kbWFf YWRkcmVzcyhzZykgKyBzZy0+b2Zmc2V0LCBzZ19kbWFfbGVuKHNnKSwKKwkJCXNnX2lzX2xhc3Qo c2cpKTsKKwkJZGVzY19jb3VudCArPSBoc19lcC0+ZGVzY19jb3VudDsKKwl9CisKKwloc19lcC0+ ZGVzY19jb3VudCA9IGRlc2NfY291bnQ7CiB9CiAKIC8qCkBAIC0xMDExLDcgKzEwNDAsMTMgQEAg c3RhdGljIHZvaWQgZHdjMl9nYWRnZXRfc3RhcnRfaXNvY19kZG1hKHN0cnVjdCBkd2MyX2hzb3Rn X2VwICpoc19lcCkKIAogCWhzX2VwLT5uZXh0X2Rlc2MgPSAwOwogCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShoc19yZXEsIHRyZXEsICZoc19lcC0+cXVldWUsIHF1ZXVlKSB7Ci0JCXJldCA9IGR3 YzJfZ2FkZ2V0X2ZpbGxfaXNvY19kZXNjKGhzX2VwLCBoc19yZXEtPnJlcS5kbWEsCisJCWRtYV9h ZGRyX3QgZG1hX2FkZHIgPSBoc19yZXEtPnJlcS5kbWE7CisKKwkJaWYgKGhzX3JlcS0+cmVxLm51 bV9zZ3MpIHsKKwkJCVdBUk5fT04oaHNfcmVxLT5yZXEubnVtX3NncyA+IDEpOworCQkJZG1hX2Fk ZHIgPSBzZ19kbWFfYWRkcmVzcyhoc19yZXEtPnJlcS5zZyk7CisJCX0KKwkJcmV0ID0gZHdjMl9n YWRnZXRfZmlsbF9pc29jX2Rlc2MoaHNfZXAsIGRtYV9hZGRyLAogCQkJCQkJIGhzX3JlcS0+cmVx Lmxlbmd0aCk7CiAJCWlmIChyZXQpCiAJCQlicmVhazsKQEAgLTExNjcsNyArMTIwMiw3IEBAIHN0 YXRpYyB2b2lkIGR3YzJfaHNvdGdfc3RhcnRfcmVxKHN0cnVjdCBkd2MyX2hzb3RnICpoc290ZywK IAkJCW9mZnNldCA9IHVyZXEtPmFjdHVhbDsKIAogCQkvKiBGaWxsIERETUEgY2hhaW4gZW50cmll cyAqLwotCQlkd2MyX2dhZGdldF9jb25maWdfbm9uaXNvY194ZmVyX2RkbWEoaHNfZXAsIHVyZXEt PmRtYSArIG9mZnNldCwKKwkJZHdjMl9nYWRnZXRfY29uZmlnX25vbmlzb2NfeGZlcl9kZG1hKGhz X2VwLCB1cmVxLCBvZmZzZXQsCiAJCQkJCQkgICAgIGxlbmd0aCk7CiAKIAkJLyogd3JpdGUgZGVz Y3JpcHRvciBjaGFpbiBhZGRyZXNzIHRvIGNvbnRyb2wgcmVnaXN0ZXIgKi8KQEAgLTE0NjYsNyAr MTUwMSwxMyBAQCBzdGF0aWMgaW50IGR3YzJfaHNvdGdfZXBfcXVldWUoc3RydWN0IHVzYl9lcCAq ZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxLAogCSAqLwogCWlmICh1c2luZ19kZXNjX2RtYSho cykgJiYgaHNfZXAtPmlzb2Nocm9ub3VzKSB7CiAJCWlmIChoc19lcC0+dGFyZ2V0X2ZyYW1lICE9 IFRBUkdFVF9GUkFNRV9JTklUSUFMKSB7Ci0JCQlkd2MyX2dhZGdldF9maWxsX2lzb2NfZGVzYyho c19lcCwgaHNfcmVxLT5yZXEuZG1hLAorCQkJZG1hX2FkZHJfdCBkbWFfYWRkciA9IGhzX3JlcS0+ cmVxLmRtYTsKKworCQkJaWYgKGhzX3JlcS0+cmVxLm51bV9zZ3MpIHsKKwkJCQlXQVJOX09OKGhz X3JlcS0+cmVxLm51bV9zZ3MgPiAxKTsKKwkJCQlkbWFfYWRkciA9IHNnX2RtYV9hZGRyZXNzKGhz X3JlcS0+cmVxLnNnKTsKKwkJCX0KKwkJCWR3YzJfZ2FkZ2V0X2ZpbGxfaXNvY19kZXNjKGhzX2Vw LCBkbWFfYWRkciwKIAkJCQkJCSAgIGhzX3JlcS0+cmVxLmxlbmd0aCk7CiAJCX0KIAkJcmV0dXJu IDA7CkBAIC0yMDU0LDEzICsyMDk1LDEyIEBAIHN0YXRpYyB2b2lkIGR3YzJfaHNvdGdfcHJvZ3Jh bV96bHAoc3RydWN0IGR3YzJfaHNvdGcgKmhzb3RnLAogCQlkZXZfZGJnKGhzb3RnLT5kZXYsICJS ZWNlaXZpbmcgemVyby1sZW5ndGggcGFja2V0IG9uIGVwJWRcbiIsCiAJCQlpbmRleCk7CiAJaWYg KHVzaW5nX2Rlc2NfZG1hKGhzb3RnKSkgewotCQkvKiBOb3Qgc3BlY2lmaWMgYnVmZmVyIG5lZWRl ZCBmb3IgZXAwIFpMUCAqLwotCQlkbWFfYWRkcl90IGRtYSA9IGhzX2VwLT5kZXNjX2xpc3RfZG1h OwotCiAJCWlmICghaW5kZXgpCiAJCQlkd2MyX2dhZGdldF9zZXRfZXAwX2Rlc2NfY2hhaW4oaHNv dGcsIGhzX2VwKTsKIAotCQlkd2MyX2dhZGdldF9jb25maWdfbm9uaXNvY194ZmVyX2RkbWEoaHNf ZXAsIGRtYSwgMCk7CisJCS8qIE5vdCBzcGVjaWZpYyBidWZmZXIgbmVlZGVkIGZvciBlcDAgWkxQ ICovCisJCWR3YzJfZ2FkZ2V0X2ZpbGxfbm9uaXNvY194ZmVyX2RkbWFfb25lKGhzX2VwLCAmaHNf ZXAtPmRlc2NfbGlzdCwKKwkJCWhzX2VwLT5kZXNjX2xpc3RfZG1hLCAwLCB0cnVlKTsKIAl9IGVs c2UgewogCQlkd2MyX3dyaXRlbChoc290ZywgRFhFUFRTSVpfTUMoMSkgfCBEWEVQVFNJWl9QS1RD TlQoMSkgfAogCQkJICAgIERYRVBUU0laX1hGRVJTSVpFKDApLApAQCAtNDQ3MSw2ICs0NTExLDcg QEAgc3RhdGljIGludCBkd2MyX2hzb3RnX3VkY19zdGFydChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2Fk Z2V0LAogCWhzb3RnLT5lbmFibGVkID0gMDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoc290 Zy0+bG9jaywgZmxhZ3MpOwogCisJZ2FkZ2V0LT5zZ19zdXBwb3J0ZWQgPSB1c2luZ19kZXNjX2Rt YShoc290Zyk7CiAJZGV2X2luZm8oaHNvdGctPmRldiwgImJvdW5kIGRyaXZlciAlc1xuIiwgZHJp dmVyLT5kcml2ZXIubmFtZSk7CiAKIAlyZXR1cm4gMDsK