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: <20181123232746.GA18875@n2100.armlinux.org.uk> Date: Fri, 23 Nov 2018 23:27:47 +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: T24gRnJpLCBOb3YgMjMsIDIwMTggYXQgMDQ6MTY6NTlQTSArMDAwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IHdyb3RlOgo+IEhpIFBldGVyLAo+IAo+IEhlcmUncyB0aGUgcGF0Y2gsIHdoaWNo IHNob3VsZCBub3cgc3VwcG9ydCBJTiBhcyB3ZWxsIGFzIE9VVC4KPiBDb21wbGV0ZWx5IHVudGVz dGVkLCBhcyBtZW50aW9uZWQgYmVmb3JlLgoKTm93IGNvbXBpbGUgdGVzdGVkLi4uCgogZHJpdmVy cy91c2IvZ2FkZ2V0L3VkYy9vbWFwX3VkYy5jIHwgMjkxICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmggfCAgIDMg Ky0KIDIgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDE1NyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMgYi9kcml2ZXJz L3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMKaW5kZXggM2ExNjQzMWRhMzIxLi5kZDg1NDc2ZWMy MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvb21hcF91ZGMuYworKysgYi9k cml2ZXJzL3VzYi9nYWRnZXQvdWRjL29tYXBfdWRjLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs dWRlIDxsaW51eC91c2IvY2g5Lmg+CiAjaW5jbHVkZSA8bGludXgvdXNiL2dhZGdldC5oPgogI2lu Y2x1ZGUgPGxpbnV4L3VzYi9vdGcuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWFlbmdpbmUuaD4KICNp bmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgogI2lu Y2x1ZGUgPGxpbnV4L2Vyci5oPgpAQCAtMjAzLDcgKzIwNCw3IEBAIHN0YXRpYyBpbnQgb21hcF9l cF9lbmFibGUoc3RydWN0IHVzYl9lcCAqX2VwLAogCS8qIHNldCBlbmRwb2ludCB0byBpbml0aWFs IHN0YXRlICovCiAJZXAtPmRtYV9jaGFubmVsID0gMDsKIAllcC0+aGFzX2RtYSA9IDA7Ci0JZXAt PmxjaCA9IC0xOworCWVwLT5kbWEgPSBOVUxMOwogCXVzZV9lcChlcCwgVURDX0VQX1NFTCk7CiAJ b21hcF93cml0ZXcodWRjLT5jbHJfaGFsdCwgVURDX0NUUkwpOwogCWVwLT5hY2t3YWl0ID0gMDsK QEAgLTQ2OCw0MyArNDY5LDYgQEAgc3RhdGljIGludCByZWFkX2ZpZm8oc3RydWN0IG9tYXBfZXAg KmVwLCBzdHJ1Y3Qgb21hcF9yZXEgKnJlcSkKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotc3Rh dGljIHUxNiBkbWFfc3JjX2xlbihzdHJ1Y3Qgb21hcF9lcCAqZXAsIGRtYV9hZGRyX3Qgc3RhcnQp Ci17Ci0JZG1hX2FkZHJfdAllbmQ7Ci0KLQkvKiBJTi1ETUEgbmVlZHMgdGhpcyBvbiBmYXVsdC9j YW5jZWwgcGF0aHMsIHNvIDE1eHggbWlzcmVwb3J0cwotCSAqIHRoZSBsYXN0IHRyYW5zZmVyJ3Mg Ynl0ZWNvdW50IGJ5IG1vcmUgdGhhbiBhIEZJRk8ncyB3b3J0aC4KLQkgKi8KLQlpZiAoY3B1X2lz X29tYXAxNXh4KCkpCi0JCXJldHVybiAwOwotCi0JZW5kID0gb21hcF9nZXRfZG1hX3NyY19wb3Mo ZXAtPmxjaCk7Ci0JaWYgKGVuZCA9PSBlcC0+ZG1hX2NvdW50ZXIpCi0JCXJldHVybiAwOwotCi0J ZW5kIHw9IHN0YXJ0ICYgKDB4ZmZmZiA8PCAxNik7Ci0JaWYgKGVuZCA8IHN0YXJ0KQotCQllbmQg Kz0gMHgxMDAwMDsKLQlyZXR1cm4gZW5kIC0gc3RhcnQ7Ci19Ci0KLXN0YXRpYyB1MTYgZG1hX2Rl c3RfbGVuKHN0cnVjdCBvbWFwX2VwICplcCwgZG1hX2FkZHJfdCBzdGFydCkKLXsKLQlkbWFfYWRk cl90CWVuZDsKLQotCWVuZCA9IG9tYXBfZ2V0X2RtYV9kc3RfcG9zKGVwLT5sY2gpOwotCWlmIChl bmQgPT0gZXAtPmRtYV9jb3VudGVyKQotCQlyZXR1cm4gMDsKLQotCWVuZCB8PSBzdGFydCAmICgw eGZmZmYgPDwgMTYpOwotCWlmIChjcHVfaXNfb21hcDE1eHgoKSkKLQkJZW5kKys7Ci0JaWYgKGVu ZCA8IHN0YXJ0KQotCQllbmQgKz0gMHgxMDAwMDsKLQlyZXR1cm4gZW5kIC0gc3RhcnQ7Ci19Ci0K LQogLyogRWFjaCBVU0IgdHJhbnNmZXIgcmVxdWVzdCB1c2luZyBETUEgbWFwcyB0byBvbmUgb3Ig bW9yZSBETUEgdHJhbnNmZXJzLgogICogV2hlbiBETUEgY29tcGxldGlvbiBpc24ndCByZXF1ZXN0 IGNvbXBsZXRpb24sIHRoZSBVREMgY29udGludWVzIHdpdGgKICAqIHRoZSBuZXh0IERNQSB0cmFu c2ZlciBmb3IgdGhhdCBVU0IgdHJhbnNmZXIuCkBAIC01MTIsMzQgKzQ3Niw1MyBAQCBzdGF0aWMg dTE2IGRtYV9kZXN0X2xlbihzdHJ1Y3Qgb21hcF9lcCAqZXAsIGRtYV9hZGRyX3Qgc3RhcnQpCiAK IHN0YXRpYyB2b2lkIG5leHRfaW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBf cmVxICpyZXEpCiB7Ci0JdTE2CQl0eGRtYV9jdHJsLCB3OwotCXVuc2lnbmVkCWxlbmd0aCA9IHJl cS0+cmVxLmxlbmd0aCAtIHJlcS0+cmVxLmFjdHVhbDsKLQljb25zdCBpbnQJc3luY19tb2RlID0g Y3B1X2lzX29tYXAxNXh4KCkKLQkJCQk/IE9NQVBfRE1BX1NZTkNfRlJBTUUKLQkJCQk6IE9NQVBf RE1BX1NZTkNfRUxFTUVOVDsKLQlpbnQJCWRtYV90cmlnZ2VyID0gMDsKKwlzdHJ1Y3QgZG1hX2Fz eW5jX3R4X2Rlc2NyaXB0b3IgKnR4OworCXN0cnVjdCBkbWFfY2hhbiAqZG1hID0gZXAtPmRtYTsK KwlkbWFfY29va2llX3QgY29va2llOworCXVuc2lnbmVkIGJ1cnN0LCBsZW5ndGg7CisJdTE2IHR4 ZG1hX2N0cmwsIHc7CisJc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgb21hcF91ZGNfaW5fY2ZnID0g eworCQkuZGlyZWN0aW9uID0gRE1BX01FTV9UT19ERVYsCisJCS5kc3RfYWRkciA9IFVEQ19EQVRB X0RNQSwKKwl9OworCisJbGVuZ3RoID0gcmVxLT5yZXEubGVuZ3RoIC0gcmVxLT5yZXEuYWN0dWFs OwogCiAJLyogbWVhc3VyZSBsZW5ndGggaW4gZWl0aGVyIGJ5dGVzIG9yIHBhY2tldHMgKi8KLQlp ZiAoKGNwdV9pc19vbWFwMTZ4eCgpICYmIGxlbmd0aCA8PSBVRENfVFhOX1RTQykKLQkJCXx8IChj cHVfaXNfb21hcDE1eHgoKSAmJiBsZW5ndGggPCBlcC0+bWF4cGFja2V0KSkgeworCWlmICgoY3B1 X2lzX29tYXAxNnh4KCkgJiYgbGVuZ3RoIDw9IFVEQ19UWE5fVFNDKSB8fAorCSAgICAoY3B1X2lz X29tYXAxNXh4KCkgJiYgbGVuZ3RoIDwgZXAtPm1heHBhY2tldCkpIHsKKwkJb21hcF91ZGNfaW5f Y2ZnLmRzdF9hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzFfQllURTsKIAkJdHhkbWFf Y3RybCA9IFVEQ19UWE5fRU9UIHwgbGVuZ3RoOwotCQlvbWFwX3NldF9kbWFfdHJhbnNmZXJfcGFy YW1zKGVwLT5sY2gsIE9NQVBfRE1BX0RBVEFfVFlQRV9TOCwKLQkJCQlsZW5ndGgsIDEsIHN5bmNf bW9kZSwgZG1hX3RyaWdnZXIsIDApOworCQlidXJzdCA9IGxlbmd0aDsKIAl9IGVsc2UgewotCQls ZW5ndGggPSBtaW4obGVuZ3RoIC8gZXAtPm1heHBhY2tldCwKLQkJCQkodW5zaWduZWQpIFVEQ19U WE5fVFNDICsgMSk7CisJCW9tYXBfdWRjX2luX2NmZy5kc3RfYWRkcl93aWR0aCA9IERNQV9TTEFW RV9CVVNXSURUSF8yX0JZVEVTOworCQlsZW5ndGggPSBtaW5fdCh1bnNpZ25lZCwgbGVuZ3RoIC8g ZXAtPm1heHBhY2tldCwKKwkJICAgICAgICAgICAgICAgVURDX1RYTl9UU0MgKyAxKTsKIAkJdHhk bWFfY3RybCA9IGxlbmd0aDsKLQkJb21hcF9zZXRfZG1hX3RyYW5zZmVyX3BhcmFtcyhlcC0+bGNo LCBPTUFQX0RNQV9EQVRBX1RZUEVfUzE2LAotCQkJCWVwLT5lcC5tYXhwYWNrZXQgPj4gMSwgbGVu Z3RoLCBzeW5jX21vZGUsCi0JCQkJZG1hX3RyaWdnZXIsIDApOwogCQlsZW5ndGggKj0gZXAtPm1h eHBhY2tldDsKKwkJYnVyc3QgPSBlcC0+ZXAubWF4cGFja2V0ID4+IDE7CiAJfQotCW9tYXBfc2V0 X2RtYV9zcmNfcGFyYW1zKGVwLT5sY2gsIE9NQVBfRE1BX1BPUlRfRU1JRkYsCi0JCU9NQVBfRE1B X0FNT0RFX1BPU1RfSU5DLCByZXEtPnJlcS5kbWEgKyByZXEtPnJlcS5hY3R1YWwsCi0JCTAsIDAp OwogCi0Jb21hcF9zdGFydF9kbWEoZXAtPmxjaCk7Ci0JZXAtPmRtYV9jb3VudGVyID0gb21hcF9n ZXRfZG1hX3NyY19wb3MoZXAtPmxjaCk7CisJaWYgKCFjcHVfaXNfb21hcDE1eHgoKSkKKwkJYnVy c3QgPSAxOworCisJb21hcF91ZGNfaW5fY2ZnLmRzdF9tYXhidXJzdCA9IGJ1cnN0OworCisJaWYg KFdBUk5fT04oZG1hZW5naW5lX3NsYXZlX2NvbmZpZyhkbWEsICZvbWFwX3VkY19pbl9jZmcpKSkK KwkJcmV0dXJuOworCisJdHggPSBkbWFlbmdpbmVfcHJlcF9zbGF2ZV9zaW5nbGUoZG1hLCByZXEt PnJlcS5kbWEgKyByZXEtPnJlcS5hY3R1YWwsCisJCQkJCSBsZW5ndGgsIERNQV9NRU1fVE9fREVW LCAwKTsKKwlpZiAoV0FSTl9PTighdHgpKQorCQlyZXR1cm47CisKKwljb29raWUgPSBkbWFlbmdp bmVfc3VibWl0KHR4KTsKKwlpZiAoV0FSTl9PTihkbWFfc3VibWl0X2Vycm9yKGNvb2tpZSkpKQor CQlyZXR1cm47CisKKwllcC0+ZG1hX2Nvb2tpZSA9IGNvb2tpZTsKKwlkbWFfYXN5bmNfaXNzdWVf cGVuZGluZyhkbWEpOworCiAJdyA9IG9tYXBfcmVhZHcoVURDX0RNQV9JUlFfRU4pOwogCXcgfD0g VURDX1RYX0RPTkVfSUUoZXAtPmRtYV9jaGFubmVsKTsKIAlvbWFwX3dyaXRldyh3LCBVRENfRE1B X0lSUV9FTik7CkBAIC01NDksMTEgKzUzMiwxNCBAQCBzdGF0aWMgdm9pZCBuZXh0X2luX2RtYShz dHJ1Y3Qgb21hcF9lcCAqZXAsIHN0cnVjdCBvbWFwX3JlcSAqcmVxKQogCiBzdGF0aWMgdm9pZCBm aW5pc2hfaW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBfcmVxICpyZXEsIGlu dCBzdGF0dXMpCiB7CisJc3RydWN0IGRtYV90eF9zdGF0ZSBzdGF0ZTsKIAl1MTYgdzsKIAotCWlm IChzdGF0dXMgPT0gMCkgewotCQlyZXEtPnJlcS5hY3R1YWwgKz0gcmVxLT5kbWFfYnl0ZXM7CisJ ZG1hZW5naW5lX3R4X3N0YXR1cyhlcC0+ZG1hLCBlcC0+ZG1hX2Nvb2tpZSwgJnN0YXRlKTsKKwor CXJlcS0+cmVxLmFjdHVhbCArPSByZXEtPmRtYV9ieXRlcyAtIHN0YXRlLnJlc2lkdWU7CiAKKwlp ZiAoc3RhdHVzID09IDApIHsKIAkJLyogcmV0dXJuIGlmIHRoaXMgcmVxdWVzdCBuZWVkcyB0byBz ZW5kIGRhdGEgb3IgemxwICovCiAJCWlmIChyZXEtPnJlcS5hY3R1YWwgPCByZXEtPnJlcS5sZW5n dGgpCiAJCQlyZXR1cm47CkBAIC01NjEsMzYgKzU0Nyw0NyBAQCBzdGF0aWMgdm9pZCBmaW5pc2hf aW5fZG1hKHN0cnVjdCBvbWFwX2VwICplcCwgc3RydWN0IG9tYXBfcmVxICpyZXEsIGludCBzdGF0 dXMpCiAJCQkJJiYgcmVxLT5kbWFfYnl0ZXMgIT0gMAogCQkJCSYmIChyZXEtPnJlcS5hY3R1YWwg JSBlcC0+bWF4cGFja2V0KSA9PSAwKQogCQkJcmV0dXJuOwotCX0gZWxzZQotCQlyZXEtPnJlcS5h Y3R1YWwgKz0gZG1hX3NyY19sZW4oZXAsIHJlcS0+cmVxLmRtYQotCQkJCQkJCSsgcmVxLT5yZXEu YWN0dWFsKTsKKwl9CiAKIAkvKiB0eCBjb21wbGV0aW9uICovCi0Jb21hcF9zdG9wX2RtYShlcC0+ bGNoKTsKKwlkbWFlbmdpbmVfdGVybWluYXRlX2FzeW5jKGVwLT5kbWEpOworCiAJdyA9IG9tYXBf cmVhZHcoVURDX0RNQV9JUlFfRU4pOwogCXcgJj0gflVEQ19UWF9ET05FX0lFKGVwLT5kbWFfY2hh bm5lbCk7CiAJb21hcF93cml0ZXcodywgVURDX0RNQV9JUlFfRU4pOwogCWRvbmUoZXAsIHJlcSwg c3RhdHVzKTsKIH0KIAorc3RhdGljIHN0cnVjdCBkbWFfc2xhdmVfY29uZmlnIG9tYXBfdWRjX291 dF9jZmcgPSB7CisJLmRpcmVjdGlvbiA9IERNQV9ERVZfVE9fTUVNLAorCS5zcmNfYWRkcl93aWR0 aCA9IERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEVTLAorCS8qCisJICogRE1BZW5naW5lIHVzZXMg ZnJhbWUgc3luYyBtb2RlLCBzZXR0aW5nIG1heGJ1cnN0PTEKKwkgKiBpcyBlcXVpdmFsZW50IHRv IGVsZW1lbnQgc3luYyBtb2RlLgorCSAqLworCS5zcmNfbWF4YnVyc3QgPSAxLAorCS5zcmNfYWRk ciA9IFVEQ19EQVRBX0RNQSwKK307CisKIHN0YXRpYyB2b2lkIG5leHRfb3V0X2RtYShzdHJ1Y3Qg b21hcF9lcCAqZXAsIHN0cnVjdCBvbWFwX3JlcSAqcmVxKQogewotCXVuc2lnbmVkIHBhY2tldHMg PSByZXEtPnJlcS5sZW5ndGggLSByZXEtPnJlcS5hY3R1YWw7Ci0JaW50IGRtYV90cmlnZ2VyID0g MDsKKwlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4OworCXN0cnVjdCBkbWFfY2hh biAqZG1hID0gZXAtPmRtYTsKKwlkbWFfY29va2llX3QgY29va2llOworCXVuc2lnbmVkIHBhY2tl dHMsIGxlbmd0aDsKIAl1MTYgdzsKIAotCS8qIHNldCB1cCB0aGlzIERNQSB0cmFuc2ZlciwgZW5h YmxlIHRoZSBmaWZvLCBzdGFydCAqLwotCXBhY2tldHMgLz0gZXAtPmVwLm1heHBhY2tldDsKLQlw YWNrZXRzID0gbWluKHBhY2tldHMsICh1bnNpZ25lZClVRENfUlhOX1RDICsgMSk7Ci0JcmVxLT5k bWFfYnl0ZXMgPSBwYWNrZXRzICogZXAtPmVwLm1heHBhY2tldDsKLQlvbWFwX3NldF9kbWFfdHJh bnNmZXJfcGFyYW1zKGVwLT5sY2gsIE9NQVBfRE1BX0RBVEFfVFlQRV9TMTYsCi0JCQllcC0+ZXAu bWF4cGFja2V0ID4+IDEsIHBhY2tldHMsCi0JCQlPTUFQX0RNQV9TWU5DX0VMRU1FTlQsCi0JCQlk bWFfdHJpZ2dlciwgMCk7Ci0Jb21hcF9zZXRfZG1hX2Rlc3RfcGFyYW1zKGVwLT5sY2gsIE9NQVBf RE1BX1BPUlRfRU1JRkYsCi0JCU9NQVBfRE1BX0FNT0RFX1BPU1RfSU5DLCByZXEtPnJlcS5kbWEg KyByZXEtPnJlcS5hY3R1YWwsCi0JCTAsIDApOwotCWVwLT5kbWFfY291bnRlciA9IG9tYXBfZ2V0 X2RtYV9kc3RfcG9zKGVwLT5sY2gpOworCWxlbmd0aCA9IHJlcS0+cmVxLmxlbmd0aCAtIHJlcS0+ cmVxLmFjdHVhbDsKKwlwYWNrZXRzID0gbWluX3QodW5zaWduZWQsIGxlbmd0aCAvIGVwLT5lcC5t YXhwYWNrZXQsIFVEQ19SWE5fVEMgKyAxKTsKKwlsZW5ndGggPSBwYWNrZXRzICogZXAtPmVwLm1h eHBhY2tldDsKKworCWlmIChXQVJOX09OKGRtYWVuZ2luZV9zbGF2ZV9jb25maWcoZG1hLCAmb21h cF91ZGNfb3V0X2NmZykpKQorCQlyZXR1cm47CisKKwl0eCA9IGRtYWVuZ2luZV9wcmVwX3NsYXZl X3NpbmdsZShkbWEsIHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCwKKwkJCQkJIGxlbmd0 aCwgRE1BX0RFVl9UT19NRU0sIDApOworCWlmIChXQVJOX09OKCF0eCkpCisJCXJldHVybjsKIAog CW9tYXBfd3JpdGV3KFVEQ19SWE5fU1RPUCB8IChwYWNrZXRzIC0gMSksIFVEQ19SWERNQShlcC0+ ZG1hX2NoYW5uZWwpKTsKIAl3ID0gb21hcF9yZWFkdyhVRENfRE1BX0lSUV9FTik7CkBAIC01OTks MjkgKzU5Niw0MiBAQCBzdGF0aWMgdm9pZCBuZXh0X291dF9kbWEoc3RydWN0IG9tYXBfZXAgKmVw LCBzdHJ1Y3Qgb21hcF9yZXEgKnJlcSkKIAlvbWFwX3dyaXRldyhlcC0+YkVuZHBvaW50QWRkcmVz cyAmIDB4ZiwgVURDX0VQX05VTSk7CiAJb21hcF93cml0ZXcoVURDX1NFVF9GSUZPX0VOLCBVRENf Q1RSTCk7CiAKLQlvbWFwX3N0YXJ0X2RtYShlcC0+bGNoKTsKKwljb29raWUgPSBkbWFlbmdpbmVf c3VibWl0KHR4KTsKKwlpZiAoV0FSTl9PTihkbWFfc3VibWl0X2Vycm9yKGNvb2tpZSkpKQorCQly ZXR1cm47CisKKwllcC0+ZG1hX2Nvb2tpZSA9IGNvb2tpZTsKKwlkbWFfYXN5bmNfaXNzdWVfcGVu ZGluZyhkbWEpOworCXJlcS0+ZG1hX2J5dGVzID0gbGVuZ3RoOwogfQogCiBzdGF0aWMgdm9pZAog ZmluaXNoX291dF9kbWEoc3RydWN0IG9tYXBfZXAgKmVwLCBzdHJ1Y3Qgb21hcF9yZXEgKnJlcSwg aW50IHN0YXR1cywgaW50IG9uZSkKIHsKKwlzdHJ1Y3QgZG1hX3R4X3N0YXRlIHN0YXRlOwogCXUx Ngljb3VudCwgdzsKIAotCWlmIChzdGF0dXMgPT0gMCkKLQkJZXAtPmRtYV9jb3VudGVyID0gKHUx NikgKHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCk7Ci0JY291bnQgPSBkbWFfZGVzdF9s ZW4oZXAsIHJlcS0+cmVxLmRtYSArIHJlcS0+cmVxLmFjdHVhbCk7CisJZG1hZW5naW5lX3R4X3N0 YXR1cyhlcC0+ZG1hLCBlcC0+ZG1hX2Nvb2tpZSwgJnN0YXRlKTsKKworCWNvdW50ID0gcmVxLT5k bWFfYnl0ZXMgLSBzdGF0ZS5yZXNpZHVlOwogCWNvdW50ICs9IHJlcS0+cmVxLmFjdHVhbDsKIAlp ZiAob25lKQogCQljb3VudC0tOworCisJLyoKKwkgKiBGSVhNRTogU3VyZWx5IGlmIGNvdW50ID4g cmVxLT5yZXEubGVuZ3RoLCBzb21ldGhpbmcgaGFzIGdvbmUKKwkgKiBzZXJpb3VzbHkgd3Jvbmcg YW5kIHdlJ3ZlIHNjcmliYmxlZCBvdmVyIG1lbW9yeSB3ZSBzaG91bGQgbm90Li4uCisJICogc28g c3VyZWx5IHdlIHNob3VsZCBiZSBhIFdBUk5fT04oKSBhdCB0aGUgdmVyeSBsZWFzdD8KKwkgKi8K IAlpZiAoY291bnQgPD0gcmVxLT5yZXEubGVuZ3RoKQogCQlyZXEtPnJlcS5hY3R1YWwgPSBjb3Vu dDsKIAotCWlmIChjb3VudCAhPSByZXEtPmRtYV9ieXRlcyB8fCBzdGF0dXMpCi0JCW9tYXBfc3Rv cF9kbWEoZXAtPmxjaCk7Ci0KKwlpZiAoY291bnQgIT0gcmVxLT5kbWFfYnl0ZXMgfHwgc3RhdHVz KSB7CisJCWRtYWVuZ2luZV90ZXJtaW5hdGVfYXN5bmMoZXAtPmRtYSk7CiAJLyogaWYgdGhpcyB3 YXNuJ3Qgc2hvcnQsIHJlcXVlc3QgbWF5IG5lZWQgYW5vdGhlciB0cmFuc2ZlciAqLwotCWVsc2Ug aWYgKHJlcS0+cmVxLmFjdHVhbCA8IHJlcS0+cmVxLmxlbmd0aCkKKwl9IGVsc2UgaWYgKHJlcS0+ cmVxLmFjdHVhbCA8IHJlcS0+cmVxLmxlbmd0aCkgewogCQlyZXR1cm47CisJfQogCiAJLyogcngg Y29tcGxldGlvbiAqLwogCXcgPSBvbWFwX3JlYWR3KFVEQ19ETUFfSVJRX0VOKTsKQEAgLTY4Mywz MiArNjkzLDI1IEBAIHN0YXRpYyB2b2lkIGRtYV9pcnEoc3RydWN0IG9tYXBfdWRjICp1ZGMsIHUx NiBpcnFfc3JjKQogCX0KIH0KIAotc3RhdGljIHZvaWQgZG1hX2Vycm9yKGludCBsY2gsIHUxNiBj aF9zdGF0dXMsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IG9tYXBfZXAJKmVwID0gZGF0YTsKLQot CS8qIGlmIGNoX3N0YXR1cyAmIE9NQVBfRE1BX0RST1BfSVJRIC4uLiAqLwotCS8qIGlmIGNoX3N0 YXR1cyAmIE9NQVAxX0RNQV9UT1VUX0lSUSAuLi4gKi8KLQlFUlIoIiVzIGRtYSBlcnJvciwgbGNo ICVkIHN0YXR1cyAlMDJ4XG4iLCBlcC0+ZXAubmFtZSwgbGNoLCBjaF9zdGF0dXMpOwotCi0JLyog Y29tcGxldGUgY3VycmVudCB0cmFuc2ZlciAuLi4gKi8KLX0KLQogc3RhdGljIHZvaWQgZG1hX2No YW5uZWxfY2xhaW0oc3RydWN0IG9tYXBfZXAgKmVwLCB1bnNpZ25lZCBjaGFubmVsKQogeworCWRt YV9jYXBfbWFza190IG1hc2s7CisJc3RydWN0IGRtYV9jaGFuICpkbWE7CisJdTMyIGRtYV9jZmc7 CiAJdTE2CXJlZzsKIAlpbnQJc3RhdHVzLCByZXN0YXJ0LCBpc19pbjsKIAlpbnQJZG1hX2NoYW5u ZWw7CiAKIAlpc19pbiA9IGVwLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTjsKIAlpZiAo aXNfaW4pCi0JCXJlZyA9IG9tYXBfcmVhZHcoVURDX1RYRE1BX0NGRyk7CisJCWRtYV9jZmcgPSBV RENfVFhETUFfQ0ZHOwogCWVsc2UKLQkJcmVnID0gb21hcF9yZWFkdyhVRENfUlhETUFfQ0ZHKTsK KwkJZG1hX2NmZyA9IFVEQ19SWERNQV9DRkc7CisJcmVnID0gb21hcF9yZWFkdyhkbWFfY2ZnKTsK IAlyZWcgfD0gVURDX0RNQV9SRVE7CQkvKiAicHVsc2UiIGFjdGl2YXRlZCAqLwogCiAJZXAtPmRt YV9jaGFubmVsID0gMDsKLQllcC0+bGNoID0gLTE7CisJZXAtPmRtYSA9IE5VTEw7CiAJaWYgKGNo YW5uZWwgPT0gMCB8fCBjaGFubmVsID4gMykgewogCQlpZiAoKHJlZyAmIDB4MGYwMCkgPT0gMCkK IAkJCWNoYW5uZWwgPSAzOwpAQCAtNzIyLDY1ICs3MjUsMzggQEAgc3RhdGljIHZvaWQgZG1hX2No YW5uZWxfY2xhaW0oc3RydWN0IG9tYXBfZXAgKmVwLCB1bnNpZ25lZCBjaGFubmVsKQogCQl9CiAJ fQogCXJlZyB8PSAoMHgwZiAmIGVwLT5iRW5kcG9pbnRBZGRyZXNzKSA8PCAoNCAqIChjaGFubmVs IC0gMSkpOwotCWVwLT5kbWFfY2hhbm5lbCA9IGNoYW5uZWw7CiAKLQlpZiAoaXNfaW4pIHsKKwlk bWFfY2FwX3plcm8obWFzayk7CisJZG1hX2NhcF9zZXQoRE1BX1NMQVZFLCBtYXNrKTsKKworCWlm IChpc19pbikKIAkJZG1hX2NoYW5uZWwgPSBPTUFQX0RNQV9VU0JfVzJGQ19UWDAgLSAxICsgY2hh bm5lbDsKLQkJc3RhdHVzID0gb21hcF9yZXF1ZXN0X2RtYShkbWFfY2hhbm5lbCwKLQkJCWVwLT5l cC5uYW1lLCBkbWFfZXJyb3IsIGVwLCAmZXAtPmxjaCk7Ci0JCWlmIChzdGF0dXMgPT0gMCkgewot CQkJb21hcF93cml0ZXcocmVnLCBVRENfVFhETUFfQ0ZHKTsKLQkJCS8qIEVNSUZGIG9yIFNEUkMg Ki8KLQkJCW9tYXBfc2V0X2RtYV9zcmNfYnVyc3RfbW9kZShlcC0+bGNoLAotCQkJCQkJT01BUF9E TUFfREFUQV9CVVJTVF80KTsKLQkJCW9tYXBfc2V0X2RtYV9zcmNfZGF0YV9wYWNrKGVwLT5sY2gs IDEpOwotCQkJLyogVElQQiAqLwotCQkJb21hcF9zZXRfZG1hX2Rlc3RfcGFyYW1zKGVwLT5sY2gs Ci0JCQkJT01BUF9ETUFfUE9SVF9USVBCLAotCQkJCU9NQVBfRE1BX0FNT0RFX0NPTlNUQU5ULAot CQkJCVVEQ19EQVRBX0RNQSwKLQkJCQkwLCAwKTsKLQkJfQotCX0gZWxzZSB7CisJZWxzZQogCQlk bWFfY2hhbm5lbCA9IE9NQVBfRE1BX1VTQl9XMkZDX1JYMCAtIDEgKyBjaGFubmVsOwotCQlzdGF0 dXMgPSBvbWFwX3JlcXVlc3RfZG1hKGRtYV9jaGFubmVsLAotCQkJZXAtPmVwLm5hbWUsIGRtYV9l cnJvciwgZXAsICZlcC0+bGNoKTsKLQkJaWYgKHN0YXR1cyA9PSAwKSB7Ci0JCQlvbWFwX3dyaXRl dyhyZWcsIFVEQ19SWERNQV9DRkcpOwotCQkJLyogVElQQiAqLwotCQkJb21hcF9zZXRfZG1hX3Ny Y19wYXJhbXMoZXAtPmxjaCwKLQkJCQlPTUFQX0RNQV9QT1JUX1RJUEIsCi0JCQkJT01BUF9ETUFf QU1PREVfQ09OU1RBTlQsCi0JCQkJVURDX0RBVEFfRE1BLAotCQkJCTAsIDApOwotCQkJLyogRU1J RkYgb3IgU0RSQyAqLwotCQkJb21hcF9zZXRfZG1hX2Rlc3RfYnVyc3RfbW9kZShlcC0+bGNoLAot CQkJCQkJT01BUF9ETUFfREFUQV9CVVJTVF80KTsKLQkJCW9tYXBfc2V0X2RtYV9kZXN0X2RhdGFf cGFjayhlcC0+bGNoLCAxKTsKLQkJfQotCX0KLQlpZiAoc3RhdHVzKQotCQllcC0+ZG1hX2NoYW5u ZWwgPSAwOwotCWVsc2UgewotCQllcC0+aGFzX2RtYSA9IDE7Ci0JCW9tYXBfZGlzYWJsZV9kbWFf aXJxKGVwLT5sY2gsIE9NQVBfRE1BX0JMT0NLX0lSUSk7CiAKLQkJLyogY2hhbm5lbCB0eXBlIFA6 IGh3IHN5bmNoIChmaWZvKSAqLwotCQlpZiAoIWNwdV9pc19vbWFwMTV4eCgpKQotCQkJb21hcF9z ZXRfZG1hX2NoYW5uZWxfbW9kZShlcC0+bGNoLCBPTUFQX0RNQV9MQ0hfUCk7CisJZG1hID0gX19k bWFfcmVxdWVzdF9jaGFubmVsKCZtYXNrLCBvbWFwX2RtYV9maWx0ZXJfZm4sCisJCQkJICAgICh2 b2lkICopZG1hX2NoYW5uZWwpOworCWlmIChkbWEpIHsKKwkJb21hcF93cml0ZXcocmVnLCBkbWFf Y2ZnKTsKKwkJZXAtPmRtYV9jaGFubmVsID0gY2hhbm5lbDsKKwkJZXAtPmRtYSA9IGRtYTsKKwkJ ZXAtPmhhc19kbWEgPSAxOworCQlzdGF0dXMgPSAwOworCX0gZWxzZSB7CisJCWVwLT5kbWFfY2hh bm5lbCA9IDA7CisJCXN0YXR1cyA9IC1FSU5WQUw7CiAJfQogCiBqdXN0X3Jlc3RhcnQ6CiAJLyog cmVzdGFydCBhbnkgcXVldWUsIGV2ZW4gaWYgdGhlIGNsYWltIGZhaWxlZCAgKi8KIAlyZXN0YXJ0 ID0gIWVwLT5zdG9wcGVkICYmICFsaXN0X2VtcHR5KCZlcC0+cXVldWUpOwogCi0JaWYgKHN0YXR1 cykKLQkJREJHKCIlcyBubyBkbWEgY2hhbm5lbDogJWQlc1xuIiwgZXAtPmVwLm5hbWUsIHN0YXR1 cywKLQkJCXJlc3RhcnQgPyAiIChyZXN0YXJ0KSIgOiAiIik7CisJaWYgKGVwLT5kbWEpCisJCURC RygiJXMgY2xhaW1lZCAlY3hkbWElZCBkbWFlbmdpbmUgJXMlc1xuIiwgZXAtPmVwLm5hbWUsCisJ CQlpc19pbiA/ICd0JyA6ICdyJywgZXAtPmRtYV9jaGFubmVsIC0gMSwKKwkJCWRtYV9jaGFuX25h bWUoZXAtPmRtYSksIHJlc3RhcnQgPyAiIChyZXN0YXJ0KSIgOiAiIik7CiAJZWxzZQotCQlEQkco IiVzIGNsYWltZWQgJWN4ZG1hJWQgbGNoICVkJXNcbiIsIGVwLT5lcC5uYW1lLAotCQkJaXNfaW4g PyAndCcgOiAncicsCi0JCQllcC0+ZG1hX2NoYW5uZWwgLSAxLCBlcC0+bGNoLAorCQlEQkcoIiVz IG5vIGRtYSBjaGFubmVsOiAlZCVzXG4iLCBlcC0+ZXAubmFtZSwgc3RhdHVzLAogCQkJcmVzdGFy dCA/ICIgKHJlc3RhcnQpIiA6ICIiKTsKIAogCWlmIChyZXN0YXJ0KSB7CkBAIC04MTQsNyArNzkw LDggQEAgc3RhdGljIHZvaWQgZG1hX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3Qgb21hcF9lcCAqZXAp CiAJZWxzZQogCQlyZXEgPSBOVUxMOwogCi0JYWN0aXZlID0gb21hcF9nZXRfZG1hX2FjdGl2ZV9z dGF0dXMoZXAtPmxjaCk7CisJYWN0aXZlID0gZG1hX2FzeW5jX2lzX3R4X2NvbXBsZXRlKGVwLT5k bWEsIGVwLT5kbWFfY29va2llLCBOVUxMLCBOVUxMKQorCQkJPT0gRE1BX0lOX1BST0dSRVNTOwog CiAJREJHKCIlcyByZWxlYXNlICVzICVjeGRtYSVkICVwXG4iLCBlcC0+ZXAubmFtZSwKIAkJCWFj dGl2ZSA/ICJhY3RpdmUiIDogImlkbGUiLApAQCAtODUwLDkgKzgyNyw5IEBAIHN0YXRpYyB2b2lk IGRtYV9jaGFubmVsX3JlbGVhc2Uoc3RydWN0IG9tYXBfZXAgKmVwKQogCQlpZiAocmVxKQogCQkJ ZmluaXNoX291dF9kbWEoZXAsIHJlcSwgLUVDT05OUkVTRVQsIDApOwogCX0KLQlvbWFwX2ZyZWVf ZG1hKGVwLT5sY2gpOworCWRtYV9yZWxlYXNlX2NoYW5uZWwoZXAtPmRtYSk7CiAJZXAtPmRtYV9j aGFubmVsID0gMDsKLQllcC0+bGNoID0gLTE7CisJZXAtPmRtYSA9IE5VTEw7CiAJLyogaGFzX2Rt YSBzdGlsbCBzZXQsIHRpbGwgZW5kcG9pbnQgaXMgZnVsbHkgcXVpZXNjZWQgKi8KIH0KIApAQCAt MjE0Niw5ICsyMTIzLDkgQEAgc3RhdGljIHZvaWQgcHJvY19lcF9zaG93KHN0cnVjdCBzZXFfZmls ZSAqcywgc3RydWN0IG9tYXBfZXAgKmVwKQogCXVzZV9lcChlcCwgMCk7CiAKIAlpZiAodXNlX2Rt YSAmJiBlcC0+aGFzX2RtYSkKLQkJc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAiKCVjeGRtYSVk IGxjaCVkKSAiLAorCQlzbnByaW50ZihidWYsIHNpemVvZiBidWYsICIoJWN4ZG1hJWQgZG1hICVz KSAiLAogCQkJKGVwLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTikgPyAndCcgOiAncics Ci0JCQllcC0+ZG1hX2NoYW5uZWwgLSAxLCBlcC0+bGNoKTsKKwkJCWVwLT5kbWFfY2hhbm5lbCAt IDEsIGRtYV9jaGFuX25hbWUoZXAtPmRtYSkpOwogCWVsc2UKIAkJYnVmWzBdID0gMDsKIApAQCAt MjE5NCw5ICsyMTcxLDExIEBAIHN0YXRpYyB2b2lkIHByb2NfZXBfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKnMsIHN0cnVjdCBvbWFwX2VwICplcCkKIAkJCXVuc2lnbmVkCWxlbmd0aCA9IHJlcS0+cmVx LmFjdHVhbDsKIAogCQkJaWYgKHVzZV9kbWEgJiYgYnVmWzBdKSB7Ci0JCQkJbGVuZ3RoICs9ICgo ZXAtPmJFbmRwb2ludEFkZHJlc3MgJiBVU0JfRElSX0lOKQotCQkJCQkJPyBkbWFfc3JjX2xlbiA6 IGRtYV9kZXN0X2xlbikKLQkJCQkJKGVwLCByZXEtPnJlcS5kbWEgKyBsZW5ndGgpOworCQkJCXN0 cnVjdCBkbWFfdHhfc3RhdGUgc3RhdGU7CisKKwkJCQlkbWFlbmdpbmVfdHhfc3RhdHVzKGVwLT5k bWEsIGVwLT5kbWFfY29va2llLAorCQkJCQkJICAgICZzdGF0ZSk7CisJCQkJbGVuZ3RoICs9IHJl cS0+ZG1hX2J5dGVzIC0gc3RhdGUucmVzaWR1ZTsKIAkJCQlidWZbMF0gPSAwOwogCQkJfQogCQkJ c2VxX3ByaW50ZihzLCAiXHRyZXEgJXAgbGVuICVkLyVkIGJ1ZiAlcFxuIiwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvb21hcF91ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC91 ZGMvb21hcF91ZGMuaAppbmRleCAwMGY5ZTYwOGU3NTUuLmUwNGM0OGY2NjllZCAxMDA2NDQKLS0t IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9vbWFwX3VkYy5oCisrKyBiL2RyaXZlcnMvdXNiL2dh ZGdldC91ZGMvb21hcF91ZGMuaApAQCAtMTUyLDcgKzE1Miw4IEBAIHN0cnVjdCBvbWFwX2VwIHsK IAl1OAkJCQlhY2t3YWl0OwogCXU4CQkJCWRtYV9jaGFubmVsOwogCXUxNgkJCQlkbWFfY291bnRl cjsKLQlpbnQJCQkJbGNoOworCXN0cnVjdCBkbWFfY2hhbgkJCSpkbWE7CisJZG1hX2Nvb2tpZV90 CQkJZG1hX2Nvb2tpZTsKIAlzdHJ1Y3Qgb21hcF91ZGMJCQkqdWRjOwogCXN0cnVjdCB0aW1lcl9s aXN0CQl0aW1lcjsKIH07Cg==