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: [v1,3/5] dmaengine: dw: Split DW and iDMA 32-bit operations From: Andy Shevchenko Message-Id: <20181130203646.68615-3-andriy.shevchenko@linux.intel.com> Date: Fri, 30 Nov 2018 22:36:44 +0200 To: Viresh Kumar , dmaengine@vger.kernel.org, Vinod Koul Cc: Andy Shevchenko List-ID: SGVyZSBpcyBhIGtpbmRhIGJpZyByZWZhY3RvcmluZyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gZG9u ZQppbiB0aGUgZmlyc3QgcGxhY2UsIHdoZW4gSW50ZWwgaURNQSAzMi1iaXQgc3VwcG9ydCBhcHBl YXJlZC4KCkl0IHNwbGl0cyBvcGVyYXRpb25zIHdoaWNoIGFyZSBkaWZmZXJlbnQgdG8gU3lub3Bz eXMgRGVzaWduV2FyZSBhbmQKSW50ZWwgaURNQSAzMi1iaXQgY29udHJvbGxlcnMuCgpObyBmdW5j dGlvbmFsIGNoYW5nZSBpbnRlbmRlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8 YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZG1hL2R3L01h a2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9kbWEvZHcvY29yZS5jICAgICAg ICAgICAgICAgIHwgMTg4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9kbWEv ZHcvZHcuYyAgICAgICAgICAgICAgICAgIHwgMTA5ICsrKysrKysrKysrKysrKysKIGRyaXZlcnMv ZG1hL2R3L2lkbWEzMi5jICAgICAgICAgICAgICB8IDEzNyArKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2RtYS9kdy9pbnRlcm5hbC5oICAgICAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZG1h L2R3L3BjaS5jICAgICAgICAgICAgICAgICB8ICA0NSArKysrLS0tCiBkcml2ZXJzL2RtYS9kdy9w bGF0Zm9ybS5jICAgICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZG1hL2R3L3JlZ3MuaCAgICAg ICAgICAgICAgICB8ICAxMyArKwogaW5jbHVkZS9saW51eC9kbWEvZHcuaCAgICAgICAgICAgICAg IHwgICA0ICsKIGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaCB8ICAgMiAtCiAx MCBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMTc5IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL2R3L2R3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2RtYS9kdy9pZG1hMzIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2R3L01ha2Vm aWxlIGIvZHJpdmVycy9kbWEvZHcvTWFrZWZpbGUKaW5kZXggMmI5NDljMmU0NTA0Li42M2VkODk1 YzA5YWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2R3L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv ZG1hL2R3L01ha2VmaWxlCkBAIC0xLDYgKzEsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAogb2JqLSQoQ09ORklHX0RXX0RNQUNfQ09SRSkJKz0gZHdfZG1hY19jb3JlLm8K LWR3X2RtYWNfY29yZS1vYmpzCTo9IGNvcmUubworZHdfZG1hY19jb3JlLW9ianMJOj0gY29yZS5v IGR3Lm8gaWRtYTMyLm8KIAogb2JqLSQoQ09ORklHX0RXX0RNQUMpCQkrPSBkd19kbWFjLm8KIGR3 X2RtYWMtb2JqcwkJOj0gcGxhdGZvcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvY29y ZS5jIGIvZHJpdmVycy9kbWEvZHcvY29yZS5jCmluZGV4IGU4NWIwNzhmYzIwNy4uNzExZjRkMTli YmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9kdy9jb3JlLmMKKysrIGIvZHJpdmVycy9kbWEv ZHcvY29yZS5jCkBAIC0xMzgsNDIgKzEzOCw2IEBAIHN0YXRpYyB2b2lkIGR3Y19kZXNjX3B1dChz dHJ1Y3QgZHdfZG1hX2NoYW4gKmR3Yywgc3RydWN0IGR3X2Rlc2MgKmRlc2MpCiAJZHdjLT5kZXNj c19hbGxvY2F0ZWQtLTsKIH0KIAotc3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemVfY2hhbl9pZG1h MzIoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCi17Ci0JdTMyIGNmZ2hpID0gMDsKLQl1MzIgY2Zn bG8gPSAwOwotCi0JLyogU2V0IGRlZmF1bHQgYnVyc3QgYWxpZ25tZW50ICovCi0JY2ZnbG8gfD0g SURNQTMyQ19DRkdMX0RTVF9CVVJTVF9BTElHTiB8IElETUEzMkNfQ0ZHTF9TUkNfQlVSU1RfQUxJ R047Ci0KLQkvKiBMb3cgNCBiaXRzIG9mIHRoZSByZXF1ZXN0IGxpbmVzICovCi0JY2ZnaGkgfD0g SURNQTMyQ19DRkdIX0RTVF9QRVIoZHdjLT5kd3MuZHN0X2lkICYgMHhmKTsKLQljZmdoaSB8PSBJ RE1BMzJDX0NGR0hfU1JDX1BFUihkd2MtPmR3cy5zcmNfaWQgJiAweGYpOwotCi0JLyogUmVxdWVz dCBsaW5lIGV4dGVuc2lvbiAoMiBiaXRzKSAqLwotCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9EU1Rf UEVSX0VYVChkd2MtPmR3cy5kc3RfaWQgPj4gNCAmIDB4Myk7Ci0JY2ZnaGkgfD0gSURNQTMyQ19D RkdIX1NSQ19QRVJfRVhUKGR3Yy0+ZHdzLnNyY19pZCA+PiA0ICYgMHgzKTsKLQotCWNoYW5uZWxf d3JpdGVsKGR3YywgQ0ZHX0xPLCBjZmdsbyk7Ci0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfSEks IGNmZ2hpKTsKLX0KLQotc3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemVfY2hhbl9kdyhzdHJ1Y3Qg ZHdfZG1hX2NoYW4gKmR3YykKLXsKLQl1MzIgY2ZnaGkgPSBEV0NfQ0ZHSF9GSUZPX01PREU7Ci0J dTMyIGNmZ2xvID0gRFdDX0NGR0xfQ0hfUFJJT1IoZHdjLT5wcmlvcml0eSk7Ci0JYm9vbCBoc19w b2xhcml0eSA9IGR3Yy0+ZHdzLmhzX3BvbGFyaXR5OwotCi0JY2ZnaGkgfD0gRFdDX0NGR0hfRFNU X1BFUihkd2MtPmR3cy5kc3RfaWQpOwotCWNmZ2hpIHw9IERXQ19DRkdIX1NSQ19QRVIoZHdjLT5k d3Muc3JjX2lkKTsKLQotCS8qIFNldCBwb2xhcml0eSBvZiBoYW5kc2hha2UgaW50ZXJmYWNlICov Ci0JY2ZnbG8gfD0gaHNfcG9sYXJpdHkgPyBEV0NfQ0ZHTF9IU19EU1RfUE9MIHwgRFdDX0NGR0xf SFNfU1JDX1BPTCA6IDA7Ci0KLQljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8pOwot CWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJLCBjZmdoaSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGR3 Y19pbml0aWFsaXplKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjKQogewogCXN0cnVjdCBkd19kbWEg KmR3ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwpAQCAtMTgxLDEwICsxNDUsNyBAQCBz dGF0aWMgdm9pZCBkd2NfaW5pdGlhbGl6ZShzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YykKIAlpZiAo dGVzdF9iaXQoRFdfRE1BX0lTX0lOSVRJQUxJWkVELCAmZHdjLT5mbGFncykpCiAJCXJldHVybjsK IAotCWlmIChkdy0+cGRhdGEtPmlzX2lkbWEzMikKLQkJZHdjX2luaXRpYWxpemVfY2hhbl9pZG1h MzIoZHdjKTsKLQllbHNlCi0JCWR3Y19pbml0aWFsaXplX2NoYW5fZHcoZHdjKTsKKwlkdy0+aW5p dGlhbGl6ZV9jaGFuKGR3Yyk7CiAKIAkvKiBFbmFibGUgaW50ZXJydXB0cyAqLwogCWNoYW5uZWxf c2V0X2JpdChkdywgTUFTSy5YRkVSLCBkd2MtPm1hc2spOwpAQCAtMjEzLDM3ICsxNzQsNiBAQCBz dGF0aWMgaW5saW5lIHZvaWQgZHdjX2NoYW5fZGlzYWJsZShzdHJ1Y3QgZHdfZG1hICpkdywgc3Ry dWN0IGR3X2RtYV9jaGFuICpkd2MpCiAJCWNwdV9yZWxheCgpOwogfQogCi1zdGF0aWMgdTMyIGJ5 dGVzMmJsb2NrKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCBzaXplX3QgYnl0ZXMsCi0JCQkgIHVu c2lnbmVkIGludCB3aWR0aCwgc2l6ZV90ICpsZW4pCi17Ci0Jc3RydWN0IGR3X2RtYSAqZHcgPSB0 b19kd19kbWEoZHdjLT5jaGFuLmRldmljZSk7Ci0JdTMyIGJsb2NrOwotCi0JLyogQWx3YXlzIGlu IGJ5dGVzIGZvciBpRE1BIDMyLWJpdCAqLwotCWlmIChkdy0+cGRhdGEtPmlzX2lkbWEzMikKLQkJ d2lkdGggPSAwOwotCi0JaWYgKChieXRlcyA+PiB3aWR0aCkgPiBkd2MtPmJsb2NrX3NpemUpIHsK LQkJYmxvY2sgPSBkd2MtPmJsb2NrX3NpemU7Ci0JCSpsZW4gPSBibG9jayA8PCB3aWR0aDsKLQl9 IGVsc2UgewotCQlibG9jayA9IGJ5dGVzID4+IHdpZHRoOwotCQkqbGVuID0gYnl0ZXM7Ci0JfQot Ci0JcmV0dXJuIGJsb2NrOwotfQotCi1zdGF0aWMgc2l6ZV90IGJsb2NrMmJ5dGVzKHN0cnVjdCBk d19kbWFfY2hhbiAqZHdjLCB1MzIgYmxvY2ssIHUzMiB3aWR0aCkKLXsKLQlzdHJ1Y3QgZHdfZG1h ICpkdyA9IHRvX2R3X2RtYShkd2MtPmNoYW4uZGV2aWNlKTsKLQotCWlmIChkdy0+cGRhdGEtPmlz X2lkbWEzMikKLQkJcmV0dXJuIElETUEzMkNfQ1RMSF9CTE9DS19UUyhibG9jayk7Ci0KLQlyZXR1 cm4gRFdDX0NUTEhfQkxPQ0tfVFMoYmxvY2spIDw8IHdpZHRoOwotfQotCiAvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwogCiAvKiBQZXJmb3JtIHNpbmdsZSBibG9jayB0cmFuc2ZlciAqLwpAQCAtMzg5LDEwICsz MTksMTEgQEAgc3RhdGljIHZvaWQgZHdjX2NvbXBsZXRlX2FsbChzdHJ1Y3QgZHdfZG1hICpkdywg c3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCiAvKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIHdlcmUg YWxyZWFkeSByZWNlaXZlZCBmcm9tIHNvdXJjZSAqLwogc3RhdGljIGlubGluZSB1MzIgZHdjX2dl dF9zZW50KHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjKQogeworCXN0cnVjdCBkd19kbWEgKmR3ID0g dG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwogCXUzMiBjdGxoaSA9IGNoYW5uZWxfcmVhZGwo ZHdjLCBDVExfSEkpOwogCXUzMiBjdGxsbyA9IGNoYW5uZWxfcmVhZGwoZHdjLCBDVExfTE8pOwog Ci0JcmV0dXJuIGJsb2NrMmJ5dGVzKGR3YywgY3RsaGksIGN0bGxvID4+IDQgJiA3KTsKKwlyZXR1 cm4gZHctPmJsb2NrMmJ5dGVzKGR3YywgY3RsaGksIGN0bGxvID4+IDQgJiA3KTsKIH0KIAogc3Rh dGljIHZvaWQgZHdjX3NjYW5fZGVzY3JpcHRvcnMoc3RydWN0IGR3X2RtYSAqZHcsIHN0cnVjdCBk d19kbWFfY2hhbiAqZHdjKQpAQCAtNjQ5LDcgKzU4MCw3IEBAIGR3Y19wcmVwX2RtYV9tZW1jcHko c3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IGRlc3QsIGRtYV9hZGRyX3Qgc3JjLAog CXVuc2lnbmVkIGludAkJc3JjX3dpZHRoOwogCXVuc2lnbmVkIGludAkJZHN0X3dpZHRoOwogCXVu c2lnbmVkIGludAkJZGF0YV93aWR0aCA9IGR3LT5wZGF0YS0+ZGF0YV93aWR0aFttX21hc3Rlcl07 Ci0JdTMyCQkJY3RsbG87CisJdTMyCQkJY3RsbG8sIGN0bGhpOwogCXU4CQkJbG1zID0gRFdDX0xM UF9MTVMobV9tYXN0ZXIpOwogCiAJZGV2X3ZkYmcoY2hhbjJkZXYoY2hhbiksCkBAIC02NzgsMTAg KzYwOSwxMiBAQCBkd2NfcHJlcF9kbWFfbWVtY3B5KHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgZG1h X2FkZHJfdCBkZXN0LCBkbWFfYWRkcl90IHNyYywKIAkJaWYgKCFkZXNjKQogCQkJZ290byBlcnJf ZGVzY19nZXQ7CiAKKwkJY3RsaGkgPSBkdy0+Ynl0ZXMyYmxvY2soZHdjLCBsZW4gLSBvZmZzZXQs IHNyY193aWR0aCwgJnhmZXJfY291bnQpOworCiAJCWxsaV93cml0ZShkZXNjLCBzYXIsIHNyYyAr IG9mZnNldCk7CiAJCWxsaV93cml0ZShkZXNjLCBkYXIsIGRlc3QgKyBvZmZzZXQpOwogCQlsbGlf d3JpdGUoZGVzYywgY3RsbG8sIGN0bGxvKTsKLQkJbGxpX3dyaXRlKGRlc2MsIGN0bGhpLCBieXRl czJibG9jayhkd2MsIGxlbiAtIG9mZnNldCwgc3JjX3dpZHRoLCAmeGZlcl9jb3VudCkpOworCQls bGlfd3JpdGUoZGVzYywgY3RsaGksIGN0bGhpKTsKIAkJZGVzYy0+bGVuID0geGZlcl9jb3VudDsK IAogCQlpZiAoIWZpcnN0KSB7CkBAIC03MTksNyArNjUyLDcgQEAgZHdjX3ByZXBfc2xhdmVfc2co c3RydWN0IGRtYV9jaGFuICpjaGFuLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwKIAlzdHJ1Y3Qg ZG1hX3NsYXZlX2NvbmZpZwkqc2NvbmZpZyA9ICZkd2MtPmRtYV9zY29uZmlnOwogCXN0cnVjdCBk d19kZXNjCQkqcHJldjsKIAlzdHJ1Y3QgZHdfZGVzYwkJKmZpcnN0OwotCXUzMgkJCWN0bGxvOwor CXUzMgkJCWN0bGxvLCBjdGxoaTsKIAl1OAkJCW1fbWFzdGVyID0gZHdjLT5kd3MubV9tYXN0ZXI7 CiAJdTgJCQlsbXMgPSBEV0NfTExQX0xNUyhtX21hc3Rlcik7CiAJZG1hX2FkZHJfdAkJcmVnOwpA QCAtNzY2LDkgKzY5OSwxMSBAQCBkd2NfcHJlcF9zbGF2ZV9zZyhzdHJ1Y3QgZG1hX2NoYW4gKmNo YW4sIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLAogCQkJaWYgKCFkZXNjKQogCQkJCWdvdG8gZXJy X2Rlc2NfZ2V0OwogCisJCQljdGxoaSA9IGR3LT5ieXRlczJibG9jayhkd2MsIGxlbiwgbWVtX3dp ZHRoLCAmZGxlbik7CisKIAkJCWxsaV93cml0ZShkZXNjLCBzYXIsIG1lbSk7CiAJCQlsbGlfd3Jp dGUoZGVzYywgZGFyLCByZWcpOwotCQkJbGxpX3dyaXRlKGRlc2MsIGN0bGhpLCBieXRlczJibG9j ayhkd2MsIGxlbiwgbWVtX3dpZHRoLCAmZGxlbikpOworCQkJbGxpX3dyaXRlKGRlc2MsIGN0bGhp LCBjdGxoaSk7CiAJCQlsbGlfd3JpdGUoZGVzYywgY3RsbG8sIGN0bGxvIHwgRFdDX0NUTExfU1JD X1dJRFRIKG1lbV93aWR0aCkpOwogCQkJZGVzYy0+bGVuID0gZGxlbjsKIApAQCAtODEyLDkgKzc0 NywxMSBAQCBkd2NfcHJlcF9zbGF2ZV9zZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHN0cnVjdCBz Y2F0dGVybGlzdCAqc2dsLAogCQkJaWYgKCFkZXNjKQogCQkJCWdvdG8gZXJyX2Rlc2NfZ2V0Owog CisJCQljdGxoaSA9IGR3LT5ieXRlczJibG9jayhkd2MsIGxlbiwgcmVnX3dpZHRoLCAmZGxlbik7 CisKIAkJCWxsaV93cml0ZShkZXNjLCBzYXIsIHJlZyk7CiAJCQlsbGlfd3JpdGUoZGVzYywgZGFy LCBtZW0pOwotCQkJbGxpX3dyaXRlKGRlc2MsIGN0bGhpLCBieXRlczJibG9jayhkd2MsIGxlbiwg cmVnX3dpZHRoLCAmZGxlbikpOworCQkJbGxpX3dyaXRlKGRlc2MsIGN0bGhpLCBjdGxoaSk7CiAJ CQltZW1fd2lkdGggPSBfX2ZmcyhkYXRhX3dpZHRoIHwgbWVtIHwgZGxlbik7CiAJCQlsbGlfd3Jp dGUoZGVzYywgY3RsbG8sIGN0bGxvIHwgRFdDX0NUTExfRFNUX1dJRFRIKG1lbV93aWR0aCkpOwog CQkJZGVzYy0+bGVuID0gZGxlbjsKQEAgLTg3NCwyMiArODExLDEyIEBAIEVYUE9SVF9TWU1CT0xf R1BMKGR3X2RtYV9maWx0ZXIpOwogc3RhdGljIGludCBkd2NfY29uZmlnKHN0cnVjdCBkbWFfY2hh biAqY2hhbiwgc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgKnNjb25maWcpCiB7CiAJc3RydWN0IGR3 X2RtYV9jaGFuICpkd2MgPSB0b19kd19kbWFfY2hhbihjaGFuKTsKLQlzdHJ1Y3QgZG1hX3NsYXZl X2NvbmZpZyAqc2MgPSAmZHdjLT5kbWFfc2NvbmZpZzsKIAlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRv X2R3X2RtYShjaGFuLT5kZXZpY2UpOwotCS8qCi0JICogRml4IHNjb25maWcncyBidXJzdCBzaXpl IGFjY29yZGluZyB0byBkd19kbWFjLiBXZSBuZWVkIHRvIGNvbnZlcnQKLQkgKiB0aGVtIGFzOgot CSAqIDEgLT4gMCwgNCAtPiAxLCA4IC0+IDIsIDE2IC0+IDMuCi0JICoKLQkgKiBOT1RFOiBidXJz dCBzaXplIDIgaXMgbm90IHN1cHBvcnRlZCBieSBEZXNpZ25XYXJlIGNvbnRyb2xsZXIuCi0JICog ICAgICAgaURNQSAzMi1iaXQgc3VwcG9ydHMgaXQuCi0JICovCi0JdTMyIHMgPSBkdy0+cGRhdGEt PmlzX2lkbWEzMiA/IDEgOiAyOwogCiAJbWVtY3B5KCZkd2MtPmRtYV9zY29uZmlnLCBzY29uZmln LCBzaXplb2YoKnNjb25maWcpKTsKIAotCXNjLT5zcmNfbWF4YnVyc3QgPSBzYy0+c3JjX21heGJ1 cnN0ID4gMSA/IGZscyhzYy0+c3JjX21heGJ1cnN0KSAtIHMgOiAwOwotCXNjLT5kc3RfbWF4YnVy c3QgPSBzYy0+ZHN0X21heGJ1cnN0ID4gMSA/IGZscyhzYy0+ZHN0X21heGJ1cnN0KSAtIHMgOiAw OworCWR3LT5lbmNvZGVfbWF4YnVyc3QoZHdjLCAmZHdjLT5kbWFfc2NvbmZpZy5zcmNfbWF4YnVy c3QpOworCWR3LT5lbmNvZGVfbWF4YnVyc3QoZHdjLCAmZHdjLT5kbWFfc2NvbmZpZy5kc3RfbWF4 YnVyc3QpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC04OTgsMTYgKzgyNSw5IEBAIHN0YXRpYyB2b2lk IGR3Y19jaGFuX3BhdXNlKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCBib29sIGRyYWluKQogewog CXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwogCXVuc2ln bmVkIGludAkJY291bnQgPSAyMDsJLyogdGltZW91dCBpdGVyYXRpb25zICovCi0JdTMyCQkJY2Zn bG87CiAKLQljZmdsbyA9IGNoYW5uZWxfcmVhZGwoZHdjLCBDRkdfTE8pOwotCWlmIChkdy0+cGRh dGEtPmlzX2lkbWEzMikgewotCQlpZiAoZHJhaW4pCi0JCQljZmdsbyB8PSBJRE1BMzJDX0NGR0xf Q0hfRFJBSU47Ci0JCWVsc2UKLQkJCWNmZ2xvICY9IH5JRE1BMzJDX0NGR0xfQ0hfRFJBSU47Ci0J fQotCWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0xPLCBjZmdsbyB8IERXQ19DRkdMX0NIX1NVU1Ap OworCWR3LT5zdXNwZW5kX2NoYW4oZHdjLCBkcmFpbik7CisKIAl3aGlsZSAoIShjaGFubmVsX3Jl YWRsKGR3YywgQ0ZHX0xPKSAmIERXQ19DRkdMX0ZJRk9fRU1QVFkpICYmIGNvdW50LS0pCiAJCXVk ZWxheSgyKTsKIApAQCAtMTA1NiwzMyArOTc2LDcgQEAgc3RhdGljIHZvaWQgZHdjX2lzc3VlX3Bl bmRpbmcoc3RydWN0IGRtYV9jaGFuICpjaGFuKQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKgot ICogUHJvZ3JhbSBGSUZPIHNpemUgb2YgY2hhbm5lbHMuCi0gKgotICogQnkgZGVmYXVsdCBmdWxs IEZJRk8gKDUxMiBieXRlcykgaXMgYXNzaWduZWQgdG8gY2hhbm5lbCAwLiBIZXJlIHdlCi0gKiBz bGljZSBGSUZPIG9uIGVxdWFsIHBhcnRzIGJldHdlZW4gY2hhbm5lbHMuCi0gKi8KLXN0YXRpYyB2 b2lkIGlkbWEzMl9maWZvX3BhcnRpdGlvbihzdHJ1Y3QgZHdfZG1hICpkdykKLXsKLQl1NjQgdmFs dWUgPSBJRE1BMzJDX0ZQX1BTSVpFX0NIMCg2NCkgfCBJRE1BMzJDX0ZQX1BTSVpFX0NIMSg2NCkg fAotCQkgICAgSURNQTMyQ19GUF9VUERBVEU7Ci0JdTY0IGZpZm9fcGFydGl0aW9uID0gMDsKLQot CWlmICghZHctPnBkYXRhLT5pc19pZG1hMzIpCi0JCXJldHVybjsKLQotCS8qIEZpbGwgRklGT19Q QVJUSVRJT04gbG93IGJpdHMgKENoYW5uZWxzIDAuLjEsIDQuLjUpICovCi0JZmlmb19wYXJ0aXRp b24gfD0gdmFsdWUgPDwgMDsKLQotCS8qIEZpbGwgRklGT19QQVJUSVRJT04gaGlnaCBiaXRzIChD aGFubmVscyAyLi4zLCA2Li43KSAqLwotCWZpZm9fcGFydGl0aW9uIHw9IHZhbHVlIDw8IDMyOwot Ci0JLyogUHJvZ3JhbSBGSUZPIFBhcnRpdGlvbiByZWdpc3RlcnMgLSAxMjggYnl0ZXMgZm9yIGVh Y2ggY2hhbm5lbCAqLwotCWlkbWEzMl93cml0ZXEoZHcsIEZJRk9fUEFSVElUSU9OMSwgZmlmb19w YXJ0aXRpb24pOwotCWlkbWEzMl93cml0ZXEoZHcsIEZJRk9fUEFSVElUSU9OMCwgZmlmb19wYXJ0 aXRpb24pOwotfQotCi1zdGF0aWMgdm9pZCBkd19kbWFfb2ZmKHN0cnVjdCBkd19kbWEgKmR3KQor dm9pZCBkb19kbWFfb2ZmKHN0cnVjdCBkd19kbWEgKmR3KQogewogCXVuc2lnbmVkIGludCBpOwog CkBAIC0xMTAxLDcgKzk5NSw3IEBAIHN0YXRpYyB2b2lkIGR3X2RtYV9vZmYoc3RydWN0IGR3X2Rt YSAqZHcpCiAJCWNsZWFyX2JpdChEV19ETUFfSVNfSU5JVElBTElaRUQsICZkdy0+Y2hhbltpXS5m bGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIGR3X2RtYV9vbihzdHJ1Y3QgZHdfZG1hICpkdykKK3Zv aWQgZG9fZG1hX29uKHN0cnVjdCBkd19kbWEgKmR3KQogewogCWRtYV93cml0ZWwoZHcsIENGRywg RFdfQ0ZHX0RNQV9FTik7CiB9CkBAIC0xMTM3LDcgKzEwMzEsNyBAQCBzdGF0aWMgaW50IGR3Y19h bGxvY19jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiAKIAkvKiBFbmFibGUg Y29udHJvbGxlciBoZXJlIGlmIG5lZWRlZCAqLwogCWlmICghZHctPmluX3VzZSkKLQkJZHdfZG1h X29uKGR3KTsKKwkJZG9fZG1hX29uKGR3KTsKIAlkdy0+aW5fdXNlIHw9IGR3Yy0+bWFzazsKIAog CXJldHVybiAwOwpAQCAtMTE3NSwzMCArMTA2OSwyNSBAQCBzdGF0aWMgdm9pZCBkd2NfZnJlZV9j aGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiAJLyogRGlzYWJsZSBjb250cm9s bGVyIGluIGNhc2UgaXQgd2FzIGEgbGFzdCB1c2VyICovCiAJZHctPmluX3VzZSAmPSB+ZHdjLT5t YXNrOwogCWlmICghZHctPmluX3VzZSkKLQkJZHdfZG1hX29mZihkdyk7CisJCWRvX2RtYV9vZmYo ZHcpOwogCiAJZGV2X3ZkYmcoY2hhbjJkZXYoY2hhbiksICIlczogZG9uZVxuIiwgX19mdW5jX18p OwogfQogCi1pbnQgZHdfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK2ludCBk b19kbWFfcHJvYmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQogeworCXN0cnVjdCBkd19kbWEg KmR3ID0gY2hpcC0+ZHc7CiAJc3RydWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhICpwZGF0YTsKLQlz dHJ1Y3QgZHdfZG1hCQkqZHc7CiAJYm9vbAkJCWF1dG9jZmcgPSBmYWxzZTsKIAl1bnNpZ25lZCBp bnQJCWR3X3BhcmFtczsKIAl1bnNpZ25lZCBpbnQJCWk7CiAJaW50CQkJZXJyOwogCi0JZHcgPSBk ZXZtX2t6YWxsb2MoY2hpcC0+ZGV2LCBzaXplb2YoKmR3KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFk dykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KIAlkdy0+cGRhdGEgPSBkZXZtX2t6YWxsb2MoY2hpcC0+ ZGV2LCBzaXplb2YoKmR3LT5wZGF0YSksIEdGUF9LRVJORUwpOwogCWlmICghZHctPnBkYXRhKQog CQlyZXR1cm4gLUVOT01FTTsKIAogCWR3LT5yZWdzID0gY2hpcC0+cmVnczsKLQljaGlwLT5kdyA9 IGR3OwogCiAJcG1fcnVudGltZV9nZXRfc3luYyhjaGlwLT5kZXYpOwogCkBAIC0xMjUwLDE1ICsx MTM5LDEwIEBAIGludCBkd19kbWFfcHJvYmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQogCWR3 LT5hbGxfY2hhbl9tYXNrID0gKDEgPDwgcGRhdGEtPm5yX2NoYW5uZWxzKSAtIDE7CiAKIAkvKiBG b3JjZSBkbWEgb2ZmLCBqdXN0IGluIGNhc2UgKi8KLQlkd19kbWFfb2ZmKGR3KTsKLQotCWlkbWEz Ml9maWZvX3BhcnRpdGlvbihkdyk7CisJZHctPmRpc2FibGUoZHcpOwogCiAJLyogRGV2aWNlIGFu ZCBpbnN0YW5jZSBJRCBmb3IgSVJRIGFuZCBETUEgcG9vbCAqLwotCWlmIChwZGF0YS0+aXNfaWRt YTMyKQotCQlzbnByaW50Zihkdy0+bmFtZSwgc2l6ZW9mKGR3LT5uYW1lKSwgImlkbWEzMjpkbWFj JWQiLCBjaGlwLT5pZCk7Ci0JZWxzZQotCQlzbnByaW50Zihkdy0+bmFtZSwgc2l6ZW9mKGR3LT5u YW1lKSwgImR3OmRtYWMlZCIsIGNoaXAtPmlkKTsKKwlkdy0+c2V0X2RldmljZV9uYW1lKGR3LCBj aGlwLT5pZCk7CiAKIAkvKiBDcmVhdGUgYSBwb29sIG9mIGNvbnNpc3RlbnQgbWVtb3J5IGJsb2Nr cyBmb3IgaGFyZHdhcmUgZGVzY3JpcHRvcnMgKi8KIAlkdy0+ZGVzY19wb29sID0gZG1hbV9wb29s X2NyZWF0ZShkdy0+bmFtZSwgY2hpcC0+ZGV2LApAQCAtMTM4MiwxNiArMTI2NiwxNSBAQCBpbnQg ZHdfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIAlwbV9ydW50aW1lX3B1dF9z eW5jX3N1c3BlbmQoY2hpcC0+ZGV2KTsKIAlyZXR1cm4gZXJyOwogfQotRVhQT1JUX1NZTUJPTF9H UEwoZHdfZG1hX3Byb2JlKTsKIAotaW50IGR3X2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlw ICpjaGlwKQoraW50IGRvX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQogewog CXN0cnVjdCBkd19kbWEJCSpkdyA9IGNoaXAtPmR3OwogCXN0cnVjdCBkd19kbWFfY2hhbgkqZHdj LCAqX2R3YzsKIAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoY2hpcC0+ZGV2KTsKIAotCWR3X2RtYV9v ZmYoZHcpOworCWRvX2RtYV9vZmYoZHcpOwogCWRtYV9hc3luY19kZXZpY2VfdW5yZWdpc3Rlcigm ZHctPmRtYSk7CiAKIAlmcmVlX2lycShjaGlwLT5pcnEsIGR3KTsKQEAgLTE0MDYsMjcgKzEyODks MjQgQEAgaW50IGR3X2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQogCXBtX3J1 bnRpbWVfcHV0X3N5bmNfc3VzcGVuZChjaGlwLT5kZXYpOwogCXJldHVybiAwOwogfQotRVhQT1JU X1NZTUJPTF9HUEwoZHdfZG1hX3JlbW92ZSk7CiAKLWludCBkd19kbWFfZGlzYWJsZShzdHJ1Y3Qg ZHdfZG1hX2NoaXAgKmNoaXApCitpbnQgZG9fZHdfZG1hX2Rpc2FibGUoc3RydWN0IGR3X2RtYV9j aGlwICpjaGlwKQogewogCXN0cnVjdCBkd19kbWEgKmR3ID0gY2hpcC0+ZHc7CiAKLQlkd19kbWFf b2ZmKGR3KTsKKwlkdy0+ZGlzYWJsZShkdyk7CiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRfU1lNQk9M X0dQTChkd19kbWFfZGlzYWJsZSk7CitFWFBPUlRfU1lNQk9MX0dQTChkb19kd19kbWFfZGlzYWJs ZSk7CiAKLWludCBkd19kbWFfZW5hYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK2ludCBk b19kd19kbWFfZW5hYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIHsKIAlzdHJ1Y3QgZHdf ZG1hICpkdyA9IGNoaXAtPmR3OwogCi0JaWRtYTMyX2ZpZm9fcGFydGl0aW9uKGR3KTsKLQotCWR3 X2RtYV9vbihkdyk7CisJZHctPmRpc2FibGUoZHcpOwogCXJldHVybiAwOwogfQotRVhQT1JUX1NZ TUJPTF9HUEwoZHdfZG1hX2VuYWJsZSk7CitFWFBPUlRfU1lNQk9MX0dQTChkb19kd19kbWFfZW5h YmxlKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJT eW5vcHN5cyBEZXNpZ25XYXJlIERNQSBDb250cm9sbGVyIGNvcmUgZHJpdmVyIik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2RtYS9kdy9kdy5jIGIvZHJpdmVycy9kbWEvZHcvZHcuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk5OGE5ZWViNTYxZAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZG1hL2R3L2R3LmMKQEAgLTAsMCArMSwxMDkgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvLyBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBBdG1l bCBDb3Jwb3JhdGlvbgorLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgU1QgTWljcm9lbGVjdHJv bmljcworLy8gQ29weXJpZ2h0IChDKSAyMDEzLDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKworI2lu Y2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgorCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKworc3RhdGljIHZvaWQg ZHdfZG1hX2luaXRpYWxpemVfY2hhbihzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YykKK3sKKwl1MzIg Y2ZnaGkgPSBEV0NfQ0ZHSF9GSUZPX01PREU7CisJdTMyIGNmZ2xvID0gRFdDX0NGR0xfQ0hfUFJJ T1IoZHdjLT5wcmlvcml0eSk7CisJYm9vbCBoc19wb2xhcml0eSA9IGR3Yy0+ZHdzLmhzX3BvbGFy aXR5OworCisJY2ZnaGkgfD0gRFdDX0NGR0hfRFNUX1BFUihkd2MtPmR3cy5kc3RfaWQpOworCWNm Z2hpIHw9IERXQ19DRkdIX1NSQ19QRVIoZHdjLT5kd3Muc3JjX2lkKTsKKworCS8qIFNldCBwb2xh cml0eSBvZiBoYW5kc2hha2UgaW50ZXJmYWNlICovCisJY2ZnbG8gfD0gaHNfcG9sYXJpdHkgPyBE V0NfQ0ZHTF9IU19EU1RfUE9MIHwgRFdDX0NGR0xfSFNfU1JDX1BPTCA6IDA7CisKKwljaGFubmVs X3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8pOworCWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJ LCBjZmdoaSk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2RtYV9zdXNwZW5kX2NoYW4oc3RydWN0IGR3 X2RtYV9jaGFuICpkd2MsIGJvb2wgZHJhaW4pCit7CisJdTMyIGNmZ2xvID0gY2hhbm5lbF9yZWFk bChkd2MsIENGR19MTyk7CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8gfCBE V0NfQ0ZHTF9DSF9TVVNQKTsKK30KKworc3RhdGljIHUzMiBkd19kbWFfYnl0ZXMyYmxvY2soc3Ry dWN0IGR3X2RtYV9jaGFuICpkd2MsCisJCQkgICAgICBzaXplX3QgYnl0ZXMsIHVuc2lnbmVkIGlu dCB3aWR0aCwgc2l6ZV90ICpsZW4pCit7CisJdTMyIGJsb2NrOworCisJaWYgKChieXRlcyA+PiB3 aWR0aCkgPiBkd2MtPmJsb2NrX3NpemUpIHsKKwkJYmxvY2sgPSBkd2MtPmJsb2NrX3NpemU7CisJ CSpsZW4gPSBibG9jayA8PCB3aWR0aDsKKwl9IGVsc2UgeworCQlibG9jayA9IGJ5dGVzID4+IHdp ZHRoOworCQkqbGVuID0gYnl0ZXM7CisJfQorCisJcmV0dXJuIGJsb2NrOworfQorCitzdGF0aWMg c2l6ZV90IGR3X2RtYV9ibG9jazJieXRlcyhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YywgdTMyIGJs b2NrLCB1MzIgd2lkdGgpCit7CisJcmV0dXJuIERXQ19DVExIX0JMT0NLX1RTKGJsb2NrKSA8PCB3 aWR0aDsKK30KKworc3RhdGljIHZvaWQgZHdfZG1hX2VuY29kZV9tYXhidXJzdChzdHJ1Y3QgZHdf ZG1hX2NoYW4gKmR3YywgdTMyICptYXhidXJzdCkKK3sKKwkvKgorCSAqIEZpeCBidXJzdCBzaXpl IGFjY29yZGluZyB0byBkd19kbWFjLiBXZSBuZWVkIHRvIGNvbnZlcnQgdGhlbSBhczoKKwkgKiAx IC0+IDAsIDQgLT4gMSwgOCAtPiAyLCAxNiAtPiAzLgorCSAqLworCSptYXhidXJzdCA9ICptYXhi dXJzdCA+IDEgPyBmbHMoKm1heGJ1cnN0KSAtIDIgOiAwOworfQorCitzdGF0aWMgdm9pZCBkd19k bWFfc2V0X2RldmljZV9uYW1lKHN0cnVjdCBkd19kbWEgKmR3LCBpbnQgaWQpCit7CisJc25wcmlu dGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJkdzpkbWFjJWQiLCBpZCk7Cit9CisKK3N0 YXRpYyB2b2lkIGR3X2RtYV9kaXNhYmxlKHN0cnVjdCBkd19kbWEgKmR3KQoreworCWRvX2RtYV9v ZmYoZHcpOworfQorCitzdGF0aWMgdm9pZCBkd19kbWFfZW5hYmxlKHN0cnVjdCBkd19kbWEgKmR3 KQoreworCWRvX2RtYV9vbihkdyk7Cit9CisKK2ludCBkd19kbWFfcHJvYmUoc3RydWN0IGR3X2Rt YV9jaGlwICpjaGlwKQoreworCXN0cnVjdCBkd19kbWEgKmR3OworCisJZHcgPSBkZXZtX2t6YWxs b2MoY2hpcC0+ZGV2LCBzaXplb2YoKmR3KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkdykKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwkvKiBDaGFubmVsIG9wZXJhdGlvbnMgKi8KKwlkdy0+aW5pdGlhbGl6 ZV9jaGFuID0gZHdfZG1hX2luaXRpYWxpemVfY2hhbjsKKwlkdy0+c3VzcGVuZF9jaGFuID0gZHdf ZG1hX3N1c3BlbmRfY2hhbjsKKwlkdy0+ZW5jb2RlX21heGJ1cnN0ID0gZHdfZG1hX2VuY29kZV9t YXhidXJzdDsKKwlkdy0+Ynl0ZXMyYmxvY2sgPSBkd19kbWFfYnl0ZXMyYmxvY2s7CisJZHctPmJs b2NrMmJ5dGVzID0gZHdfZG1hX2Jsb2NrMmJ5dGVzOworCisJLyogRGV2aWNlIG9wZXJhdGlvbnMg Ki8KKwlkdy0+c2V0X2RldmljZV9uYW1lID0gZHdfZG1hX3NldF9kZXZpY2VfbmFtZTsKKwlkdy0+ ZGlzYWJsZSA9IGR3X2RtYV9kaXNhYmxlOworCWR3LT5lbmFibGUgPSBkd19kbWFfZW5hYmxlOwor CisJY2hpcC0+ZHcgPSBkdzsKKwlyZXR1cm4gZG9fZG1hX3Byb2JlKGNoaXApOworfQorRVhQT1JU X1NZTUJPTF9HUEwoZHdfZG1hX3Byb2JlKTsKKworaW50IGR3X2RtYV9yZW1vdmUoc3RydWN0IGR3 X2RtYV9jaGlwICpjaGlwKQoreworCXJldHVybiBkb19kbWFfcmVtb3ZlKGNoaXApOworfQorRVhQ T1JUX1NZTUJPTF9HUEwoZHdfZG1hX3JlbW92ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9k dy9pZG1hMzIuYyBiL2RyaXZlcnMvZG1hL2R3L2lkbWEzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZDA2ZmIwMGZiODYyCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9kbWEvZHcvaWRtYTMyLmMKQEAgLTAsMCArMSwxMzcgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMsMjAxOCBJbnRlbCBDb3Jw b3JhdGlvbgorCisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+CisjaW5jbHVkZSA8bGludXgvZXJy bm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgor CitzdGF0aWMgdm9pZCBpZG1hMzJfaW5pdGlhbGl6ZV9jaGFuKHN0cnVjdCBkd19kbWFfY2hhbiAq ZHdjKQoreworCXUzMiBjZmdoaSA9IDA7CisJdTMyIGNmZ2xvID0gMDsKKworCS8qIFNldCBkZWZh dWx0IGJ1cnN0IGFsaWdubWVudCAqLworCWNmZ2xvIHw9IElETUEzMkNfQ0ZHTF9EU1RfQlVSU1Rf QUxJR04gfCBJRE1BMzJDX0NGR0xfU1JDX0JVUlNUX0FMSUdOOworCisJLyogTG93IDQgYml0cyBv ZiB0aGUgcmVxdWVzdCBsaW5lcyAqLworCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9EU1RfUEVSKGR3 Yy0+ZHdzLmRzdF9pZCAmIDB4Zik7CisJY2ZnaGkgfD0gSURNQTMyQ19DRkdIX1NSQ19QRVIoZHdj LT5kd3Muc3JjX2lkICYgMHhmKTsKKworCS8qIFJlcXVlc3QgbGluZSBleHRlbnNpb24gKDIgYml0 cykgKi8KKwljZmdoaSB8PSBJRE1BMzJDX0NGR0hfRFNUX1BFUl9FWFQoZHdjLT5kd3MuZHN0X2lk ID4+IDQgJiAweDMpOworCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9TUkNfUEVSX0VYVChkd2MtPmR3 cy5zcmNfaWQgPj4gNCAmIDB4Myk7CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2Zn bG8pOworCWNoYW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJLCBjZmdoaSk7Cit9CisKK3N0YXRpYyB2 b2lkIGlkbWEzMl9zdXNwZW5kX2NoYW4oc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIGJvb2wgZHJh aW4pCit7CisJdTMyIGNmZ2xvID0gY2hhbm5lbF9yZWFkbChkd2MsIENGR19MTyk7CisKKwlpZiAo ZHJhaW4pCisJCWNmZ2xvIHw9IElETUEzMkNfQ0ZHTF9DSF9EUkFJTjsKKwllbHNlCisJCWNmZ2xv ICY9IH5JRE1BMzJDX0NGR0xfQ0hfRFJBSU47CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19M TywgY2ZnbG8gfCBEV0NfQ0ZHTF9DSF9TVVNQKTsKK30KKworc3RhdGljIHUzMiBpZG1hMzJfYnl0 ZXMyYmxvY2soc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsCisJCQkgICAgICBzaXplX3QgYnl0ZXMs IHVuc2lnbmVkIGludCB3aWR0aCwgc2l6ZV90ICpsZW4pCit7CisJdTMyIGJsb2NrOworCisJaWYg KGJ5dGVzID4gZHdjLT5ibG9ja19zaXplKSB7CisJCWJsb2NrID0gZHdjLT5ibG9ja19zaXplOwor CQkqbGVuID0gZHdjLT5ibG9ja19zaXplOworCX0gZWxzZSB7CisJCWJsb2NrID0gYnl0ZXM7CisJ CSpsZW4gPSBieXRlczsKKwl9CisKKwlyZXR1cm4gYmxvY2s7Cit9CisKK3N0YXRpYyBzaXplX3Qg aWRtYTMyX2Jsb2NrMmJ5dGVzKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCB1MzIgYmxvY2ssIHUz MiB3aWR0aCkKK3sKKwlyZXR1cm4gSURNQTMyQ19DVExIX0JMT0NLX1RTKGJsb2NrKTsKK30KKwor c3RhdGljIHZvaWQgaWRtYTMyX2VuY29kZV9tYXhidXJzdChzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3 YywgdTMyICptYXhidXJzdCkKK3sKKwkqbWF4YnVyc3QgPSAqbWF4YnVyc3QgPiAxID8gZmxzKCpt YXhidXJzdCkgLSAxIDogMDsKK30KKworc3RhdGljIHZvaWQgaWRtYTMyX3NldF9kZXZpY2VfbmFt ZShzdHJ1Y3QgZHdfZG1hICpkdywgaW50IGlkKQoreworCXNucHJpbnRmKGR3LT5uYW1lLCBzaXpl b2YoZHctPm5hbWUpLCAiaWRtYTMyOmRtYWMlZCIsIGlkKTsKK30KKworLyoKKyAqIFByb2dyYW0g RklGTyBzaXplIG9mIGNoYW5uZWxzLgorICoKKyAqIEJ5IGRlZmF1bHQgZnVsbCBGSUZPICg1MTIg Ynl0ZXMpIGlzIGFzc2lnbmVkIHRvIGNoYW5uZWwgMC4gSGVyZSB3ZQorICogc2xpY2UgRklGTyBv biBlcXVhbCBwYXJ0cyBiZXR3ZWVuIGNoYW5uZWxzLgorICovCitzdGF0aWMgdm9pZCBpZG1hMzJf Zmlmb19wYXJ0aXRpb24oc3RydWN0IGR3X2RtYSAqZHcpCit7CisJdTY0IHZhbHVlID0gSURNQTMy Q19GUF9QU0laRV9DSDAoNjQpIHwgSURNQTMyQ19GUF9QU0laRV9DSDEoNjQpIHwKKwkJICAgIElE TUEzMkNfRlBfVVBEQVRFOworCXU2NCBmaWZvX3BhcnRpdGlvbiA9IDA7CisKKwkvKiBGaWxsIEZJ Rk9fUEFSVElUSU9OIGxvdyBiaXRzIChDaGFubmVscyAwLi4xLCA0Li41KSAqLworCWZpZm9fcGFy dGl0aW9uIHw9IHZhbHVlIDw8IDA7CisKKwkvKiBGaWxsIEZJRk9fUEFSVElUSU9OIGhpZ2ggYml0 cyAoQ2hhbm5lbHMgMi4uMywgNi4uNykgKi8KKwlmaWZvX3BhcnRpdGlvbiB8PSB2YWx1ZSA8PCAz MjsKKworCS8qIFByb2dyYW0gRklGTyBQYXJ0aXRpb24gcmVnaXN0ZXJzIC0gMTI4IGJ5dGVzIGZv ciBlYWNoIGNoYW5uZWwgKi8KKwlpZG1hMzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjEsIGZp Zm9fcGFydGl0aW9uKTsKKwlpZG1hMzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjAsIGZpZm9f cGFydGl0aW9uKTsKK30KKworc3RhdGljIHZvaWQgaWRtYTMyX2Rpc2FibGUoc3RydWN0IGR3X2Rt YSAqZHcpCit7CisJZG9fZG1hX29mZihkdyk7CisJaWRtYTMyX2ZpZm9fcGFydGl0aW9uKGR3KTsK K30KKworc3RhdGljIHZvaWQgaWRtYTMyX2VuYWJsZShzdHJ1Y3QgZHdfZG1hICpkdykKK3sKKwlp ZG1hMzJfZmlmb19wYXJ0aXRpb24oZHcpOworCWRvX2RtYV9vbihkdyk7Cit9CisKK2ludCBpZG1h MzJfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK3sKKwlzdHJ1Y3QgZHdfZG1h ICpkdzsKKworCWR3ID0gZGV2bV9remFsbG9jKGNoaXAtPmRldiwgc2l6ZW9mKCpkdyksIEdGUF9L RVJORUwpOworCWlmICghZHcpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogQ2hhbm5lbCBvcGVy YXRpb25zICovCisJZHctPmluaXRpYWxpemVfY2hhbiA9IGlkbWEzMl9pbml0aWFsaXplX2NoYW47 CisJZHctPnN1c3BlbmRfY2hhbiA9IGlkbWEzMl9zdXNwZW5kX2NoYW47CisJZHctPmVuY29kZV9t YXhidXJzdCA9IGlkbWEzMl9lbmNvZGVfbWF4YnVyc3Q7CisJZHctPmJ5dGVzMmJsb2NrID0gaWRt YTMyX2J5dGVzMmJsb2NrOworCWR3LT5ibG9jazJieXRlcyA9IGlkbWEzMl9ibG9jazJieXRlczsK KworCS8qIERldmljZSBvcGVyYXRpb25zICovCisJZHctPnNldF9kZXZpY2VfbmFtZSA9IGlkbWEz Ml9zZXRfZGV2aWNlX25hbWU7CisJZHctPmRpc2FibGUgPSBpZG1hMzJfZGlzYWJsZTsKKwlkdy0+ ZW5hYmxlID0gaWRtYTMyX2VuYWJsZTsKKworCWNoaXAtPmR3ID0gZHc7CisJcmV0dXJuIGRvX2Rt YV9wcm9iZShjaGlwKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlkbWEzMl9kbWFfcHJvYmUpOwor CitpbnQgaWRtYTMyX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQoreworCXJl dHVybiBkb19kbWFfcmVtb3ZlKGNoaXApOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaWRtYTMyX2Rt YV9yZW1vdmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvaW50ZXJuYWwuaCBiL2RyaXZl cnMvZG1hL2R3L2ludGVybmFsLmgKaW5kZXggNDE0Mzk3MzJmZjZiLi4xZjJkZGZlNzQ1YmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2R3L2ludGVybmFsLmgKKysrIGIvZHJpdmVycy9kbWEvZHcv aW50ZXJuYWwuaApAQCAtMTUsOCArMTUsMTQgQEAKIAogI2luY2x1ZGUgInJlZ3MuaCIKIAotaW50 IGR3X2RtYV9kaXNhYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7Ci1pbnQgZHdfZG1hX2Vu YWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOworaW50IGRvX2RtYV9wcm9iZShzdHJ1Y3Qg ZHdfZG1hX2NoaXAgKmNoaXApOworaW50IGRvX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlw ICpjaGlwKTsKKwordm9pZCBkb19kbWFfb24oc3RydWN0IGR3X2RtYSAqZHcpOwordm9pZCBkb19k bWFfb2ZmKHN0cnVjdCBkd19kbWEgKmR3KTsKKworaW50IGRvX2R3X2RtYV9kaXNhYmxlKHN0cnVj dCBkd19kbWFfY2hpcCAqY2hpcCk7CitpbnQgZG9fZHdfZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1h X2NoaXAgKmNoaXApOwogCiBleHRlcm4gYm9vbCBkd19kbWFfZmlsdGVyKHN0cnVjdCBkbWFfY2hh biAqY2hhbiwgdm9pZCAqcGFyYW0pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kdy9wY2ku YyBiL2RyaXZlcnMvZG1hL2R3L3BjaS5jCmluZGV4IDYxZjIyNzRmNmRkNC4uZjVlYTU4Y2MwMjdi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9kdy9wY2kuYworKysgYi9kcml2ZXJzL2RtYS9kdy9w Y2kuYwpAQCAtMTUsMTEgKzE1LDE5IEBACiAKICNpbmNsdWRlICJpbnRlcm5hbC5oIgogCi1zdGF0 aWMgc3RydWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhIG1yZmxkX3BkYXRhID0geworc3RhdGljIHN0 cnVjdCBkd19kbWFfcGNpX2RhdGEgeworCWNvbnN0IHN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0 YSAqcGRhdGE7CisJaW50ICgqcHJvYmUpKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7Cit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGR3X2RtYV9wY2lfZGF0YSBkd19wY2lfZGF0YSA9IHsKKwku cHJvYmUgPSBkd19kbWFfcHJvYmUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGR3X2RtYV9w bGF0Zm9ybV9kYXRhIGlkbWEzMl9wZGF0YSA9IHsKIAkubnJfY2hhbm5lbHMgPSA4LAogCS5pc19w cml2YXRlID0gdHJ1ZSwKIAkuaXNfbWVtY3B5ID0gdHJ1ZSwKLQkuaXNfaWRtYTMyID0gdHJ1ZSwK IAkuY2hhbl9hbGxvY2F0aW9uX29yZGVyID0gQ0hBTl9BTExPQ0FUSU9OX0FTQ0VORElORywKIAku Y2hhbl9wcmlvcml0eSA9IENIQU5fUFJJT1JJVFlfQVNDRU5ESU5HLAogCS5ibG9ja19zaXplID0g MTMxMDcxLApAQCAtMjgsOSArMzYsMTQgQEAgc3RhdGljIHN0cnVjdCBkd19kbWFfcGxhdGZvcm1f ZGF0YSBtcmZsZF9wZGF0YSA9IHsKIAkubXVsdGlfYmxvY2sgPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwg dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0 IGR3X2RtYV9wY2lfZGF0YSBpZG1hMzJfcGNpX2RhdGEgPSB7CisJLnBkYXRhID0gJmlkbWEzMl9w ZGF0YSwKKwkucHJvYmUgPSBpZG1hMzJfZG1hX3Byb2JlLAorfTsKKwogc3RhdGljIGludCBkd19w Y2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lk ICpwaWQpCiB7Ci0JY29uc3Qgc3RydWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhICpwZGF0YSA9ICh2 b2lkICopcGlkLT5kcml2ZXJfZGF0YTsKKwljb25zdCBzdHJ1Y3QgZHdfZG1hX3BjaV9kYXRhICpk YXRhID0gKHZvaWQgKilwaWQtPmRyaXZlcl9kYXRhOwogCXN0cnVjdCBkd19kbWFfY2hpcCAqY2hp cDsKIAlpbnQgcmV0OwogCkBAIC02Myw5ICs3Niw5IEBAIHN0YXRpYyBpbnQgZHdfcGNpX3Byb2Jl KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlkKQog CWNoaXAtPmlkID0gcGRldi0+ZGV2Zm47CiAJY2hpcC0+cmVncyA9IHBjaW1faW9tYXBfdGFibGUo cGRldilbMF07CiAJY2hpcC0+aXJxID0gcGRldi0+aXJxOwotCWNoaXAtPnBkYXRhID0gcGRhdGE7 CisJY2hpcC0+cGRhdGEgPSBkYXRhLT5wZGF0YTsKIAotCXJldCA9IGR3X2RtYV9wcm9iZShjaGlw KTsKKwlyZXQgPSBkYXRhLT5wcm9iZShjaGlwKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CkBAIC05MSw3ICsxMDQsNyBAQCBzdGF0aWMgaW50IGR3X3BjaV9zdXNwZW5kX2xhdGUoc3RydWN0 IGRldmljZSAqZGV2KQogCXN0cnVjdCBwY2lfZGV2ICpwY2kgPSB0b19wY2lfZGV2KGRldik7CiAJ c3RydWN0IGR3X2RtYV9jaGlwICpjaGlwID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7CiAKLQlyZXR1 cm4gZHdfZG1hX2Rpc2FibGUoY2hpcCk7CisJcmV0dXJuIGRvX2R3X2RtYV9kaXNhYmxlKGNoaXAp OwogfTsKIAogc3RhdGljIGludCBkd19wY2lfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRl dikKQEAgLTk5LDcgKzExMiw3IEBAIHN0YXRpYyBpbnQgZHdfcGNpX3Jlc3VtZV9lYXJseShzdHJ1 Y3QgZGV2aWNlICpkZXYpCiAJc3RydWN0IHBjaV9kZXYgKnBjaSA9IHRvX3BjaV9kZXYoZGV2KTsK IAlzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXAgPSBwY2lfZ2V0X2RydmRhdGEocGNpKTsKIAotCXJl dHVybiBkd19kbWFfZW5hYmxlKGNoaXApOworCXJldHVybiBkb19kd19kbWFfZW5hYmxlKGNoaXAp OwogfTsKIAogI2VuZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqLwpAQCAtMTEwLDI0ICsxMjMsMjQg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGR3X3BjaV9kZXZfcG1fb3BzID0gewog CiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdfcGNpX2lkX3RhYmxlW10gPSB7 CiAJLyogTWVkZmllbGQgKEdQRE1BKSAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MDgyNykg fSwKKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDA4MjcpLCAoa2VybmVsX3Vsb25nX3QpJmR3X3Bj aV9kYXRhIH0sCiAKIAkvKiBCYXlUcmFpbCAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MGYw NikgfSwKLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDBmNDApIH0sCisJeyBQQ0lfVkRFVklDRShJ TlRFTCwgMHgwZjA2KSwgKGtlcm5lbF91bG9uZ190KSZkd19wY2lfZGF0YSB9LAorCXsgUENJX1ZE RVZJQ0UoSU5URUwsIDB4MGY0MCksIChrZXJuZWxfdWxvbmdfdCkmZHdfcGNpX2RhdGEgfSwKIAot CS8qIE1lcnJpZmllbGQgaURNQSAzMi1iaXQgKEdQRE1BKSAqLwotCXsgUENJX1ZERVZJQ0UoSU5U RUwsIDB4MTFhMiksIChrZXJuZWxfdWxvbmdfdCkmbXJmbGRfcGRhdGEgfSwKKwkvKiBNZXJyaWZp ZWxkICovCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgxMWEyKSwgKGtlcm5lbF91bG9uZ190KSZp ZG1hMzJfcGNpX2RhdGEgfSwKIAogCS8qIEJyYXN3ZWxsICovCi0JeyBQQ0lfVkRFVklDRShJTlRF TCwgMHgyMjg2KSB9LAotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MjJjMCkgfSwKKwl7IFBDSV9W REVWSUNFKElOVEVMLCAweDIyODYpLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCisJ eyBQQ0lfVkRFVklDRShJTlRFTCwgMHgyMmMwKSwgKGtlcm5lbF91bG9uZ190KSZkd19wY2lfZGF0 YSB9LAogCiAJLyogSGFzd2VsbCAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4OWM2MCkgfSwK Kwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDljNjApLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9k YXRhIH0sCiAKIAkvKiBCcm9hZHdlbGwgKi8KLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDljZTAp IH0sCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHg5Y2UwKSwgKGtlcm5lbF91bG9uZ190KSZkd19w Y2lfZGF0YSB9LAogCiAJeyB9CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvcGxhdGZv cm0uYyBiL2RyaXZlcnMvZG1hL2R3L3BsYXRmb3JtLmMKaW5kZXggZjAxYjJjMTczZmE2Li42YmY0 NmM5YjdlZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2R3L3BsYXRmb3JtLmMKKysrIGIvZHJp dmVycy9kbWEvZHcvcGxhdGZvcm0uYwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyB2b2lkIGR3 X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJc3RydWN0IGR3X2RtYV9j aGlwICpjaGlwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAKIAkvKgotCSAqIFdlIGhh dmUgdG8gY2FsbCBkd19kbWFfZGlzYWJsZSgpIHRvIHN0b3AgYW55IG9uZ29pbmcgdHJhbnNmZXIu IE9uCisJICogV2UgaGF2ZSB0byBjYWxsIGRvX2R3X2RtYV9kaXNhYmxlKCkgdG8gc3RvcCBhbnkg b25nb2luZyB0cmFuc2Zlci4gT24KIAkgKiBzb21lIHBsYXRmb3JtcyB3ZSBjYW4ndCBkbyB0aGF0 IHNpbmNlIERNQSBkZXZpY2UgaXMgcG93ZXJlZCBvZmYuCiAJICogTW9yZW92ZXIgd2UgaGF2ZSBu byBwb3NzaWJpbGl0eSB0byBjaGVjayBpZiB0aGUgcGxhdGZvcm0gaXMgYWZmZWN0ZWQKIAkgKiBv ciBub3QuIFRoYXQncyB3aHkgd2UgY2FsbCBwbV9ydW50aW1lX2dldF9zeW5jKCkgLyBwbV9ydW50 aW1lX3B1dCgpCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZHdfc2h1dGRvd24oc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkgKiB1c2VkIGJ5IHRoZSBkcml2ZXIuCiAJICov CiAJcG1fcnVudGltZV9nZXRfc3luYyhjaGlwLT5kZXYpOwotCWR3X2RtYV9kaXNhYmxlKGNoaXAp OworCWRvX2R3X2RtYV9kaXNhYmxlKGNoaXApOwogCXBtX3J1bnRpbWVfcHV0X3N5bmNfc3VzcGVu ZChjaGlwLT5kZXYpOwogCiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNoaXAtPmNsayk7CkBAIC0y OTcsNyArMjk3LDcgQEAgc3RhdGljIGludCBkd19zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAq ZGV2KQogewogCXN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OwogCi0JZHdfZG1hX2Rpc2FibGUoY2hpcCk7CisJZG9fZHdfZG1hX2Rpc2FibGUoY2hpcCk7CiAJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNoaXAtPmNsayk7CiAKIAlyZXR1cm4gMDsKQEAgLTMxMiw3 ICszMTIsNyBAQCBzdGF0aWMgaW50IGR3X3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYp CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBkd19kbWFfZW5hYmxlKGNoaXAp OworCXJldHVybiBkb19kd19kbWFfZW5hYmxlKGNoaXApOwogfQogCiAjZW5kaWYgLyogQ09ORklH X1BNX1NMRUVQICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kdy9yZWdzLmggYi9kcml2ZXJz L2RtYS9kdy9yZWdzLmgKaW5kZXggMDllN2RmZGJiNzkwLi45MGU0NmU2OWMwNDcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZG1hL2R3L3JlZ3MuaAorKysgYi9kcml2ZXJzL2RtYS9kdy9yZWdzLmgKQEAg LTMwOCw2ICszMDgsMTkgQEAgc3RydWN0IGR3X2RtYSB7CiAJdTgJCQlhbGxfY2hhbl9tYXNrOwog CXU4CQkJaW5fdXNlOwogCisJLyogQ2hhbm5lbCBvcGVyYXRpb25zICovCisJdm9pZAkoKmluaXRp YWxpemVfY2hhbikoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpOworCXZvaWQJKCpzdXNwZW5kX2No YW4pKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCBib29sIGRyYWluKTsKKwl2b2lkCSgqZW5jb2Rl X21heGJ1cnN0KShzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YywgdTMyICptYXhidXJzdCk7CisJdTMy CSgqYnl0ZXMyYmxvY2spKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCBzaXplX3QgYnl0ZXMsCisJ CQkgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLCBzaXplX3QgKmxlbik7CisJc2l6ZV90CSgqYmxv Y2syYnl0ZXMpKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCB1MzIgYmxvY2ssIHUzMiB3aWR0aCk7 CisKKwkvKiBEZXZpY2Ugb3BlcmF0aW9ucyAqLworCXZvaWQgKCpzZXRfZGV2aWNlX25hbWUpKHN0 cnVjdCBkd19kbWEgKmR3LCBpbnQgaWQpOworCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgZHdfZG1h ICpkdyk7CisJdm9pZCAoKmVuYWJsZSkoc3RydWN0IGR3X2RtYSAqZHcpOworCiAJLyogcGxhdGZv cm0gZGF0YSAqLwogCXN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0YQkqcGRhdGE7CiB9OwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEvZHcuaCBiL2luY2x1ZGUvbGludXgvZG1hL2R3LmgK aW5kZXggZTE2NmNhYzhlODcwLi5kNjQzZDMzMWMyMGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvZG1hL2R3LmgKKysrIGIvaW5jbHVkZS9saW51eC9kbWEvZHcuaApAQCAtNDUsOSArNDUsMTMg QEAgc3RydWN0IGR3X2RtYV9jaGlwIHsKICNpZiBJU19FTkFCTEVEKENPTkZJR19EV19ETUFDX0NP UkUpCiBpbnQgZHdfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7CiBpbnQgZHdf ZG1hX3JlbW92ZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOworaW50IGlkbWEzMl9kbWFfcHJv YmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKTsKK2ludCBpZG1hMzJfZG1hX3JlbW92ZShzdHJ1 Y3QgZHdfZG1hX2NoaXAgKmNoaXApOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGR3X2RtYV9w cm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApIHsgcmV0dXJuIC1FTk9ERVY7IH0KIHN0YXRp YyBpbmxpbmUgaW50IGR3X2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKSB7IHJl dHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBpZG1hMzJfZG1hX3Byb2JlKHN0cnVjdCBkd19k bWFfY2hpcCAqY2hpcCkgeyByZXR1cm4gLUVOT0RFVjsgfQorc3RhdGljIGlubGluZSBpbnQgaWRt YTMyX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKSB7IHJldHVybiAwOyB9CiAj ZW5kaWYgLyogQ09ORklHX0RXX0RNQUNfQ09SRSAqLwogCiAjZW5kaWYgLyogX0RNQV9EV19IICov CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLWR3LmggYi9pbmNs dWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLWR3LmgKaW5kZXggODk2Y2I3MWEzODJjLi5lNjll NDE1ZDBkOTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcu aAorKysgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLWR3LmgKQEAgLTQxLDcgKzQx LDYgQEAgc3RydWN0IGR3X2RtYV9zbGF2ZSB7CiAgKiBAaXNfcHJpdmF0ZTogVGhlIGRldmljZSBj aGFubmVscyBzaG91bGQgYmUgbWFya2VkIGFzIHByaXZhdGUgYW5kIG5vdCBmb3IKICAqCWJ5IHRo ZSBnZW5lcmFsIHB1cnBvc2UgRE1BIGNoYW5uZWwgYWxsb2NhdG9yLgogICogQGlzX21lbWNweTog VGhlIGRldmljZSBjaGFubmVscyBkbyBzdXBwb3J0IG1lbW9yeS10by1tZW1vcnkgdHJhbnNmZXJz LgotICogQGlzX2lkbWEzMjogVGhlIHR5cGUgb2YgdGhlIERNQSBjb250cm9sbGVyIGlzIGlETUEz MgogICogQGNoYW5fYWxsb2NhdGlvbl9vcmRlcjogQWxsb2NhdGUgY2hhbm5lbHMgc3RhcnRpbmcg ZnJvbSAwIG9yIDcKICAqIEBjaGFuX3ByaW9yaXR5OiBTZXQgY2hhbm5lbCBwcmlvcml0eSBpbmNy ZWFzaW5nIGZyb20gMCB0byA3IG9yIDcgdG8gMC4KICAqIEBibG9ja19zaXplOiBNYXhpbXVtIGJs b2NrIHNpemUgc3VwcG9ydGVkIGJ5IHRoZSBjb250cm9sbGVyCkBAIC01NCw3ICs1Myw2IEBAIHN0 cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0YSB7CiAJdW5zaWduZWQgaW50CW5yX2NoYW5uZWxzOwog CWJvb2wJCWlzX3ByaXZhdGU7CiAJYm9vbAkJaXNfbWVtY3B5OwotCWJvb2wJCWlzX2lkbWEzMjsK ICNkZWZpbmUgQ0hBTl9BTExPQ0FUSU9OX0FTQ0VORElORwkwCS8qIHplcm8gdG8gc2V2ZW4gKi8K ICNkZWZpbmUgQ0hBTl9BTExPQ0FUSU9OX0RFU0NFTkRJTkcJMQkvKiBzZXZlbiB0byB6ZXJvICov CiAJdW5zaWduZWQgY2hhcgljaGFuX2FsbG9jYXRpb25fb3JkZXI7Cg==