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: ti: omap-dma: Configure LCH_TYPE for OMAP1 From: Russell King - ARM Linux Message-Id: <20181123161659.GA3019@n2100.armlinux.org.uk> Date: Fri, 23 Nov 2018 16:16:59 +0000 To: Peter Ujfalusi Cc: Aaro Koskinen , vkoul@kernel.org, dan.j.williams@intel.com, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, tony@atomide.com, linux-omap@vger.kernel.org List-ID: SGkgUGV0ZXIsCgpIZXJlJ3MgdGhlIHBhdGNoLCB3aGljaCBzaG91bGQgbm93IHN1cHBvcnQgSU4g YXMgd2VsbCBhcyBPVVQuCkNvbXBsZXRlbHkgdW50ZXN0ZWQsIGFzIG1lbnRpb25lZCBiZWZvcmUu CgogZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9vbWFwX3VkYy5jIHwgMjg2ICsrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRj LmggfCAgIDMgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMoKyksIDE1NCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMg Yi9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMKaW5kZXggM2ExNjQzMWRhMzIxLi5h ZDZmMzE1ZTQzMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvb21hcF91ZGMu YworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlIDxsaW51eC91c2IvY2g5Lmg+CiAjaW5jbHVkZSA8bGludXgvdXNiL2dhZGdl dC5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYi9vdGcuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWFlbmdp bmUuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgogI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgogI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgpAQCAtMjAzLDcgKzIwNCw3IEBAIHN0YXRpYyBp bnQgb21hcF9lcF9lbmFibGUoc3RydWN0IHVzYl9lcCAqX2VwLAogCS8qIHNldCBlbmRwb2ludCB0 byBpbml0aWFsIHN0YXRlICovCiAJZXAtPmRtYV9jaGFubmVsID0gMDsKIAllcC0+aGFzX2RtYSA9 IDA7Ci0JZXAtPmxjaCA9IC0xOworCWVwLT5kbWEgPSBOVUxMOwogCXVzZV9lcChlcCwgVURDX0VQ X1NFTCk7CiAJb21hcF93cml0ZXcodWRjLT5jbHJfaGFsdCwgVURDX0NUUkwpOwogCWVwLT5hY2t3 YWl0ID0gMDsKQEAgLTQ2OCw0MyArNDY5LDYgQEAgc3RhdGljIGludCByZWFkX2ZpZm8oc3RydWN0 IG9tYXBfZXAgKmVwLCBzdHJ1Y3Qgb21hcF9yZXEgKnJlcSkKIAogLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KIAotc3RhdGljIHUxNiBkbWFfc3JjX2xlbihzdHJ1Y3Qgb21hcF9lcCAqZXAsIGRtYV9hZGRy X3Qgc3RhcnQpCi17Ci0JZG1hX2FkZHJfdAllbmQ7Ci0KLQkvKiBJTi1ETUEgbmVlZHMgdGhpcyBv biBmYXVsdC9jYW5jZWwgcGF0aHMsIHNvIDE1eHggbWlzcmVwb3J0cwotCSAqIHRoZSBsYXN0IHRy YW5zZmVyJ3MgYnl0ZWNvdW50IGJ5IG1vcmUgdGhhbiBhIEZJRk8ncyB3b3J0aC4KLQkgKi8KLQlp ZiAoY3B1X2lzX29tYXAxNXh4KCkpCi0JCXJldHVybiAwOwotCi0JZW5kID0gb21hcF9nZXRfZG1h X3NyY19wb3MoZXAtPmxjaCk7Ci0JaWYgKGVuZCA9PSBlcC0+ZG1hX2NvdW50ZXIpCi0JCXJldHVy biAwOwotCi0JZW5kIHw9IHN0YXJ0ICYgKDB4ZmZmZiA8PCAxNik7Ci0JaWYgKGVuZCA8IHN0YXJ0 KQotCQllbmQgKz0gMHgxMDAwMDsKLQlyZXR1cm4gZW5kIC0gc3RhcnQ7Ci19Ci0KLXN0YXRpYyB1 MTYgZG1hX2Rlc3RfbGVuKHN0cnVjdCBvbWFwX2VwICplcCwgZG1hX2FkZHJfdCBzdGFydCkKLXsK LQlkbWFfYWRkcl90CWVuZDsKLQotCWVuZCA9IG9tYXBfZ2V0X2RtYV9kc3RfcG9zKGVwLT5sY2gp OwotCWlmIChlbmQgPT0gZXAtPmRtYV9jb3VudGVyKQotCQlyZXR1cm4gMDsKLQotCWVuZCB8PSBz dGFydCAmICgweGZmZmYgPDwgMTYpOwotCWlmIChjcHVfaXNfb21hcDE1eHgoKSkKLQkJZW5kKys7 Ci0JaWYgKGVuZCA8IHN0YXJ0KQotCQllbmQgKz0gMHgxMDAwMDsKLQlyZXR1cm4gZW5kIC0gc3Rh cnQ7Ci19Ci0KLQogLyogRWFjaCBVU0IgdHJhbnNmZXIgcmVxdWVzdCB1c2luZyBETUEgbWFwcyB0 byBvbmUgb3IgbW9yZSBETUEgdHJhbnNmZXJzLgogICogV2hlbiBETUEgY29tcGxldGlvbiBpc24n dCByZXF1ZXN0IGNvbXBsZXRpb24sIHRoZSBVREMgY29udGludWVzIHdpdGgKICAqIHRoZSBuZXh0 IERNQSB0cmFuc2ZlciBmb3IgdGhhdCBVU0IgdHJhbnNmZXIuCkBAIC01MTIsMzQgKzQ3Niw1MyBA QCBzdGF0aWMgdTE2IGRtYV9kZXN0X2xlbihzdHJ1Y3Qgb21hcF9lcCAqZXAsIGRtYV9hZGRyX3Qg c3RhcnQpCiAKIHN0YXRpYyB2b2lkIG5leHRfaW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3Ry dWN0IG9tYXBfcmVxICpyZXEpCiB7Ci0JdTE2CQl0eGRtYV9jdHJsLCB3OwotCXVuc2lnbmVkCWxl bmd0aCA9IHJlcS0+cmVxLmxlbmd0aCAtIHJlcS0+cmVxLmFjdHVhbDsKLQljb25zdCBpbnQJc3lu Y19tb2RlID0gY3B1X2lzX29tYXAxNXh4KCkKLQkJCQk/IE9NQVBfRE1BX1NZTkNfRlJBTUUKLQkJ CQk6IE9NQVBfRE1BX1NZTkNfRUxFTUVOVDsKLQlpbnQJCWRtYV90cmlnZ2VyID0gMDsKKwlzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4OworCXN0cnVjdCBkbWFfY2hhbiAqZG1hID0g ZXAtPmRtYTsKKwlkbWFfY29va2llX3QgY29va2llOworCXVuc2lnbmVkIGJ1cnN0LCBsZW5ndGg7 CisJdTE2IHR4ZG1hX2N0cmwsIHc7CisJc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgb21hcF91ZGNf aW5fY2ZnID0geworCQkuZGlyZWN0aW9uID0gRE1BX01FTV9UT19ERVYsCisJCS5kc3RfYWRkciA9 IFVEQ19EQVRBX0RNQSwKKwl9OworCisJbGVuZ3RoID0gcmVxLT5yZXEubGVuZ3RoIC0gcmVxLT5y ZXEuYWN0dWFsOwogCiAJLyogbWVhc3VyZSBsZW5ndGggaW4gZWl0aGVyIGJ5dGVzIG9yIHBhY2tl dHMgKi8KLQlpZiAoKGNwdV9pc19vbWFwMTZ4eCgpICYmIGxlbmd0aCA8PSBVRENfVFhOX1RTQykK LQkJCXx8IChjcHVfaXNfb21hcDE1eHgoKSAmJiBsZW5ndGggPCBlcC0+bWF4cGFja2V0KSkgewor CWlmICgoY3B1X2lzX29tYXAxNnh4KCkgJiYgbGVuZ3RoIDw9IFVEQ19UWE5fVFNDKSB8fAorCSAg ICAoY3B1X2lzX29tYXAxNXh4KCkgJiYgbGVuZ3RoIDwgZXAtPm1heHBhY2tldCkpIHsKKwkJb21h cF91ZGNfaW5fY2ZnLmRzdF9hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzFfQllURTsK IAkJdHhkbWFfY3RybCA9IFVEQ19UWE5fRU9UIHwgbGVuZ3RoOwotCQlvbWFwX3NldF9kbWFfdHJh bnNmZXJfcGFyYW1zKGVwLT5sY2gsIE9NQVBfRE1BX0RBVEFfVFlQRV9TOCwKLQkJCQlsZW5ndGgs IDEsIHN5bmNfbW9kZSwgZG1hX3RyaWdnZXIsIDApOworCQlidXJzdCA9IGxlbmd0aDsKIAl9IGVs c2UgewotCQlsZW5ndGggPSBtaW4obGVuZ3RoIC8gZXAtPm1heHBhY2tldCwKLQkJCQkodW5zaWdu ZWQpIFVEQ19UWE5fVFNDICsgMSk7CisJCW9tYXBfdWRjX2luX2NmZy5kc3RfYWRkcl93aWR0aCA9 IERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEU7CisJCWxlbmd0aCA9IG1pbl90KHVuc2lnbmVkLCBs ZW5ndGggLyBlcC0+bWF4cGFja2V0LAorCQkgICAgICAgICAgICAgICBVRENfVFhOX1RTQyArIDEp OwogCQl0eGRtYV9jdHJsID0gbGVuZ3RoOwotCQlvbWFwX3NldF9kbWFfdHJhbnNmZXJfcGFyYW1z KGVwLT5sY2gsIE9NQVBfRE1BX0RBVEFfVFlQRV9TMTYsCi0JCQkJZXAtPmVwLm1heHBhY2tldCA+ PiAxLCBsZW5ndGgsIHN5bmNfbW9kZSwKLQkJCQlkbWFfdHJpZ2dlciwgMCk7CiAJCWxlbmd0aCAq PSBlcC0+bWF4cGFja2V0OworCQlidXJzdCA9IGVwLT5lcC5tYXhwYWNrZXQgPj4gMTsKIAl9Ci0J b21hcF9zZXRfZG1hX3NyY19wYXJhbXMoZXAtPmxjaCwgT01BUF9ETUFfUE9SVF9FTUlGRiwKLQkJ T01BUF9ETUFfQU1PREVfUE9TVF9JTkMsIHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCwK LQkJMCwgMCk7CiAKLQlvbWFwX3N0YXJ0X2RtYShlcC0+bGNoKTsKLQllcC0+ZG1hX2NvdW50ZXIg PSBvbWFwX2dldF9kbWFfc3JjX3BvcyhlcC0+bGNoKTsKKwlpZiAoIWNwdV9pc19vbWFwMTV4eCgp KQorCQlidXJzdCA9IDE7CisKKwlvbWFwX3VkY19pbl9jZmcuZHN0X21heGJ1cnN0ID0gYnVyc3Q7 CisKKwlpZiAoV0FSTl9PTihkbWFlbmdpbmVfc2xhdmVfY29uZmlnKGRtYSwgJm9tYXBfdWRjX2lu X2NmZykpKQorCQlyZXR1cm47CisKKwl0eCA9IGRtYWVuZ2luZV9wcmVwX3NsYXZlX3NpbmdsZShk bWEsIHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCwKKwkJCQkJIGxlbmd0aCwgRE1BX01F TV9UT19ERVYsIDApOworCWlmIChXQVJOX09OKCF0eCkpCisJCXJldHVybjsKKworCWNvb2tpZSA9 IGRtYWVuZ2luZV9zdWJtaXQodHgpOworCWlmIChXQVJOX09OKGRtYV9zdWJtaXRfZXJyb3IoY29v a2llKSkpCisJCXJldHVybjsKKworCWVwLT5kbWFfY29va2llID0gY29va2llOworCWRtYV9hc3lu Y19pc3N1ZV9wZW5kaW5nKGRtYSk7CisKIAl3ID0gb21hcF9yZWFkdyhVRENfRE1BX0lSUV9FTik7 CiAJdyB8PSBVRENfVFhfRE9ORV9JRShlcC0+ZG1hX2NoYW5uZWwpOwogCW9tYXBfd3JpdGV3KHcs IFVEQ19ETUFfSVJRX0VOKTsKQEAgLTU0OSwxMSArNTMyLDE0IEBAIHN0YXRpYyB2b2lkIG5leHRf aW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBfcmVxICpyZXEpCiAKIHN0YXRp YyB2b2lkIGZpbmlzaF9pbl9kbWEoc3RydWN0IG9tYXBfZXAgKmVwLCBzdHJ1Y3Qgb21hcF9yZXEg KnJlcSwgaW50IHN0YXR1cykKIHsKKwlzdHJ1Y3QgZG1hX3R4X3N0YXRlIHN0YXRlOwogCXUxNiB3 OwogCi0JaWYgKHN0YXR1cyA9PSAwKSB7Ci0JCXJlcS0+cmVxLmFjdHVhbCArPSByZXEtPmRtYV9i eXRlczsKKwlkbWFlbmdpbmVfdHhfc3RhdHVzKGVwLT5kbWEsIGVwLT5kbWFfY29va2llLCAmc3Rh dGUpOwogCisJcmVxLT5yZXEuYWN0dWFsICs9IHJlcS0+ZG1hX2J5dGVzIC0gc3RhdGUucmVzaWR1 YWw7CisKKwlpZiAoc3RhdHVzID09IDApIHsKIAkJLyogcmV0dXJuIGlmIHRoaXMgcmVxdWVzdCBu ZWVkcyB0byBzZW5kIGRhdGEgb3IgemxwICovCiAJCWlmIChyZXEtPnJlcS5hY3R1YWwgPCByZXEt PnJlcS5sZW5ndGgpCiAJCQlyZXR1cm47CkBAIC01NjEsMzYgKzU0Nyw0NyBAQCBzdGF0aWMgdm9p ZCBmaW5pc2hfaW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBfcmVxICpyZXEs IGludCBzdGF0dXMpCiAJCQkJJiYgcmVxLT5kbWFfYnl0ZXMgIT0gMAogCQkJCSYmIChyZXEtPnJl cS5hY3R1YWwgJSBlcC0+bWF4cGFja2V0KSA9PSAwKQogCQkJcmV0dXJuOwotCX0gZWxzZQotCQly ZXEtPnJlcS5hY3R1YWwgKz0gZG1hX3NyY19sZW4oZXAsIHJlcS0+cmVxLmRtYQotCQkJCQkJCSsg cmVxLT5yZXEuYWN0dWFsKTsKKwl9CiAKIAkvKiB0eCBjb21wbGV0aW9uICovCi0Jb21hcF9zdG9w X2RtYShlcC0+bGNoKTsKKwlkbWFlbmdpbmVfdGVybWluYXRlX2FzeW5jKGVwLT5kbWEpOworCiAJ dyA9IG9tYXBfcmVhZHcoVURDX0RNQV9JUlFfRU4pOwogCXcgJj0gflVEQ19UWF9ET05FX0lFKGVw LT5kbWFfY2hhbm5lbCk7CiAJb21hcF93cml0ZXcodywgVURDX0RNQV9JUlFfRU4pOwogCWRvbmUo ZXAsIHJlcSwgc3RhdHVzKTsKIH0KIAorc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfc2xhdmVfY29u ZmlnIG9tYXBfdWRjX291dF9jZmcgPSB7CisJLmRpcmVjdGlvbiA9IERNQV9ERVZfVE9fTUVNLAor CS5zcmNfYWRkcl93aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEUsCisJLyoKKwkgKiBE TUFlbmdpbmUgdXNlcyBmcmFtZSBzeW5jIG1vZGUsIHNldHRpbmcgbWF4YnVyc3Q9MQorCSAqIGlz IGVxdWl2YWxlbnQgdG8gZWxlbWVudCBzeW5jIG1vZGUuCisJICovCisJLnNyY19tYXhidXJzdCA9 IDEsCisJLnNyY19hZGRyID0gVURDX0RBVEFfRE1BLAorfTsKKwogc3RhdGljIHZvaWQgbmV4dF9v dXRfZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBfcmVxICpyZXEpCiB7Ci0JdW5z aWduZWQgcGFja2V0cyA9IHJlcS0+cmVxLmxlbmd0aCAtIHJlcS0+cmVxLmFjdHVhbDsKLQlpbnQg ZG1hX3RyaWdnZXIgPSAwOworCXN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqdHg7CisJ c3RydWN0IGRtYV9jaGFuICpkbWEgPSBlcC0+ZG1hOworCWRtYV9jb29raWVfdCBjb29raWU7CisJ dW5zaWduZWQgcGFja2V0cywgbGVuZ3RoOwogCXUxNiB3OwogCi0JLyogc2V0IHVwIHRoaXMgRE1B IHRyYW5zZmVyLCBlbmFibGUgdGhlIGZpZm8sIHN0YXJ0ICovCi0JcGFja2V0cyAvPSBlcC0+ZXAu bWF4cGFja2V0OwotCXBhY2tldHMgPSBtaW4ocGFja2V0cywgKHVuc2lnbmVkKVVEQ19SWE5fVEMg KyAxKTsKLQlyZXEtPmRtYV9ieXRlcyA9IHBhY2tldHMgKiBlcC0+ZXAubWF4cGFja2V0OwotCW9t YXBfc2V0X2RtYV90cmFuc2Zlcl9wYXJhbXMoZXAtPmxjaCwgT01BUF9ETUFfREFUQV9UWVBFX1Mx NiwKLQkJCWVwLT5lcC5tYXhwYWNrZXQgPj4gMSwgcGFja2V0cywKLQkJCU9NQVBfRE1BX1NZTkNf RUxFTUVOVCwKLQkJCWRtYV90cmlnZ2VyLCAwKTsKLQlvbWFwX3NldF9kbWFfZGVzdF9wYXJhbXMo ZXAtPmxjaCwgT01BUF9ETUFfUE9SVF9FTUlGRiwKLQkJT01BUF9ETUFfQU1PREVfUE9TVF9JTkMs IHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCwKLQkJMCwgMCk7Ci0JZXAtPmRtYV9jb3Vu dGVyID0gb21hcF9nZXRfZG1hX2RzdF9wb3MoZXAtPmxjaCk7CisJbGVuZ3RoID0gcmVxLT5yZXEu bGVuZ3RoIC0gcmVxLT5yZXEuYWN0dWFsOworCXBhY2tldHMgPSBtaW5fdCh1bnNpZ25lZCwgbGVu Z3RoIC8gZXAtPmVwLm1heHBhY2tldCwgVURDX1JYTl9UQyArIDEpOworCWxlbmd0aCA9IHBhY2tl dHMgKiBlcC0+ZXAubWF4cGFja2V0OworCisJaWYgKFdBUk5fT04oZG1hZW5naW5lX3NsYXZlX2Nv bmZpZyhkbWEsICZvbWFwX3VkY19vdXRfY2ZnKSkpCisJCXJldHVybjsKKworCXR4ID0gZG1hZW5n aW5lX3ByZXBfc2xhdmVfc2luZ2xlKGRtYSwgcmVxLT5yZXEuZG1hICsgcmVxLT5yZXEuYWN0dWFs LAorCQkJCQkgbGVuZ3RoLCBETUFfREVWX1RPX01FTSwgMCk7CisJaWYgKFdBUk5fT04oIXR4KSkK KwkJcmV0dXJuOwogCiAJb21hcF93cml0ZXcoVURDX1JYTl9TVE9QIHwgKHBhY2tldHMgLSAxKSwg VURDX1JYRE1BKGVwLT5kbWFfY2hhbm5lbCkpOwogCXcgPSBvbWFwX3JlYWR3KFVEQ19ETUFfSVJR X0VOKTsKQEAgLTU5OSwyOSArNTk2LDQyIEBAIHN0YXRpYyB2b2lkIG5leHRfb3V0X2RtYShzdHJ1 Y3Qgb21hcF9lcCAqZXAsIHN0cnVjdCBvbWFwX3JlcSAqcmVxKQogCW9tYXBfd3JpdGV3KGVwLT5i RW5kcG9pbnRBZGRyZXNzICYgMHhmLCBVRENfRVBfTlVNKTsKIAlvbWFwX3dyaXRldyhVRENfU0VU X0ZJRk9fRU4sIFVEQ19DVFJMKTsKIAotCW9tYXBfc3RhcnRfZG1hKGVwLT5sY2gpOworCWNvb2tp ZSA9IGRtYWVuZ2luZV9zdWJtaXQodHgpOworCWlmIChXQVJOX09OKGRtYV9zdWJtaXRfZXJyb3Io Y29va2llKSkpCisJCXJldHVybjsKKworCWVwLT5kbWFfY29va2llID0gY29va2llOworCWRtYV9h c3luY19pc3N1ZV9wZW5kaW5nKGRtYSk7CisJcmVxLT5kbWFfYnl0ZXMgPSBsZW5ndGg7CiB9CiAK IHN0YXRpYyB2b2lkCiBmaW5pc2hfb3V0X2RtYShzdHJ1Y3Qgb21hcF9lcCAqZXAsIHN0cnVjdCBv bWFwX3JlcSAqcmVxLCBpbnQgc3RhdHVzLCBpbnQgb25lKQogeworCXN0cnVjdCBkbWFfdHhfc3Rh dGUgc3RhdGU7CiAJdTE2CWNvdW50LCB3OwogCi0JaWYgKHN0YXR1cyA9PSAwKQotCQllcC0+ZG1h X2NvdW50ZXIgPSAodTE2KSAocmVxLT5yZXEuZG1hICsgcmVxLT5yZXEuYWN0dWFsKTsKLQljb3Vu dCA9IGRtYV9kZXN0X2xlbihlcCwgcmVxLT5yZXEuZG1hICsgcmVxLT5yZXEuYWN0dWFsKTsKKwlk bWFlbmdpbmVfdHhfc3RhdHVzKGVwLT5kbWEsIGVwLT5kbWFfY29va2llLCAmc3RhdGUpOworCisJ Y291bnQgPSByZXEtPmRtYV9ieXRlcyAtIHN0YXRlLnJlc2lkdWFsOwogCWNvdW50ICs9IHJlcS0+ cmVxLmFjdHVhbDsKIAlpZiAob25lKQogCQljb3VudC0tOworCisJLyoKKwkgKiBGSVhNRTogU3Vy ZWx5IGlmIGNvdW50ID4gcmVxLT5yZXEubGVuZ3RoLCBzb21ldGhpbmcgaGFzIGdvbmUKKwkgKiBz ZXJpb3VzbHkgd3JvbmcgYW5kIHdlJ3ZlIHNjcmliYmxlZCBvdmVyIG1lbW9yeSB3ZSBzaG91bGQg bm90Li4uCisJICogc28gc3VyZWx5IHdlIHNob3VsZCBiZSBhIFdBUk5fT04oKSBhdCB0aGUgdmVy eSBsZWFzdD8KKwkgKi8KIAlpZiAoY291bnQgPD0gcmVxLT5yZXEubGVuZ3RoKQogCQlyZXEtPnJl cS5hY3R1YWwgPSBjb3VudDsKIAotCWlmIChjb3VudCAhPSByZXEtPmRtYV9ieXRlcyB8fCBzdGF0 dXMpCi0JCW9tYXBfc3RvcF9kbWEoZXAtPmxjaCk7Ci0KKwlpZiAoY291bnQgIT0gcmVxLT5kbWFf Ynl0ZXMgfHwgc3RhdHVzKSB7CisJCWRtYWVuZ2luZV90ZXJtaW5hdGVfYXN5bmMoZXAtPmRtYSk7 CiAJLyogaWYgdGhpcyB3YXNuJ3Qgc2hvcnQsIHJlcXVlc3QgbWF5IG5lZWQgYW5vdGhlciB0cmFu c2ZlciAqLwotCWVsc2UgaWYgKHJlcS0+cmVxLmFjdHVhbCA8IHJlcS0+cmVxLmxlbmd0aCkKKwl9 IGVsc2UgaWYgKHJlcS0+cmVxLmFjdHVhbCA8IHJlcS0+cmVxLmxlbmd0aCkgewogCQlyZXR1cm47 CisJfQogCiAJLyogcnggY29tcGxldGlvbiAqLwogCXcgPSBvbWFwX3JlYWR3KFVEQ19ETUFfSVJR X0VOKTsKQEAgLTY4MywxOSArNjkzLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9pcnEoc3RydWN0IG9t YXBfdWRjICp1ZGMsIHUxNiBpcnFfc3JjKQogCX0KIH0KIAotc3RhdGljIHZvaWQgZG1hX2Vycm9y KGludCBsY2gsIHUxNiBjaF9zdGF0dXMsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IG9tYXBfZXAJ KmVwID0gZGF0YTsKLQotCS8qIGlmIGNoX3N0YXR1cyAmIE9NQVBfRE1BX0RST1BfSVJRIC4uLiAq LwotCS8qIGlmIGNoX3N0YXR1cyAmIE9NQVAxX0RNQV9UT1VUX0lSUSAuLi4gKi8KLQlFUlIoIiVz IGRtYSBlcnJvciwgbGNoICVkIHN0YXR1cyAlMDJ4XG4iLCBlcC0+ZXAubmFtZSwgbGNoLCBjaF9z dGF0dXMpOwotCi0JLyogY29tcGxldGUgY3VycmVudCB0cmFuc2ZlciAuLi4gKi8KLX0KLQogc3Rh dGljIHZvaWQgZG1hX2NoYW5uZWxfY2xhaW0oc3RydWN0IG9tYXBfZXAgKmVwLCB1bnNpZ25lZCBj aGFubmVsKQogeworCWRtYV9jYXBfbWFza190IG1hc2s7CisJc3RydWN0IGRtYV9jaGFuICpkbWE7 CiAJdTE2CXJlZzsKIAlpbnQJc3RhdHVzLCByZXN0YXJ0LCBpc19pbjsKIAlpbnQJZG1hX2NoYW5u ZWw7CkBAIC03MDgsNyArNzA5LDcgQEAgc3RhdGljIHZvaWQgZG1hX2NoYW5uZWxfY2xhaW0oc3Ry dWN0IG9tYXBfZXAgKmVwLCB1bnNpZ25lZCBjaGFubmVsKQogCXJlZyB8PSBVRENfRE1BX1JFUTsJ CS8qICJwdWxzZSIgYWN0aXZhdGVkICovCiAKIAllcC0+ZG1hX2NoYW5uZWwgPSAwOwotCWVwLT5s Y2ggPSAtMTsKKwllcC0+ZG1hID0gTlVMTDsKIAlpZiAoY2hhbm5lbCA9PSAwIHx8IGNoYW5uZWwg PiAzKSB7CiAJCWlmICgocmVnICYgMHgwZjAwKSA9PSAwKQogCQkJY2hhbm5lbCA9IDM7CkBAIC03 MjIsNjUgKzcyMyw0MSBAQCBzdGF0aWMgdm9pZCBkbWFfY2hhbm5lbF9jbGFpbShzdHJ1Y3Qgb21h cF9lcCAqZXAsIHVuc2lnbmVkIGNoYW5uZWwpCiAJCX0KIAl9CiAJcmVnIHw9ICgweDBmICYgZXAt PmJFbmRwb2ludEFkZHJlc3MpIDw8ICg0ICogKGNoYW5uZWwgLSAxKSk7Ci0JZXAtPmRtYV9jaGFu bmVsID0gY2hhbm5lbDsKIAotCWlmIChpc19pbikgeworCWRtYV9jYXBfemVybyhtYXNrKTsKKwlk bWFfY2FwX3NldChETUFfU0xBVkUsIG1hc2spOworCisJaWYgKGlzX2luKQogCQlkbWFfY2hhbm5l bCA9IE9NQVBfRE1BX1VTQl9XMkZDX1RYMCAtIDEgKyBjaGFubmVsOwotCQlzdGF0dXMgPSBvbWFw X3JlcXVlc3RfZG1hKGRtYV9jaGFubmVsLAotCQkJZXAtPmVwLm5hbWUsIGRtYV9lcnJvciwgZXAs ICZlcC0+bGNoKTsKLQkJaWYgKHN0YXR1cyA9PSAwKSB7Ci0JCQlvbWFwX3dyaXRldyhyZWcsIFVE Q19UWERNQV9DRkcpOwotCQkJLyogRU1JRkYgb3IgU0RSQyAqLwotCQkJb21hcF9zZXRfZG1hX3Ny Y19idXJzdF9tb2RlKGVwLT5sY2gsCi0JCQkJCQlPTUFQX0RNQV9EQVRBX0JVUlNUXzQpOwotCQkJ b21hcF9zZXRfZG1hX3NyY19kYXRhX3BhY2soZXAtPmxjaCwgMSk7Ci0JCQkvKiBUSVBCICovCi0J CQlvbWFwX3NldF9kbWFfZGVzdF9wYXJhbXMoZXAtPmxjaCwKLQkJCQlPTUFQX0RNQV9QT1JUX1RJ UEIsCi0JCQkJT01BUF9ETUFfQU1PREVfQ09OU1RBTlQsCi0JCQkJVURDX0RBVEFfRE1BLAotCQkJ CTAsIDApOwotCQl9Ci0JfSBlbHNlIHsKKwllbHNlCiAJCWRtYV9jaGFubmVsID0gT01BUF9ETUFf VVNCX1cyRkNfUlgwIC0gMSArIGNoYW5uZWw7Ci0JCXN0YXR1cyA9IG9tYXBfcmVxdWVzdF9kbWEo ZG1hX2NoYW5uZWwsCi0JCQllcC0+ZXAubmFtZSwgZG1hX2Vycm9yLCBlcCwgJmVwLT5sY2gpOwot CQlpZiAoc3RhdHVzID09IDApIHsKKworCWRtYSA9IF9fZG1hX3JlcXVlc3RfY2hhbm5lbCgmbWFz aywgb21hcF9kbWFfZmlsdGVyX2ZuLAorCQkJCSAgICAodm9pZCAqKWRtYV9jaGFubmVsKTsKKwlp ZiAoZG1hKSB7CisJCWVwLT5kbWFfY2hhbm5lbCA9IGNoYW5uZWw7CisJCWVwLT5kbWEgPSBkbWE7 CisJCWlmIChpc19pbikKKwkJCW9tYXBfd3JpdGV3KHJlZywgVURDX1RYRE1BX0NGRyk7CisJCWVs c2UKIAkJCW9tYXBfd3JpdGV3KHJlZywgVURDX1JYRE1BX0NGRyk7Ci0JCQkvKiBUSVBCICovCi0J CQlvbWFwX3NldF9kbWFfc3JjX3BhcmFtcyhlcC0+bGNoLAotCQkJCU9NQVBfRE1BX1BPUlRfVElQ QiwKLQkJCQlPTUFQX0RNQV9BTU9ERV9DT05TVEFOVCwKLQkJCQlVRENfREFUQV9ETUEsCi0JCQkJ MCwgMCk7Ci0JCQkvKiBFTUlGRiBvciBTRFJDICovCi0JCQlvbWFwX3NldF9kbWFfZGVzdF9idXJz dF9tb2RlKGVwLT5sY2gsCi0JCQkJCQlPTUFQX0RNQV9EQVRBX0JVUlNUXzQpOwotCQkJb21hcF9z ZXRfZG1hX2Rlc3RfZGF0YV9wYWNrKGVwLT5sY2gsIDEpOwotCQl9Ci0JfQotCWlmIChzdGF0dXMp Ci0JCWVwLT5kbWFfY2hhbm5lbCA9IDA7Ci0JZWxzZSB7CiAJCWVwLT5oYXNfZG1hID0gMTsKLQkJ b21hcF9kaXNhYmxlX2RtYV9pcnEoZXAtPmxjaCwgT01BUF9ETUFfQkxPQ0tfSVJRKTsKLQotCQkv KiBjaGFubmVsIHR5cGUgUDogaHcgc3luY2ggKGZpZm8pICovCi0JCWlmICghY3B1X2lzX29tYXAx NXh4KCkpCi0JCQlvbWFwX3NldF9kbWFfY2hhbm5lbF9tb2RlKGVwLT5sY2gsIE9NQVBfRE1BX0xD SF9QKTsKKwkJc3RhdHVzID0gMDsKKwl9IGVsc2UgeworCQllcC0+ZG1hX2NoYW5uZWwgPSAwOwor CQlzdGF0dXMgPSAtRUlOVkFMOwogCX0KIAoganVzdF9yZXN0YXJ0OgogCS8qIHJlc3RhcnQgYW55 IHF1ZXVlLCBldmVuIGlmIHRoZSBjbGFpbSBmYWlsZWQgICovCiAJcmVzdGFydCA9ICFlcC0+c3Rv cHBlZCAmJiAhbGlzdF9lbXB0eSgmZXAtPnF1ZXVlKTsKIAotCWlmIChzdGF0dXMpCi0JCURCRygi JXMgbm8gZG1hIGNoYW5uZWw6ICVkJXNcbiIsIGVwLT5lcC5uYW1lLCBzdGF0dXMsCi0JCQlyZXN0 YXJ0ID8gIiAocmVzdGFydCkiIDogIiIpOworCWlmIChkLT5kbWEpCisJCURCRygiJXMgY2xhaW1l ZCAlY3hkbWElZCBkbWFlbmdpbmUgJXMlc1xuIiwgZXAtPmVwLm5hbWUsCisJCQlpc19pbiA/ICd0 JyA6ICdyJywgZXAtPmRtYV9jaGFubmVsIC0gMSwKKwkJCWRtYV9jaGFuX25hbWUoZC0+ZG1hKSwg cmVzdGFydCA/ICIgKHJlc3RhcnQpIiA6ICIiKTsKIAllbHNlCi0JCURCRygiJXMgY2xhaW1lZCAl Y3hkbWElZCBsY2ggJWQlc1xuIiwgZXAtPmVwLm5hbWUsCi0JCQlpc19pbiA/ICd0JyA6ICdyJywK LQkJCWVwLT5kbWFfY2hhbm5lbCAtIDEsIGVwLT5sY2gsCisJCURCRygiJXMgbm8gZG1hIGNoYW5u ZWw6ICVkJXNcbiIsIGVwLT5lcC5uYW1lLCBzdGF0dXMsCiAJCQlyZXN0YXJ0ID8gIiAocmVzdGFy dCkiIDogIiIpOwogCiAJaWYgKHJlc3RhcnQpIHsKQEAgLTgxNCw3ICs3OTEsOCBAQCBzdGF0aWMg dm9pZCBkbWFfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBvbWFwX2VwICplcCkKIAllbHNlCiAJCXJl cSA9IE5VTEw7CiAKLQlhY3RpdmUgPSBvbWFwX2dldF9kbWFfYWN0aXZlX3N0YXR1cyhlcC0+bGNo KTsKKwlhY3RpdmUgPSBkbWFfYXN5bmNfaXNfdHhfY29tcGxldGUoZXAtPmRtYSwgZXAtPmRtYV9j b29raWUsIE5VTEwsIE5VTEwpCisJCQk9PSBETUFfSU5fUFJPR1JFU1M7CiAKIAlEQkcoIiVzIHJl bGVhc2UgJXMgJWN4ZG1hJWQgJXBcbiIsIGVwLT5lcC5uYW1lLAogCQkJYWN0aXZlID8gImFjdGl2 ZSIgOiAiaWRsZSIsCkBAIC04NTAsOSArODI4LDkgQEAgc3RhdGljIHZvaWQgZG1hX2NoYW5uZWxf cmVsZWFzZShzdHJ1Y3Qgb21hcF9lcCAqZXApCiAJCWlmIChyZXEpCiAJCQlmaW5pc2hfb3V0X2Rt YShlcCwgcmVxLCAtRUNPTk5SRVNFVCwgMCk7CiAJfQotCW9tYXBfZnJlZV9kbWEoZXAtPmxjaCk7 CisJZG1hX3JlbGVhc2VfY2hhbm5lbChlcC0+ZG1hKTsKIAllcC0+ZG1hX2NoYW5uZWwgPSAwOwot CWVwLT5sY2ggPSAtMTsKKwllcC0+ZG1hID0gTlVMTDsKIAkvKiBoYXNfZG1hIHN0aWxsIHNldCwg dGlsbCBlbmRwb2ludCBpcyBmdWxseSBxdWllc2NlZCAqLwogfQogCkBAIC0yMTQ2LDkgKzIxMjQs OSBAQCBzdGF0aWMgdm9pZCBwcm9jX2VwX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qg b21hcF9lcCAqZXApCiAJdXNlX2VwKGVwLCAwKTsKIAogCWlmICh1c2VfZG1hICYmIGVwLT5oYXNf ZG1hKQotCQlzbnByaW50ZihidWYsIHNpemVvZiBidWYsICIoJWN4ZG1hJWQgbGNoJWQpICIsCisJ CXNucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIiglY3hkbWElZCBkbWEgJXMpICIsCiAJCQkoZXAt PmJFbmRwb2ludEFkZHJlc3MgJiBVU0JfRElSX0lOKSA/ICd0JyA6ICdyJywKLQkJCWVwLT5kbWFf Y2hhbm5lbCAtIDEsIGVwLT5sY2gpOworCQkJZXAtPmRtYV9jaGFubmVsIC0gMSwgZG1hX2NoYW5f bmFtZShlcC0+ZG1hKSk7CiAJZWxzZQogCQlidWZbMF0gPSAwOwogCkBAIC0yMTk0LDkgKzIxNzIs MTEgQEAgc3RhdGljIHZvaWQgcHJvY19lcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0 IG9tYXBfZXAgKmVwKQogCQkJdW5zaWduZWQJbGVuZ3RoID0gcmVxLT5yZXEuYWN0dWFsOwogCiAJ CQlpZiAodXNlX2RtYSAmJiBidWZbMF0pIHsKLQkJCQlsZW5ndGggKz0gKChlcC0+YkVuZHBvaW50 QWRkcmVzcyAmIFVTQl9ESVJfSU4pCi0JCQkJCQk/IGRtYV9zcmNfbGVuIDogZG1hX2Rlc3RfbGVu KQotCQkJCQkoZXAsIHJlcS0+cmVxLmRtYSArIGxlbmd0aCk7CisJCQkJc3RydWN0IGRtYV90eF9z dGF0ZSBzdGF0ZTsKKworCQkJCWRtYWVuZ2luZV90eF9zdGF0dXMoZXAtPmRtYSwgZXAtPmRtYV9j b29raWUsCisJCQkJCQkgICAgJnN0YXRlKTsKKwkJCQlsZW5ndGggKz0gcmVxLT5kbWFfYnl0ZXMg LSBzdGF0ZS5yZXNpZHVhbDsKIAkJCQlidWZbMF0gPSAwOwogCQkJfQogCQkJc2VxX3ByaW50Zihz LCAiXHRyZXEgJXAgbGVuICVkLyVkIGJ1ZiAlcFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNi L2dhZGdldC91ZGMvb21hcF91ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvb21hcF91ZGMu aAppbmRleCAwMGY5ZTYwOGU3NTUuLmUwNGM0OGY2NjllZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2IvZ2FkZ2V0L3VkYy9vbWFwX3VkYy5oCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvb21h cF91ZGMuaApAQCAtMTUyLDcgKzE1Miw4IEBAIHN0cnVjdCBvbWFwX2VwIHsKIAl1OAkJCQlhY2t3 YWl0OwogCXU4CQkJCWRtYV9jaGFubmVsOwogCXUxNgkJCQlkbWFfY291bnRlcjsKLQlpbnQJCQkJ bGNoOworCXN0cnVjdCBkbWFfY2hhbgkJCSpkbWE7CisJZG1hX2Nvb2tpZV90CQkJZG1hX2Nvb2tp ZTsKIAlzdHJ1Y3Qgb21hcF91ZGMJCQkqdWRjOwogCXN0cnVjdCB0aW1lcl9saXN0CQl0aW1lcjsK IH07Cg==