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: dmaengine: pl330: flush before wait, and add dev burst support. From: Frank Mori Hess Message-Id: <1931705.88BuuYVzBB@bear> Date: Tue, 30 Jan 2018 17:55:18 -0500 To: dmaengine@vger.kernel.org List-ID: RG8gRE1BRkxVU0hQIF9iZWZvcmVfIHRoZSBmaXJzdCBETUFXRlAgdG8gaW5zdXJlIGNvbnRyb2xs ZXIKYW5kIHBlcmlwaGVyYWwgYXJlIGluIGFncmVlbWVudCBhYm91dCBkbWEgcmVxdWVzdCBzdGF0 ZSBiZWZvcmUgZmlyc3QKdHJhbnNmZXIuICBBZGQgc3VwcG9ydCBmb3IgYnVyc3QgdHJhbnNmZXJz IHRvL2Zyb20gcGVyaXBoZXJhbHMuIEluIHRoZSBuZXcKc2NoZW1lLCB0aGUgY29udHJvbGxlciBk b2VzIGFzIG1hbnkgYnVyc3QgdHJhbnNmZXJzIGFzIGl0IGNhbiB0aGVuIHRyYW5zZmVycwp0aGUg cmVtYWluaW5nIGRyZWdzIHdpdGggZWl0aGVyIHNpbmdsZSB0cmFuc2ZlcnMgZm9yIHBlcmlwaGVy YWxzLCBvciB3aXRoIGEKcmVkdWNlZCBzaXplIGJ1cnN0IGZvciBtZW1vcnktdG8tbWVtb3J5IHRy YW5zZmVycy4KCkkgdGVzdGVkIGRtYSB0cmFuc2ZlcnMgdG8gcGVyaXBoZXJhbHMgd2l0aCBkZXNp Z253YXJlIHNlcmlhbCBwb3J0Cihkcml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX2R3LmMpIGFu ZCBhIEdQSUIgaW50ZXJmYWNlCihodHRwczovL2dpdGh1Yi5jb20vZm1oZXNzL2ZtaF9ncGliX2Nv cmUpLCB3aXRoIGEgNC4xIGtlcm5lbC4KVGhlIHBvcnQgb2YgbXkgY2hhbmdlcyB0byBIRUFEIGhh cyBvbmx5IGJlZW4gdGVzdGVkIHRvIGNvbXBpbGUuCkknbSB3aWxsaW5nIHRvIHRyeSB0byB0ZXN0 IG9uIG15IGhhcmR3YXJlIHdpdGggYSBIRUFEIGtlcm5lbAphbmQgdHJ5IHVzaW5nIHRoZSBkbWF0 ZXN0IG1vZHVsZSB0byB0ZXN0IG1lbW9yeS10by1tZW1vcnkKdHJhbnNmZXJzIGlmIHRoaXMgcGF0 Y2ggbWlnaHQgYmUgYWNjZXB0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBGcmFuayBNb3JpIEhlc3MgPGZt aDZqakBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9kbWEvcGwzMzAuYyB8IDEzMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDg3IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKIAogCXJldHVybiBvZmY7CkBA IC0xMTIxLDI0ICsxMTIyLDI2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9sZHN0X2RldnRvbWVtKHN0 cnVjdCBwbDMzMF9kbWFjIAoqcGwzMzAsIHVuc2lnbmVkIGRyeV9ydW4sCiAKIHN0YXRpYyBpbmxp bmUgaW50IF9sZHN0X21lbXRvZGV2KHN0cnVjdCBwbDMzMF9kbWFjICpwbDMzMCwKIAkJCQkgdW5z aWduZWQgZHJ5X3J1biwgdTggYnVmW10sCi0JCQkJIGNvbnN0IHN0cnVjdCBfeGZlcl9zcGVjICpw eHMsIGludCBjeWMpCisJCQkJIGNvbnN0IHN0cnVjdCBfeGZlcl9zcGVjICpweHMsIGludCBjeWMs IAorCQkJCSBlbnVtIHBsMzMwX2NvbmQgY29uZCkKIHsKIAlpbnQgb2ZmID0gMDsKLQllbnVtIHBs MzMwX2NvbmQgY29uZDsKIAogCWlmIChwbDMzMC0+cXVpcmtzICYgUEwzMzBfUVVJUktfQlJPS0VO X05PX0ZMVVNIUCkKIAkJY29uZCA9IEJVUlNUOwotCWVsc2UKLQkJY29uZCA9IFNJTkdMRTsKIAor CS8qIGRvIEZMVVNIUCBhdCBiZWdpbm5pbmcgdG8gY2xlYXIgYW55IHN0YWxlIGRtYSByZXF1ZXN0 cyBiZWZvcmUgZmlyc3QgV0ZQLiAKKi8KKwlpZiAoIShwbDMzMC0+cXVpcmtzICYgUEwzMzBfUVVJ UktfQlJPS0VOX05PX0ZMVVNIUCkpCisJCW9mZiArPSBfZW1pdF9GTFVTSFAoZHJ5X3J1biwgJmJ1 ZltvZmZdLCBweHMtPmRlc2MtPnBlcmkpOwogCXdoaWxlIChjeWMtLSkgewogCQlvZmYgKz0gX2Vt aXRfV0ZQKGRyeV9ydW4sICZidWZbb2ZmXSwgY29uZCwgcHhzLT5kZXNjLT5wZXJpKTsKIAkJb2Zm ICs9IF9lbWl0X0xEKGRyeV9ydW4sICZidWZbb2ZmXSwgQUxXQVlTKTsKLQkJb2ZmICs9IF9lbWl0 X1NUUChkcnlfcnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ZGVzYy0+cGVyaSk7Ci0KLQkJaWYg KCEocGwzMzAtPnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19GTFVTSFApKQotCQkJb2Zm ICs9IF9lbWl0X0ZMVVNIUChkcnlfcnVuLCAmYnVmW29mZl0sCi0JCQkJCSAgICBweHMtPmRlc2Mt PnBlcmkpOworCQlpZihjb25kID09IEFMV0FZUykgeworCQkJb2ZmICs9IF9lbWl0X1NUUChkcnlf cnVuLCAmYnVmW29mZl0sIFNJTkdMRSwgcHhzLT5kZXNjLT5wZXJpKTsKKwkJCW9mZiArPSBfZW1p dF9TVFAoZHJ5X3J1biwgJmJ1ZltvZmZdLCBCVVJTVCwgcHhzLT5kZXNjLT5wZXJpKTsKKwkJfWVs c2UgeworCQkJb2ZmICs9IF9lbWl0X1NUUChkcnlfcnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ ZGVzYy0+cGVyaSk7CisJCX0KIAl9CiAKIAlyZXR1cm4gb2ZmOwpAQCAtMTE0OCwxMyArMTE1MSwx NCBAQCBzdGF0aWMgaW50IF9idXJzdHMoc3RydWN0IHBsMzMwX2RtYWMgKnBsMzMwLCB1bnNpZ25l ZCAKZHJ5X3J1biwgdTggYnVmW10sCiAJCWNvbnN0IHN0cnVjdCBfeGZlcl9zcGVjICpweHMsIGlu dCBjeWMpCiB7CiAJaW50IG9mZiA9IDA7Ci0KKwllbnVtIHBsMzMwX2NvbmQgY29uZCA9IEJSU1Rf TEVOKHB4cy0+Y2NyKSA+IDEgPyBCVVJTVCA6IFNJTkdMRTsKKwkKIAlzd2l0Y2ggKHB4cy0+ZGVz Yy0+cnF0eXBlKSB7CiAJY2FzZSBETUFfTUVNX1RPX0RFVjoKLQkJb2ZmICs9IF9sZHN0X21lbXRv ZGV2KHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgY3ljKTsKKwkJb2ZmICs9IF9sZHN0 X21lbXRvZGV2KHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgY3ljLCBjb25kKTsKIAkJ YnJlYWs7CiAJY2FzZSBETUFfREVWX1RPX01FTToKLQkJb2ZmICs9IF9sZHN0X2RldnRvbWVtKHBs MzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgY3ljKTsKKwkJb2ZmICs9IF9sZHN0X2RldnRv bWVtKHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgY3ljLCBjb25kKTsKIAkJYnJlYWs7 CiAJY2FzZSBETUFfTUVNX1RPX01FTToKIAkJb2ZmICs9IF9sZHN0X21lbXRvbWVtKGRyeV9ydW4s ICZidWZbb2ZmXSwgcHhzLCBjeWMpOwpAQCAtMTE2Nyw2ICsxMTcxLDM5IEBAIHN0YXRpYyBpbnQg X2J1cnN0cyhzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAsIHVuc2lnbmVkIApkcnlfcnVuLCB1OCBi dWZbXSwKIAlyZXR1cm4gb2ZmOwogfQogCisvKiB0cmFuc2ZlciBkcmVncyB3aXRoIHNpbmdsZSB0 cmFuc2ZlcnMgdG8gcGVyaXBoZXJhbCwgb3IgYSByZWR1Y2VkIHNpemUgCmJ1cnN0CisgKiBmb3Ig bWVtLXRvLW1lbS4gKi8KK3N0YXRpYyBpbnQgX2RyZWdzKHN0cnVjdCBwbDMzMF9kbWFjICpwbDMz MCwgdW5zaWduZWQgZHJ5X3J1biwgdTggYnVmW10sCisJCWNvbnN0IHN0cnVjdCBfeGZlcl9zcGVj ICpweHMsIGludCB0cmFuc2Zlcl9sZW5ndGgpCit7CisJaW50IG9mZiA9IDA7CisJaW50IGRyZWdz X2NjcjsKKwkKKwlpZih0cmFuc2Zlcl9sZW5ndGggPT0gMCkgcmV0dXJuIG9mZjsKKwkKKwlzd2l0 Y2ggKHB4cy0+ZGVzYy0+cnF0eXBlKSB7CisJY2FzZSBETUFfTUVNX1RPX0RFVjoKKwkJb2ZmICs9 IF9sZHN0X21lbXRvZGV2KHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgdHJhbnNmZXJf bGVuZ3RoLCAKU0lOR0xFKTsKKwkJYnJlYWs7CisJY2FzZSBETUFfREVWX1RPX01FTToKKwkJb2Zm ICs9IF9sZHN0X2RldnRvbWVtKHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cywgdHJhbnNm ZXJfbGVuZ3RoLCAKU0lOR0xFKTsKKwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RPX01FTToKKwkJ ZHJlZ3NfY2NyID0gcHhzLT5jY3I7CisJCWRyZWdzX2NjciAmPSB+KCgweGYgPDwgQ0NfU1JDQlJT VExFTl9TSEZUKSB8ICgweGYgPDwgCkNDX0RTVEJSU1RMRU5fU0hGVCkpIDsKKwkJZHJlZ3NfY2Ny IHw9ICgoKHRyYW5zZmVyX2xlbmd0aCAtIDEpICYgMHhmKSA8PCBDQ19TUkNCUlNUTEVOX1NIRlQp OworCQlkcmVnc19jY3IgfD0gKCgodHJhbnNmZXJfbGVuZ3RoIC0gMSkgJiAweGYpIDw8IENDX0RT VEJSU1RMRU5fU0hGVCk7CisJCW9mZiArPSBfZW1pdF9NT1YoZHJ5X3J1biwgJmJ1ZltvZmZdLCBD Q1IsIGRyZWdzX2Njcik7CisJCW9mZiArPSBfbGRzdF9tZW10b21lbShkcnlfcnVuLCAmYnVmW29m Zl0sIHB4cywgMSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCW9mZiArPSAweDQwMDAwMDAwOyAv KiBTY2FyZSBvZmYgdGhlIENsaWVudCAqLworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gb2ZmOwor fQorCiAvKiBSZXR1cm5zIGJ5dGVzIGNvbnN1bWVkIGFuZCB1cGRhdGVzIGJ1cnN0cyAqLwogc3Rh dGljIGlubGluZSBpbnQgX2xvb3Aoc3RydWN0IHBsMzMwX2RtYWMgKnBsMzMwLCB1bnNpZ25lZCBk cnlfcnVuLCB1OCBidWZbXSwKIAkJdW5zaWduZWQgbG9uZyAqYnVyc3RzLCBjb25zdCBzdHJ1Y3Qg X3hmZXJfc3BlYyAqcHhzKQpAQCAtMTI1Niw2ICsxMjkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQg X3NldHVwX2xvb3BzKHN0cnVjdCBwbDMzMF9kbWFjICpwbDMzMCwKIAlzdHJ1Y3QgcGwzMzBfeGZl ciAqeCA9ICZweHMtPmRlc2MtPnB4OwogCXUzMiBjY3IgPSBweHMtPmNjcjsKIAl1bnNpZ25lZCBs b25nIGMsIGJ1cnN0cyA9IEJZVEVfVE9fQlVSU1QoeC0+Ynl0ZXMsIGNjcik7CisJaW50IG51bV9k cmVncyA9ICh4LT5ieXRlcyAtIEJVUlNUX1RPX0JZVEUoYnVyc3RzLCBjY3IpKSAvIEJSU1RfU0la RShjY3IpOwogCWludCBvZmYgPSAwOwogCiAJd2hpbGUgKGJ1cnN0cykgewpAQCAtMTI2Myw3ICsx MzAxLDggQEAgc3RhdGljIGlubGluZSBpbnQgX3NldHVwX2xvb3BzKHN0cnVjdCBwbDMzMF9kbWFj ICpwbDMzMCwKIAkJb2ZmICs9IF9sb29wKHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sICZjLCBw eHMpOwogCQlidXJzdHMgLT0gYzsKIAl9Ci0KKwlvZmYgKz0gX2RyZWdzKHBsMzMwLCBkcnlfcnVu LCAmYnVmW29mZl0sIHB4cywgbnVtX2RyZWdzKTsKKwkKIAlyZXR1cm4gb2ZmOwogfQogCkBAIC0x Mjk0LDcgKzEzMzMsNiBAQCBzdGF0aWMgaW50IF9zZXR1cF9yZXEoc3RydWN0IHBsMzMwX2RtYWMg KnBsMzMwLCB1bnNpZ25lZCAKZHJ5X3J1biwKIAkJICAgICAgc3RydWN0IF94ZmVyX3NwZWMgKnB4 cykKIHsKIAlzdHJ1Y3QgX3BsMzMwX3JlcSAqcmVxID0gJnRocmQtPnJlcVtpbmRleF07Ci0Jc3Ry dWN0IHBsMzMwX3hmZXIgKng7CiAJdTggKmJ1ZiA9IHJlcS0+bWNfY3B1OwogCWludCBvZmYgPSAw OwogCkBAIC0xMzAzLDExICsxMzQxLDYgQEAgc3RhdGljIGludCBfc2V0dXBfcmVxKHN0cnVjdCBw bDMzMF9kbWFjICpwbDMzMCwgCnVuc2lnbmVkIGRyeV9ydW4sCiAJLyogRE1BTU9WIENDUiwgY2Ny ICovCiAJb2ZmICs9IF9lbWl0X01PVihkcnlfcnVuLCAmYnVmW29mZl0sIENDUiwgcHhzLT5jY3Ip OwogCi0JeCA9ICZweHMtPmRlc2MtPnB4OwotCS8qIEVycm9yIGlmIHhmZXIgbGVuZ3RoIGlzIG5v dCBhbGlnbmVkIGF0IGJ1cnN0IHNpemUgKi8KLQlpZiAoeC0+Ynl0ZXMgJSAoQlJTVF9TSVpFKHB4 cy0+Y2NyKSAqIEJSU1RfTEVOKHB4cy0+Y2NyKSkpCi0JCXJldHVybiAtRUlOVkFMOwotCiAJb2Zm ICs9IF9zZXR1cF94ZmVyKHBsMzMwLCBkcnlfcnVuLCAmYnVmW29mZl0sIHB4cyk7CiAKIAkvKiBE TUFTRVYgcGVyaXBoZXJhbC9ldmVudCAqLwpAQCAtMjExNSwxNSArMjE0OCwzMSBAQCBzdGF0aWMg aW50IHBsMzMwX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCiAJCQlwY2gtPmZpZm9fYWRk ciA9IHNsYXZlX2NvbmZpZy0+ZHN0X2FkZHI7CiAJCWlmIChzbGF2ZV9jb25maWctPmRzdF9hZGRy X3dpZHRoKQogCQkJcGNoLT5idXJzdF9zeiA9IF9fZmZzKHNsYXZlX2NvbmZpZy0+ZHN0X2FkZHJf d2lkdGgpOwotCQlpZiAoc2xhdmVfY29uZmlnLT5kc3RfbWF4YnVyc3QpCi0JCQlwY2gtPmJ1cnN0 X2xlbiA9IHNsYXZlX2NvbmZpZy0+ZHN0X21heGJ1cnN0OworCQlpZiAocGNoLT5kbWFjLT5xdWly a3MgJiBQTDMzMF9RVUlSS19CUk9LRU5fTk9fRkxVU0hQKQorCQkJcGNoLT5idXJzdF9sZW4gPSAx OworCQllbHNlIGlmIChzbGF2ZV9jb25maWctPmRzdF9tYXhidXJzdCkKKwkJeworCQkJaWYoc2xh dmVfY29uZmlnLT5kc3RfbWF4YnVyc3QgPiBQTDMzMF9NQVhfQlVSU1QpCisJCQkJcGNoLT5idXJz dF9sZW4gPSBQTDMzMF9NQVhfQlVSU1Q7CisJCQllbHNlCisJCQkJcGNoLT5idXJzdF9sZW4gPSBz bGF2ZV9jb25maWctPmRzdF9tYXhidXJzdDsKKwkJfWVsc2UKKwkJCXBjaC0+YnVyc3RfbGVuID0g MTsKIAl9IGVsc2UgaWYgKHNsYXZlX2NvbmZpZy0+ZGlyZWN0aW9uID09IERNQV9ERVZfVE9fTUVN KSB7CiAJCWlmIChzbGF2ZV9jb25maWctPnNyY19hZGRyKQogCQkJcGNoLT5maWZvX2FkZHIgPSBz bGF2ZV9jb25maWctPnNyY19hZGRyOwogCQlpZiAoc2xhdmVfY29uZmlnLT5zcmNfYWRkcl93aWR0 aCkKIAkJCXBjaC0+YnVyc3Rfc3ogPSBfX2ZmcyhzbGF2ZV9jb25maWctPnNyY19hZGRyX3dpZHRo KTsKLQkJaWYgKHNsYXZlX2NvbmZpZy0+c3JjX21heGJ1cnN0KQotCQkJcGNoLT5idXJzdF9sZW4g PSBzbGF2ZV9jb25maWctPnNyY19tYXhidXJzdDsKKwkJaWYgKHBjaC0+ZG1hYy0+cXVpcmtzICYg UEwzMzBfUVVJUktfQlJPS0VOX05PX0ZMVVNIUCkKKwkJCXBjaC0+YnVyc3RfbGVuID0gMTsKKwkJ ZWxzZSBpZiAoc2xhdmVfY29uZmlnLT5zcmNfbWF4YnVyc3QpCisJCXsKKwkJCWlmKHNsYXZlX2Nv bmZpZy0+c3JjX21heGJ1cnN0ID4gUEwzMzBfTUFYX0JVUlNUKQorCQkJCXBjaC0+YnVyc3RfbGVu ID0gUEwzMzBfTUFYX0JVUlNUOworCQkJZWxzZQorCQkJCXBjaC0+YnVyc3RfbGVuID0gc2xhdmVf Y29uZmlnLT5zcmNfbWF4YnVyc3Q7CisJCX1lbHNlCisJCQlwY2gtPmJ1cnN0X2xlbiA9IDE7CiAJ fQogCiAJcmV0dXJuIDA7CkBAIC0yNTE3LDE0ICsyNTY2LDggQEAgc3RhdGljIGlubGluZSBpbnQg Z2V0X2J1cnN0X2xlbihzdHJ1Y3QgZG1hX3BsMzMwX2Rlc2MgCipkZXNjLCBzaXplX3QgbGVuKQog CWJ1cnN0X2xlbiA+Pj0gZGVzYy0+cnFjZmcuYnJzdF9zaXplOwogCiAJLyogc3JjL2RzdF9idXJz dF9sZW4gY2FuJ3QgYmUgbW9yZSB0aGFuIDE2ICovCi0JaWYgKGJ1cnN0X2xlbiA+IDE2KQotCQli dXJzdF9sZW4gPSAxNjsKLQotCXdoaWxlIChidXJzdF9sZW4gPiAxKSB7Ci0JCWlmICghKGxlbiAl IChidXJzdF9sZW4gPDwgZGVzYy0+cnFjZmcuYnJzdF9zaXplKSkpCi0JCQlicmVhazsKLQkJYnVy c3RfbGVuLS07Ci0JfQorCWlmIChidXJzdF9sZW4gPiBQTDMzMF9NQVhfQlVSU1QpCisJCWJ1cnN0 X2xlbiA9IFBMMzMwX01BWF9CVVJTVDsKIAogCXJldHVybiBidXJzdF9sZW47CiB9CkBAIC0yNTk2 LDcgKzI2MzksNyBAQCBzdGF0aWMgc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yIAoqcGwz MzBfcHJlcF9kbWFfY3ljbGljKAogCiAJCWRlc2MtPnJxdHlwZSA9IGRpcmVjdGlvbjsKIAkJZGVz Yy0+cnFjZmcuYnJzdF9zaXplID0gcGNoLT5idXJzdF9zejsKLQkJZGVzYy0+cnFjZmcuYnJzdF9s ZW4gPSAxOworCQlkZXNjLT5ycWNmZy5icnN0X2xlbiA9IHBjaC0+YnVyc3RfbGVuOwogCQlkZXNj LT5ieXRlc19yZXF1ZXN0ZWQgPSBwZXJpb2RfbGVuOwogCQlmaWxsX3B4KCZkZXNjLT5weCwgZHN0 LCBzcmMsIHBlcmlvZF9sZW4pOwogCkBAIC0yNzQxLDcgKzI3ODQsNyBAQCBwbDMzMF9wcmVwX3Ns YXZlX3NnKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgc3RydWN0IApzY2F0dGVybGlzdCAqc2dsLAog CQl9CiAKIAkJZGVzYy0+cnFjZmcuYnJzdF9zaXplID0gcGNoLT5idXJzdF9zejsKLQkJZGVzYy0+ cnFjZmcuYnJzdF9sZW4gPSAxOworCQlkZXNjLT5ycWNmZy5icnN0X2xlbiA9IHBjaC0+YnVyc3Rf bGVuOwogCQlkZXNjLT5ycXR5cGUgPSBkaXJlY3Rpb247CiAJCWRlc2MtPmJ5dGVzX3JlcXVlc3Rl ZCA9IHNnX2RtYV9sZW4oc2cpOwogCX0KCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9wbDMzMC5j IGIvZHJpdmVycy9kbWEvcGwzMzAuYwppbmRleCBkNzMyN2ZkNWY0NDUuLjVhM2U4MGVjNGIwYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvcGwzMzAuYworKysgYi9kcml2ZXJzL2RtYS9wbDMzMC5j CkBAIC0xMDk0LDI2ICsxMDk0LDI3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9sZHN0X21lbXRvbWVt KHVuc2lnbmVkIGRyeV9ydW4sIHU4IApidWZbXSwKIAlyZXR1cm4gb2ZmOwogfQogCi1zdGF0aWMg aW5saW5lIGludCBfbGRzdF9kZXZ0b21lbShzdHJ1Y3QgcGwzMzBfZG1hYyAqcGwzMzAsIHVuc2ln bmVkIGRyeV9ydW4sCi0JCQkJIHU4IGJ1ZltdLCBjb25zdCBzdHJ1Y3QgX3hmZXJfc3BlYyAqcHhz LAotCQkJCSBpbnQgY3ljKQorc3RhdGljIGlubGluZSBpbnQgX2xkc3RfZGV2dG9tZW0oc3RydWN0 IHBsMzMwX2RtYWMgKnBsMzMwLCB1bnNpZ25lZCBkcnlfcnVuLCAKKwkJCQl1OCBidWZbXSwgY29u c3Qgc3RydWN0IF94ZmVyX3NwZWMgKnB4cywgCisJCQkJaW50IGN5YywgZW51bSBwbDMzMF9jb25k IGNvbmQpCiB7CiAJaW50IG9mZiA9IDA7Ci0JZW51bSBwbDMzMF9jb25kIGNvbmQ7CiAKIAlpZiAo cGwzMzAtPnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19GTFVTSFApCiAJCWNvbmQgPSBC VVJTVDsKLQllbHNlCi0JCWNvbmQgPSBTSU5HTEU7CiAKKwkvKiBkbyBGTFVTSFAgYXQgYmVnaW5u aW5nIHRvIGNsZWFyIGFueSBzdGFsZSBkbWEgcmVxdWVzdHMgYmVmb3JlIGZpcnN0IFdGUC4gCiov CisJaWYgKCEocGwzMzAtPnF1aXJrcyAmIFBMMzMwX1FVSVJLX0JST0tFTl9OT19GTFVTSFApKQor CQlvZmYgKz0gX2VtaXRfRkxVU0hQKGRyeV9ydW4sICZidWZbb2ZmXSwgcHhzLT5kZXNjLT5wZXJp KTsKIAl3aGlsZSAoY3ljLS0pIHsKIAkJb2ZmICs9IF9lbWl0X1dGUChkcnlfcnVuLCAmYnVmW29m Zl0sIGNvbmQsIHB4cy0+ZGVzYy0+cGVyaSk7Ci0JCW9mZiArPSBfZW1pdF9MRFAoZHJ5X3J1biwg JmJ1ZltvZmZdLCBjb25kLCBweHMtPmRlc2MtPnBlcmkpOworCQlpZihjb25kID09IEFMV0FZUykg eworCQkJb2ZmICs9IF9lbWl0X0xEUChkcnlfcnVuLCAmYnVmW29mZl0sIFNJTkdMRSwgcHhzLT5k ZXNjLT5wZXJpKTsKKwkJCW9mZiArPSBfZW1pdF9MRFAoZHJ5X3J1biwgJmJ1ZltvZmZdLCBCVVJT VCwgcHhzLT5kZXNjLT5wZXJpKTsKKwkJfWVsc2UgeworCQkJb2ZmICs9IF9lbWl0X0xEUChkcnlf cnVuLCAmYnVmW29mZl0sIGNvbmQsIHB4cy0+ZGVzYy0+cGVyaSk7CisJCX0KIAkJb2ZmICs9IF9l bWl0X1NUKGRyeV9ydW4sICZidWZbb2ZmXSwgQUxXQVlTKTsKLQotCQlpZiAoIShwbDMzMC0+cXVp cmtzICYgUEwzMzBfUVVJUktfQlJPS0VOX05PX0ZMVVNIUCkpCi0JCQlvZmYgKz0gX2VtaXRfRkxV U0hQKGRyeV9ydW4sICZidWZbb2ZmXSwKLQkJCQkJICAgIHB4cy0+ZGVzYy0+cGVyaSk7CiAJfQo=