From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: [PATCH 2/2] drm/amdgpu: replace get_user_pages with HMM address mirror helpers Date: Wed, 17 Oct 2018 02:56:49 +0000 Message-ID: <1539744965-9103-2-git-send-email-Philip.Yang@amd.com> References: <1539744965-9103-1-git-send-email-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1539744965-9103-1-git-send-email-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Yang, Philip" VXNlIEhNTSBoZWxwZXIgZnVuY3Rpb24gaG1tX3ZtYV9mYXVsdCgpIHRvIGdldCBwaHlzaWNhbCBw YWdlcyBiYWNraW5nCnVzZXJwdHIgYW5kIHN0YXJ0IENQVSBwYWdlIHRhYmxlIHVwZGF0ZSB0cmFj ayBvZiB0aG9zZSBwYWdlcy4gVGhlbiB1c2UKaG1tX3ZtYV9yYW5nZV9kb25lKCkgdG8gY2hlY2sg aWYgdGhvc2UgcGFnZXMgYXJlIHVwZGF0ZWQgYmVmb3JlCmFtZGdwdV9jc19zdWJtaXQgZm9yIGdm eCBvciBiZWZvcmUgdXNlciBxdWV1ZXMgYXJlIHJlc3VtZWQgZm9yIGtmZC4KCklmIHVzZXJwdHIg cGFnZXMgYXJlIHVwZGF0ZWQsIGZvciBnZngsIGFtZGdwdV9jc19pb2N0bCB3aWxsIHJlc3RhcnQK ZnJvbSBzY3JhdGNoLCBmb3Iga2ZkLCByZXN0b3JlIHdvcmtlciBpcyByZXNjaGVkdWxlZCB0byBy ZXRyeS4KClRvIGF2b2lkIGNpcmN1bGFyIGxvY2sgZGVwZW5kZW5jeSwgdGhlIGxvY2tpbmcgb3Jk ZXIgaXM6Cm1tYXBfc2VtIC0+IGFtZGdwdV9tbl9sb2NrKHAtPm1uKSAtPiBibzo6cmVzZXJ2ZQpt bWFwX3NlbSAtPiBibzo6cmVzZXJ2ZQoKSE1NIHNpbXBsaWZ5IHRoZSBDUFUgcGFnZSB0YWJsZSBj b25jdXJyZW50bHkgdXBkYXRlIGNoZWNrLCBzbyByZW1vdmUKZ3VwdGFza2xvY2ssIG1tdV9pbnZh bGlkYXRpb25zLCBsYXN0X3NldF9wYWdlcyBmaWVsZHMgZnJvbQphbWRncHVfdHRtX3R0IHN0cnVj dC4KCkhNTSBkb2Vzbm90IHBpbiB0aGUgcGFnZSAoaW5jcmVhc2UgcGFnZSByZWYgY291bnQpLCBz byByZW1vdmUgcmVsYXRlZApvcGVyYXRpb25zIGxpa2UgcmVsZWFzZV9wYWdlcygpLCBwdXRfcGFn ZSgpLCBtYXJrX3BhZ2VfZGlydHkoKS4KCkNoYW5nZS1JZDogSWZmZDVmODU1Y2M5Y2U0MDJjZGZj YTE2N2Y2OGY4M2ZlMzlhYzU2ZjkKU2lnbmVkLW9mZi1ieTogUGhpbGlwIFlhbmcgPFBoaWxpcC5Z YW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtm ZF9ncHV2bS5jIHwgMTAxICsrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9ib19saXN0LmMgICAgICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYm9fbGlzdC5oICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jICAgICAgICAgICB8IDE3MSArKysrKysrKystLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jICAgICAgICAgIHwgIDE0ICst CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyAgICAgICAgICAgfCAgMzQg KysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oICAgICAgICAgICB8 ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jICAgICAgICAg IHwgMTY0ICsrKysrKysrKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV90dG0uaCAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmMgICAgICAgICAgIHwgICAxIC0KIDEwIGZpbGVzIGNoYW5nZWQsIDI1MiBp bnNlcnRpb25zKCspLCAyNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jCmluZGV4IGRmMGEwNTkuLjNmZDAzNDAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMK QEAgLTYxNSw4ICs2MTUsNyBAQCBzdGF0aWMgaW50IGluaXRfdXNlcl9wYWdlcyhzdHJ1Y3Qga2dk X21lbSAqbWVtLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAlhbWRncHVfYm9fdW5yZXNlcnZlKGJv KTsKIAogcmVsZWFzZV9vdXQ6Ci0JaWYgKHJldCkKLQkJcmVsZWFzZV9wYWdlcyhtZW0tPnVzZXJf cGFnZXMsIGJvLT50Ym8udHRtLT5udW1fcGFnZXMpOworCWFtZGdwdV90dG1fdHRfZ2V0X3VzZXJf cGFnZXNfZG9uZShiby0+dGJvLnR0bSk7CiBmcmVlX291dDoKIAlrdmZyZWUobWVtLT51c2VyX3Bh Z2VzKTsKIAltZW0tPnVzZXJfcGFnZXMgPSBOVUxMOwpAQCAtNjc4LDcgKzY3Nyw2IEBAIHN0YXRp YyBpbnQgcmVzZXJ2ZV9ib19hbmRfdm0oc3RydWN0IGtnZF9tZW0gKm1lbSwKIAljdHgtPmtmZF9i by5wcmlvcml0eSA9IDA7CiAJY3R4LT5rZmRfYm8udHYuYm8gPSAmYm8tPnRibzsKIAljdHgtPmtm ZF9iby50di5zaGFyZWQgPSB0cnVlOwotCWN0eC0+a2ZkX2JvLnVzZXJfcGFnZXMgPSBOVUxMOwog CWxpc3RfYWRkKCZjdHgtPmtmZF9iby50di5oZWFkLCAmY3R4LT5saXN0KTsKIAogCWFtZGdwdV92 bV9nZXRfcGRfYm8odm0sICZjdHgtPmxpc3QsICZjdHgtPnZtX3BkWzBdKTsKQEAgLTc0Miw3ICs3 NDAsNiBAQCBzdGF0aWMgaW50IHJlc2VydmVfYm9fYW5kX2NvbmRfdm1zKHN0cnVjdCBrZ2RfbWVt ICptZW0sCiAJY3R4LT5rZmRfYm8ucHJpb3JpdHkgPSAwOwogCWN0eC0+a2ZkX2JvLnR2LmJvID0g JmJvLT50Ym87CiAJY3R4LT5rZmRfYm8udHYuc2hhcmVkID0gdHJ1ZTsKLQljdHgtPmtmZF9iby51 c2VyX3BhZ2VzID0gTlVMTDsKIAlsaXN0X2FkZCgmY3R4LT5rZmRfYm8udHYuaGVhZCwgJmN0eC0+ bGlzdCk7CiAKIAlpID0gMDsKQEAgLTEzMTEsOSArMTMwOCw2IEBAIGludCBhbWRncHVfYW1ka2Zk X2dwdXZtX2ZyZWVfbWVtb3J5X29mX2dwdSgKIAkvKiBGcmVlIHVzZXIgcGFnZXMgaWYgbmVjZXNz YXJ5ICovCiAJaWYgKG1lbS0+dXNlcl9wYWdlcykgewogCQlwcl9kZWJ1ZygiJXM6IEZyZWVpbmcg dXNlcl9wYWdlcyBhcnJheVxuIiwgX19mdW5jX18pOwotCQlpZiAobWVtLT51c2VyX3BhZ2VzWzBd KQotCQkJcmVsZWFzZV9wYWdlcyhtZW0tPnVzZXJfcGFnZXMsCi0JCQkJCW1lbS0+Ym8tPnRiby50 dG0tPm51bV9wYWdlcyk7CiAJCWt2ZnJlZShtZW0tPnVzZXJfcGFnZXMpOwogCX0KIApAQCAtMTcz OSw4ICsxNzMzLDYgQEAgc3RhdGljIGludCB1cGRhdGVfaW52YWxpZF91c2VyX3BhZ2VzKHN0cnVj dCBhbWRrZmRfcHJvY2Vzc19pbmZvICpwcm9jZXNzX2luZm8sCiAJCQkJICAgICAgIF9fZnVuY19f KTsKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCX0KLQkJfSBlbHNlIGlmIChtZW0tPnVzZXJfcGFn ZXNbMF0pIHsKLQkJCXJlbGVhc2VfcGFnZXMobWVtLT51c2VyX3BhZ2VzLCBiby0+dGJvLnR0bS0+ bnVtX3BhZ2VzKTsKIAkJfQogCiAJCS8qIEdldCB1cGRhdGVkIHVzZXIgcGFnZXMgKi8KQEAgLTE3 NTYsMTIgKzE3NDgsNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9pbnZhbGlkX3VzZXJfcGFnZXMoc3Ry dWN0IGFtZGtmZF9wcm9jZXNzX2luZm8gKnByb2Nlc3NfaW5mbywKIAkJCSAqIHN0YWxsZWQgdXNl ciBtb2RlIHF1ZXVlcy4KIAkJCSAqLwogCQl9Ci0KLQkJLyogTWFyayB0aGUgQk8gYXMgdmFsaWQg dW5sZXNzIGl0IHdhcyBpbnZhbGlkYXRlZAotCQkgKiBhZ2FpbiBjb25jdXJyZW50bHkKLQkJICov Ci0JCWlmIChhdG9taWNfY21weGNoZygmbWVtLT5pbnZhbGlkLCBpbnZhbGlkLCAwKSAhPSBpbnZh bGlkKQotCQkJcmV0dXJuIC1FQUdBSU47CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xODU0LDE0ICsx ODQwLDEwIEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfaW52YWxpZF91c2VyX3BhZ2VzKHN0cnVjdCBh bWRrZmRfcHJvY2Vzc19pbmZvICpwcm9jZXNzX2luZm8pCiAJCX0KIAogCQkvKiBWYWxpZGF0ZSBz dWNjZWVkZWQsIG5vdyB0aGUgQk8gb3ducyB0aGUgcGFnZXMsIGZyZWUKLQkJICogb3VyIGNvcHkg b2YgdGhlIHBvaW50ZXIgYXJyYXkuIFB1dCB0aGlzIEJPIGJhY2sgb24KLQkJICogdGhlIHVzZXJw dHJfdmFsaWRfbGlzdC4gSWYgd2UgbmVlZCB0byByZXZhbGlkYXRlCi0JCSAqIGl0LCB3ZSBuZWVk IHRvIHN0YXJ0IGZyb20gc2NyYXRjaC4KKwkJICogb3VyIGNvcHkgb2YgdGhlIHBvaW50ZXIgYXJy YXkuCiAJCSAqLwogCQlrdmZyZWUobWVtLT51c2VyX3BhZ2VzKTsKIAkJbWVtLT51c2VyX3BhZ2Vz ID0gTlVMTDsKLQkJbGlzdF9tb3ZlX3RhaWwoJm1lbS0+dmFsaWRhdGVfbGlzdC5oZWFkLAotCQkJ ICAgICAgICZwcm9jZXNzX2luZm8tPnVzZXJwdHJfdmFsaWRfbGlzdCk7CiAKIAkJLyogVXBkYXRl IG1hcHBpbmcuIElmIHRoZSBCTyB3YXMgbm90IHZhbGlkYXRlZAogCQkgKiAoYmVjYXVzZSB3ZSBj b3VsZG4ndCBnZXQgdXNlciBwYWdlcyksIHRoaXMgd2lsbApAQCAtMTkwMiw2ICsxODg0LDcwIEBA IHN0YXRpYyBpbnQgdmFsaWRhdGVfaW52YWxpZF91c2VyX3BhZ2VzKHN0cnVjdCBhbWRrZmRfcHJv Y2Vzc19pbmZvICpwcm9jZXNzX2luZm8pCiAJcmV0dXJuIHJldDsKIH0KIAorLyogdXNlcl9wYWdl c19pbnZhbGlkYXRlZCAtIGlmIENQVSBwYWdlIHRhYmxlIGlzIHVwZGF0ZWQgYWZ0ZXIgZ2V0dGlu ZyB1c2VyCisgKiBwYWdlcworICoKKyAqIEhNTSBtaXJyb3IgY2FsbGJhY2sgbG9jayBhbW4gaXMg aG9sZCB0byBwcmV2ZW50IHRoZSBjb25jdXJyZW50IENQVQorICogcGFnZSB0YWJsZSB1cGRhdGUg d2hpbGUgcmVzdW1pbmcgdXNlciBxdWV1ZXMuCisgKgorICogUmV0dXJuczogdHJ1ZSBpZiBDUFUg cGFnZSB0YWJsZSBpcyB1cGRhdGVkLCBmYWxzZSBvdGhlcndpc2UKKyAqLworc3RhdGljIGludCB1 c2VyX3BhZ2VzX2ludmFsaWRhdGVkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJc3RydWN0IGFt ZGtmZF9wcm9jZXNzX2luZm8gKnByb2Nlc3NfaW5mbywKKwkJCXN0cnVjdCBhbWRncHVfbW4gKiph bW4pCit7CisJc3RydWN0IGtnZF9tZW0gKm1lbSwgKnRtcF9tZW07CisJc3RydWN0IGFtZGdwdV9i byAqYm87CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXY7CisJaW50IGludmFsaWQsIHIgPSAw OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1lbSwgdG1wX21lbSwKKwkJCQkgJnByb2Nl c3NfaW5mby0+dXNlcnB0cl9pbnZhbF9saXN0LAorCQkJCSB2YWxpZGF0ZV9saXN0LmhlYWQpIHsK KworCQlpbnZhbGlkID0gYXRvbWljX3JlYWQoJm1lbS0+aW52YWxpZCk7CisJCWlmICghaW52YWxp ZCkKKwkJCS8qIEJPIGhhc24ndCBiZWVuIGludmFsaWRhdGVkIHNpbmNlIHRoZSBsYXN0CisJCQkg KiByZXZhbGlkYXRpb24gYXR0ZW1wdC4gS2VlcCBpdHMgQk8gbGlzdC4KKwkJCSAqLworCQkJY29u dGludWU7CisKKwkJYm8gPSBtZW0tPmJvOworCisJCS8qIEdldCBITU0gbWlycm9yIGNhbGxiYWNr IGxvY2sgKi8KKwkJaWYgKCEqYW1uKSB7CisJCQlhZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50 Ym8uYmRldik7CisJCQkqYW1uID0gYW1kZ3B1X21uX2dldChtbSwgYWRldiwgQU1ER1BVX01OX1RZ UEVfSFNBKTsKKwkJCWlmIChJU19FUlIoKmFtbikpIHsKKwkJCQlyID0gdHJ1ZTsKKwkJCQkqYW1u ID0gTlVMTDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJYW1kZ3B1X21uX2xvY2soKmFtbik7 CisJCX0KKworCQlyIHw9IGFtZGdwdV90dG1fdHRfZ2V0X3VzZXJfcGFnZXNfZG9uZShiby0+dGJv LnR0bSk7CisKKwkJLyogUHV0IHRoaXMgQk8gYmFjayBvbiB0aGUgdXNlcnB0cl92YWxpZF9saXN0 LiBJZiB3ZSBuZWVkIHRvCisJCSAqIHJldmFsaWRhdGUgaXQsIHdlIG5lZWQgdG8gc3RhcnQgZnJv bSBzY3JhdGNoLgorCQkgKi8KKwkJbGlzdF9tb3ZlX3RhaWwoJm1lbS0+dmFsaWRhdGVfbGlzdC5o ZWFkLAorCQkJICAgICAgICZwcm9jZXNzX2luZm8tPnVzZXJwdHJfdmFsaWRfbGlzdCk7CisKKwkJ LyogTWFyayB0aGUgQk8gYXMgdmFsaWQgdW5sZXNzIGl0IHdhcyBpbnZhbGlkYXRlZAorCQkgKiBh Z2FpbiBjb25jdXJyZW50bHkKKwkJICovCisJCWlmIChhdG9taWNfY21weGNoZygmbWVtLT5pbnZh bGlkLCBpbnZhbGlkLCAwKSAhPSBpbnZhbGlkKSB7CisJCQlyID0gdHJ1ZTsKKwkJCWdvdG8gb3V0 OworCQl9CisJfQorCitvdXQ6CisJcmV0dXJuIHI7Cit9CisKIC8qIFdvcmtlciBjYWxsYmFjayB0 byByZXN0b3JlIGV2aWN0ZWQgdXNlcnB0ciBCT3MKICAqCiAgKiBUcmllcyB0byB1cGRhdGUgYW5k IHZhbGlkYXRlIGFsbCB1c2VycHRyIEJPcy4gSWYgc3VjY2Vzc2Z1bCBhbmQgbm8KQEAgLTE5MTcs NiArMTk2Myw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9hbWRrZmRfcmVzdG9yZV91c2VycHRyX3dv cmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3RydWN0IHRhc2tfc3RydWN0ICp1c2Vy dGFzazsKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKIAlpbnQgZXZpY3RlZF9ib3M7CisJc3RydWN0 IGFtZGdwdV9tbiAqYW1uID0gTlVMTDsKIAogCWV2aWN0ZWRfYm9zID0gYXRvbWljX3JlYWQoJnBy b2Nlc3NfaW5mby0+ZXZpY3RlZF9ib3MpOwogCWlmICghZXZpY3RlZF9ib3MpCkBAIC0xOTU1LDEz ICsyMDAyLDI3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9hbWRrZmRfcmVzdG9yZV91c2VycHRyX3dv cmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJaWYgKGF0b21pY19jbXB4Y2hnKCZwcm9j ZXNzX2luZm8tPmV2aWN0ZWRfYm9zLCBldmljdGVkX2JvcywgMCkgIT0KIAkgICAgZXZpY3RlZF9i b3MpCiAJCWdvdG8gdW5sb2NrX291dDsKKworCS8qIElmIENQVSBwYWdlIHRhYmxlIGlzIHVwZGF0 ZWQgYWdhaW4gYWZ0ZXIgZ2V0dGluZyB1c2VyIHBhZ2VzLAorCSAqIHNjaGVkdWxlIHRvIHJlc3Rh cnQgdGhlIHJlc3RvcmUgcHJvY2VzcyBhZ2Fpbi4KKwkgKgorCSAqIGFtbiBpcyBhbHNvIGxvY2tl ZCB0byBwcmV2ZW50IENQVSBwYWdlIHRhYmxlIHVwZGF0ZSB3aGlsZSByZXN1bWluZworCSAqIHVz ZXIgcXVldWVzLiBhbW4gaXMgdW5sb2NrZWQgYWZ0ZXIgdXNlciBxdWV1ZXMgYXJlIHJlc3VtZWQu CisJICovCisJaWYgKHVzZXJfcGFnZXNfaW52YWxpZGF0ZWQobW0sIHByb2Nlc3NfaW5mbywgJmFt bikpCisJCWdvdG8gdW5sb2NrX21uX291dDsKKwogCWV2aWN0ZWRfYm9zID0gMDsKKwogCWlmIChr Z2Qya2ZkLT5yZXN1bWVfbW0obW0pKSB7CiAJCXByX2VycigiJXM6IEZhaWxlZCB0byByZXN1bWUg S0ZEXG4iLCBfX2Z1bmNfXyk7CiAJCS8qIE5vIHJlY292ZXJ5IGZyb20gdGhpcyBmYWlsdXJlLiBQ cm9iYWJseSB0aGUgQ1AgaXMKIAkJICogaGFuZ2luZy4gTm8gcG9pbnQgdHJ5aW5nIGFnYWluLgog CQkgKi8KIAl9CisKK3VubG9ja19tbl9vdXQ6CisJYW1kZ3B1X21uX3VubG9jayhhbW4pOwogdW5s b2NrX291dDoKIAltdXRleF91bmxvY2soJnByb2Nlc3NfaW5mby0+bG9jayk7CiAJbW1wdXQobW0p OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmMKaW5kZXggMTRk Mjk4Mi4uMjcxNmMyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2JvX2xpc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9f bGlzdC5jCkBAIC0yMDEsOCArMjAxLDYgQEAgdm9pZCBhbWRncHVfYm9fbGlzdF9nZXRfbGlzdChz dHJ1Y3QgYW1kZ3B1X2JvX2xpc3QgKmxpc3QsCiAKIAkJaWYgKCFiby0+cGFyZW50KQogCQkJbGlz dF9hZGRfdGFpbCgmZS0+dHYuaGVhZCwgJmJ1Y2tldFtwcmlvcml0eV0pOwotCi0JCWUtPnVzZXJf cGFnZXMgPSBOVUxMOwogCX0KIAogCS8qIENvbm5lY3QgdGhlIHNvcnRlZCBidWNrZXRzIGluIHRo ZSBvdXRwdXQgbGlzdC4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9ib19saXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9f bGlzdC5oCmluZGV4IDdjNWY1ZDEuLjRiZWFiMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2JvX2xpc3QuaApAQCAtMzUsOCArMzUsNyBAQCBzdHJ1Y3QgYW1kZ3B1X2Jv X2xpc3RfZW50cnkgewogCXN0cnVjdCB0dG1fdmFsaWRhdGVfYnVmZmVyCXR2OwogCXN0cnVjdCBh bWRncHVfYm9fdmEJCSpib192YTsKIAl1aW50MzJfdAkJCXByaW9yaXR5OwotCXN0cnVjdCBwYWdl CQkJKip1c2VyX3BhZ2VzOwotCWludAkJCQl1c2VyX2ludmFsaWRhdGVkOworCWJvb2wJCQkJdXNl cl9pbnZhbGlkYXRlZDsKIH07CiAKIHN0cnVjdCBhbWRncHVfYm9fbGlzdCB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCmluZGV4IDg4MzYxODYuLmM0NmFmMTggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCkBAIC01MSw3ICs1MSw2IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2NzX3VzZXJfZmVuY2VfY2h1bmsoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAs CiAJcC0+dWZfZW50cnkucHJpb3JpdHkgPSAwOwogCXAtPnVmX2VudHJ5LnR2LmJvID0gJmJvLT50 Ym87CiAJcC0+dWZfZW50cnkudHYuc2hhcmVkID0gdHJ1ZTsKLQlwLT51Zl9lbnRyeS51c2VyX3Bh Z2VzID0gTlVMTDsKIAogCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChnb2JqKTsKIApAQCAt NTMxLDI0ICs1MzAsMTkgQEAgc3RhdGljIGludCBhbWRncHVfY3NfbGlzdF92YWxpZGF0ZShzdHJ1 Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkobG9iaiwgdmFs aWRhdGVkLCB0di5oZWFkKSB7CiAJCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gdHRtX3RvX2FtZGdw dV9ibyhsb2JqLT50di5ibyk7Ci0JCWJvb2wgYmluZGluZ191c2VycHRyID0gZmFsc2U7CiAJCXN0 cnVjdCBtbV9zdHJ1Y3QgKnVzZXJtbTsKIAogCQl1c2VybW0gPSBhbWRncHVfdHRtX3R0X2dldF91 c2VybW0oYm8tPnRiby50dG0pOwogCQlpZiAodXNlcm1tICYmIHVzZXJtbSAhPSBjdXJyZW50LT5t bSkKIAkJCXJldHVybiAtRVBFUk07CiAKLQkJLyogQ2hlY2sgaWYgd2UgaGF2ZSB1c2VyIHBhZ2Vz IGFuZCBub2JvZHkgYm91bmQgdGhlIEJPIGFscmVhZHkgKi8KLQkJaWYgKGFtZGdwdV90dG1fdHRf dXNlcnB0cl9uZWVkc19wYWdlcyhiby0+dGJvLnR0bSkgJiYKLQkJICAgIGxvYmotPnVzZXJfcGFn ZXMpIHsKKwkJaWYgKGFtZGdwdV90dG1fdHRfaXNfdXNlcnB0cihiby0+dGJvLnR0bSkgJiYKKwkJ ICAgIGxvYmotPnVzZXJfaW52YWxpZGF0ZWQpIHsKIAkJCWFtZGdwdV9ib19wbGFjZW1lbnRfZnJv bV9kb21haW4oYm8sCiAJCQkJCQkJQU1ER1BVX0dFTV9ET01BSU5fQ1BVKTsKIAkJCXIgPSB0dG1f Ym9fdmFsaWRhdGUoJmJvLT50Ym8sICZiby0+cGxhY2VtZW50LCAmY3R4KTsKIAkJCWlmIChyKQog CQkJCXJldHVybiByOwotCQkJYW1kZ3B1X3R0bV90dF9zZXRfdXNlcl9wYWdlcyhiby0+dGJvLnR0 bSwKLQkJCQkJCSAgICAgbG9iai0+dXNlcl9wYWdlcyk7Ci0JCQliaW5kaW5nX3VzZXJwdHIgPSB0 cnVlOwogCQl9CiAKIAkJaWYgKHAtPmV2aWN0YWJsZSA9PSBsb2JqKQpAQCAtNTU3LDExICs1NTEs NiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19saXN0X3ZhbGlkYXRlKHN0cnVjdCBhbWRncHVfY3Nf cGFyc2VyICpwLAogCQlyID0gYW1kZ3B1X2NzX3ZhbGlkYXRlKHAsIGJvKTsKIAkJaWYgKHIpCiAJ CQlyZXR1cm4gcjsKLQotCQlpZiAoYmluZGluZ191c2VycHRyKSB7Ci0JCQlrdmZyZWUobG9iai0+ dXNlcl9wYWdlcyk7Ci0JCQlsb2JqLT51c2VyX3BhZ2VzID0gTlVMTDsKLQkJfQogCX0KIAlyZXR1 cm4gMDsKIH0KQEAgLTU3Niw3ICs1NjUsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJf Ym9zKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAogCXN0cnVjdCBhbWRncHVfYm8gKmdkczsK IAlzdHJ1Y3QgYW1kZ3B1X2JvICpnd3M7CiAJc3RydWN0IGFtZGdwdV9ibyAqb2E7Ci0JdW5zaWdu ZWQgdHJpZXMgPSAxMDsKIAlpbnQgcjsKIAogCUlOSVRfTElTVF9IRUFEKCZwLT52YWxpZGF0ZWQp OwpAQCAtNTg1LDcgKzU3Myw2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9ib3Moc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCiAJaWYgKGNzLT5pbi5ib19saXN0X2hhbmRsZSkgewog CQlpZiAocC0+Ym9fbGlzdCkKIAkJCXJldHVybiAtRUlOVkFMOwotCiAJCXIgPSBhbWRncHVfYm9f bGlzdF9nZXQoZnByaXYsIGNzLT5pbi5ib19saXN0X2hhbmRsZSwKIAkJCQkgICAgICAgJnAtPmJv X2xpc3QpOwogCQlpZiAocikKQEAgLTU5OSw4ICs1ODYsMTAgQEAgc3RhdGljIGludCBhbWRncHVf Y3NfcGFyc2VyX2JvcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKIAl9CiAKIAlhbWRncHVf Ym9fbGlzdF9nZXRfbGlzdChwLT5ib19saXN0LCAmcC0+dmFsaWRhdGVkKTsKLQlpZiAocC0+Ym9f bGlzdC0+Zmlyc3RfdXNlcnB0ciAhPSBwLT5ib19saXN0LT5udW1fZW50cmllcykKLQkJcC0+bW4g PSBhbWRncHVfbW5fZ2V0KHAtPmFkZXYsIEFNREdQVV9NTl9UWVBFX0dGWCk7CisJaWYgKHAtPmJv X2xpc3QtPmZpcnN0X3VzZXJwdHIgIT0gcC0+Ym9fbGlzdC0+bnVtX2VudHJpZXMpIHsKKwkJcC0+ bW4gPSBhbWRncHVfbW5fZ2V0KGN1cnJlbnQtPm1tLCBwLT5hZGV2LAorCQkJCQlBTURHUFVfTU5f VFlQRV9HRlgpOworCX0KIAogCUlOSVRfTElTVF9IRUFEKCZkdXBsaWNhdGVzKTsKIAlhbWRncHVf dm1fZ2V0X3BkX2JvKCZmcHJpdi0+dm0sICZwLT52YWxpZGF0ZWQsICZwLT52bV9wZCk7CkBAIC02 MDgsNzkgKzU5Nyw0MSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBh bWRncHVfY3NfcGFyc2VyICpwLAogCWlmIChwLT51Zl9lbnRyeS50di5ibyAmJiAhdHRtX3RvX2Ft ZGdwdV9ibyhwLT51Zl9lbnRyeS50di5ibyktPnBhcmVudCkKIAkJbGlzdF9hZGQoJnAtPnVmX2Vu dHJ5LnR2LmhlYWQsICZwLT52YWxpZGF0ZWQpOwogCi0Jd2hpbGUgKDEpIHsKLQkJc3RydWN0IGxp c3RfaGVhZCBuZWVkX3BhZ2VzOwotCi0JCXIgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKCZwLT50 aWNrZXQsICZwLT52YWxpZGF0ZWQsIHRydWUsCi0JCQkJCSAgICZkdXBsaWNhdGVzKTsKLQkJaWYg KHVubGlrZWx5KHIgIT0gMCkpIHsKLQkJCWlmIChyICE9IC1FUkVTVEFSVFNZUykKLQkJCQlEUk1f RVJST1IoInR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMgZmFpbGVkLlxuIik7Ci0JCQlnb3RvIGVycm9y X2ZyZWVfcGFnZXM7Ci0JCX0KLQotCQlJTklUX0xJU1RfSEVBRCgmbmVlZF9wYWdlcyk7Ci0JCWFt ZGdwdV9ib19saXN0X2Zvcl9lYWNoX3VzZXJwdHJfZW50cnkoZSwgcC0+Ym9fbGlzdCkgewotCQkJ c3RydWN0IGFtZGdwdV9ibyAqYm8gPSB0dG1fdG9fYW1kZ3B1X2JvKGUtPnR2LmJvKTsKLQotCQkJ aWYgKGFtZGdwdV90dG1fdHRfdXNlcnB0cl9pbnZhbGlkYXRlZChiby0+dGJvLnR0bSwKLQkJCQkg JmUtPnVzZXJfaW52YWxpZGF0ZWQpICYmIGUtPnVzZXJfcGFnZXMpIHsKLQotCQkJCS8qIFdlIGFj cXVpcmVkIGEgcGFnZSBhcnJheSwgYnV0IHNvbWVib2R5Ci0JCQkJICogaW52YWxpZGF0ZWQgaXQu IEZyZWUgaXQgYW5kIHRyeSBhZ2FpbgotCQkJCSAqLwotCQkJCXJlbGVhc2VfcGFnZXMoZS0+dXNl cl9wYWdlcywKLQkJCQkJICAgICAgYm8tPnRiby50dG0tPm51bV9wYWdlcyk7Ci0JCQkJa3ZmcmVl KGUtPnVzZXJfcGFnZXMpOwotCQkJCWUtPnVzZXJfcGFnZXMgPSBOVUxMOwotCQkJfQorCS8qIEdl dCB1c2VycHRyIGJhY2tpbmcgcGFnZXMuIElmIHBhZ2VzIGFyZSB1cGRhdGVkIGFmdGVyIHJlZ2lz dGVyZWQKKwkgKiBpbiBhbWRncHVfZ2VtX3VzZXJwdHJfaW9jdGwoKSwgYW1kZ3B1X2NzX2xpc3Rf dmFsaWRhdGUoKSB3aWxsIGRvCisJICogYW1kZ3B1X3R0bV9iYWNrZW5kX2JpbmQoKSB0byBmbHVz aCBhbmQgaW52YWxpZGF0ZSBuZXcgcGFnZXMKKwkgKi8KKwlhbWRncHVfYm9fbGlzdF9mb3JfZWFj aF91c2VycHRyX2VudHJ5KGUsIHAtPmJvX2xpc3QpIHsKKwkJc3RydWN0IGFtZGdwdV9ibyAqYm8g PSB0dG1fdG9fYW1kZ3B1X2JvKGUtPnR2LmJvKTsKKwkJc3RydWN0IHBhZ2UgKnVzZXJfcGFnZXNb Ym8tPnRiby50dG0tPm51bV9wYWdlc107CisJCWludCBpOworCQlib29sIHVzZXJfaW52YWxpZGF0 ZWQgPSBmYWxzZTsKIAotCQkJaWYgKGFtZGdwdV90dG1fdHRfdXNlcnB0cl9uZWVkc19wYWdlcyhi by0+dGJvLnR0bSkgJiYKLQkJCSAgICAhZS0+dXNlcl9wYWdlcykgewotCQkJCWxpc3RfZGVsKCZl LT50di5oZWFkKTsKLQkJCQlsaXN0X2FkZCgmZS0+dHYuaGVhZCwgJm5lZWRfcGFnZXMpOworCQly ID0gYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlcyhiby0+dGJvLnR0bSwgdXNlcl9wYWdlcyk7 CisJCWlmIChyKQorCQkJcmV0dXJuIHI7CiAKLQkJCQlhbWRncHVfYm9fdW5yZXNlcnZlKGJvKTsK KwkJZm9yIChpID0gMDsgaSA8IGJvLT50Ym8udHRtLT5udW1fcGFnZXM7IGkrKykgeworCQkJaWYg KGJvLT50Ym8udHRtLT5wYWdlc1tpXSAhPSB1c2VyX3BhZ2VzW2ldKSB7CisJCQkJYm8tPnRiby50 dG0tPnBhZ2VzW2ldID0gdXNlcl9wYWdlc1tpXTsKKwkJCQl1c2VyX2ludmFsaWRhdGVkID0gdHJ1 ZTsKIAkJCX0KIAkJfQorCQllLT51c2VyX2ludmFsaWRhdGVkID0gdXNlcl9pbnZhbGlkYXRlZDsK Kwl9CiAKLQkJaWYgKGxpc3RfZW1wdHkoJm5lZWRfcGFnZXMpKQotCQkJYnJlYWs7Ci0KLQkJLyog VW5yZXNlcnZlIGV2ZXJ5dGhpbmcgYWdhaW4uICovCi0JCXR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0 aW9uKCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQpOwotCi0JCS8qIFdlIHRyaWVkIHRvbyBtYW55 IHRpbWVzLCBqdXN0IGFib3J0ICovCi0JCWlmICghLS10cmllcykgewotCQkJciA9IC1FREVBRExL OwotCQkJRFJNX0VSUk9SKCJkZWFkbG9jayBpbiAlc1xuIiwgX19mdW5jX18pOwotCQkJZ290byBl cnJvcl9mcmVlX3BhZ2VzOwotCQl9Ci0KLQkJLyogRmlsbCB0aGUgcGFnZSBhcnJheXMgZm9yIGFs bCB1c2VycHRycy4gKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShlLCAmbmVlZF9wYWdlcywgdHYu aGVhZCkgewotCQkJc3RydWN0IHR0bV90dCAqdHRtID0gZS0+dHYuYm8tPnR0bTsKLQotCQkJZS0+ dXNlcl9wYWdlcyA9IGt2bWFsbG9jX2FycmF5KHR0bS0+bnVtX3BhZ2VzLAotCQkJCQkJCSBzaXpl b2Yoc3RydWN0IHBhZ2UqKSwKLQkJCQkJCQkgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOwotCQkJ aWYgKCFlLT51c2VyX3BhZ2VzKSB7Ci0JCQkJciA9IC1FTk9NRU07Ci0JCQkJRFJNX0VSUk9SKCJj YWxsb2MgZmFpbHVyZSBpbiAlc1xuIiwgX19mdW5jX18pOwotCQkJCWdvdG8gZXJyb3JfZnJlZV9w YWdlczsKLQkJCX0KLQotCQkJciA9IGFtZGdwdV90dG1fdHRfZ2V0X3VzZXJfcGFnZXModHRtLCBl LT51c2VyX3BhZ2VzKTsKLQkJCWlmIChyKSB7Ci0JCQkJRFJNX0VSUk9SKCJhbWRncHVfdHRtX3R0 X2dldF91c2VyX3BhZ2VzIGZhaWxlZC5cbiIpOwotCQkJCWt2ZnJlZShlLT51c2VyX3BhZ2VzKTsK LQkJCQllLT51c2VyX3BhZ2VzID0gTlVMTDsKLQkJCQlnb3RvIGVycm9yX2ZyZWVfcGFnZXM7Ci0J CQl9Ci0JCX0KKwkvKiBObyBtZW1vcnkgYWxsb2NhdGlvbiBpcyBhbGxvd2VkIHdoaWxlIGhvbGRp bmcgdGhlIG1uIGxvY2suCisJICogcC0+bW4gaXMgaG9sZCB1bnRpbCBhbWRncHVfY3Nfc3VibWl0 IGlzIGZpbmlzaGVkIGFuZCBmZW5jZSBpcyBhZGRlZAorCSAqIHRvIEJPcy4KKwkgKi8KKwlhbWRn cHVfbW5fbG9jayhwLT5tbik7CiAKLQkJLyogQW5kIHRyeSBhZ2Fpbi4gKi8KLQkJbGlzdF9zcGxp Y2UoJm5lZWRfcGFnZXMsICZwLT52YWxpZGF0ZWQpOworCXIgPSB0dG1fZXVfcmVzZXJ2ZV9idWZm ZXJzKCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQsIHRydWUsCisJCQkJICAgJmR1cGxpY2F0ZXMp OworCWlmICh1bmxpa2VseShyICE9IDApKSB7CisJCWlmIChyICE9IC1FUkVTVEFSVFNZUykKKwkJ CURSTV9FUlJPUigidHRtX2V1X3Jlc2VydmVfYnVmZmVycyBmYWlsZWQuXG4iKTsKKwkJZ290byBv dXQ7CiAJfQogCiAJYW1kZ3B1X2NzX2dldF90aHJlc2hvbGRfZm9yX21vdmVzKHAtPmFkZXYsICZw LT5ieXRlc19tb3ZlZF90aHJlc2hvbGQsCkBAIC03NDMsMTYgKzY5NCw5IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X2NzX3BhcnNlcl9ib3Moc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCiBlcnJvcl92 YWxpZGF0ZToKIAlpZiAocikKIAkJdHRtX2V1X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnAtPnRpY2tl dCwgJnAtPnZhbGlkYXRlZCk7Ci0KLWVycm9yX2ZyZWVfcGFnZXM6Ci0KLQlhbWRncHVfYm9fbGlz dF9mb3JfZWFjaF91c2VycHRyX2VudHJ5KGUsIHAtPmJvX2xpc3QpIHsKLQkJaWYgKCFlLT51c2Vy X3BhZ2VzKQotCQkJY29udGludWU7Ci0KLQkJcmVsZWFzZV9wYWdlcyhlLT51c2VyX3BhZ2VzLCBl LT50di5iby0+dHRtLT5udW1fcGFnZXMpOwotCQlrdmZyZWUoZS0+dXNlcl9wYWdlcyk7Ci0JfQor b3V0OgorCWlmIChyKQorCQlhbWRncHVfbW5fdW5sb2NrKHAtPm1uKTsKIAogCXJldHVybiByOwog fQpAQCAtMTIwNiw4ICsxMTUwLDcgQEAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0KHN0cnVj dCBhbWRncHVfY3NfcGFyc2VyICpwLAogCXN0cnVjdCBhbWRncHVfYm9fbGlzdF9lbnRyeSAqZTsK IAlzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iOwogCXVpbnQ2NF90IHNlcTsKLQotCWludCByOworCWlu dCByID0gMDsKIAogCWpvYiA9IHAtPmpvYjsKIAlwLT5qb2IgPSBOVUxMOwpAQCAtMTIxNiwxNSAr MTE1OSwxOCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXQoc3RydWN0IGFtZGdwdV9jc19w YXJzZXIgKnAsCiAJaWYgKHIpCiAJCWdvdG8gZXJyb3JfdW5sb2NrOwogCi0JLyogTm8gbWVtb3J5 IGFsbG9jYXRpb24gaXMgYWxsb3dlZCB3aGlsZSBob2xkaW5nIHRoZSBtbiBsb2NrICovCi0JYW1k Z3B1X21uX2xvY2socC0+bW4pOworCS8qIElmIHVzZXJwdHIgYXJlIHVwZGF0ZWQgYWZ0ZXIgYW1k Z3B1X2NzX3BhcnNlcl9ib3MoKSwgcmVzdGFydCBjcyAqLwogCWFtZGdwdV9ib19saXN0X2Zvcl9l YWNoX3VzZXJwdHJfZW50cnkoZSwgcC0+Ym9fbGlzdCkgewogCQlzdHJ1Y3QgYW1kZ3B1X2JvICpi byA9IHR0bV90b19hbWRncHVfYm8oZS0+dHYuYm8pOwogCi0JCWlmIChhbWRncHVfdHRtX3R0X3Vz ZXJwdHJfbmVlZHNfcGFnZXMoYm8tPnRiby50dG0pKSB7Ci0JCQlyID0gLUVSRVNUQVJUU1lTOwot CQkJZ290byBlcnJvcl9hYm9ydDsKLQkJfQorCQllLT51c2VyX2ludmFsaWRhdGVkID0KKwkJCQlh bWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzX2RvbmUoYm8tPnRiby50dG0pOworCisJCXIgfD0g ZS0+dXNlcl9pbnZhbGlkYXRlZDsKKwl9CisJaWYgKHIpIHsKKwkJciA9IC1FUkVTVEFSVFNZUzsK KwkJZ290byBlcnJvcl9hYm9ydDsKIAl9CiAKIAlqb2ItPm93bmVyID0gcC0+ZmlscDsKQEAgLTEy NzIsMTQgKzEyMTgsMjAgQEAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0KHN0cnVjdCBhbWRn cHVfY3NfcGFyc2VyICpwLAogaW50IGFtZGdwdV9jc19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCiB7CiAJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXVuaW9uIGRybV9hbWRncHVfY3Mg KmNzID0gZGF0YTsKLQlzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciBwYXJzZXIgPSB7fTsKLQlib29s IHJlc2VydmVkX2J1ZmZlcnMgPSBmYWxzZTsKKwl1bmlvbiBkcm1fYW1kZ3B1X2NzICpjczsKKwlz dHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciBwYXJzZXI7CisJYm9vbCByZXNlcnZlZF9idWZmZXJzOwor CWludCB0cmllcyA9IDEwOwogCWludCBpLCByOwogCiAJaWYgKCFhZGV2LT5hY2NlbF93b3JraW5n KQogCQlyZXR1cm4gLUVCVVNZOwogCityZXN0YXJ0OgorCW1lbXNldCgmcGFyc2VyLCAwLCBzaXpl b2YocGFyc2VyKSk7CisJY3MgPSBkYXRhOworCXJlc2VydmVkX2J1ZmZlcnMgPSBmYWxzZTsKKwog CXBhcnNlci5hZGV2ID0gYWRldjsKIAlwYXJzZXIuZmlscCA9IGZpbHA7CiAKQEAgLTEzMjEsNiAr MTI3MywxNSBAQCBpbnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkKIAogb3V0OgogCWFtZGdwdV9jc19wYXJz ZXJfZmluaSgmcGFyc2VyLCByLCByZXNlcnZlZF9idWZmZXJzKTsKKworCWlmIChyID09IC1FUkVT VEFSVFNZUykgeworCQlpZiAoIS0tdHJpZXMpIHsKKwkJCURSTV9FUlJPUigiUG9zc2libGUgZGVh ZGxvY2s/IFJldHJ5IHRvbyBtYW55IHRpbWVzXG4iKTsKKwkJCXJldHVybiAtRURFQURMSzsKKwkJ fQorCQlnb3RvIHJlc3RhcnQ7CisJfQorCiAJcmV0dXJuIHI7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwppbmRleCA3YjNkMWViLi5mZjlhOGZkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCkBAIC0zMzYsMjYgKzMzNiwyNCBAQCBpbnQg YW1kZ3B1X2dlbV91c2VycHRyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAKIAkJciA9IGFtZGdwdV9ib19yZXNlcnZlKGJvLCB0cnVlKTsKIAkJaWYgKHIpCi0JCQln b3RvIGZyZWVfcGFnZXM7CisJCQlnb3RvIHVzZXJfcGFnZXNfZG9uZTsKIAogCQlhbWRncHVfYm9f cGxhY2VtZW50X2Zyb21fZG9tYWluKGJvLCBBTURHUFVfR0VNX0RPTUFJTl9HVFQpOwogCQlyID0g dHRtX2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7CiAJCWFtZGdw dV9ib191bnJlc2VydmUoYm8pOwogCQlpZiAocikKLQkJCWdvdG8gZnJlZV9wYWdlczsKKwkJCWdv dG8gdXNlcl9wYWdlc19kb25lOwogCX0KIAogCXIgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmls cCwgZ29iaiwgJmhhbmRsZSk7Ci0JLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhh bmRsZSBob2xkcyBpdCBub3cgKi8KLQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoZ29iaik7 CiAJaWYgKHIpCi0JCXJldHVybiByOworCQlnb3RvIHVzZXJfcGFnZXNfZG9uZTsKIAogCWFyZ3Mt PmhhbmRsZSA9IGhhbmRsZTsKLQlyZXR1cm4gMDsKIAotZnJlZV9wYWdlczoKLQlyZWxlYXNlX3Bh Z2VzKGJvLT50Ym8udHRtLT5wYWdlcywgYm8tPnRiby50dG0tPm51bV9wYWdlcyk7Cit1c2VyX3Bh Z2VzX2RvbmU6CisJaWYgKGFyZ3MtPmZsYWdzICYgQU1ER1BVX0dFTV9VU0VSUFRSX1ZBTElEQVRF KQorCQlhbWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzX2RvbmUoYm8tPnRiby50dG0pOwogCiBy ZWxlYXNlX29iamVjdDoKIAlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoZ29iaik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCmluZGV4IDU2NTk1YjMuLjZiNmJlY2QgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCkBAIC0yMjksOCArMjI5LDYgQEAg c3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZShzdHJ1Y3QgYW1kZ3B1X21uX25v ZGUgKm5vZGUsCiAJCQl0cnVlLCBmYWxzZSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCQlpZiAo ciA8PSAwKQogCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xu Iiwgcik7Ci0KLQkJYW1kZ3B1X3R0bV90dF9tYXJrX3VzZXJfcGFnZXMoYm8tPnRiby50dG0pOwog CX0KIH0KIApAQCAtMzU1LDE1ICszNTMsMTYgQEAgc3RhdGljIHN0cnVjdCBobW1fbWlycm9yX29w cyBhbWRncHVfaG1tX21pcnJvcl9vcHNbXSA9IHsKIC8qKgogICogYW1kZ3B1X21uX2dldCAtIGNy ZWF0ZSBITU0gbWlycm9yIGNvbnRleHQKICAqCisgKiBAbW06IHRoZSBtbSBzdHJ1Y3QKICAqIEBh ZGV2OiBhbWRncHUgZGV2aWNlIHBvaW50ZXIKICAqIEB0eXBlOiB0eXBlIG9mIE1NVSBub3RpZmll ciBjb250ZXh0CiAgKgotICogQ3JlYXRlcyBhIEhNTSBtaXJyb3IgY29udGV4dCBmb3IgY3VycmVu dC0+bW0uCisgKiBDcmVhdGVzIGEgSE1NIG1pcnJvciBjb250ZXh0IGZvciBtbS4KICAqLwotc3Ry dWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK K3N0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJ CQkJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJZW51bSBhbWRncHVfbW5fdHlwZSB0 eXBlKQogewotCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gY3VycmVudC0+bW07CiAJc3RydWN0IGFt ZGdwdV9tbiAqYW1uOwogCXVuc2lnbmVkIGxvbmcga2V5ID0gQU1ER1BVX01OX0tFWShtbSwgdHlw ZSk7CiAJaW50IHI7CkBAIC00MzMsNyArNDMyLDcgQEAgaW50IGFtZGdwdV9tbl9yZWdpc3Rlcihz dHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKQogCXN0cnVjdCBsaXN0X2hl YWQgYm9zOwogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0OwogCi0JYW1uID0gYW1kZ3B1 X21uX2dldChhZGV2LCB0eXBlKTsKKwlhbW4gPSBhbWRncHVfbW5fZ2V0KGN1cnJlbnQtPm1tLCBh ZGV2LCB0eXBlKTsKIAlpZiAoSVNfRVJSKGFtbikpCiAJCXJldHVybiBQVFJfRVJSKGFtbik7CiAK QEAgLTUxNSwzICs1MTQsMjYgQEAgdm9pZCBhbWRncHVfbW5fdW5yZWdpc3RlcihzdHJ1Y3QgYW1k Z3B1X2JvICpibykKIAltdXRleF91bmxvY2soJmFkZXYtPm1uX2xvY2spOwogfQogCisvKiBmbGFn cyB1c2VkIGJ5IEhNTSBpbnRlcm5hbCwgbm90IHJlbGF0ZWQgdG8gQ1BVL0dQVSBQVEUgZmxhZ3Mg Ki8KK3N0YXRpYyBjb25zdCB1aW50NjRfdCBobW1fcmFuZ2VfZmxhZ3NbSE1NX1BGTl9GTEFHX01B WF0gPSB7CisJCSgxIDw8IDApLCAvKiBITU1fUEZOX1ZBTElEICovCisJCSgxIDw8IDEpLCAvKiBI TU1fUEZOX1dSSVRFICovCisJCTAgLyogSE1NX1BGTl9ERVZJQ0VfUFJJVkFURSAqLworfTsKKwor c3RhdGljIGNvbnN0IHVpbnQ2NF90IGhtbV9yYW5nZV92YWx1ZXNbSE1NX1BGTl9WQUxVRV9NQVhd ID0geworCQkweGZmZmZmZmZmZmZmZmZmZmVVTCwgLyogSE1NX1BGTl9FUlJPUiAqLworCQkwLCAv KiBITU1fUEZOX05PTkUgKi8KKwkJMHhmZmZmZmZmZmZmZmZmZmZjVUwgLyogSE1NX1BGTl9TUEVD SUFMICovCit9OworCit2b2lkIGFtZGdwdV9obW1faW5pdF9yYW5nZShzdHJ1Y3QgaG1tX3Jhbmdl ICpyYW5nZSkKK3sKKwlpZiAocmFuZ2UpIHsKKwkJcmFuZ2UtPmZsYWdzID0gaG1tX3JhbmdlX2Zs YWdzOworCQlyYW5nZS0+dmFsdWVzID0gaG1tX3JhbmdlX3ZhbHVlczsKKwkJcmFuZ2UtPnBmbl9z aGlmdCA9IFBBR0VfU0hJRlQ7CisJCXJhbmdlLT5wZm5zID0gTlVMTDsKKwkJSU5JVF9MSVNUX0hF QUQoJnJhbmdlLT5saXN0KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfbW4uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9t bi5oCmluZGV4IDBlMjc1MjYuLjU5ZWEzMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9tbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9tbi5oCkBAIC0yNSw5ICsyNSwxMCBAQAogI2RlZmluZSBfX0FNREdQVV9NTl9IX18KIAog LyoKLSAqIE1NVSBOb3RpZmllcgorICogSE1NIG1pcnJvcgogICovCiBzdHJ1Y3QgYW1kZ3B1X21u Oworc3RydWN0IGhtbV9yYW5nZTsKIAogZW51bSBhbWRncHVfbW5fdHlwZSB7CiAJQU1ER1BVX01O X1RZUEVfR0ZYLApAQCAtMzcsMTAgKzM4LDEyIEBAIGVudW0gYW1kZ3B1X21uX3R5cGUgewogI2lm IGRlZmluZWQoQ09ORklHX0hNTSkKIHZvaWQgYW1kZ3B1X21uX2xvY2soc3RydWN0IGFtZGdwdV9t biAqbW4pOwogdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKTsKLXN0 cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CitzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAor CQkJCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCWVudW0gYW1kZ3B1X21uX3R5cGUg dHlwZSk7CiBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNp Z25lZCBsb25nIGFkZHIpOwogdm9pZCBhbWRncHVfbW5fdW5yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1 X2JvICpibyk7Cit2b2lkIGFtZGdwdV9obW1faW5pdF9yYW5nZShzdHJ1Y3QgaG1tX3JhbmdlICpy YW5nZSk7CiAjZWxzZQogc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9tbl9sb2NrKHN0cnVjdCBh bWRncHVfbW4gKm1uKSB7fQogc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9tbl91bmxvY2soc3Ry dWN0IGFtZGdwdV9tbiAqbW4pIHt9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRt LmMKaW5kZXggM2E2ODAyOC4uYjA1MzdkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90dG0uYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4K ICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvaW9tbXUuaD4KKyNp bmNsdWRlIDxsaW51eC9obW0uaD4KICNpbmNsdWRlICJhbWRncHUuaCIKICNpbmNsdWRlICJhbWRn cHVfb2JqZWN0LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3RyYWNlLmgiCkBAIC03OTksMTEgKzgwMCw2 IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGFtZGdwdV90dG1faW9fbWVtX3BmbihzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLAogLyoKICAqIFRUTSBiYWNrZW5kIGZ1bmN0aW9ucy4KICAqLwot c3RydWN0IGFtZGdwdV90dG1fZ3VwX3Rhc2tfbGlzdCB7Ci0Jc3RydWN0IGxpc3RfaGVhZAlsaXN0 OwotCXN0cnVjdCB0YXNrX3N0cnVjdAkqdGFzazsKLX07Ci0KIHN0cnVjdCBhbWRncHVfdHRtX3R0 IHsKIAlzdHJ1Y3QgdHRtX2RtYV90dAl0dG07CiAJdTY0CQkJb2Zmc2V0OwpAQCAtODEyLDg1ICs4 MDgsOTEgQEAgc3RydWN0IGFtZGdwdV90dG1fdHQgewogCXVpbnQzMl90CQl1c2VyZmxhZ3M7CiAJ c3BpbmxvY2tfdCAgICAgICAgICAgICAgZ3VwdGFza2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCAg ICAgICAgZ3VwdGFza3M7Ci0JYXRvbWljX3QJCW1tdV9pbnZhbGlkYXRpb25zOwotCXVpbnQzMl90 CQlsYXN0X3NldF9wYWdlczsKKwlzdHJ1Y3QgaG1tX3JhbmdlCXJhbmdlOwogfTsKIAogLyoqCi0g KiBhbWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzIC0gUGluIHBhZ2VzIG9mIG1lbW9yeSBwb2lu dGVkIHRvIGJ5IGEgVVNFUlBUUgotICogcG9pbnRlciB0byBtZW1vcnkKKyAqIGFtZGdwdV90dG1f dHRfZ2V0X3VzZXJfcGFnZXMgLSBnZXQgZGV2aWNlIGFjY2Vzc2libGUgcGFnZXMgdGhhdCBiYWNr IHVzZXIKKyAqIG1lbW9yeSBhbmQgc3RhcnQgSE1NIHRyYWNraW5nIENQVSBwYWdlIHRhYmxlIHVw ZGF0ZQogICoKLSAqIENhbGxlZCBieSBhbWRncHVfZ2VtX3VzZXJwdHJfaW9jdGwoKSBhbmQgYW1k Z3B1X2NzX3BhcnNlcl9ib3MoKS4KLSAqIFRoaXMgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCB0 aGUgZ2V0X3VzZXJfcGFnZXMoKSBjYWxsIHRvIHByb3ZpZGUKLSAqIGRldmljZSBhY2Nlc3NpYmxl IHBhZ2VzIHRoYXQgYmFjayB1c2VyIG1lbW9yeS4KKyAqIENhbGxpbmcgZnVuY3Rpb24gbXVzdCBj YWxsIGFtZGdwdV90dG1fdHRfdXNlcnB0cl9yYW5nZV9kb25lKCkgb25jZSBhbmQgb25seQorICog b25jZSBhZnRlcndhcmRzIHRvIHN0b3AgSE1NIHRyYWNraW5nCiAgKi8KIGludCBhbWRncHVfdHRt X3R0X2dldF91c2VyX3BhZ2VzKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHBhZ2UgKipwYWdl cykKIHsKIAlzdHJ1Y3QgYW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQgKil0dG07CiAJc3RydWN0 IG1tX3N0cnVjdCAqbW0gPSBndHQtPnVzZXJ0YXNrLT5tbTsKLQl1bnNpZ25lZCBpbnQgZmxhZ3Mg PSAwOwotCXVuc2lnbmVkIHBpbm5lZCA9IDA7Ci0JaW50IHI7CisJdW5zaWduZWQgbG9uZyBlbmQg PSBndHQtPnVzZXJwdHIgKyB0dG0tPm51bV9wYWdlcyAqIFBBR0VfU0laRTsKKwlzdHJ1Y3QgaG1t X3JhbmdlICpyYW5nZSA9ICZndHQtPnJhbmdlOworCWludCByLCBpOwogCiAJaWYgKCFtbSkgLyog SGFwcGVucyBkdXJpbmcgcHJvY2VzcyBzaHV0ZG93biAqLwogCQlyZXR1cm4gLUVTUkNIOwogCi0J aWYgKCEoZ3R0LT51c2VyZmxhZ3MgJiBBTURHUFVfR0VNX1VTRVJQVFJfUkVBRE9OTFkpKQotCQlm bGFncyB8PSBGT0xMX1dSSVRFOworCWFtZGdwdV9obW1faW5pdF9yYW5nZShyYW5nZSk7CiAKIAlk b3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CiAKLQlpZiAoZ3R0LT51c2VyZmxhZ3MgJiBBTURHUFVf R0VNX1VTRVJQVFJfQU5PTk9OTFkpIHsKLQkJLyoKLQkJICogY2hlY2sgdGhhdCB3ZSBvbmx5IHVz ZSBhbm9ueW1vdXMgbWVtb3J5IHRvIHByZXZlbnQgcHJvYmxlbXMKLQkJICogd2l0aCB3cml0ZWJh Y2sKLQkJICovCi0JCXVuc2lnbmVkIGxvbmcgZW5kID0gZ3R0LT51c2VycHRyICsgdHRtLT5udW1f cGFnZXMgKiBQQUdFX1NJWkU7Ci0JCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOworCXJhbmdl LT52bWEgPSBmaW5kX3ZtYShtbSwgZ3R0LT51c2VycHRyKTsKKwlpZiAoIXJhbmdlLT52bWEgfHwg cmFuZ2UtPnZtYS0+dm1fZmlsZSB8fCByYW5nZS0+dm1hLT52bV9lbmQgPCBlbmQpIHsKKwkJciA9 IC1FUEVSTTsKKwkJZ290byBvdXQ7CisJfQorCXJhbmdlLT5wZm5zID0ga3ZtYWxsb2NfYXJyYXko dHRtLT5udW1fcGFnZXMsIHNpemVvZih1aW50NjRfdCksCisJCQkJR0ZQX0tFUk5FTCB8IF9fR0ZQ X1pFUk8pOworCWlmIChyYW5nZS0+cGZucyA9PSBOVUxMKSB7CisJCXIgPSAtRU5PTUVNOworCQln b3RvIG91dDsKKwl9CisJcmFuZ2UtPnN0YXJ0ID0gZ3R0LT51c2VycHRyOworCXJhbmdlLT5lbmQg PSBlbmQ7CiAKLQkJdm1hID0gZmluZF92bWEobW0sIGd0dC0+dXNlcnB0cik7Ci0JCWlmICghdm1h IHx8IHZtYS0+dm1fZmlsZSB8fCB2bWEtPnZtX2VuZCA8IGVuZCkgewotCQkJdXBfcmVhZCgmbW0t Pm1tYXBfc2VtKTsKLQkJCXJldHVybiAtRVBFUk07Ci0JCX0KKwlmb3IgKGkgPSAwOyBpIDwgdHRt LT5udW1fcGFnZXM7IGkrKykgeworCQlyYW5nZS0+cGZuc1tpXSA9IHJhbmdlLT5mbGFnc1tITU1f UEZOX1ZBTElEXTsKKwkJcmFuZ2UtPnBmbnNbaV0gfD0gYW1kZ3B1X3R0bV90dF9pc19yZWFkb25s eSh0dG0pID8KKwkJCQkJMCA6IHJhbmdlLT5mbGFnc1tITU1fUEZOX1dSSVRFXTsKIAl9CiAKLQkv KiBsb29wIGVub3VnaCB0aW1lcyB1c2luZyBjb250aWd1b3VzIHBhZ2VzIG9mIG1lbW9yeSAqLwot CWRvIHsKLQkJdW5zaWduZWQgbnVtX3BhZ2VzID0gdHRtLT5udW1fcGFnZXMgLSBwaW5uZWQ7Ci0J CXVpbnQ2NF90IHVzZXJwdHIgPSBndHQtPnVzZXJwdHIgKyBwaW5uZWQgKiBQQUdFX1NJWkU7Ci0J CXN0cnVjdCBwYWdlICoqcCA9IHBhZ2VzICsgcGlubmVkOwotCQlzdHJ1Y3QgYW1kZ3B1X3R0bV9n dXBfdGFza19saXN0IGd1cHRhc2s7CisJLyogVGhpcyBtYXkgdHJpZ2dsZXMgcGFnZSB0YWJsZSB1 cGRhdGUgKi8KKwlyID0gaG1tX3ZtYV9mYXVsdChyYW5nZSwgdHJ1ZSk7CisJaWYgKHIpCisJCWdv dG8gb3V0X2ZyZWVfcGZuczsKIAotCQlndXB0YXNrLnRhc2sgPSBjdXJyZW50OwotCQlzcGluX2xv Y2soJmd0dC0+Z3VwdGFza2xvY2spOwotCQlsaXN0X2FkZCgmZ3VwdGFzay5saXN0LCAmZ3R0LT5n dXB0YXNrcyk7Ci0JCXNwaW5fdW5sb2NrKCZndHQtPmd1cHRhc2tsb2NrKTsKKwlmb3IgKGkgPSAw OyBpIDwgdHRtLT5udW1fcGFnZXM7IGkrKykKKwkJcGFnZXNbaV0gPSBobW1fcGZuX3RvX3BhZ2Uo cmFuZ2UsIHJhbmdlLT5wZm5zW2ldKTsKIAotCQlpZiAobW0gPT0gY3VycmVudC0+bW0pCi0JCQly ID0gZ2V0X3VzZXJfcGFnZXModXNlcnB0ciwgbnVtX3BhZ2VzLCBmbGFncywgcCwgTlVMTCk7Ci0J CWVsc2UKLQkJCXIgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUoZ3R0LT51c2VydGFzaywKLQkJCQkJ bW0sIHVzZXJwdHIsIG51bV9wYWdlcywKLQkJCQkJZmxhZ3MsIHAsIE5VTEwsIE5VTEwpOworCXVw X3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJcmV0dXJuIDA7CiAKLQkJc3Bpbl9sb2NrKCZndHQtPmd1 cHRhc2tsb2NrKTsKLQkJbGlzdF9kZWwoJmd1cHRhc2subGlzdCk7Ci0JCXNwaW5fdW5sb2NrKCZn dHQtPmd1cHRhc2tsb2NrKTsKK291dF9mcmVlX3BmbnM6CisJa3ZmcmVlKHJhbmdlLT5wZm5zKTsK KwlyYW5nZS0+cGZucyA9IE5VTEw7CitvdXQ6CisJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwly ZXR1cm4gcjsKK30KIAotCQlpZiAociA8IDApCi0JCQlnb3RvIHJlbGVhc2VfcGFnZXM7CisvKioK KyAqIGFtZGdwdV90dG1fdHRfdXNlcnB0cl9yYW5nZV9kb25lIC0gc3RvcCBITU0gdHJhY2sgdGhl IENQVSBwYWdlIHRhYmxlIGNoYW5nZQorICogQ2hlY2sgaWYgdGhlIHBhZ2VzIGJhY2tpbmcgdGhp cyB0dG0gcmFuZ2UgaGF2ZSBiZWVuIGludmFsaWRhdGVkCisgKgorICogUmV0dXJuczogdHJ1ZSBp ZiBwYWdlcyBhcmUgaW52YWxpZGF0ZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGV5J3ZlIGJlZW4g c2V0CisgKi8KK2Jvb2wgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlc19kb25lKHN0cnVjdCB0 dG1fdHQgKnR0bSkKK3sKKwlzdHJ1Y3QgYW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQgKil0dG07 CisJaW50IHI7CiAKLQkJcGlubmVkICs9IHI7CisJaWYgKGd0dCA9PSBOVUxMIHx8ICFndHQtPnVz ZXJwdHIpCisJCXJldHVybiBmYWxzZTsKIAotCX0gd2hpbGUgKHBpbm5lZCA8IHR0bS0+bnVtX3Bh Z2VzKTsKKwlyID0gIWhtbV92bWFfcmFuZ2VfZG9uZSgmZ3R0LT5yYW5nZSk7CiAKLQl1cF9yZWFk KCZtbS0+bW1hcF9zZW0pOwotCXJldHVybiAwOworCWlmIChndHQtPnJhbmdlLnBmbnMpIHsKKwkJ a3ZmcmVlKGd0dC0+cmFuZ2UucGZucyk7CisJCWd0dC0+cmFuZ2UucGZucyA9IE5VTEw7CisJfQog Ci1yZWxlYXNlX3BhZ2VzOgotCXJlbGVhc2VfcGFnZXMocGFnZXMsIHBpbm5lZCk7Ci0JdXBfcmVh ZCgmbW0tPm1tYXBfc2VtKTsKIAlyZXR1cm4gcjsKIH0KIApAQCAtOTAzLDE2ICs5MDUsMTAgQEAg aW50IGFtZGdwdV90dG1fdHRfZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1 Y3QgcGFnZSAqKnBhZ2VzKQogICovCiB2b2lkIGFtZGdwdV90dG1fdHRfc2V0X3VzZXJfcGFnZXMo c3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQogewotCXN0cnVjdCBhbWRn cHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsKIAl1bnNpZ25lZCBpOwogCi0JZ3R0LT5sYXN0 X3NldF9wYWdlcyA9IGF0b21pY19yZWFkKCZndHQtPm1tdV9pbnZhbGlkYXRpb25zKTsKLQlmb3Ig KGkgPSAwOyBpIDwgdHRtLT5udW1fcGFnZXM7ICsraSkgewotCQlpZiAodHRtLT5wYWdlc1tpXSkK LQkJCXB1dF9wYWdlKHR0bS0+cGFnZXNbaV0pOwotCisJZm9yIChpID0gMDsgaSA8IHR0bS0+bnVt X3BhZ2VzOyArK2kpCiAJCXR0bS0+cGFnZXNbaV0gPSBwYWdlcyA/IHBhZ2VzW2ldIDogTlVMTDsK LQl9CiB9CiAKIC8qKgpAQCAtOTk3LDkgKzk5Myw2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV90dG1f dHRfdW5waW5fdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0pCiAJLyogdW5tYXAgdGhlIHBhZ2Vz IG1hcHBlZCB0byB0aGUgZGV2aWNlICovCiAJZG1hX3VubWFwX3NnKGFkZXYtPmRldiwgdHRtLT5z Zy0+c2dsLCB0dG0tPnNnLT5uZW50cywgZGlyZWN0aW9uKTsKIAotCS8qIG1hcmsgdGhlIHBhZ2Vz IGFzIGRpcnR5ICovCi0JYW1kZ3B1X3R0bV90dF9tYXJrX3VzZXJfcGFnZXModHRtKTsKLQogCXNn X2ZyZWVfdGFibGUodHRtLT5zZyk7CiB9CiAKQEAgLTEzNTIsOCArMTM0NSw2IEBAIGludCBhbWRn cHVfdHRtX3R0X3NldF91c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSwgdWludDY0X3QgYWRkciwK IAogCXNwaW5fbG9ja19pbml0KCZndHQtPmd1cHRhc2tsb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgm Z3R0LT5ndXB0YXNrcyk7Ci0JYXRvbWljX3NldCgmZ3R0LT5tbXVfaW52YWxpZGF0aW9ucywgMCk7 Ci0JZ3R0LT5sYXN0X3NldF9wYWdlcyA9IDA7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEzODMsNyAr MTM3NCw2IEBAIGJvb2wgYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0 ICp0dG0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCQkJICB1bnNpZ25lZCBsb25nIGVuZCkKIHsK IAlzdHJ1Y3QgYW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQgKil0dG07Ci0Jc3RydWN0IGFtZGdw dV90dG1fZ3VwX3Rhc2tfbGlzdCAqZW50cnk7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCiAJaWYg KGd0dCA9PSBOVUxMIHx8ICFndHQtPnVzZXJwdHIpCkBAIC0xMzk2LDQ4ICsxMzg2LDIwIEBAIGJv b2wgYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVuc2ln bmVkIGxvbmcgc3RhcnQsCiAJaWYgKGd0dC0+dXNlcnB0ciA+IGVuZCB8fCBndHQtPnVzZXJwdHIg KyBzaXplIDw9IHN0YXJ0KQogCQlyZXR1cm4gZmFsc2U7CiAKLQkvKiBTZWFyY2ggdGhlIGxpc3Rz IG9mIHRhc2tzIHRoYXQgaG9sZCB0aGlzIG1hcHBpbmcgYW5kIHNlZQotCSAqIGlmIGN1cnJlbnQg aXMgb25lIG9mIHRoZW0uICBJZiBpdCBpcyByZXR1cm4gZmFsc2UuCi0JICovCi0Jc3Bpbl9sb2Nr KCZndHQtPmd1cHRhc2tsb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCAmZ3R0LT5n dXB0YXNrcywgbGlzdCkgewotCQlpZiAoZW50cnktPnRhc2sgPT0gY3VycmVudCkgewotCQkJc3Bp bl91bmxvY2soJmd0dC0+Z3VwdGFza2xvY2spOwotCQkJcmV0dXJuIGZhbHNlOwotCQl9Ci0JfQot CXNwaW5fdW5sb2NrKCZndHQtPmd1cHRhc2tsb2NrKTsKLQotCWF0b21pY19pbmMoJmd0dC0+bW11 X2ludmFsaWRhdGlvbnMpOwotCiAJcmV0dXJuIHRydWU7CiB9CiAKIC8qKgotICogYW1kZ3B1X3R0 bV90dF91c2VycHRyX2ludmFsaWRhdGVkIC0gSGFzIHRoZSB0dG1fdHQgb2JqZWN0IGJlZW4gaW52 YWxpZGF0ZWQ/CisgKiBhbWRncHVfdHRtX3R0X2lzX3VzZXJwdHIgLSBIYXZlIHRoZSBwYWdlcyBi YWNraW5nIGJ5IHVzZXJwdHI/CiAgKi8KLWJvb2wgYW1kZ3B1X3R0bV90dF91c2VycHRyX2ludmFs aWRhdGVkKHN0cnVjdCB0dG1fdHQgKnR0bSwKLQkJCQkgICAgICAgaW50ICpsYXN0X2ludmFsaWRh dGVkKQotewotCXN0cnVjdCBhbWRncHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsKLQlpbnQg cHJldl9pbnZhbGlkYXRlZCA9ICpsYXN0X2ludmFsaWRhdGVkOwotCi0JKmxhc3RfaW52YWxpZGF0 ZWQgPSBhdG9taWNfcmVhZCgmZ3R0LT5tbXVfaW52YWxpZGF0aW9ucyk7Ci0JcmV0dXJuIHByZXZf aW52YWxpZGF0ZWQgIT0gKmxhc3RfaW52YWxpZGF0ZWQ7Ci19Ci0KLS8qKgotICogYW1kZ3B1X3R0 bV90dF91c2VycHRyX25lZWRzX3BhZ2VzIC0gSGF2ZSB0aGUgcGFnZXMgYmFja2luZyB0aGlzIHR0 bV90dCBvYmplY3QKLSAqIGJlZW4gaW52YWxpZGF0ZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGV5 J3ZlIGJlZW4gc2V0PwotICovCi1ib29sIGFtZGdwdV90dG1fdHRfdXNlcnB0cl9uZWVkc19wYWdl cyhzdHJ1Y3QgdHRtX3R0ICp0dG0pCitib29sIGFtZGdwdV90dG1fdHRfaXNfdXNlcnB0cihzdHJ1 Y3QgdHRtX3R0ICp0dG0pCiB7CiAJc3RydWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkICop dHRtOwogCiAJaWYgKGd0dCA9PSBOVUxMIHx8ICFndHQtPnVzZXJwdHIpCiAJCXJldHVybiBmYWxz ZTsKIAotCXJldHVybiBhdG9taWNfcmVhZCgmZ3R0LT5tbXVfaW52YWxpZGF0aW9ucykgIT0gZ3R0 LT5sYXN0X3NldF9wYWdlczsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdHRtLmgKaW5kZXggZmU4ZjI3Ni4uYWVlZWE3NyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaApAQCAtMTA0LDYgKzEwNCw3IEBAIGludCBh bWRncHVfdHRtX2FsbG9jX2dhcnQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7CiBpbnQg YW1kZ3B1X3R0bV9yZWNvdmVyX2dhcnQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pOwog CiBpbnQgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0 cnVjdCBwYWdlICoqcGFnZXMpOworYm9vbCBhbWRncHVfdHRtX3R0X2dldF91c2VyX3BhZ2VzX2Rv bmUoc3RydWN0IHR0bV90dCAqdHRtKTsKIHZvaWQgYW1kZ3B1X3R0bV90dF9zZXRfdXNlcl9wYWdl cyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMpOwogdm9pZCBhbWRncHVf dHRtX3R0X21hcmtfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogaW50IGFtZGdwdV90 dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtLCB1aW50NjRfdCBhZGRyLApAQCAt MTE0LDcgKzExNSw3IEBAIGJvb2wgYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihzdHJ1Y3Qg dHRtX3R0ICp0dG0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCQkJICB1bnNpZ25lZCBsb25nIGVu ZCk7CiBib29sIGFtZGdwdV90dG1fdHRfdXNlcnB0cl9pbnZhbGlkYXRlZChzdHJ1Y3QgdHRtX3R0 ICp0dG0sCiAJCQkJICAgICAgIGludCAqbGFzdF9pbnZhbGlkYXRlZCk7Ci1ib29sIGFtZGdwdV90 dG1fdHRfdXNlcnB0cl9uZWVkc19wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0pOworYm9vbCBhbWRn cHVfdHRtX3R0X2lzX3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtKTsKIGJvb2wgYW1kZ3B1X3R0 bV90dF9pc19yZWFkb25seShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwogdWludDY0X3QgYW1kZ3B1X3R0 bV90dF9wZGVfZmxhZ3Moc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1l bSk7CiB1aW50NjRfdCBhbWRncHVfdHRtX3R0X3B0ZV9mbGFncyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgc3RydWN0IHR0bV90dCAqdHRtLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdm0uYwppbmRleCA2OTA0ZDc5Li5mYTViZjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdm0uYwpAQCAtNjE3LDcgKzYxNyw2IEBAIHZvaWQgYW1kZ3B1X3ZtX2dldF9wZF9i byhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKIAllbnRyeS0+cHJpb3JpdHkgPSAwOwogCWVudHJ5LT50 di5ibyA9ICZ2bS0+cm9vdC5iYXNlLmJvLT50Ym87CiAJZW50cnktPnR2LnNoYXJlZCA9IHRydWU7 Ci0JZW50cnktPnVzZXJfcGFnZXMgPSBOVUxMOwogCWxpc3RfYWRkKCZlbnRyeS0+dHYuaGVhZCwg dmFsaWRhdGVkKTsKIH0KIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=