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,4/7] dmaengine: dw: Split DW and iDMA 32-bit operations From: Andy Shevchenko Message-Id: <20190107110741.15831-5-andriy.shevchenko@linux.intel.com> Date: Mon, 7 Jan 2019 13:07:38 +0200 To: Viresh Kumar , dmaengine@vger.kernel.org, Vinod Koul Cc: Andy Shevchenko List-ID: SGVyZSBpcyBhIGtpbmRhIGJpZyByZWZhY3RvcmluZyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gZG9u ZQppbiB0aGUgZmlyc3QgcGxhY2UsIHdoZW4gSW50ZWwgaURNQSAzMi1iaXQgc3VwcG9ydCBhcHBl YXJlZC4KCkl0IHNwbGl0cyBvcGVyYXRpb25zIHdoaWNoIGFyZSBkaWZmZXJlbnQgdG8gU3lub3Bz eXMgRGVzaWduV2FyZSBhbmQKSW50ZWwgaURNQSAzMi1iaXQgY29udHJvbGxlcnMuCgpObyBmdW5j dGlvbmFsIGNoYW5nZSBpbnRlbmRlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8 YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZG1hL2R3L01h a2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9kbWEvZHcvY29yZS5jICAgICAg ICAgICAgICAgIHwgMTkwICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9kbWEv ZHcvZHcuYyAgICAgICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysKIGRyaXZlcnMv ZG1hL2R3L2lkbWEzMi5jICAgICAgICAgICAgICB8IDEzOCArKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2RtYS9kdy9pbnRlcm5hbC5oICAgICAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZG1h L2R3L3BjaS5jICAgICAgICAgICAgICAgICB8ICA0NSArKysrLS0tCiBkcml2ZXJzL2RtYS9kdy9w bGF0Zm9ybS5jICAgICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZG1hL2R3L3JlZ3MuaCAgICAg ICAgICAgICAgICB8ICAxMyArKwogaW5jbHVkZS9saW51eC9kbWEvZHcuaCAgICAgICAgICAgICAg IHwgICA0ICsKIGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaCB8ICAgMiAtCiAx MCBmaWxlcyBjaGFuZ2VkLCAzNDMgaW5zZXJ0aW9ucygrKSwgMTgxIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL2R3L2R3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2RtYS9kdy9pZG1hMzIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2R3L01ha2Vm aWxlIGIvZHJpdmVycy9kbWEvZHcvTWFrZWZpbGUKaW5kZXggMmI5NDljMmU0NTA0Li42M2VkODk1 YzA5YWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2R3L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv ZG1hL2R3L01ha2VmaWxlCkBAIC0xLDYgKzEsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAogb2JqLSQoQ09ORklHX0RXX0RNQUNfQ09SRSkJKz0gZHdfZG1hY19jb3JlLm8K LWR3X2RtYWNfY29yZS1vYmpzCTo9IGNvcmUubworZHdfZG1hY19jb3JlLW9ianMJOj0gY29yZS5v IGR3Lm8gaWRtYTMyLm8KIAogb2JqLSQoQ09ORklHX0RXX0RNQUMpCQkrPSBkd19kbWFjLm8KIGR3 X2RtYWMtb2JqcwkJOj0gcGxhdGZvcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvY29y ZS5jIGIvZHJpdmVycy9kbWEvZHcvY29yZS5jCmluZGV4IDQ5ODJlNDQzODY5Yy4uOGE1ODFkODZl YThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9kdy9jb3JlLmMKKysrIGIvZHJpdmVycy9kbWEv ZHcvY29yZS5jCkBAIC0xMzgsNDQgKzEzOCw2IEBAIHN0YXRpYyB2b2lkIGR3Y19kZXNjX3B1dChz dHJ1Y3QgZHdfZG1hX2NoYW4gKmR3Yywgc3RydWN0IGR3X2Rlc2MgKmRlc2MpCiAJZHdjLT5kZXNj c19hbGxvY2F0ZWQtLTsKIH0KIAotc3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemVfY2hhbl9pZG1h MzIoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCi17Ci0JdTMyIGNmZ2hpID0gMDsKLQl1MzIgY2Zn bG8gPSAwOwotCi0JLyogU2V0IGRlZmF1bHQgYnVyc3QgYWxpZ25tZW50ICovCi0JY2ZnbG8gfD0g SURNQTMyQ19DRkdMX0RTVF9CVVJTVF9BTElHTiB8IElETUEzMkNfQ0ZHTF9TUkNfQlVSU1RfQUxJ R047Ci0KLQkvKiBMb3cgNCBiaXRzIG9mIHRoZSByZXF1ZXN0IGxpbmVzICovCi0JY2ZnaGkgfD0g SURNQTMyQ19DRkdIX0RTVF9QRVIoZHdjLT5kd3MuZHN0X2lkICYgMHhmKTsKLQljZmdoaSB8PSBJ RE1BMzJDX0NGR0hfU1JDX1BFUihkd2MtPmR3cy5zcmNfaWQgJiAweGYpOwotCi0JLyogUmVxdWVz dCBsaW5lIGV4dGVuc2lvbiAoMiBiaXRzKSAqLwotCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9EU1Rf UEVSX0VYVChkd2MtPmR3cy5kc3RfaWQgPj4gNCAmIDB4Myk7Ci0JY2ZnaGkgfD0gSURNQTMyQ19D RkdIX1NSQ19QRVJfRVhUKGR3Yy0+ZHdzLnNyY19pZCA+PiA0ICYgMHgzKTsKLQotCWNoYW5uZWxf d3JpdGVsKGR3YywgQ0ZHX0xPLCBjZmdsbyk7Ci0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfSEks IGNmZ2hpKTsKLX0KLQotc3RhdGljIHZvaWQgZHdjX2luaXRpYWxpemVfY2hhbl9kdyhzdHJ1Y3Qg ZHdfZG1hX2NoYW4gKmR3YykKLXsKLQlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRvX2R3X2RtYShkd2Mt PmNoYW4uZGV2aWNlKTsKLQl1MzIgY2ZnaGkgPSBEV0NfQ0ZHSF9GSUZPX01PREU7Ci0JdTMyIGNm Z2xvID0gRFdDX0NGR0xfQ0hfUFJJT1IoZHdjLT5wcmlvcml0eSk7Ci0JYm9vbCBoc19wb2xhcml0 eSA9IGR3Yy0+ZHdzLmhzX3BvbGFyaXR5OwotCi0JY2ZnaGkgfD0gRFdDX0NGR0hfRFNUX1BFUihk d2MtPmR3cy5kc3RfaWQpOwotCWNmZ2hpIHw9IERXQ19DRkdIX1NSQ19QRVIoZHdjLT5kd3Muc3Jj X2lkKTsKLQljZmdoaSB8PSBEV0NfQ0ZHSF9QUk9UQ1RMKGR3LT5wZGF0YS0+cHJvdGN0bCk7Ci0K LQkvKiBTZXQgcG9sYXJpdHkgb2YgaGFuZHNoYWtlIGludGVyZmFjZSAqLwotCWNmZ2xvIHw9IGhz X3BvbGFyaXR5ID8gRFdDX0NGR0xfSFNfRFNUX1BPTCB8IERXQ19DRkdMX0hTX1NSQ19QT0wgOiAw OwotCi0JY2hhbm5lbF93cml0ZWwoZHdjLCBDRkdfTE8sIGNmZ2xvKTsKLQljaGFubmVsX3dyaXRl bChkd2MsIENGR19ISSwgY2ZnaGkpOwotfQotCiBzdGF0aWMgdm9pZCBkd2NfaW5pdGlhbGl6ZShz dHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YykKIHsKIAlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRvX2R3X2Rt YShkd2MtPmNoYW4uZGV2aWNlKTsKQEAgLTE4MywxMCArMTQ1LDcgQEAgc3RhdGljIHZvaWQgZHdj X2luaXRpYWxpemUoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MpCiAJaWYgKHRlc3RfYml0KERXX0RN QV9JU19JTklUSUFMSVpFRCwgJmR3Yy0+ZmxhZ3MpKQogCQlyZXR1cm47CiAKLQlpZiAoZHctPnBk YXRhLT5pc19pZG1hMzIpCi0JCWR3Y19pbml0aWFsaXplX2NoYW5faWRtYTMyKGR3Yyk7Ci0JZWxz ZQotCQlkd2NfaW5pdGlhbGl6ZV9jaGFuX2R3KGR3Yyk7CisJZHctPmluaXRpYWxpemVfY2hhbihk d2MpOwogCiAJLyogRW5hYmxlIGludGVycnVwdHMgKi8KIAljaGFubmVsX3NldF9iaXQoZHcsIE1B U0suWEZFUiwgZHdjLT5tYXNrKTsKQEAgLTIxNSwzNyArMTc0LDYgQEAgc3RhdGljIGlubGluZSB2 b2lkIGR3Y19jaGFuX2Rpc2FibGUoc3RydWN0IGR3X2RtYSAqZHcsIHN0cnVjdCBkd19kbWFfY2hh biAqZHdjKQogCQljcHVfcmVsYXgoKTsKIH0KIAotc3RhdGljIHUzMiBieXRlczJibG9jayhzdHJ1 Y3QgZHdfZG1hX2NoYW4gKmR3Yywgc2l6ZV90IGJ5dGVzLAotCQkJICB1bnNpZ25lZCBpbnQgd2lk dGgsIHNpemVfdCAqbGVuKQotewotCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGR3Yy0+ Y2hhbi5kZXZpY2UpOwotCXUzMiBibG9jazsKLQotCS8qIEFsd2F5cyBpbiBieXRlcyBmb3IgaURN QSAzMi1iaXQgKi8KLQlpZiAoZHctPnBkYXRhLT5pc19pZG1hMzIpCi0JCXdpZHRoID0gMDsKLQot CWlmICgoYnl0ZXMgPj4gd2lkdGgpID4gZHdjLT5ibG9ja19zaXplKSB7Ci0JCWJsb2NrID0gZHdj LT5ibG9ja19zaXplOwotCQkqbGVuID0gYmxvY2sgPDwgd2lkdGg7Ci0JfSBlbHNlIHsKLQkJYmxv Y2sgPSBieXRlcyA+PiB3aWR0aDsKLQkJKmxlbiA9IGJ5dGVzOwotCX0KLQotCXJldHVybiBibG9j azsKLX0KLQotc3RhdGljIHNpemVfdCBibG9jazJieXRlcyhzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3 YywgdTMyIGJsb2NrLCB1MzIgd2lkdGgpCi17Ci0Jc3RydWN0IGR3X2RtYSAqZHcgPSB0b19kd19k bWEoZHdjLT5jaGFuLmRldmljZSk7Ci0KLQlpZiAoZHctPnBkYXRhLT5pc19pZG1hMzIpCi0JCXJl dHVybiBJRE1BMzJDX0NUTEhfQkxPQ0tfVFMoYmxvY2spOwotCi0JcmV0dXJuIERXQ19DVExIX0JM T0NLX1RTKGJsb2NrKSA8PCB3aWR0aDsKLX0KLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyogUGVy Zm9ybSBzaW5nbGUgYmxvY2sgdHJhbnNmZXIgKi8KQEAgLTM5MSwxMCArMzE5LDExIEBAIHN0YXRp YyB2b2lkIGR3Y19jb21wbGV0ZV9hbGwoc3RydWN0IGR3X2RtYSAqZHcsIHN0cnVjdCBkd19kbWFf Y2hhbiAqZHdjKQogLyogUmV0dXJucyBob3cgbWFueSBieXRlcyB3ZXJlIGFscmVhZHkgcmVjZWl2 ZWQgZnJvbSBzb3VyY2UgKi8KIHN0YXRpYyBpbmxpbmUgdTMyIGR3Y19nZXRfc2VudChzdHJ1Y3Qg ZHdfZG1hX2NoYW4gKmR3YykKIHsKKwlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRvX2R3X2RtYShkd2Mt PmNoYW4uZGV2aWNlKTsKIAl1MzIgY3RsaGkgPSBjaGFubmVsX3JlYWRsKGR3YywgQ1RMX0hJKTsK IAl1MzIgY3RsbG8gPSBjaGFubmVsX3JlYWRsKGR3YywgQ1RMX0xPKTsKIAotCXJldHVybiBibG9j azJieXRlcyhkd2MsIGN0bGhpLCBjdGxsbyA+PiA0ICYgNyk7CisJcmV0dXJuIGR3LT5ibG9jazJi eXRlcyhkd2MsIGN0bGhpLCBjdGxsbyA+PiA0ICYgNyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR3Y19z Y2FuX2Rlc2NyaXB0b3JzKHN0cnVjdCBkd19kbWEgKmR3LCBzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3 YykKQEAgLTY1MSw3ICs1ODAsNyBAQCBkd2NfcHJlcF9kbWFfbWVtY3B5KHN0cnVjdCBkbWFfY2hh biAqY2hhbiwgZG1hX2FkZHJfdCBkZXN0LCBkbWFfYWRkcl90IHNyYywKIAl1bnNpZ25lZCBpbnQJ CXNyY193aWR0aDsKIAl1bnNpZ25lZCBpbnQJCWRzdF93aWR0aDsKIAl1bnNpZ25lZCBpbnQJCWRh dGFfd2lkdGggPSBkdy0+cGRhdGEtPmRhdGFfd2lkdGhbbV9tYXN0ZXJdOwotCXUzMgkJCWN0bGxv OworCXUzMgkJCWN0bGxvLCBjdGxoaTsKIAl1OAkJCWxtcyA9IERXQ19MTFBfTE1TKG1fbWFzdGVy KTsKIAogCWRldl92ZGJnKGNoYW4yZGV2KGNoYW4pLApAQCAtNjgwLDEwICs2MDksMTIgQEAgZHdj X3ByZXBfZG1hX21lbWNweShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIGRtYV9hZGRyX3QgZGVzdCwg ZG1hX2FkZHJfdCBzcmMsCiAJCWlmICghZGVzYykKIAkJCWdvdG8gZXJyX2Rlc2NfZ2V0OwogCisJ CWN0bGhpID0gZHctPmJ5dGVzMmJsb2NrKGR3YywgbGVuIC0gb2Zmc2V0LCBzcmNfd2lkdGgsICZ4 ZmVyX2NvdW50KTsKKwogCQlsbGlfd3JpdGUoZGVzYywgc2FyLCBzcmMgKyBvZmZzZXQpOwogCQls bGlfd3JpdGUoZGVzYywgZGFyLCBkZXN0ICsgb2Zmc2V0KTsKIAkJbGxpX3dyaXRlKGRlc2MsIGN0 bGxvLCBjdGxsbyk7Ci0JCWxsaV93cml0ZShkZXNjLCBjdGxoaSwgYnl0ZXMyYmxvY2soZHdjLCBs ZW4gLSBvZmZzZXQsIHNyY193aWR0aCwgJnhmZXJfY291bnQpKTsKKwkJbGxpX3dyaXRlKGRlc2Ms IGN0bGhpLCBjdGxoaSk7CiAJCWRlc2MtPmxlbiA9IHhmZXJfY291bnQ7CiAKIAkJaWYgKCFmaXJz dCkgewpAQCAtNzIxLDcgKzY1Miw3IEBAIGR3Y19wcmVwX3NsYXZlX3NnKHN0cnVjdCBkbWFfY2hh biAqY2hhbiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCiAJc3RydWN0IGRtYV9zbGF2ZV9jb25m aWcJKnNjb25maWcgPSAmZHdjLT5kbWFfc2NvbmZpZzsKIAlzdHJ1Y3QgZHdfZGVzYwkJKnByZXY7 CiAJc3RydWN0IGR3X2Rlc2MJCSpmaXJzdDsKLQl1MzIJCQljdGxsbzsKKwl1MzIJCQljdGxsbywg Y3RsaGk7CiAJdTgJCQltX21hc3RlciA9IGR3Yy0+ZHdzLm1fbWFzdGVyOwogCXU4CQkJbG1zID0g RFdDX0xMUF9MTVMobV9tYXN0ZXIpOwogCWRtYV9hZGRyX3QJCXJlZzsKQEAgLTc2OCw5ICs2OTks MTEgQEAgZHdjX3ByZXBfc2xhdmVfc2coc3RydWN0IGRtYV9jaGFuICpjaGFuLCBzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnbCwKIAkJCWlmICghZGVzYykKIAkJCQlnb3RvIGVycl9kZXNjX2dldDsKIAor CQkJY3RsaGkgPSBkdy0+Ynl0ZXMyYmxvY2soZHdjLCBsZW4sIG1lbV93aWR0aCwgJmRsZW4pOwor CiAJCQlsbGlfd3JpdGUoZGVzYywgc2FyLCBtZW0pOwogCQkJbGxpX3dyaXRlKGRlc2MsIGRhciwg cmVnKTsKLQkJCWxsaV93cml0ZShkZXNjLCBjdGxoaSwgYnl0ZXMyYmxvY2soZHdjLCBsZW4sIG1l bV93aWR0aCwgJmRsZW4pKTsKKwkJCWxsaV93cml0ZShkZXNjLCBjdGxoaSwgY3RsaGkpOwogCQkJ bGxpX3dyaXRlKGRlc2MsIGN0bGxvLCBjdGxsbyB8IERXQ19DVExMX1NSQ19XSURUSChtZW1fd2lk dGgpKTsKIAkJCWRlc2MtPmxlbiA9IGRsZW47CiAKQEAgLTgxNCw5ICs3NDcsMTEgQEAgZHdjX3By ZXBfc2xhdmVfc2coc3RydWN0IGRtYV9jaGFuICpjaGFuLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn bCwKIAkJCWlmICghZGVzYykKIAkJCQlnb3RvIGVycl9kZXNjX2dldDsKIAorCQkJY3RsaGkgPSBk dy0+Ynl0ZXMyYmxvY2soZHdjLCBsZW4sIHJlZ193aWR0aCwgJmRsZW4pOworCiAJCQlsbGlfd3Jp dGUoZGVzYywgc2FyLCByZWcpOwogCQkJbGxpX3dyaXRlKGRlc2MsIGRhciwgbWVtKTsKLQkJCWxs aV93cml0ZShkZXNjLCBjdGxoaSwgYnl0ZXMyYmxvY2soZHdjLCBsZW4sIHJlZ193aWR0aCwgJmRs ZW4pKTsKKwkJCWxsaV93cml0ZShkZXNjLCBjdGxoaSwgY3RsaGkpOwogCQkJbWVtX3dpZHRoID0g X19mZnMoZGF0YV93aWR0aCB8IG1lbSB8IGRsZW4pOwogCQkJbGxpX3dyaXRlKGRlc2MsIGN0bGxv LCBjdGxsbyB8IERXQ19DVExMX0RTVF9XSURUSChtZW1fd2lkdGgpKTsKIAkJCWRlc2MtPmxlbiA9 IGRsZW47CkBAIC04NzYsMjIgKzgxMSwxMiBAQCBFWFBPUlRfU1lNQk9MX0dQTChkd19kbWFfZmls dGVyKTsKIHN0YXRpYyBpbnQgZHdjX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHN0cnVj dCBkbWFfc2xhdmVfY29uZmlnICpzY29uZmlnKQogewogCXN0cnVjdCBkd19kbWFfY2hhbiAqZHdj ID0gdG9fZHdfZG1hX2NoYW4oY2hhbik7Ci0Jc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgKnNjID0g JmR3Yy0+ZG1hX3Njb25maWc7CiAJc3RydWN0IGR3X2RtYSAqZHcgPSB0b19kd19kbWEoY2hhbi0+ ZGV2aWNlKTsKLQkvKgotCSAqIEZpeCBzY29uZmlnJ3MgYnVyc3Qgc2l6ZSBhY2NvcmRpbmcgdG8g ZHdfZG1hYy4gV2UgbmVlZCB0byBjb252ZXJ0Ci0JICogdGhlbSBhczoKLQkgKiAxIC0+IDAsIDQg LT4gMSwgOCAtPiAyLCAxNiAtPiAzLgotCSAqCi0JICogTk9URTogYnVyc3Qgc2l6ZSAyIGlzIG5v dCBzdXBwb3J0ZWQgYnkgRGVzaWduV2FyZSBjb250cm9sbGVyLgotCSAqICAgICAgIGlETUEgMzIt Yml0IHN1cHBvcnRzIGl0LgotCSAqLwotCXUzMiBzID0gZHctPnBkYXRhLT5pc19pZG1hMzIgPyAx IDogMjsKIAogCW1lbWNweSgmZHdjLT5kbWFfc2NvbmZpZywgc2NvbmZpZywgc2l6ZW9mKCpzY29u ZmlnKSk7CiAKLQlzYy0+c3JjX21heGJ1cnN0ID0gc2MtPnNyY19tYXhidXJzdCA+IDEgPyBmbHMo c2MtPnNyY19tYXhidXJzdCkgLSBzIDogMDsKLQlzYy0+ZHN0X21heGJ1cnN0ID0gc2MtPmRzdF9t YXhidXJzdCA+IDEgPyBmbHMoc2MtPmRzdF9tYXhidXJzdCkgLSBzIDogMDsKKwlkdy0+ZW5jb2Rl X21heGJ1cnN0KGR3YywgJmR3Yy0+ZG1hX3Njb25maWcuc3JjX21heGJ1cnN0KTsKKwlkdy0+ZW5j b2RlX21heGJ1cnN0KGR3YywgJmR3Yy0+ZG1hX3Njb25maWcuZHN0X21heGJ1cnN0KTsKIAogCXJl dHVybiAwOwogfQpAQCAtOTAwLDE2ICs4MjUsOSBAQCBzdGF0aWMgdm9pZCBkd2NfY2hhbl9wYXVz ZShzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YywgYm9vbCBkcmFpbikKIHsKIAlzdHJ1Y3QgZHdfZG1h ICpkdyA9IHRvX2R3X2RtYShkd2MtPmNoYW4uZGV2aWNlKTsKIAl1bnNpZ25lZCBpbnQJCWNvdW50 ID0gMjA7CS8qIHRpbWVvdXQgaXRlcmF0aW9ucyAqLwotCXUzMgkJCWNmZ2xvOwogCi0JY2ZnbG8g PSBjaGFubmVsX3JlYWRsKGR3YywgQ0ZHX0xPKTsKLQlpZiAoZHctPnBkYXRhLT5pc19pZG1hMzIp IHsKLQkJaWYgKGRyYWluKQotCQkJY2ZnbG8gfD0gSURNQTMyQ19DRkdMX0NIX0RSQUlOOwotCQll bHNlCi0JCQljZmdsbyAmPSB+SURNQTMyQ19DRkdMX0NIX0RSQUlOOwotCX0KLQljaGFubmVsX3dy aXRlbChkd2MsIENGR19MTywgY2ZnbG8gfCBEV0NfQ0ZHTF9DSF9TVVNQKTsKKwlkdy0+c3VzcGVu ZF9jaGFuKGR3YywgZHJhaW4pOworCiAJd2hpbGUgKCEoY2hhbm5lbF9yZWFkbChkd2MsIENGR19M TykgJiBEV0NfQ0ZHTF9GSUZPX0VNUFRZKSAmJiBjb3VudC0tKQogCQl1ZGVsYXkoMik7CiAKQEAg LTEwNTgsMzMgKzk3Niw3IEBAIHN0YXRpYyB2b2lkIGR3Y19pc3N1ZV9wZW5kaW5nKHN0cnVjdCBk bWFfY2hhbiAqY2hhbikKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotLyoKLSAqIFByb2dyYW0gRklG TyBzaXplIG9mIGNoYW5uZWxzLgotICoKLSAqIEJ5IGRlZmF1bHQgZnVsbCBGSUZPICg1MTIgYnl0 ZXMpIGlzIGFzc2lnbmVkIHRvIGNoYW5uZWwgMC4gSGVyZSB3ZQotICogc2xpY2UgRklGTyBvbiBl cXVhbCBwYXJ0cyBiZXR3ZWVuIGNoYW5uZWxzLgotICovCi1zdGF0aWMgdm9pZCBpZG1hMzJfZmlm b19wYXJ0aXRpb24oc3RydWN0IGR3X2RtYSAqZHcpCi17Ci0JdTY0IHZhbHVlID0gSURNQTMyQ19G UF9QU0laRV9DSDAoNjQpIHwgSURNQTMyQ19GUF9QU0laRV9DSDEoNjQpIHwKLQkJICAgIElETUEz MkNfRlBfVVBEQVRFOwotCXU2NCBmaWZvX3BhcnRpdGlvbiA9IDA7Ci0KLQlpZiAoIWR3LT5wZGF0 YS0+aXNfaWRtYTMyKQotCQlyZXR1cm47Ci0KLQkvKiBGaWxsIEZJRk9fUEFSVElUSU9OIGxvdyBi aXRzIChDaGFubmVscyAwLi4xLCA0Li41KSAqLwotCWZpZm9fcGFydGl0aW9uIHw9IHZhbHVlIDw8 IDA7Ci0KLQkvKiBGaWxsIEZJRk9fUEFSVElUSU9OIGhpZ2ggYml0cyAoQ2hhbm5lbHMgMi4uMywg Ni4uNykgKi8KLQlmaWZvX3BhcnRpdGlvbiB8PSB2YWx1ZSA8PCAzMjsKLQotCS8qIFByb2dyYW0g RklGTyBQYXJ0aXRpb24gcmVnaXN0ZXJzIC0gNjQgYnl0ZXMgcGVyIGNoYW5uZWwgKi8KLQlpZG1h MzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjEsIGZpZm9fcGFydGl0aW9uKTsKLQlpZG1hMzJf d3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjAsIGZpZm9fcGFydGl0aW9uKTsKLX0KLQotc3RhdGlj IHZvaWQgZHdfZG1hX29mZihzdHJ1Y3QgZHdfZG1hICpkdykKK3ZvaWQgZG9fZHdfZG1hX29mZihz dHJ1Y3QgZHdfZG1hICpkdykKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIApAQCAtMTEwMyw3ICs5OTUs NyBAQCBzdGF0aWMgdm9pZCBkd19kbWFfb2ZmKHN0cnVjdCBkd19kbWEgKmR3KQogCQljbGVhcl9i aXQoRFdfRE1BX0lTX0lOSVRJQUxJWkVELCAmZHctPmNoYW5baV0uZmxhZ3MpOwogfQogCi1zdGF0 aWMgdm9pZCBkd19kbWFfb24oc3RydWN0IGR3X2RtYSAqZHcpCit2b2lkIGRvX2R3X2RtYV9vbihz dHJ1Y3QgZHdfZG1hICpkdykKIHsKIAlkbWFfd3JpdGVsKGR3LCBDRkcsIERXX0NGR19ETUFfRU4p OwogfQpAQCAtMTEzOSw3ICsxMDMxLDcgQEAgc3RhdGljIGludCBkd2NfYWxsb2NfY2hhbl9yZXNv dXJjZXMoc3RydWN0IGRtYV9jaGFuICpjaGFuKQogCiAJLyogRW5hYmxlIGNvbnRyb2xsZXIgaGVy ZSBpZiBuZWVkZWQgKi8KIAlpZiAoIWR3LT5pbl91c2UpCi0JCWR3X2RtYV9vbihkdyk7CisJCWRv X2R3X2RtYV9vbihkdyk7CiAJZHctPmluX3VzZSB8PSBkd2MtPm1hc2s7CiAKIAlyZXR1cm4gMDsK QEAgLTExNzcsMzAgKzEwNjksMjUgQEAgc3RhdGljIHZvaWQgZHdjX2ZyZWVfY2hhbl9yZXNvdXJj ZXMoc3RydWN0IGRtYV9jaGFuICpjaGFuKQogCS8qIERpc2FibGUgY29udHJvbGxlciBpbiBjYXNl IGl0IHdhcyBhIGxhc3QgdXNlciAqLwogCWR3LT5pbl91c2UgJj0gfmR3Yy0+bWFzazsKIAlpZiAo IWR3LT5pbl91c2UpCi0JCWR3X2RtYV9vZmYoZHcpOworCQlkb19kd19kbWFfb2ZmKGR3KTsKIAog CWRldl92ZGJnKGNoYW4yZGV2KGNoYW4pLCAiJXM6IGRvbmVcbiIsIF9fZnVuY19fKTsKIH0KIAot aW50IGR3X2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCitpbnQgZG9fZG1hX3By b2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIHsKKwlzdHJ1Y3QgZHdfZG1hICpkdyA9IGNo aXAtPmR3OwogCXN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0YSAqcGRhdGE7Ci0Jc3RydWN0IGR3 X2RtYQkJKmR3OwogCWJvb2wJCQlhdXRvY2ZnID0gZmFsc2U7CiAJdW5zaWduZWQgaW50CQlkd19w YXJhbXM7CiAJdW5zaWduZWQgaW50CQlpOwogCWludAkJCWVycjsKIAotCWR3ID0gZGV2bV9remFs bG9jKGNoaXAtPmRldiwgc2l6ZW9mKCpkdyksIEdGUF9LRVJORUwpOwotCWlmICghZHcpCi0JCXJl dHVybiAtRU5PTUVNOwotCiAJZHctPnBkYXRhID0gZGV2bV9remFsbG9jKGNoaXAtPmRldiwgc2l6 ZW9mKCpkdy0+cGRhdGEpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWR3LT5wZGF0YSkKIAkJcmV0dXJu IC1FTk9NRU07CiAKIAlkdy0+cmVncyA9IGNoaXAtPnJlZ3M7Ci0JY2hpcC0+ZHcgPSBkdzsKIAog CXBtX3J1bnRpbWVfZ2V0X3N5bmMoY2hpcC0+ZGV2KTsKIApAQCAtMTI1MCwxNSArMTEzNywxMCBA QCBpbnQgZHdfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIAlkdy0+YWxsX2No YW5fbWFzayA9ICgxIDw8IHBkYXRhLT5ucl9jaGFubmVscykgLSAxOwogCiAJLyogRm9yY2UgZG1h IG9mZiwganVzdCBpbiBjYXNlICovCi0JZHdfZG1hX29mZihkdyk7Ci0KLQlpZG1hMzJfZmlmb19w YXJ0aXRpb24oZHcpOworCWR3LT5kaXNhYmxlKGR3KTsKIAogCS8qIERldmljZSBhbmQgaW5zdGFu Y2UgSUQgZm9yIElSUSBhbmQgRE1BIHBvb2wgKi8KLQlpZiAocGRhdGEtPmlzX2lkbWEzMikKLQkJ c25wcmludGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJpZG1hMzI6ZG1hYyVkIiwgY2hp cC0+aWQpOwotCWVsc2UKLQkJc25wcmludGYoZHctPm5hbWUsIHNpemVvZihkdy0+bmFtZSksICJk dzpkbWFjJWQiLCBjaGlwLT5pZCk7CisJZHctPnNldF9kZXZpY2VfbmFtZShkdywgY2hpcC0+aWQp OwogCiAJLyogQ3JlYXRlIGEgcG9vbCBvZiBjb25zaXN0ZW50IG1lbW9yeSBibG9ja3MgZm9yIGhh cmR3YXJlIGRlc2NyaXB0b3JzICovCiAJZHctPmRlc2NfcG9vbCA9IGRtYW1fcG9vbF9jcmVhdGUo ZHctPm5hbWUsIGNoaXAtPmRldiwKQEAgLTEzODAsMTYgKzEyNjIsMTUgQEAgaW50IGR3X2RtYV9w cm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCiAJcG1fcnVudGltZV9wdXRfc3luY19zdXNw ZW5kKGNoaXAtPmRldik7CiAJcmV0dXJuIGVycjsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGR3X2Rt YV9wcm9iZSk7CiAKLWludCBkd19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkK K2ludCBkb19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIHsKIAlzdHJ1Y3Qg ZHdfZG1hCQkqZHcgPSBjaGlwLT5kdzsKIAlzdHJ1Y3QgZHdfZG1hX2NoYW4JKmR3YywgKl9kd2M7 CiAKIAlwbV9ydW50aW1lX2dldF9zeW5jKGNoaXAtPmRldik7CiAKLQlkd19kbWFfb2ZmKGR3KTsK Kwlkb19kd19kbWFfb2ZmKGR3KTsKIAlkbWFfYXN5bmNfZGV2aWNlX3VucmVnaXN0ZXIoJmR3LT5k bWEpOwogCiAJZnJlZV9pcnEoY2hpcC0+aXJxLCBkdyk7CkBAIC0xNDA0LDI3ICsxMjg1LDI0IEBA IGludCBkd19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKIAlwbV9ydW50aW1l X3B1dF9zeW5jX3N1c3BlbmQoY2hpcC0+ZGV2KTsKIAlyZXR1cm4gMDsKIH0KLUVYUE9SVF9TWU1C T0xfR1BMKGR3X2RtYV9yZW1vdmUpOwogCi1pbnQgZHdfZG1hX2Rpc2FibGUoc3RydWN0IGR3X2Rt YV9jaGlwICpjaGlwKQoraW50IGRvX2R3X2RtYV9kaXNhYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAq Y2hpcCkKIHsKIAlzdHJ1Y3QgZHdfZG1hICpkdyA9IGNoaXAtPmR3OwogCi0JZHdfZG1hX29mZihk dyk7CisJZHctPmRpc2FibGUoZHcpOwogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTF9HUEwo ZHdfZG1hX2Rpc2FibGUpOworRVhQT1JUX1NZTUJPTF9HUEwoZG9fZHdfZG1hX2Rpc2FibGUpOwog Ci1pbnQgZHdfZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCitpbnQgZG9fZHdf ZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApCiB7CiAJc3RydWN0IGR3X2RtYSAq ZHcgPSBjaGlwLT5kdzsKIAotCWlkbWEzMl9maWZvX3BhcnRpdGlvbihkdyk7Ci0KLQlkd19kbWFf b24oZHcpOworCWR3LT5lbmFibGUoZHcpOwogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTF9H UEwoZHdfZG1hX2VuYWJsZSk7CitFWFBPUlRfU1lNQk9MX0dQTChkb19kd19kbWFfZW5hYmxlKTsK IAogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTeW5vcHN5 cyBEZXNpZ25XYXJlIERNQSBDb250cm9sbGVyIGNvcmUgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS9kdy9kdy5jIGIvZHJpdmVycy9kbWEvZHcvZHcuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3N2FhMjhiZjgxZAotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZG1hL2R3L2R3LmMKQEAgLTAsMCArMSwxMTIgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCisvLyBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBBdG1lbCBDb3Jw b3JhdGlvbgorLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgU1QgTWljcm9lbGVjdHJvbmljcwor Ly8gQ29weXJpZ2h0IChDKSAyMDEzLDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKworI2luY2x1ZGUg PGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlICJpbnRlcm5h bC5oIgorCitzdGF0aWMgdm9pZCBkd19kbWFfaW5pdGlhbGl6ZV9jaGFuKHN0cnVjdCBkd19kbWFf Y2hhbiAqZHdjKQoreworCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5k ZXZpY2UpOworCXUzMiBjZmdoaSA9IERXQ19DRkdIX0ZJRk9fTU9ERTsKKwl1MzIgY2ZnbG8gPSBE V0NfQ0ZHTF9DSF9QUklPUihkd2MtPnByaW9yaXR5KTsKKwlib29sIGhzX3BvbGFyaXR5ID0gZHdj LT5kd3MuaHNfcG9sYXJpdHk7CisKKwljZmdoaSB8PSBEV0NfQ0ZHSF9EU1RfUEVSKGR3Yy0+ZHdz LmRzdF9pZCk7CisJY2ZnaGkgfD0gRFdDX0NGR0hfU1JDX1BFUihkd2MtPmR3cy5zcmNfaWQpOwor CWNmZ2hpIHw9IERXQ19DRkdIX1BST1RDVEwoZHctPnBkYXRhLT5wcm90Y3RsKTsKKworCS8qIFNl dCBwb2xhcml0eSBvZiBoYW5kc2hha2UgaW50ZXJmYWNlICovCisJY2ZnbG8gfD0gaHNfcG9sYXJp dHkgPyBEV0NfQ0ZHTF9IU19EU1RfUE9MIHwgRFdDX0NGR0xfSFNfU1JDX1BPTCA6IDA7CisKKwlj aGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8pOworCWNoYW5uZWxfd3JpdGVsKGR3Yywg Q0ZHX0hJLCBjZmdoaSk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2RtYV9zdXNwZW5kX2NoYW4oc3Ry dWN0IGR3X2RtYV9jaGFuICpkd2MsIGJvb2wgZHJhaW4pCit7CisJdTMyIGNmZ2xvID0gY2hhbm5l bF9yZWFkbChkd2MsIENGR19MTyk7CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2Zn bG8gfCBEV0NfQ0ZHTF9DSF9TVVNQKTsKK30KKworc3RhdGljIHUzMiBkd19kbWFfYnl0ZXMyYmxv Y2soc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsCisJCQkgICAgICBzaXplX3QgYnl0ZXMsIHVuc2ln bmVkIGludCB3aWR0aCwgc2l6ZV90ICpsZW4pCit7CisJdTMyIGJsb2NrOworCisJaWYgKChieXRl cyA+PiB3aWR0aCkgPiBkd2MtPmJsb2NrX3NpemUpIHsKKwkJYmxvY2sgPSBkd2MtPmJsb2NrX3Np emU7CisJCSpsZW4gPSBkd2MtPmJsb2NrX3NpemUgPDwgd2lkdGg7CisJfSBlbHNlIHsKKwkJYmxv Y2sgPSBieXRlcyA+PiB3aWR0aDsKKwkJKmxlbiA9IGJ5dGVzOworCX0KKworCXJldHVybiBibG9j azsKK30KKworc3RhdGljIHNpemVfdCBkd19kbWFfYmxvY2syYnl0ZXMoc3RydWN0IGR3X2RtYV9j aGFuICpkd2MsIHUzMiBibG9jaywgdTMyIHdpZHRoKQoreworCXJldHVybiBEV0NfQ1RMSF9CTE9D S19UUyhibG9jaykgPDwgd2lkdGg7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2RtYV9lbmNvZGVfbWF4 YnVyc3Qoc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIHUzMiAqbWF4YnVyc3QpCit7CisJLyoKKwkg KiBGaXggYnVyc3Qgc2l6ZSBhY2NvcmRpbmcgdG8gZHdfZG1hYy4gV2UgbmVlZCB0byBjb252ZXJ0 IHRoZW0gYXM6CisJICogMSAtPiAwLCA0IC0+IDEsIDggLT4gMiwgMTYgLT4gMy4KKwkgKi8KKwkq bWF4YnVyc3QgPSAqbWF4YnVyc3QgPiAxID8gZmxzKCptYXhidXJzdCkgLSAyIDogMDsKK30KKwor c3RhdGljIHZvaWQgZHdfZG1hX3NldF9kZXZpY2VfbmFtZShzdHJ1Y3QgZHdfZG1hICpkdywgaW50 IGlkKQoreworCXNucHJpbnRmKGR3LT5uYW1lLCBzaXplb2YoZHctPm5hbWUpLCAiZHc6ZG1hYyVk IiwgaWQpOworfQorCitzdGF0aWMgdm9pZCBkd19kbWFfZGlzYWJsZShzdHJ1Y3QgZHdfZG1hICpk dykKK3sKKwlkb19kd19kbWFfb2ZmKGR3KTsKK30KKworc3RhdGljIHZvaWQgZHdfZG1hX2VuYWJs ZShzdHJ1Y3QgZHdfZG1hICpkdykKK3sKKwlkb19kd19kbWFfb24oZHcpOworfQorCitpbnQgZHdf ZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK3sKKwlzdHJ1Y3QgZHdfZG1hICpk dzsKKworCWR3ID0gZGV2bV9remFsbG9jKGNoaXAtPmRldiwgc2l6ZW9mKCpkdyksIEdGUF9LRVJO RUwpOworCWlmICghZHcpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogQ2hhbm5lbCBvcGVyYXRp b25zICovCisJZHctPmluaXRpYWxpemVfY2hhbiA9IGR3X2RtYV9pbml0aWFsaXplX2NoYW47CisJ ZHctPnN1c3BlbmRfY2hhbiA9IGR3X2RtYV9zdXNwZW5kX2NoYW47CisJZHctPmVuY29kZV9tYXhi dXJzdCA9IGR3X2RtYV9lbmNvZGVfbWF4YnVyc3Q7CisJZHctPmJ5dGVzMmJsb2NrID0gZHdfZG1h X2J5dGVzMmJsb2NrOworCWR3LT5ibG9jazJieXRlcyA9IGR3X2RtYV9ibG9jazJieXRlczsKKwor CS8qIERldmljZSBvcGVyYXRpb25zICovCisJZHctPnNldF9kZXZpY2VfbmFtZSA9IGR3X2RtYV9z ZXRfZGV2aWNlX25hbWU7CisJZHctPmRpc2FibGUgPSBkd19kbWFfZGlzYWJsZTsKKwlkdy0+ZW5h YmxlID0gZHdfZG1hX2VuYWJsZTsKKworCWNoaXAtPmR3ID0gZHc7CisJcmV0dXJuIGRvX2RtYV9w cm9iZShjaGlwKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGR3X2RtYV9wcm9iZSk7CisKK2ludCBk d19kbWFfcmVtb3ZlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK3sKKwlyZXR1cm4gZG9fZG1h X3JlbW92ZShjaGlwKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGR3X2RtYV9yZW1vdmUpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvaWRtYTMyLmMgYi9kcml2ZXJzL2RtYS9kdy9pZG1hMzIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3MDc4MzBmMzlhZAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZG1hL2R3L2lkbWEzMi5jCkBAIC0wLDAgKzEsMTM4 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLy8gQ29weXJpZ2h0IChD KSAyMDEzLDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKworI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5o PgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitzdGF0aWMg dm9pZCBpZG1hMzJfaW5pdGlhbGl6ZV9jaGFuKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjKQorewor CXUzMiBjZmdoaSA9IDA7CisJdTMyIGNmZ2xvID0gMDsKKworCS8qIFNldCBkZWZhdWx0IGJ1cnN0 IGFsaWdubWVudCAqLworCWNmZ2xvIHw9IElETUEzMkNfQ0ZHTF9EU1RfQlVSU1RfQUxJR04gfCBJ RE1BMzJDX0NGR0xfU1JDX0JVUlNUX0FMSUdOOworCisJLyogTG93IDQgYml0cyBvZiB0aGUgcmVx dWVzdCBsaW5lcyAqLworCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9EU1RfUEVSKGR3Yy0+ZHdzLmRz dF9pZCAmIDB4Zik7CisJY2ZnaGkgfD0gSURNQTMyQ19DRkdIX1NSQ19QRVIoZHdjLT5kd3Muc3Jj X2lkICYgMHhmKTsKKworCS8qIFJlcXVlc3QgbGluZSBleHRlbnNpb24gKDIgYml0cykgKi8KKwlj ZmdoaSB8PSBJRE1BMzJDX0NGR0hfRFNUX1BFUl9FWFQoZHdjLT5kd3MuZHN0X2lkID4+IDQgJiAw eDMpOworCWNmZ2hpIHw9IElETUEzMkNfQ0ZHSF9TUkNfUEVSX0VYVChkd2MtPmR3cy5zcmNfaWQg Pj4gNCAmIDB4Myk7CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8pOworCWNo YW5uZWxfd3JpdGVsKGR3YywgQ0ZHX0hJLCBjZmdoaSk7Cit9CisKK3N0YXRpYyB2b2lkIGlkbWEz Ml9zdXNwZW5kX2NoYW4oc3RydWN0IGR3X2RtYV9jaGFuICpkd2MsIGJvb2wgZHJhaW4pCit7CisJ dTMyIGNmZ2xvID0gY2hhbm5lbF9yZWFkbChkd2MsIENGR19MTyk7CisKKwlpZiAoZHJhaW4pCisJ CWNmZ2xvIHw9IElETUEzMkNfQ0ZHTF9DSF9EUkFJTjsKKwllbHNlCisJCWNmZ2xvICY9IH5JRE1B MzJDX0NGR0xfQ0hfRFJBSU47CisKKwljaGFubmVsX3dyaXRlbChkd2MsIENGR19MTywgY2ZnbG8g fCBEV0NfQ0ZHTF9DSF9TVVNQKTsKK30KKworc3RhdGljIHUzMiBpZG1hMzJfYnl0ZXMyYmxvY2so c3RydWN0IGR3X2RtYV9jaGFuICpkd2MsCisJCQkgICAgICBzaXplX3QgYnl0ZXMsIHVuc2lnbmVk IGludCB3aWR0aCwgc2l6ZV90ICpsZW4pCit7CisJdTMyIGJsb2NrOworCisJaWYgKGJ5dGVzID4g ZHdjLT5ibG9ja19zaXplKSB7CisJCWJsb2NrID0gZHdjLT5ibG9ja19zaXplOworCQkqbGVuID0g ZHdjLT5ibG9ja19zaXplOworCX0gZWxzZSB7CisJCWJsb2NrID0gYnl0ZXM7CisJCSpsZW4gPSBi eXRlczsKKwl9CisKKwlyZXR1cm4gYmxvY2s7Cit9CisKK3N0YXRpYyBzaXplX3QgaWRtYTMyX2Js b2NrMmJ5dGVzKHN0cnVjdCBkd19kbWFfY2hhbiAqZHdjLCB1MzIgYmxvY2ssIHUzMiB3aWR0aCkK K3sKKwlyZXR1cm4gSURNQTMyQ19DVExIX0JMT0NLX1RTKGJsb2NrKTsKK30KKworc3RhdGljIHZv aWQgaWRtYTMyX2VuY29kZV9tYXhidXJzdChzdHJ1Y3QgZHdfZG1hX2NoYW4gKmR3YywgdTMyICpt YXhidXJzdCkKK3sKKwkqbWF4YnVyc3QgPSAqbWF4YnVyc3QgPiAxID8gZmxzKCptYXhidXJzdCkg LSAxIDogMDsKK30KKworc3RhdGljIHZvaWQgaWRtYTMyX3NldF9kZXZpY2VfbmFtZShzdHJ1Y3Qg ZHdfZG1hICpkdywgaW50IGlkKQoreworCXNucHJpbnRmKGR3LT5uYW1lLCBzaXplb2YoZHctPm5h bWUpLCAiaWRtYTMyOmRtYWMlZCIsIGlkKTsKK30KKworLyoKKyAqIFByb2dyYW0gRklGTyBzaXpl IG9mIGNoYW5uZWxzLgorICoKKyAqIEJ5IGRlZmF1bHQgZnVsbCBGSUZPICg1MTIgYnl0ZXMpIGlz IGFzc2lnbmVkIHRvIGNoYW5uZWwgMC4gSGVyZSB3ZQorICogc2xpY2UgRklGTyBvbiBlcXVhbCBw YXJ0cyBiZXR3ZWVuIGNoYW5uZWxzLgorICovCitzdGF0aWMgdm9pZCBpZG1hMzJfZmlmb19wYXJ0 aXRpb24oc3RydWN0IGR3X2RtYSAqZHcpCit7CisJdTY0IHZhbHVlID0gSURNQTMyQ19GUF9QU0la RV9DSDAoNjQpIHwgSURNQTMyQ19GUF9QU0laRV9DSDEoNjQpIHwKKwkJICAgIElETUEzMkNfRlBf VVBEQVRFOworCXU2NCBmaWZvX3BhcnRpdGlvbiA9IDA7CisKKwkvKiBGaWxsIEZJRk9fUEFSVElU SU9OIGxvdyBiaXRzIChDaGFubmVscyAwLi4xLCA0Li41KSAqLworCWZpZm9fcGFydGl0aW9uIHw9 IHZhbHVlIDw8IDA7CisKKwkvKiBGaWxsIEZJRk9fUEFSVElUSU9OIGhpZ2ggYml0cyAoQ2hhbm5l bHMgMi4uMywgNi4uNykgKi8KKwlmaWZvX3BhcnRpdGlvbiB8PSB2YWx1ZSA8PCAzMjsKKworCS8q IFByb2dyYW0gRklGTyBQYXJ0aXRpb24gcmVnaXN0ZXJzIC0gNjQgYnl0ZXMgcGVyIGNoYW5uZWwg Ki8KKwlpZG1hMzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjEsIGZpZm9fcGFydGl0aW9uKTsK KwlpZG1hMzJfd3JpdGVxKGR3LCBGSUZPX1BBUlRJVElPTjAsIGZpZm9fcGFydGl0aW9uKTsKK30K Kworc3RhdGljIHZvaWQgaWRtYTMyX2Rpc2FibGUoc3RydWN0IGR3X2RtYSAqZHcpCit7CisJZG9f ZHdfZG1hX29mZihkdyk7CisJaWRtYTMyX2ZpZm9fcGFydGl0aW9uKGR3KTsKK30KKworc3RhdGlj IHZvaWQgaWRtYTMyX2VuYWJsZShzdHJ1Y3QgZHdfZG1hICpkdykKK3sKKwlpZG1hMzJfZmlmb19w YXJ0aXRpb24oZHcpOworCWRvX2R3X2RtYV9vbihkdyk7Cit9CisKK2ludCBpZG1hMzJfZG1hX3By b2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkKK3sKKwlzdHJ1Y3QgZHdfZG1hICpkdzsKKwor CWR3ID0gZGV2bV9remFsbG9jKGNoaXAtPmRldiwgc2l6ZW9mKCpkdyksIEdGUF9LRVJORUwpOwor CWlmICghZHcpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogQ2hhbm5lbCBvcGVyYXRpb25zICov CisJZHctPmluaXRpYWxpemVfY2hhbiA9IGlkbWEzMl9pbml0aWFsaXplX2NoYW47CisJZHctPnN1 c3BlbmRfY2hhbiA9IGlkbWEzMl9zdXNwZW5kX2NoYW47CisJZHctPmVuY29kZV9tYXhidXJzdCA9 IGlkbWEzMl9lbmNvZGVfbWF4YnVyc3Q7CisJZHctPmJ5dGVzMmJsb2NrID0gaWRtYTMyX2J5dGVz MmJsb2NrOworCWR3LT5ibG9jazJieXRlcyA9IGlkbWEzMl9ibG9jazJieXRlczsKKworCS8qIERl dmljZSBvcGVyYXRpb25zICovCisJZHctPnNldF9kZXZpY2VfbmFtZSA9IGlkbWEzMl9zZXRfZGV2 aWNlX25hbWU7CisJZHctPmRpc2FibGUgPSBpZG1hMzJfZGlzYWJsZTsKKwlkdy0+ZW5hYmxlID0g aWRtYTMyX2VuYWJsZTsKKworCWNoaXAtPmR3ID0gZHc7CisJcmV0dXJuIGRvX2RtYV9wcm9iZShj aGlwKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlkbWEzMl9kbWFfcHJvYmUpOworCitpbnQgaWRt YTMyX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKQoreworCXJldHVybiBkb19k bWFfcmVtb3ZlKGNoaXApOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaWRtYTMyX2RtYV9yZW1vdmUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvaW50ZXJuYWwuaCBiL2RyaXZlcnMvZG1hL2R3 L2ludGVybmFsLmgKaW5kZXggNDE0Mzk3MzJmZjZiLi5mZGNhYzIxZWE2NjUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZG1hL2R3L2ludGVybmFsLmgKKysrIGIvZHJpdmVycy9kbWEvZHcvaW50ZXJuYWwu aApAQCAtMTUsOCArMTUsMTQgQEAKIAogI2luY2x1ZGUgInJlZ3MuaCIKIAotaW50IGR3X2RtYV9k aXNhYmxlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7Ci1pbnQgZHdfZG1hX2VuYWJsZShzdHJ1 Y3QgZHdfZG1hX2NoaXAgKmNoaXApOworaW50IGRvX2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2No aXAgKmNoaXApOworaW50IGRvX2RtYV9yZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKTsK Kwordm9pZCBkb19kd19kbWFfb24oc3RydWN0IGR3X2RtYSAqZHcpOwordm9pZCBkb19kd19kbWFf b2ZmKHN0cnVjdCBkd19kbWEgKmR3KTsKKworaW50IGRvX2R3X2RtYV9kaXNhYmxlKHN0cnVjdCBk d19kbWFfY2hpcCAqY2hpcCk7CitpbnQgZG9fZHdfZG1hX2VuYWJsZShzdHJ1Y3QgZHdfZG1hX2No aXAgKmNoaXApOwogCiBleHRlcm4gYm9vbCBkd19kbWFfZmlsdGVyKHN0cnVjdCBkbWFfY2hhbiAq Y2hhbiwgdm9pZCAqcGFyYW0pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9kdy9wY2kuYyBi L2RyaXZlcnMvZG1hL2R3L3BjaS5jCmluZGV4IDY2ZDk4ZDdjY2FkMC4uZTliYTI1YjRmOTUwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2RtYS9kdy9wY2kuYworKysgYi9kcml2ZXJzL2RtYS9kdy9wY2ku YwpAQCAtMTUsOSArMTUsMTcgQEAKIAogI2luY2x1ZGUgImludGVybmFsLmgiCiAKLXN0YXRpYyBz dHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEgbXJmbGRfcGRhdGEgPSB7CitzdHJ1Y3QgZHdfZG1h X3BjaV9kYXRhIHsKKwljb25zdCBzdHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEgKnBkYXRhOwor CWludCAoKnByb2JlKShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXApOworfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBkd19kbWFfcGNpX2RhdGEgZHdfcGNpX2RhdGEgPSB7CisJLnByb2JlID0gZHdf ZG1hX3Byb2JlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0 YSBpZG1hMzJfcGRhdGEgPSB7CiAJLm5yX2NoYW5uZWxzID0gOCwKLQkuaXNfaWRtYTMyID0gdHJ1 ZSwKIAkuY2hhbl9hbGxvY2F0aW9uX29yZGVyID0gQ0hBTl9BTExPQ0FUSU9OX0FTQ0VORElORywK IAkuY2hhbl9wcmlvcml0eSA9IENIQU5fUFJJT1JJVFlfQVNDRU5ESU5HLAogCS5ibG9ja19zaXpl ID0gMTMxMDcxLApAQCAtMjYsOSArMzQsMTQgQEAgc3RhdGljIHN0cnVjdCBkd19kbWFfcGxhdGZv cm1fZGF0YSBtcmZsZF9wZGF0YSA9IHsKIAkubXVsdGlfYmxvY2sgPSB7MSwgMSwgMSwgMSwgMSwg MSwgMSwgMX0sCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGR3X2RtYV9wY2lfZGF0YSBpZG1h MzJfcGNpX2RhdGEgPSB7CisJLnBkYXRhID0gJmlkbWEzMl9wZGF0YSwKKwkucHJvYmUgPSBpZG1h MzJfZG1hX3Byb2JlLAorfTsKKwogc3RhdGljIGludCBkd19wY2lfcHJvYmUoc3RydWN0IHBjaV9k ZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwaWQpCiB7Ci0JY29uc3Qgc3Ry dWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhICpwZGF0YSA9ICh2b2lkICopcGlkLT5kcml2ZXJfZGF0 YTsKKwljb25zdCBzdHJ1Y3QgZHdfZG1hX3BjaV9kYXRhICpkYXRhID0gKHZvaWQgKilwaWQtPmRy aXZlcl9kYXRhOwogCXN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcDsKIAlpbnQgcmV0OwogCkBAIC02 MSw5ICs3NCw5IEBAIHN0YXRpYyBpbnQgZHdfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2 LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGlkKQogCWNoaXAtPmlkID0gcGRldi0+ZGV2 Zm47CiAJY2hpcC0+cmVncyA9IHBjaW1faW9tYXBfdGFibGUocGRldilbMF07CiAJY2hpcC0+aXJx ID0gcGRldi0+aXJxOwotCWNoaXAtPnBkYXRhID0gcGRhdGE7CisJY2hpcC0+cGRhdGEgPSBkYXRh LT5wZGF0YTsKIAotCXJldCA9IGR3X2RtYV9wcm9iZShjaGlwKTsKKwlyZXQgPSBkYXRhLT5wcm9i ZShjaGlwKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC04OSw3ICsxMDIsNyBAQCBz dGF0aWMgaW50IGR3X3BjaV9zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAqZGV2KQogCXN0cnVj dCBwY2lfZGV2ICpwY2kgPSB0b19wY2lfZGV2KGRldik7CiAJc3RydWN0IGR3X2RtYV9jaGlwICpj aGlwID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7CiAKLQlyZXR1cm4gZHdfZG1hX2Rpc2FibGUoY2hp cCk7CisJcmV0dXJuIGRvX2R3X2RtYV9kaXNhYmxlKGNoaXApOwogfTsKIAogc3RhdGljIGludCBk d19wY2lfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRldikKQEAgLTk3LDcgKzExMCw3IEBA IHN0YXRpYyBpbnQgZHdfcGNpX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJc3Ry dWN0IHBjaV9kZXYgKnBjaSA9IHRvX3BjaV9kZXYoZGV2KTsKIAlzdHJ1Y3QgZHdfZG1hX2NoaXAg KmNoaXAgPSBwY2lfZ2V0X2RydmRhdGEocGNpKTsKIAotCXJldHVybiBkd19kbWFfZW5hYmxlKGNo aXApOworCXJldHVybiBkb19kd19kbWFfZW5hYmxlKGNoaXApOwogfTsKIAogI2VuZGlmIC8qIENP TkZJR19QTV9TTEVFUCAqLwpAQCAtMTA4LDI0ICsxMjEsMjQgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkZXZfcG1fb3BzIGR3X3BjaV9kZXZfcG1fb3BzID0gewogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IHBjaV9kZXZpY2VfaWQgZHdfcGNpX2lkX3RhYmxlW10gPSB7CiAJLyogTWVkZmllbGQgKEdQRE1B KSAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MDgyNykgfSwKKwl7IFBDSV9WREVWSUNFKElO VEVMLCAweDA4MjcpLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCiAKIAkvKiBCYXlU cmFpbCAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MGYwNikgfSwKLQl7IFBDSV9WREVWSUNF KElOVEVMLCAweDBmNDApIH0sCisJeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgwZjA2KSwgKGtlcm5l bF91bG9uZ190KSZkd19wY2lfZGF0YSB9LAorCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MGY0MCks IChrZXJuZWxfdWxvbmdfdCkmZHdfcGNpX2RhdGEgfSwKIAotCS8qIE1lcnJpZmllbGQgaURNQSAz Mi1iaXQgKEdQRE1BKSAqLwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4MTFhMiksIChrZXJuZWxf dWxvbmdfdCkmbXJmbGRfcGRhdGEgfSwKKwkvKiBNZXJyaWZpZWxkICovCisJeyBQQ0lfVkRFVklD RShJTlRFTCwgMHgxMWEyKSwgKGtlcm5lbF91bG9uZ190KSZpZG1hMzJfcGNpX2RhdGEgfSwKIAog CS8qIEJyYXN3ZWxsICovCi0JeyBQQ0lfVkRFVklDRShJTlRFTCwgMHgyMjg2KSB9LAotCXsgUENJ X1ZERVZJQ0UoSU5URUwsIDB4MjJjMCkgfSwKKwl7IFBDSV9WREVWSUNFKElOVEVMLCAweDIyODYp LCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCisJeyBQQ0lfVkRFVklDRShJTlRFTCwg MHgyMmMwKSwgKGtlcm5lbF91bG9uZ190KSZkd19wY2lfZGF0YSB9LAogCiAJLyogSGFzd2VsbCAq LwotCXsgUENJX1ZERVZJQ0UoSU5URUwsIDB4OWM2MCkgfSwKKwl7IFBDSV9WREVWSUNFKElOVEVM LCAweDljNjApLCAoa2VybmVsX3Vsb25nX3QpJmR3X3BjaV9kYXRhIH0sCiAKIAkvKiBCcm9hZHdl bGwgKi8KLQl7IFBDSV9WREVWSUNFKElOVEVMLCAweDljZTApIH0sCisJeyBQQ0lfVkRFVklDRShJ TlRFTCwgMHg5Y2UwKSwgKGtlcm5lbF91bG9uZ190KSZkd19wY2lfZGF0YSB9LAogCiAJeyB9CiB9 OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvcGxhdGZvcm0uYyBiL2RyaXZlcnMvZG1hL2R3 L3BsYXRmb3JtLmMKaW5kZXggNThmYzFiYTAyYTFlLi5kNTE5NmM5N2U0ZjQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZG1hL2R3L3BsYXRmb3JtLmMKKysrIGIvZHJpdmVycy9kbWEvZHcvcGxhdGZvcm0u YwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGR3X3NodXRkb3duKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiAJc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7CiAKIAkvKgotCSAqIFdlIGhhdmUgdG8gY2FsbCBkd19kbWFfZGlz YWJsZSgpIHRvIHN0b3AgYW55IG9uZ29pbmcgdHJhbnNmZXIuIE9uCisJICogV2UgaGF2ZSB0byBj YWxsIGRvX2R3X2RtYV9kaXNhYmxlKCkgdG8gc3RvcCBhbnkgb25nb2luZyB0cmFuc2Zlci4gT24K IAkgKiBzb21lIHBsYXRmb3JtcyB3ZSBjYW4ndCBkbyB0aGF0IHNpbmNlIERNQSBkZXZpY2UgaXMg cG93ZXJlZCBvZmYuCiAJICogTW9yZW92ZXIgd2UgaGF2ZSBubyBwb3NzaWJpbGl0eSB0byBjaGVj ayBpZiB0aGUgcGxhdGZvcm0gaXMgYWZmZWN0ZWQKIAkgKiBvciBub3QuIFRoYXQncyB3aHkgd2Ug Y2FsbCBwbV9ydW50aW1lX2dldF9zeW5jKCkgLyBwbV9ydW50aW1lX3B1dCgpCkBAIC0yNjQsNyAr MjY0LDcgQEAgc3RhdGljIHZvaWQgZHdfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAkgKiB1c2VkIGJ5IHRoZSBkcml2ZXIuCiAJICovCiAJcG1fcnVudGltZV9nZXRfc3lu YyhjaGlwLT5kZXYpOwotCWR3X2RtYV9kaXNhYmxlKGNoaXApOworCWRvX2R3X2RtYV9kaXNhYmxl KGNoaXApOwogCXBtX3J1bnRpbWVfcHV0X3N5bmNfc3VzcGVuZChjaGlwLT5kZXYpOwogCiAJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGNoaXAtPmNsayk7CkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGlj IGludCBkd19zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBkd19k bWFfY2hpcCAqY2hpcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCi0JZHdfZG1hX2Rpc2FibGUo Y2hpcCk7CisJZG9fZHdfZG1hX2Rpc2FibGUoY2hpcCk7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGNoaXAtPmNsayk7CiAKIAlyZXR1cm4gMDsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgaW50 IGR3X3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCXJldHVybiBkd19kbWFfZW5hYmxlKGNoaXApOworCXJldHVybiBkb19kd19kbWFf ZW5hYmxlKGNoaXApOwogfQogCiAjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2RtYS9kdy9yZWdzLmggYi9kcml2ZXJzL2RtYS9kdy9yZWdzLmgKaW5kZXgg NjQ2YzljOTYwYzA3Li42NmFhOGIyMjcyNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2R3L3Jl Z3MuaAorKysgYi9kcml2ZXJzL2RtYS9kdy9yZWdzLmgKQEAgLTMxMiw2ICszMTIsMTkgQEAgc3Ry dWN0IGR3X2RtYSB7CiAJdTgJCQlhbGxfY2hhbl9tYXNrOwogCXU4CQkJaW5fdXNlOwogCisJLyog Q2hhbm5lbCBvcGVyYXRpb25zICovCisJdm9pZAkoKmluaXRpYWxpemVfY2hhbikoc3RydWN0IGR3 X2RtYV9jaGFuICpkd2MpOworCXZvaWQJKCpzdXNwZW5kX2NoYW4pKHN0cnVjdCBkd19kbWFfY2hh biAqZHdjLCBib29sIGRyYWluKTsKKwl2b2lkCSgqZW5jb2RlX21heGJ1cnN0KShzdHJ1Y3QgZHdf ZG1hX2NoYW4gKmR3YywgdTMyICptYXhidXJzdCk7CisJdTMyCSgqYnl0ZXMyYmxvY2spKHN0cnVj dCBkd19kbWFfY2hhbiAqZHdjLCBzaXplX3QgYnl0ZXMsCisJCQkgICAgICAgdW5zaWduZWQgaW50 IHdpZHRoLCBzaXplX3QgKmxlbik7CisJc2l6ZV90CSgqYmxvY2syYnl0ZXMpKHN0cnVjdCBkd19k bWFfY2hhbiAqZHdjLCB1MzIgYmxvY2ssIHUzMiB3aWR0aCk7CisKKwkvKiBEZXZpY2Ugb3BlcmF0 aW9ucyAqLworCXZvaWQgKCpzZXRfZGV2aWNlX25hbWUpKHN0cnVjdCBkd19kbWEgKmR3LCBpbnQg aWQpOworCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgZHdfZG1hICpkdyk7CisJdm9pZCAoKmVuYWJs ZSkoc3RydWN0IGR3X2RtYSAqZHcpOworCiAJLyogcGxhdGZvcm0gZGF0YSAqLwogCXN0cnVjdCBk d19kbWFfcGxhdGZvcm1fZGF0YQkqcGRhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9kbWEvZHcuaCBiL2luY2x1ZGUvbGludXgvZG1hL2R3LmgKaW5kZXggZTE2NmNhYzhlODcwLi5k NjQzZDMzMWMyMGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZG1hL2R3LmgKKysrIGIvaW5j bHVkZS9saW51eC9kbWEvZHcuaApAQCAtNDUsOSArNDUsMTMgQEAgc3RydWN0IGR3X2RtYV9jaGlw IHsKICNpZiBJU19FTkFCTEVEKENPTkZJR19EV19ETUFDX0NPUkUpCiBpbnQgZHdfZG1hX3Byb2Jl KHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCk7CiBpbnQgZHdfZG1hX3JlbW92ZShzdHJ1Y3QgZHdf ZG1hX2NoaXAgKmNoaXApOworaW50IGlkbWEzMl9kbWFfcHJvYmUoc3RydWN0IGR3X2RtYV9jaGlw ICpjaGlwKTsKK2ludCBpZG1hMzJfZG1hX3JlbW92ZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNoaXAp OwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGR3X2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2No aXAgKmNoaXApIHsgcmV0dXJuIC1FTk9ERVY7IH0KIHN0YXRpYyBpbmxpbmUgaW50IGR3X2RtYV9y ZW1vdmUoc3RydWN0IGR3X2RtYV9jaGlwICpjaGlwKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5s aW5lIGludCBpZG1hMzJfZG1hX3Byb2JlKHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkgeyByZXR1 cm4gLUVOT0RFVjsgfQorc3RhdGljIGlubGluZSBpbnQgaWRtYTMyX2RtYV9yZW1vdmUoc3RydWN0 IGR3X2RtYV9jaGlwICpjaGlwKSB7IHJldHVybiAwOyB9CiAjZW5kaWYgLyogQ09ORklHX0RXX0RN QUNfQ09SRSAqLwogCiAjZW5kaWYgLyogX0RNQV9EV19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLWR3LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2Rh dGEvZG1hLWR3LmgKaW5kZXggMWM4NWVlZWU0MTcxLi41NzYwNDg0MzM4MDkgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaAorKysgYi9pbmNsdWRlL2xpbnV4 L3BsYXRmb3JtX2RhdGEvZG1hLWR3LmgKQEAgLTM4LDcgKzM4LDYgQEAgc3RydWN0IGR3X2RtYV9z bGF2ZSB7CiAvKioKICAqIHN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0YSAtIENvbnRyb2xsZXIg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCiAgKiBAbnJfY2hhbm5lbHM6IE51bWJlciBvZiBjaGFu bmVscyBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgKG1heCA4KQotICogQGlzX2lkbWEzMjogVGhlIHR5 cGUgb2YgdGhlIERNQSBjb250cm9sbGVyIGlzIGlETUEzMgogICogQGNoYW5fYWxsb2NhdGlvbl9v cmRlcjogQWxsb2NhdGUgY2hhbm5lbHMgc3RhcnRpbmcgZnJvbSAwIG9yIDcKICAqIEBjaGFuX3By aW9yaXR5OiBTZXQgY2hhbm5lbCBwcmlvcml0eSBpbmNyZWFzaW5nIGZyb20gMCB0byA3IG9yIDcg dG8gMC4KICAqIEBibG9ja19zaXplOiBNYXhpbXVtIGJsb2NrIHNpemUgc3VwcG9ydGVkIGJ5IHRo ZSBjb250cm9sbGVyCkBAIC01MCw3ICs0OSw2IEBAIHN0cnVjdCBkd19kbWFfc2xhdmUgewogICov CiBzdHJ1Y3QgZHdfZG1hX3BsYXRmb3JtX2RhdGEgewogCXVuc2lnbmVkIGludAlucl9jaGFubmVs czsKLQlib29sCQlpc19pZG1hMzI7CiAjZGVmaW5lIENIQU5fQUxMT0NBVElPTl9BU0NFTkRJTkcJ MAkvKiB6ZXJvIHRvIHNldmVuICovCiAjZGVmaW5lIENIQU5fQUxMT0NBVElPTl9ERVNDRU5ESU5H CTEJLyogc2V2ZW4gdG8gemVybyAqLwogCXVuc2lnbmVkIGNoYXIJY2hhbl9hbGxvY2F0aW9uX29y ZGVyOwo=