From: Andres Rodriguez Subject: [PATCH 3/3] drm/amdgpu: add a mechanism to acquire gpu exclusivity Date: Wed, 24 May 2017 20:01:01 -0400 Message-ID: <20170525000101.8184-4-andresx7@gmail.com> References: <20170525000101.8184-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170525000101.8184-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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: deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org, andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org QSBEUk1fTUFTVEVSIG1heSB3aXNoIHRvIHJlc3RyaWN0IGdwdSBqb2Igc3VibWlzc2lvbiB0byBv bmx5IGEgbGltaXRlZApzZXQgb2YgY2xpZW50cy4gVG8gZW5hYmxlIHRoaXMgdXNlIGNhc2Ugd2Ug cHJvdmlkZSB0aGUgZm9sbG93aW5nIG5ldwpJT0NUTCBBUElzOgogICogQSBtZWNoYW5pc20gdG8g Y2hhbmdlIGEgcHJvY2VzcydzIGN0eCBwcmlvcml0aWVzCiAgKiBBIG1lY2hhbmlzbSB0byBsaW1p dCB0aGUgbWluaW11bSBwcmlvcml0eSByZXF1aXJlZCBmb3IgdGhlIGdwdQogICAgc2NoZWR1bGVy IHRvIHF1ZXVlIGEgam9iIHRvIHRoZSBIVwoKVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVzZWZ1bCBp biBWUiB1c2UgY2FzZXMsIHdoZXJlIHR3byBjb21wb3NpdG9ycyBhcmUKb3BlcmF0aW5nIHNpbXVs dGFuZW91c2x5LCBlLmcuIFggKyBTdGVhbVZSQ29tcG9zZXIuCgpJbiB0aGlzIGNhc2UgU3RlYW1W UkNvbXBvc2VyIGNhbiBsaW1pdCBncHUgYWNjZXNzIHRvIGl0c2VsZiArIHRoZQpyZWxldmFudCBj bGllbnRzLiBPbmNlIGNyaXRpY2FsIHdvcmsgaXMgY29tcGxldGUsIGFuZCBpZiBlbm91Z2ggdGlt ZSBpcwphdmFpbGFibGUgdW50aWwgdGhlIG5leHQgSE1EIHZibGFuaywgZ2VuZXJhbCBhY2Nlc3Mg dG8gdGhlIGdwdSBjYW4gYmUKcmVzdG9yZWQuCgpUaGUgb3BlcmF0aW9uIGlzIGxpbWl0ZWQgdG8g RFJNX01BU1RFUiBzaW5jZSBpdCBtYXkgbGVhZCB0byBzdGFydmF0aW9uLgpUaGUgaW1wbGVtZW50 YXRpb24gb2YgZHJtIGxlYXNlcyBpcyByZXF1aXJlZCB0byBleHRlbmQgRFJNX01BU1RFUgpzdGF0 dXMgdG8gdGhlIFN0ZWFtVlJDb21wb3Nlci4KClNpZ25lZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1 ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9N YWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfY3R4LmMgICAgICAgfCAgMzkgKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9rbXMuYyAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfc2NoZWQuYyAgICAgfCAxMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zY2hlZC5oICAgICB8ICAzNCArKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmMgfCAgODEgKysrKysr KysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5o IHwgIDE0ICsrLQogaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmggICAgICAgICAgICAgICAg IHwgIDI2ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAyNiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfc2NoZWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9zY2hlZC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQppbmRleCBi NjJkOWU5Li5lNGQzYjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQpAQCAtMjUs NyArMjUsNyBAQCBhbWRncHUteSArPSBhbWRncHVfZGV2aWNlLm8gYW1kZ3B1X2ttcy5vIFwKIAlh bWRncHVfcHJpbWUubyBhbWRncHVfdm0ubyBhbWRncHVfaWIubyBhbWRncHVfcGxsLm8gXAogCWFt ZGdwdV91Y29kZS5vIGFtZGdwdV9ib19saXN0Lm8gYW1kZ3B1X2N0eC5vIGFtZGdwdV9zeW5jLm8g XAogCWFtZGdwdV9ndHRfbWdyLm8gYW1kZ3B1X3ZyYW1fbWdyLm8gYW1kZ3B1X3ZpcnQubyBhbWRn cHVfYXRvbWZpcm13YXJlLm8gXAotCWFtZGdwdV9xdWV1ZV9tZ3IubworCWFtZGdwdV9xdWV1ZV9t Z3IubyBhbWRncHVfc2NoZWQubwogCiAjIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrCiBhbWRncHUt JChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lrLm8gY2lrX2loLm8ga3Zfc21jLm8ga3ZfZHBt Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAppbmRleCAzNzIyMzUyLi45NjgxZGU3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaApAQCAtODMzLDYgKzgzMyw5IEBAIHVp bnQ2NF90IGFtZGdwdV9jdHhfYWRkX2ZlbmNlKHN0cnVjdCBhbWRncHVfY3R4ICpjdHgsIHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywKIAkJCSAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsK IHN0cnVjdCBkbWFfZmVuY2UgKmFtZGdwdV9jdHhfZ2V0X2ZlbmNlKHN0cnVjdCBhbWRncHVfY3R4 ICpjdHgsCiAJCQkJICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50NjRfdCBzZXEpOwor dm9pZCBhbWRncHVfY3R4X3NldF9wcmlvcml0eShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK KwkJCSAgICAgc3RydWN0IGFtZGdwdV9jdHggKmN0eCwKKwkJCSAgICAgZW51bSBhbWRfc2NoZWRf cHJpb3JpdHkgcHJpb3JpdHkpOwogCiBpbnQgYW1kZ3B1X2N0eF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKaW5kZXggNDNmZTVhZS4uOTk2NDM0 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwpAQCAtMjQsNiArMjQs NyBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlICJhbWRncHUuaCIKKyNpbmNs dWRlICJhbWRncHVfc2NoZWQuaCIKIAogc3RhdGljIGludCBhbWRncHVfY3R4X2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICBlbnVtIGFtZF9zY2hlZF9wcmlvcml0eSBwcmlv cml0eSwKQEAgLTE5OCwyMyArMTk5LDYgQEAgc3RhdGljIGludCBhbWRncHVfY3R4X3F1ZXJ5KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgZW51bSBh bWRfc2NoZWRfcHJpb3JpdHkgYW1kZ3B1X3RvX3NjaGVkX3ByaW9yaXR5KGludCBhbWRncHVfcHJp b3JpdHkpCi17Ci0Jc3dpdGNoIChhbWRncHVfcHJpb3JpdHkpIHsKLQljYXNlIEFNREdQVV9DVFhf UFJJT1JJVFlfSElHSF9IVzoKLQkJcmV0dXJuIEFNRF9TQ0hFRF9QUklPUklUWV9ISUdIX0hXOwot CWNhc2UgQU1ER1BVX0NUWF9QUklPUklUWV9ISUdIX1NXOgotCQlyZXR1cm4gQU1EX1NDSEVEX1BS SU9SSVRZX0hJR0hfU1c7Ci0JY2FzZSBBTURHUFVfQ1RYX1BSSU9SSVRZX05PUk1BTDoKLQkJcmV0 dXJuIEFNRF9TQ0hFRF9QUklPUklUWV9OT1JNQUw7Ci0JY2FzZSBBTURHUFVfQ1RYX1BSSU9SSVRZ X0xPVzoKLQkJcmV0dXJuIEFNRF9TQ0hFRF9QUklPUklUWV9MT1c7Ci0JZGVmYXVsdDoKLQkJV0FS TigxLCAiSW52YWxpZCBjb250ZXh0IHByaW9yaXR5ICVkXG4iLCBhbWRncHVfcHJpb3JpdHkpOwot CQlyZXR1cm4gQU1EX1NDSEVEX1BSSU9SSVRZX0lOVkFMSUQ7Ci0JfQotfQotCiBpbnQgYW1kZ3B1 X2N0eF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlscCkKIHsKQEAgLTMzNyw2ICszMjEsMjcgQEAgc3RydWN0IGRtYV9m ZW5jZSAqYW1kZ3B1X2N0eF9nZXRfZmVuY2Uoc3RydWN0IGFtZGdwdV9jdHggKmN0eCwKIAlyZXR1 cm4gZmVuY2U7CiB9CiAKK3ZvaWQgYW1kZ3B1X2N0eF9zZXRfcHJpb3JpdHkoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCisJCQkgICAgIHN0cnVjdCBhbWRncHVfY3R4ICpjdHgsCisJCQkgICAg IGVudW0gYW1kX3NjaGVkX3ByaW9yaXR5IHByaW9yaXR5KQoreworCWludCBpOworCXN0cnVjdCBh bWRfc2NoZWRfcnEgKnJxOworCXN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICplbnRpdHk7CisJc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nOworCisJc3Bpbl9sb2NrKCZjdHgtPnJpbmdfbG9jayk7CisJ Zm9yIChpID0gMDsgaSA8IGFkZXYtPm51bV9yaW5nczsgaSsrKSB7CisJCXJpbmcgPSBhZGV2LT5y aW5nc1tpXTsKKwkJZW50aXR5ID0gJmN0eC0+cmluZ3NbaV0uZW50aXR5OworCQlycSA9ICZyaW5n LT5zY2hlZC5zY2hlZF9ycVtwcmlvcml0eV07CisKKwkJaWYgKHJpbmctPmZ1bmNzLT50eXBlICE9 IEFNREdQVV9SSU5HX1RZUEVfS0lRKQorCQkJYW1kX3NjaGVkX2VudGl0eV9zZXRfcnEoZW50aXR5 LCBycSk7CisJfQorCXNwaW5fdW5sb2NrKCZjdHgtPnJpbmdfbG9jayk7Cit9CisKIHZvaWQgYW1k Z3B1X2N0eF9tZ3JfaW5pdChzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IgKm1ncikKIHsKIAltdXRleF9p bml0KCZtZ3ItPmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCmlu ZGV4IDhjMjZlZTEuLjM3Njg1MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf a21zLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUg ImFtZGdwdS5oIgogI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CisjaW5jbHVkZSAiYW1kZ3B1 X3NjaGVkLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3V2ZC5oIgogI2luY2x1ZGUgImFtZGdwdV92Y2Uu aCIKIApAQCAtMTAwOSw2ICsxMDEwLDcgQEAgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGFt ZGdwdV9pb2N0bHNfa21zW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9DUkVB VEUsIGFtZGdwdV9nZW1fY3JlYXRlX2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwK IAlEUk1fSU9DVExfREVGX0RSVihBTURHUFVfQ1RYLCBhbWRncHVfY3R4X2lvY3RsLCBEUk1fQVVU SHxEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihBTURHUFVfVk0sIGFtZGdw dV92bV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9E UlYoQU1ER1BVX1NDSEVELCBhbWRncHVfc2NoZWRfaW9jdGwsIERSTV9NQVNURVIpLAogCURSTV9J T0NUTF9ERUZfRFJWKEFNREdQVV9CT19MSVNULCBhbWRncHVfYm9fbGlzdF9pb2N0bCwgRFJNX0FV VEh8RFJNX1JFTkRFUl9BTExPVyksCiAJLyogS01TICovCiAJRFJNX0lPQ1RMX0RFRl9EUlYoQU1E R1BVX0dFTV9NTUFQLCBhbWRncHVfZ2VtX21tYXBfaW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJf QUxMT1cpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Nj aGVkLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2NoZWQuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGUyYTUxCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3NjaGVkLmMKQEAgLTAsMCArMSwxMzEg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNyBWYWx2ZSBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh bGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1Ig QVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF LgorICoKKyAqIEF1dGhvcnM6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4K KyAqLworCisjaW5jbHVkZSA8bGludXgvZmR0YWJsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BpZC5o PgorI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CisjaW5jbHVkZSAiYW1kZ3B1LmgiCisKKyNp bmNsdWRlICJhbWRncHVfdm0uaCIKKworZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkgYW1kZ3B1X3Rv X3NjaGVkX3ByaW9yaXR5KGludCBhbWRncHVfcHJpb3JpdHkpCit7CisJc3dpdGNoIChhbWRncHVf cHJpb3JpdHkpIHsKKwljYXNlIEFNREdQVV9DVFhfUFJJT1JJVFlfSElHSF9IVzoKKwkJcmV0dXJu IEFNRF9TQ0hFRF9QUklPUklUWV9ISUdIX0hXOworCWNhc2UgQU1ER1BVX0NUWF9QUklPUklUWV9I SUdIX1NXOgorCQlyZXR1cm4gQU1EX1NDSEVEX1BSSU9SSVRZX0hJR0hfU1c7CisJY2FzZSBBTURH UFVfQ1RYX1BSSU9SSVRZX05PUk1BTDoKKwkJcmV0dXJuIEFNRF9TQ0hFRF9QUklPUklUWV9OT1JN QUw7CisJY2FzZSBBTURHUFVfQ1RYX1BSSU9SSVRZX0xPVzoKKwkJcmV0dXJuIEFNRF9TQ0hFRF9Q UklPUklUWV9MT1c7CisJZGVmYXVsdDoKKwkJV0FSTigxLCAiSW52YWxpZCBjb250ZXh0IHByaW9y aXR5ICVkXG4iLCBhbWRncHVfcHJpb3JpdHkpOworCQlyZXR1cm4gQU1EX1NDSEVEX1BSSU9SSVRZ X0lOVkFMSUQ7CisJfQorfQorCitzdGF0aWMgaW50IGFtZGdwdV9zY2hlZF9wcm9jZXNzX3ByaW9y aXR5X3NldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJICAgICBpbnQgZmQsCisJ CQkJCSAgICAgZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkgcHJpb3JpdHkpCit7CisJc3RydWN0IGZp bGUgKmZpbHAgPSBmY2hlY2soZmQpOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwlzdHJ1Y3Qg cGlkICpwaWQ7CisJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXY7CisJc3RydWN0IGFtZGdwdV9j dHggKmN0eDsKKwl1aW50MzJfdCBpZDsKKworCWlmICghZmlscCkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlwaWQgPSBnZXRfcGlkKCgoc3RydWN0IGRybV9maWxlICopZmlscC0+cHJpdmF0ZV9kYXRh KS0+cGlkKTsKKworCW11dGV4X2xvY2soJmFkZXYtPmRkZXYtPmZpbGVsaXN0X211dGV4KTsKKwls aXN0X2Zvcl9lYWNoX2VudHJ5KGZpbGUsICZhZGV2LT5kZGV2LT5maWxlbGlzdCwgbGhlYWQpIHsK KwkJaWYgKGZpbGUtPnBpZCAhPSBwaWQpCisJCQljb250aW51ZTsKKworCQlmcHJpdiA9IGZpbGUt PmRyaXZlcl9wcml2OworCQlpZHJfZm9yX2VhY2hfZW50cnkoJmZwcml2LT5jdHhfbWdyLmN0eF9o YW5kbGVzLCBjdHgsIGlkKQorCQkJYW1kZ3B1X2N0eF9zZXRfcHJpb3JpdHkoYWRldiwgY3R4LCBw cmlvcml0eSk7CisJfQorCW11dGV4X3VubG9jaygmYWRldi0+ZGRldi0+ZmlsZWxpc3RfbXV0ZXgp OworCisJcHV0X3BpZChwaWQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1 X3NjaGVkX21pbl9wcmlvcml0eV9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJ CSBlbnVtIGFtZF9zY2hlZF9wcmlvcml0eSBwcmlvcml0eSkKK3sKKwlpbnQgaTsKKworCWZvciAo aSA9IDA7IGkgPCBhZGV2LT5udW1fcmluZ3M7IGkrKykKKwkJYW1kX3NjaGVkX21pbl9wcmlvcml0 eV9nZXQoJmFkZXYtPnJpbmdzW2ldLT5zY2hlZCwgcHJpb3JpdHkpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3NjaGVkX21pbl9wcmlvcml0eV9wdXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCisJCQkJCSBlbnVtIGFtZF9zY2hlZF9wcmlvcml0eSBwcmlvcml0eSkK K3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5udW1fcmluZ3M7IGkrKykKKwkJ YW1kX3NjaGVkX21pbl9wcmlvcml0eV9wdXQoJmFkZXYtPnJpbmdzW2ldLT5zY2hlZCwgcHJpb3Jp dHkpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBhbWRncHVfc2NoZWRfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls cCkKK3sKKwl1bmlvbiBkcm1fYW1kZ3B1X3NjaGVkICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJZW51bSBhbWRfc2NoZWRfcHJp b3JpdHkgcHJpb3JpdHk7CisJaW50IHI7CisKKwlwcmlvcml0eSA9IGFtZGdwdV90b19zY2hlZF9w cmlvcml0eShhcmdzLT5pbi5wcmlvcml0eSk7CisJaWYgKGFyZ3MtPmluLnJlc2VydmVkIHx8IHBy aW9yaXR5ID09IEFNRF9TQ0hFRF9QUklPUklUWV9JTlZBTElEKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXN3aXRjaCAoYXJncy0+aW4ub3ApIHsKKwljYXNlIEFNREdQVV9TQ0hFRF9PUF9QUk9DRVNT X1BSSU9SSVRZX1NFVDoKKwkJciA9IGFtZGdwdV9zY2hlZF9wcm9jZXNzX3ByaW9yaXR5X3NldChh ZGV2LCBhcmdzLT5pbi5mZCwgcHJpb3JpdHkpOworCQlicmVhazsKKwljYXNlIEFNREdQVV9TQ0hF RF9PUF9NSU5fUFJJT1JJVFlfR0VUOgorCQlyID0gYW1kZ3B1X3NjaGVkX21pbl9wcmlvcml0eV9n ZXQoYWRldiwgcHJpb3JpdHkpOworCQlicmVhazsKKwljYXNlIEFNREdQVV9TQ0hFRF9PUF9NSU5f UFJJT1JJVFlfUFVUOgorCQlyID0gYW1kZ3B1X3NjaGVkX21pbl9wcmlvcml0eV9wdXQoYWRldiwg cHJpb3JpdHkpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyID0gLUVJTlZBTDsKKwkJYnJlYWs7 CisJfQorCisJcmV0dXJuIHI7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfc2NoZWQuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9z Y2hlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOGMwNjcKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2NoZWQuaApA QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgVmFsdmUgQ29ycG9yYXRpb24K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQg SE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4 N0BnbWFpbC5jb20+CisgKi8KKworI2lmbmRlZiBfX0FNREdQVV9TQ0hFRF9IX18KKyNkZWZpbmUg X19BTURHUFVfU0NIRURfSF9fCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorCitlbnVtIGFtZF9z Y2hlZF9wcmlvcml0eSBhbWRncHVfdG9fc2NoZWRfcHJpb3JpdHkoaW50IGFtZGdwdV9wcmlvcml0 eSk7CitpbnQgYW1kZ3B1X3NjaGVkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCisJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworCisjZW5kaWYgLy8gX19B TURHUFVfU0NIRURfSF9fCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxl ci9ncHVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVfc2No ZWR1bGVyLmMKaW5kZXggMzhjZWE2Zi4uNGYyY2JlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwpAQCAtMTMzLDYgKzEzMyw3IEBAIGludCBhbWRf c2NoZWRfZW50aXR5X2luaXQoc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyICpzY2hlZCwKIAllbnRp dHktPnJxID0gcnE7CiAJZW50aXR5LT5zY2hlZCA9IHNjaGVkOwogCisJc3Bpbl9sb2NrX2luaXQo JmVudGl0eS0+cnFfbG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJmVudGl0eS0+cXVldWVfbG9jayk7 CiAJciA9IGtmaWZvX2FsbG9jKCZlbnRpdHktPmpvYl9xdWV1ZSwgam9icyAqIHNpemVvZih2b2lk ICopLCBHRlBfS0VSTkVMKTsKIAlpZiAocikKQEAgLTIwNCw4ICsyMDUsNiBAQCBzdGF0aWMgYm9v bCBhbWRfc2NoZWRfZW50aXR5X2lzX3JlYWR5KHN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICplbnRp dHkpCiB2b2lkIGFtZF9zY2hlZF9lbnRpdHlfZmluaShzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIg KnNjaGVkLAogCQkJICAgc3RydWN0IGFtZF9zY2hlZF9lbnRpdHkgKmVudGl0eSkKIHsKLQlzdHJ1 Y3QgYW1kX3NjaGVkX3JxICpycSA9IGVudGl0eS0+cnE7Ci0KIAlpZiAoIWFtZF9zY2hlZF9lbnRp dHlfaXNfaW5pdGlhbGl6ZWQoc2NoZWQsIGVudGl0eSkpCiAJCXJldHVybjsKIApAQCAtMjE1LDcg KzIxNCw4IEBAIHZvaWQgYW1kX3NjaGVkX2VudGl0eV9maW5pKHN0cnVjdCBhbWRfZ3B1X3NjaGVk dWxlciAqc2NoZWQsCiAJKi8KIAl3YWl0X2V2ZW50KHNjaGVkLT5qb2Jfc2NoZWR1bGVkLCBhbWRf c2NoZWRfZW50aXR5X2lzX2lkbGUoZW50aXR5KSk7CiAKLQlhbWRfc2NoZWRfcnFfcmVtb3ZlX2Vu dGl0eShycSwgZW50aXR5KTsKKwlhbWRfc2NoZWRfZW50aXR5X3NldF9ycShlbnRpdHksIE5VTEwp OworCiAJa2ZpZm9fZnJlZSgmZW50aXR5LT5qb2JfcXVldWUpOwogfQogCkBAIC0yMzYsNiArMjM2 LDI0IEBAIHN0YXRpYyB2b2lkIGFtZF9zY2hlZF9lbnRpdHlfY2xlYXJfZGVwKHN0cnVjdCBkbWFf ZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IKIAlkbWFfZmVuY2VfcHV0KGYpOwogfQogCit2 b2lkIGFtZF9zY2hlZF9lbnRpdHlfc2V0X3JxKHN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICplbnRp dHksCisJCQkgICAgIHN0cnVjdCBhbWRfc2NoZWRfcnEgKnJxKQoreworCWlmIChlbnRpdHktPnJx ID09IHJxKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2soJmVudGl0eS0+cnFfbG9jayk7CisKKwlp ZiAoZW50aXR5LT5ycSkKKwkJYW1kX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoZW50aXR5LT5ycSwg ZW50aXR5KTsKKworCWVudGl0eS0+cnEgPSBycTsKKwlpZiAocnEpCisJCWFtZF9zY2hlZF9ycV9h ZGRfZW50aXR5KHJxLCBlbnRpdHkpOworCisJc3Bpbl91bmxvY2soJmVudGl0eS0+cnFfbG9jayk7 Cit9CisKIGJvb2wgYW1kX3NjaGVkX2RlcGVuZGVuY3lfb3B0aW1pemVkKHN0cnVjdCBkbWFfZmVu Y2UqIGZlbmNlLAogCQkJCSAgICBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSAqZW50aXR5KQogewpA QCAtMzMzLDcgKzM1MSw5IEBAIHN0YXRpYyBib29sIGFtZF9zY2hlZF9lbnRpdHlfaW4oc3RydWN0 IGFtZF9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIAkvKiBmaXJzdCBqb2Igd2FrZXMgdXAgc2NoZWR1 bGVyICovCiAJaWYgKGZpcnN0KSB7CiAJCS8qIEFkZCB0aGUgZW50aXR5IHRvIHRoZSBydW4gcXVl dWUgKi8KKwkJc3Bpbl9sb2NrKCZlbnRpdHktPnJxX2xvY2spOwogCQlhbWRfc2NoZWRfcnFfYWRk X2VudGl0eShlbnRpdHktPnJxLCBlbnRpdHkpOworCQlzcGluX3VubG9jaygmZW50aXR5LT5ycV9s b2NrKTsKIAkJYW1kX3NjaGVkX3dha2V1cChzY2hlZCk7CiAJfQogCXJldHVybiBhZGRlZDsKQEAg LTUyMywxOCArNTQzLDIyIEBAIHN0YXRpYyB2b2lkIGFtZF9zY2hlZF93YWtldXAoc3RydWN0IGFt ZF9ncHVfc2NoZWR1bGVyICpzY2hlZCkKIHN0YXRpYyBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSAq CiBhbWRfc2NoZWRfc2VsZWN0X2VudGl0eShzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIgKnNjaGVk KQogewotCXN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICplbnRpdHk7Ci0JaW50IGk7CisJc3RydWN0 IGFtZF9zY2hlZF9lbnRpdHkgKmVudGl0eSA9IE5VTEw7CisJaW50IGksIG1pbl9yZXF1aXJlZF9w cmlvOwogCiAJaWYgKCFhbWRfc2NoZWRfcmVhZHkoc2NoZWQpKQogCQlyZXR1cm4gTlVMTDsKIAor CXNwaW5fbG9jaygmc2NoZWQtPm1pbl9yZXF1aXJlZF9wcmlvX2xvY2spOworCW1pbl9yZXF1aXJl ZF9wcmlvID0gc2NoZWQtPm1pbl9yZXF1aXJlZF9wcmlvOworCiAJLyogS2VybmVsIHJ1biBxdWV1 ZSBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gbm9ybWFsIHJ1biBxdWV1ZSovCi0JZm9yIChpID0g QU1EX1NDSEVEX1BSSU9SSVRZX01BWCAtIDE7IGkgPj0gQU1EX1NDSEVEX1BSSU9SSVRZX01JTjsg aS0tKSB7CisJZm9yIChpID0gQU1EX1NDSEVEX1BSSU9SSVRZX01BWCAtIDE7IGkgPj0gbWluX3Jl cXVpcmVkX3ByaW87IGktLSkgewogCQllbnRpdHkgPSBhbWRfc2NoZWRfcnFfc2VsZWN0X2VudGl0 eSgmc2NoZWQtPnNjaGVkX3JxW2ldKTsKIAkJaWYgKGVudGl0eSkKIAkJCWJyZWFrOwogCX0KKwlz cGluX3VubG9jaygmc2NoZWQtPm1pbl9yZXF1aXJlZF9wcmlvX2xvY2spOwogCiAJcmV0dXJuIGVu dGl0eTsKIH0KQEAgLTYzOCwxNSArNjYyLDE5IEBAIGludCBhbWRfc2NoZWRfaW5pdChzdHJ1Y3Qg YW1kX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAogCXNjaGVkLT5od19zdWJtaXNzaW9uX2xpbWl0ID0g aHdfc3VibWlzc2lvbjsKIAlzY2hlZC0+bmFtZSA9IG5hbWU7CiAJc2NoZWQtPnRpbWVvdXQgPSB0 aW1lb3V0OwotCWZvciAoaSA9IEFNRF9TQ0hFRF9QUklPUklUWV9NSU47IGkgPCBBTURfU0NIRURf UFJJT1JJVFlfTUFYOyBpKyspCisJZm9yIChpID0gQU1EX1NDSEVEX1BSSU9SSVRZX01JTjsgaSA8 IEFNRF9TQ0hFRF9QUklPUklUWV9NQVg7IGkrKykgewogCQlhbWRfc2NoZWRfcnFfaW5pdCgmc2No ZWQtPnNjaGVkX3JxW2ldKTsKKwkJYXRvbWljX3NldCgmc2NoZWQtPnByaW9fcmVxdWVzdHNbaV0s IDApOworCX0KIAogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnNjaGVkLT53YWtlX3VwX3dvcmtlcik7 CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmc2NoZWQtPmpvYl9zY2hlZHVsZWQpOwogCUlOSVRfTElT VF9IRUFEKCZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCk7CiAJc3Bpbl9sb2NrX2luaXQoJnNjaGVk LT5qb2JfbGlzdF9sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmc2NoZWQtPm1pbl9yZXF1aXJlZF9w cmlvX2xvY2spOwogCWF0b21pY19zZXQoJnNjaGVkLT5od19ycV9jb3VudCwgMCk7CiAJYXRvbWlj NjRfc2V0KCZzY2hlZC0+am9iX2lkX2NvdW50LCAwKTsKKwlzY2hlZC0+bWluX3JlcXVpcmVkX3By aW8gPSBBTURfU0NIRURfUFJJT1JJVFlfTUlOOwogCiAJLyogRWFjaCBzY2hlZHVsZXIgd2lsbCBy dW4gb24gYSBzZXBlcmF0ZSBrZXJuZWwgdGhyZWFkICovCiAJc2NoZWQtPnRocmVhZCA9IGt0aHJl YWRfcnVuKGFtZF9zY2hlZF9tYWluLCBzY2hlZCwgc2NoZWQtPm5hbWUpOwpAQCAtNjY4LDMgKzY5 Niw0MiBAQCB2b2lkIGFtZF9zY2hlZF9maW5pKHN0cnVjdCBhbWRfZ3B1X3NjaGVkdWxlciAqc2No ZWQpCiAJaWYgKHNjaGVkLT50aHJlYWQpCiAJCWt0aHJlYWRfc3RvcChzY2hlZC0+dGhyZWFkKTsK IH0KKwordm9pZCBhbWRfc2NoZWRfbWluX3ByaW9yaXR5X2dldChzdHJ1Y3QgYW1kX2dwdV9zY2hl ZHVsZXIgKnNjaGVkLAorCQkJCWVudW0gYW1kX3NjaGVkX3ByaW9yaXR5IHByaW9yaXR5KQorewor CWF0b21pY19pbmMoJnNjaGVkLT5wcmlvX3JlcXVlc3RzW3ByaW9yaXR5XSk7CisKKwlzcGluX2xv Y2soJnNjaGVkLT5taW5fcmVxdWlyZWRfcHJpb19sb2NrKTsKKwlpZiAocHJpb3JpdHkgPiBzY2hl ZC0+bWluX3JlcXVpcmVkX3ByaW8pCisJCXNjaGVkLT5taW5fcmVxdWlyZWRfcHJpbyA9IHByaW9y aXR5OworCXNwaW5fdW5sb2NrKCZzY2hlZC0+bWluX3JlcXVpcmVkX3ByaW9fbG9jayk7Cit9CisK K3ZvaWQgYW1kX3NjaGVkX21pbl9wcmlvcml0eV9wdXQoc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVy ICpzY2hlZCwKKwkJCQllbnVtIGFtZF9zY2hlZF9wcmlvcml0eSBwcmlvcml0eSkKK3sKKwlpbnQg aTsKKworCWlmIChhdG9taWNfZGVjX3JldHVybigmc2NoZWQtPnByaW9fcmVxdWVzdHNbcHJpb3Jp dHldKSA+IDApCisJCXJldHVybjsKKworCWlmIChwcmlvcml0eSA9PSBBTURfU0NIRURfUFJJT1JJ VFlfTUlOKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2soJnNjaGVkLT5taW5fcmVxdWlyZWRfcHJp b19sb2NrKTsKKwlpZiAoc2NoZWQtPm1pbl9yZXF1aXJlZF9wcmlvID4gcHJpb3JpdHkpCisJCWdv dG8gb3V0X3VubG9jazsKKworCWZvciAoaSA9IHByaW9yaXR5OyBpID49IEFNRF9TQ0hFRF9QUklP UklUWV9NSU47IGktLSkgeworCQlpZiAoaSA9PSBBTURfU0NIRURfUFJJT1JJVFlfTUlOCisJCQkJ fHwgYXRvbWljX3JlYWQoJnNjaGVkLT5wcmlvX3JlcXVlc3RzW2ldKSkgeworCQkJc2NoZWQtPm1p bl9yZXF1aXJlZF9wcmlvID0gaTsKKwkJCWJyZWFrOworCQl9CisJfQorCWFtZF9zY2hlZF93YWtl dXAoc2NoZWQpOworCitvdXRfdW5sb2NrOgorCXNwaW5fdW5sb2NrKCZzY2hlZC0+bWluX3JlcXVp cmVkX3ByaW9fbG9jayk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVk dWxlci9ncHVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVf c2NoZWR1bGVyLmgKaW5kZXggZGEwNDBiYy4uYzQ4OTcwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuaApAQCAtMzgsOSArMzgsMTEgQEAgc3RydWN0 IGFtZF9zY2hlZF9ycTsKICovCiBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSB7CiAJc3RydWN0IGxp c3RfaGVhZAkJbGlzdDsKLQlzdHJ1Y3QgYW1kX3NjaGVkX3JxCQkqcnE7CiAJc3RydWN0IGFtZF9n cHVfc2NoZWR1bGVyCSpzY2hlZDsKIAorCXNwaW5sb2NrX3QJCQlycV9sb2NrOworCXN0cnVjdCBh bWRfc2NoZWRfcnEJCSpycTsKKwogCXNwaW5sb2NrX3QJCQlxdWV1ZV9sb2NrOwogCXN0cnVjdCBr ZmlmbyAgICAgICAgICAgICAgICAgICAgam9iX3F1ZXVlOwogCkBAIC0xNDAsMTIgKzE0MiwyMCBA QCBzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIgewogCXN0cnVjdCB0YXNrX3N0cnVjdAkJKnRocmVh ZDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCXJpbmdfbWlycm9yX2xpc3Q7CiAJc3BpbmxvY2tfdAkJCWpv Yl9saXN0X2xvY2s7CisJYXRvbWljX3QJCQlwcmlvX3JlcXVlc3RzW0FNRF9TQ0hFRF9QUklPUklU WV9NQVhdOworCS8qIG1pbmltdW0gcHJpb3JpdHkgcmVxdXJpcmVkIGZvciBhIGpvYiB0byBiZSBz Y2hlZHVsZWQgKi8KKwllbnVtIGFtZF9zY2hlZF9wcmlvcml0eQkJbWluX3JlcXVpcmVkX3ByaW87 CisJc3BpbmxvY2tfdAkJCW1pbl9yZXF1aXJlZF9wcmlvX2xvY2s7CiB9OwogCiBpbnQgYW1kX3Nj aGVkX2luaXQoc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyICpzY2hlZCwKIAkJICAgY29uc3Qgc3Ry dWN0IGFtZF9zY2hlZF9iYWNrZW5kX29wcyAqb3BzLAogCQkgICB1aW50MzJfdCBod19zdWJtaXNz aW9uLCBsb25nIHRpbWVvdXQsIGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZCBhbWRfc2NoZWRfZmlu aShzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsKK3ZvaWQgYW1kX3NjaGVkX21pbl9w cmlvcml0eV9nZXQoc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyICpzY2hlZCwKKwkJCQllbnVtIGFt ZF9zY2hlZF9wcmlvcml0eSBwcmlvcml0eSk7Cit2b2lkIGFtZF9zY2hlZF9taW5fcHJpb3JpdHlf cHV0KHN0cnVjdCBhbWRfZ3B1X3NjaGVkdWxlciAqc2NoZWQsCisJCQkJZW51bSBhbWRfc2NoZWRf cHJpb3JpdHkgcHJpb3JpdHkpOwogCiBpbnQgYW1kX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBh bWRfZ3B1X3NjaGVkdWxlciAqc2NoZWQsCiAJCQkgIHN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICpl bnRpdHksCkBAIC0xNTQsNiArMTY0LDggQEAgaW50IGFtZF9zY2hlZF9lbnRpdHlfaW5pdChzdHJ1 Y3QgYW1kX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAogdm9pZCBhbWRfc2NoZWRfZW50aXR5X2Zpbmko c3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyICpzY2hlZCwKIAkJCSAgIHN0cnVjdCBhbWRfc2NoZWRf ZW50aXR5ICplbnRpdHkpOwogdm9pZCBhbWRfc2NoZWRfZW50aXR5X3B1c2hfam9iKHN0cnVjdCBh bWRfc2NoZWRfam9iICpzY2hlZF9qb2IpOwordm9pZCBhbWRfc2NoZWRfZW50aXR5X3NldF9ycShz dHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSAqZW50aXR5LAorCQkJICAgICBzdHJ1Y3QgYW1kX3NjaGVk X3JxICpycSk7CiAKIGludCBhbWRfc2NoZWRfZmVuY2Vfc2xhYl9pbml0KHZvaWQpOwogdm9pZCBh bWRfc2NoZWRfZmVuY2Vfc2xhYl9maW5pKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2RybS9hbWRncHVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAppbmRleCAy N2QwYTgyMi4uNWFmYjVhOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJt LmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmgKQEAgLTUyLDYgKzUyLDcgQEAg ZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERSTV9BTURHUFVfR0VNX1VTRVJQVFIJCTB4MTEKICNkZWZp bmUgRFJNX0FNREdQVV9XQUlUX0ZFTkNFUwkJMHgxMgogI2RlZmluZSBEUk1fQU1ER1BVX1ZNCQkJ MHgxMworI2RlZmluZSBEUk1fQU1ER1BVX1NDSEVECQkweDE0CiAKICNkZWZpbmUgRFJNX0lPQ1RM X0FNREdQVV9HRU1fQ1JFQVRFCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BV X0dFTV9DUkVBVEUsIHVuaW9uIGRybV9hbWRncHVfZ2VtX2NyZWF0ZSkKICNkZWZpbmUgRFJNX0lP Q1RMX0FNREdQVV9HRU1fTU1BUAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQ VV9HRU1fTU1BUCwgdW5pb24gZHJtX2FtZGdwdV9nZW1fbW1hcCkKQEAgLTY3LDYgKzY4LDcgQEAg ZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX1VTRVJQVFIJRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX1VTRVJQVFIsIHN0cnVjdCBkcm1f YW1kZ3B1X2dlbV91c2VycHRyKQogI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX1dBSVRfRkVOQ0VT CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX1dBSVRfRkVOQ0VTLCB1bmlv biBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzKQogI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX1ZNCQlE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9WTSwgdW5pb24gZHJtX2FtZGdw dV92bSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9TQ0hFRAkJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9BTURHUFVfU0NIRUQsIHVuaW9uIGRybV9hbWRncHVfc2NoZWQpCiAKICNk ZWZpbmUgQU1ER1BVX0dFTV9ET01BSU5fQ1BVCQkweDEKICNkZWZpbmUgQU1ER1BVX0dFTV9ET01B SU5fR1RUCQkweDIKQEAgLTIxOSw2ICsyMjEsMzAgQEAgdW5pb24gZHJtX2FtZGdwdV92bSB7CiAJ c3RydWN0IGRybV9hbWRncHVfdm1fb3V0IG91dDsKIH07CiAKKy8qIHNjaGVkIGlvY3RsICovCisj ZGVmaW5lIEFNREdQVV9TQ0hFRF9PUF9QUk9DRVNTX1BSSU9SSVRZX1NFVAkxCisjZGVmaW5lIEFN REdQVV9TQ0hFRF9PUF9NSU5fUFJJT1JJVFlfR0VUCTIKKyNkZWZpbmUgQU1ER1BVX1NDSEVEX09Q X01JTl9QUklPUklUWV9QVVQJMworCitzdHJ1Y3QgZHJtX2FtZGdwdV9zY2hlZF9pbiB7CisJLyog QU1ER1BVX1NDSEVEX09QXyogKi8KKwlfX3UzMglvcDsKKwlfX3UzMglmZDsKKwlfX3MzMglwcmlv cml0eTsKKwkvKiBGb3IgZnV0dXJlIHVzZSAqLworCV9fdTMyCXJlc2VydmVkOworfTsKKworc3Ry dWN0IGRybV9hbWRncHVfc2NoZWRfb3V0IHsKKwkvKiBGb3IgZnV0dXJlIHVzZSAqLworCV9fdTY0 CXJlc2VydmVkOworfTsKKwordW5pb24gZHJtX2FtZGdwdV9zY2hlZCB7CisJc3RydWN0IGRybV9h bWRncHVfc2NoZWRfaW4gaW47CisJc3RydWN0IGRybV9hbWRncHVfc2NoZWRfb3V0IG91dDsKK307 CisKIC8qCiAgKiBUaGlzIGlzIG5vdCBhIHJlbGlhYmxlIEFQSSBhbmQgeW91IHNob3VsZCBleHBl Y3QgaXQgdG8gZmFpbCBmb3IgYW55CiAgKiBudW1iZXIgb2YgcmVhc29ucyBhbmQgaGF2ZSBmYWxs YmFjayBwYXRoIHRoYXQgZG8gbm90IHVzZSB1c2VycHRyIHRvCi0tIAoyLjkuMwoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==