From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 16/22] drm/amdgpu: add a mechanism to untie user ring ids from kernel ring ids Date: Tue, 28 Feb 2017 17:14:43 -0500 Message-ID: <1488320089-22035-17-git-send-email-andresx7@gmail.com> References: <1488320089-22035-1-git-send-email-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488320089-22035-1-git-send-email-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: Andres Rodriguez QWRkIGFtZGdwdV9xdWV1ZV9tZ3IsIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGRpc2pvaW50aW5n IHVzZXJtb2RlJ3MKcmluZyBpZHMgZnJvbSB0aGUga2VybmVsJ3MgcmluZyBpZHMuCgpUaGUgcXVl dWUgbWFuYWdlciBtYWludGFpbnMgYSBwZXItZmlsZSBkZXNjcmlwdG9yIG1hcCBvZiB1c2VyIHJp bmcgaWRzCnRvIGFtZGdwdV9yaW5nIHBvaW50ZXJzLiBPbmNlIGEgbWFwIGlzIGNyZWF0ZWQgaXQg aXMgcGVybWFuZW50ICh0aGlzIGlzCnJlcXVpcmVkIHRvIG1haW50YWluIEZJRk8gZXhlY3V0aW9u IGd1YXJhbnRlZXMgZm9yIGEgcmluZykuCgpEaWZmZXJlbnQgcXVldWUgbWFwIHBvbGljaWVzIGNh biBiZSBjb25maWd1cmVkIGZvciBlYWNoIEhXIElQLgpDdXJyZW50bHkgYWxsIEhXIElQcyB1c2Ug dGhlIGlkZW50aXR5IG1hcHBlciwgaS5lLiBrZXJuZWwgcmluZyBpZCBpcwplcXVhbCB0byB0aGUg dXNlciByaW5nIGlkLgoKVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZWNoYW5pc20gaXMgdG8gZGlzdHJp YnV0ZSB0aGUgbG9hZCBhY3Jvc3MgbXVsdGlwbGUKcXVldWVzIG1vcmUgZWZmZWN0aXZlbHkgZm9y IEhXIElQcyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgcmluZ3MuClVzZXJzcGFjZSBjbGllbnRzIGFy ZSB1bmFibGUgdG8gY2hlY2sgd2hldGhlciBhIHNwZWNpZmljIHJlc291cmNlIGlzIGluCnVzZSBi eSBhIGRpZmZlcmVudCBjbGllbnQuIFRoZXJlZm9yZSwgaXQgaXMgdXAgdG8gdGhlIGtlcm5lbCBk cml2ZXIgdG8KbWFrZSB0aGUgb3B0aW1hbCBjaG9pY2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXMg Um9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvTWFrZWZpbGUgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHUuaCAgICAgICAgICAgfCAgMzEgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9jcy5jICAgICAgICB8ICA3MCArKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmMgfCAxNTcgKysrKysrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuaCB8 ICA3NSArKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5n LmMgICAgICB8ICA0NSArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3JpbmcuaCAgICAgIHwgICAyICsKIDggZmlsZXMgY2hhbmdlZCwgMzMzIGluc2VydGlvbnMoKyks IDUyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv TWFrZWZpbGUKaW5kZXggMjgxNGFhZC4uMDA4MWQwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv TWFrZWZpbGUKQEAgLTE3LDIxICsxNywyMSBAQCBhbWRncHUteSA6PSBhbWRncHVfZHJ2Lm8KIGFt ZGdwdS15ICs9IGFtZGdwdV9kZXZpY2UubyBhbWRncHVfa21zLm8gXAogCWFtZGdwdV9hdG9tYmlv cy5vIGF0b21iaW9zX2NydGMubyBhbWRncHVfY29ubmVjdG9ycy5vIFwKIAlhdG9tLm8gYW1kZ3B1 X2ZlbmNlLm8gYW1kZ3B1X3R0bS5vIGFtZGdwdV9vYmplY3QubyBhbWRncHVfZ2FydC5vIFwKIAlh bWRncHVfZW5jb2RlcnMubyBhbWRncHVfZGlzcGxheS5vIGFtZGdwdV9pMmMubyBcCiAJYW1kZ3B1 X2ZiLm8gYW1kZ3B1X2dlbS5vIGFtZGdwdV9yaW5nLm8gXAogCWFtZGdwdV9jcy5vIGFtZGdwdV9i aW9zLm8gYW1kZ3B1X2JlbmNobWFyay5vIGFtZGdwdV90ZXN0Lm8gXAogCWFtZGdwdV9wbS5vIGF0 b21iaW9zX2RwLm8gYW1kZ3B1X2FmbXQubyBhbWRncHVfdHJhY2VfcG9pbnRzLm8gXAogCWF0b21i aW9zX2VuY29kZXJzLm8gYW1kZ3B1X3NhLm8gYXRvbWJpb3NfaTJjLm8gXAogCWFtZGdwdV9wcmlt ZS5vIGFtZGdwdV92bS5vIGFtZGdwdV9pYi5vIGFtZGdwdV9wbGwubyBcCiAJYW1kZ3B1X3Vjb2Rl Lm8gYW1kZ3B1X2JvX2xpc3QubyBhbWRncHVfY3R4Lm8gYW1kZ3B1X3N5bmMubyBcCi0JYW1kZ3B1 X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vCisJYW1kZ3B1X2d0dF9t Z3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdwdV9xdWV1ZV9tZ3Iubwog CiAjIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrCiBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9D SUspKz0gY2lrLm8gY2lrX2loLm8ga3Zfc21jLm8ga3ZfZHBtLm8gXAogCWNpX3NtYy5vIGNpX2Rw bS5vIGRjZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAu byBcCiAJYW1kZ3B1X2FtZGtmZF9nZnhfdjcubwogCiBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQ VV9TSSkrPSBzaS5vIGdtY192Nl8wLm8gZ2Z4X3Y2XzAubyBzaV9paC5vIHNpX2RtYS5vIGRjZV92 Nl8wLm8gc2lfZHBtLm8gc2lfc21jLm8KIAogYW1kZ3B1LXkgKz0gXAogCXZpLm8gbXhncHVfdmku bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAppbmRleCA4OGRhZDgxLi42N2IzM2FhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaApAQCAtNjg5LDI4ICs2ODksNTQgQEAgdWlu dDY0X3QgYW1kZ3B1X2N0eF9hZGRfZmVuY2Uoc3RydWN0IGFtZGdwdV9jdHggKmN0eCwgc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLAogc3RydWN0IGRtYV9mZW5jZSAqYW1kZ3B1X2N0eF9nZXRfZmVu Y2Uoc3RydWN0IGFtZGdwdV9jdHggKmN0eCwKIAkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsIHVpbnQ2NF90IHNlcSk7CiAKIGludCBhbWRncHVfY3R4X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxwKTsKIAog dm9pZCBhbWRncHVfY3R4X21ncl9pbml0KHN0cnVjdCBhbWRncHVfY3R4X21nciAqbWdyKTsKIHZv aWQgYW1kZ3B1X2N0eF9tZ3JfZmluaShzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IgKm1ncik7CiAKIC8q CisgKiBRdWV1ZSBtYW5hZ2VyIHJlbGF0ZWQgc3RydWN0dXJlcworICovCitzdHJ1Y3QgYW1kZ3B1 X3F1ZXVlX21hcHBlcjsKKworc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXJfZnVuY3MgeworCS8q IG1hcCBhIHVzZXJzcGFjZSByaW5nIGlkIHRvIGEga2VybmVsIHJpbmcgaWQgKi8KKwlpbnQgKCpt YXApKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkgICBzdHJ1Y3QgYW1kZ3B1X3F1ZXVl X21hcHBlciAqbWFwcGVyLAorCQkgICBpbnQgcmluZywKKwkJICAgc3RydWN0IGFtZGdwdV9yaW5n ICoqb3V0X3JpbmcpOworfTsKKworc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXIgeworCXN0cnVj dCBhbWRncHVfcXVldWVfbWFwcGVyX2Z1bmNzICpmdW5jczsKKwlpbnQgCQlod19pcDsKKwlzdHJ1 Y3QgbXV0ZXgJbG9jazsKKwkvKiBwcm90ZWN0ZWQgYnkgbG9jayAqLworCXN0cnVjdCBhbWRncHVf cmluZyAqcXVldWVfbWFwW0FNREdQVV9NQVhfUklOR1NdOworfTsKKworc3RydWN0IGFtZGdwdV9x dWV1ZV9tZ3IgeworCXN0cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyIG1hcHBlcltBTURHUFVfTUFY X0lQX05VTV07Cit9OworCisvKgogICogZmlsZSBwcml2YXRlIHN0cnVjdHVyZQogICovCiAKIHN0 cnVjdCBhbWRncHVfZnByaXYgewogCXN0cnVjdCBhbWRncHVfdm0Jdm07CiAJc3RydWN0IG11dGV4 CQlib19saXN0X2xvY2s7CiAJc3RydWN0IGlkcgkJYm9fbGlzdF9oYW5kbGVzOwogCXN0cnVjdCBh bWRncHVfY3R4X21ncgljdHhfbWdyOworCXN0cnVjdCBhbWRncHVfcXVldWVfbWdyIHF1ZXVlX21n cjsKIH07CiAKIC8qCiAgKiByZXNpZGVuY3kgbGlzdAogICovCiAKIHN0cnVjdCBhbWRncHVfYm9f bGlzdCB7CiAJc3RydWN0IG11dGV4IGxvY2s7CiAJc3RydWN0IGFtZGdwdV9ibyAqZ2RzX29iajsK IAlzdHJ1Y3QgYW1kZ3B1X2JvICpnd3Nfb2JqOwpAQCAtMTcyMCwyMiArMTc0NiwyMyBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgYW1kZ3B1X2lzX21lY19xdWV1ZV9lbmFibGVkKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogI2RlZmluZSBhbWRncHVfZ2RzX3N3aXRjaChhZGV2LCByLCB2LCBkLCB3 LCBhKSAoYWRldiktPmdkcy5mdW5jcy0+cGF0Y2hfZ2RzX3N3aXRjaCgociksICh2KSwgKGQpLCAo dyksIChhKSkKIAogLyogQ29tbW9uIGZ1bmN0aW9ucyAqLwogaW50IGFtZGdwdV9ncHVfcmVzZXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogYm9vbCBhbWRncHVfbmVlZF9iYWNrdXAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogdm9pZCBhbWRncHVfcGNpX2NvbmZpZ19yZXNldChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBib29sIGFtZGdwdV9jYXJkX3Bvc3RlZChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiB2b2lkIGFtZGdwdV91cGRhdGVfZGlzcGxheV9wcmlv cml0eShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiAKIGludCBhbWRncHVfY3NfcGFyc2Vy X2luaXQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsIHZvaWQgKmRhdGEpOwotaW50IGFtZGdw dV9jc19nZXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyIGlwX3R5cGUsCi0J CSAgICAgICB1MzIgaXBfaW5zdGFuY2UsIHUzMiByaW5nLAoraW50IGFtZGdwdV9jc19nZXRfcmlu ZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJICAgICAgIHN0cnVjdCBhbWRncHVfcXVl dWVfbWdyICptZ3IsCisJCSAgICAgICB1MzIgaXBfdHlwZSwgdTMyIGlwX2luc3RhbmNlLCB1MzIg dXNlcl9yaW5nLAogCQkgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpOwogdm9p ZCBhbWRncHVfY3NfcmVwb3J0X21vdmVkX2J5dGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1NjQgbnVtX2J5dGVzKTsKIHZvaWQgYW1kZ3B1X3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o c3RydWN0IGFtZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKTsKIGJvb2wgYW1kZ3B1X3R0bV9ib19p c19hbWRncHVfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7CiBpbnQgYW1kZ3B1X3R0 bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFn ZXMpOwogaW50IGFtZGdwdV90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtLCB1 aW50NjRfdCBhZGRyLAogCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpOwogYm9vbCBhbWRncHVfdHRt X3R0X2hhc191c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSk7CiBzdHJ1Y3QgbW1fc3RydWN0ICph bWRncHVfdHRtX3R0X2dldF91c2VybW0oc3RydWN0IHR0bV90dCAqdHRtKTsKIGJvb2wgYW1kZ3B1 X3R0bV90dF9hZmZlY3RfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVuc2lnbmVkIGxvbmcg c3RhcnQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCmluZGV4IDU3MzAxZjUu LjYwNWQ0MGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9j cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCkBAIC0yMiw3 NCArMjIsNDIgQEAKICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKiBBdXRob3Jz OgogICogICAgSmVyb21lIEdsaXNzZSA8Z2xpc3NlQGZyZWVkZXNrdG9wLm9yZz4KICAqLwogI2lu Y2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUg PGRybS9hbWRncHVfZHJtLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1 X3RyYWNlLmgiCisjaW5jbHVkZSAiYW1kZ3B1X3F1ZXVlX21nci5oIgogCi1pbnQgYW1kZ3B1X2Nz X2dldF9yaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgaXBfdHlwZSwKLQkJICAg ICAgIHUzMiBpcF9pbnN0YW5jZSwgdTMyIHJpbmcsCitpbnQgYW1kZ3B1X2NzX2dldF9yaW5nKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkgICAgICAgc3RydWN0IGFtZGdwdV9xdWV1ZV9t Z3IgKm1nciwKKwkJICAgICAgIHUzMiBpcF90eXBlLCB1MzIgaXBfaW5zdGFuY2UsIHUzMiB1c2Vy X3JpbmcsCiAJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipvdXRfcmluZykKIHsKKwlpbnQg cjsKKwogCS8qIFJpZ2h0IG5vdyBhbGwgSVBzIGhhdmUgb25seSBvbmUgaW5zdGFuY2UgLSBtdWx0 aXBsZSByaW5ncy4gKi8KIAlpZiAoaXBfaW5zdGFuY2UgIT0gMCkgewogCQlEUk1fRVJST1IoImlu dmFsaWQgaXAgaW5zdGFuY2U6ICVkXG4iLCBpcF9pbnN0YW5jZSk7CiAJCXJldHVybiAtRUlOVkFM OwogCX0KIAotCXN3aXRjaCAoaXBfdHlwZSkgewotCWRlZmF1bHQ6Ci0JCURSTV9FUlJPUigidW5r bm93biBpcCB0eXBlOiAlZFxuIiwgaXBfdHlwZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCWNhc2Ug QU1ER1BVX0hXX0lQX0dGWDoKLQkJaWYgKHJpbmcgPCBhZGV2LT5nZngubnVtX2dmeF9yaW5ncykg ewotCQkJKm91dF9yaW5nID0gJmFkZXYtPmdmeC5nZnhfcmluZ1tyaW5nXTsKLQkJfSBlbHNlIHsK LQkJCURSTV9FUlJPUigib25seSAlZCBnZnggcmluZ3MgYXJlIHN1cHBvcnRlZCBub3dcbiIsCi0J CQkJICBhZGV2LT5nZngubnVtX2dmeF9yaW5ncyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQot CQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9DT01QVVRFOgotCQlpZiAocmluZyA8IGFkZXYt PmdmeC5udW1fY29tcHV0ZV9yaW5ncykgewotCQkJKm91dF9yaW5nID0gJmFkZXYtPmdmeC5jb21w dXRlX3JpbmdbcmluZ107Ci0JCX0gZWxzZSB7Ci0JCQlEUk1fRVJST1IoIm9ubHkgJWQgY29tcHV0 ZSByaW5ncyBhcmUgc3VwcG9ydGVkIG5vd1xuIiwKLQkJCQkgIGFkZXYtPmdmeC5udW1fY29tcHV0 ZV9yaW5ncyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQ VV9IV19JUF9ETUE6Ci0JCWlmIChyaW5nIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzKSB7Ci0J CQkqb3V0X3JpbmcgPSAmYWRldi0+c2RtYS5pbnN0YW5jZVtyaW5nXS5yaW5nOwotCQl9IGVsc2Ug ewotCQkJRFJNX0VSUk9SKCJvbmx5ICVkIFNETUEgcmluZ3MgYXJlIHN1cHBvcnRlZFxuIiwKLQkJ CQkgIGFkZXYtPnNkbWEubnVtX2luc3RhbmNlcyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQot CQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9VVkQ6Ci0JCSpvdXRfcmluZyA9ICZhZGV2LT51 dmQucmluZzsKLQkJYnJlYWs7Ci0JY2FzZSBBTURHUFVfSFdfSVBfVkNFOgotCQlpZiAocmluZyA8 IGFkZXYtPnZjZS5udW1fcmluZ3MpewotCQkJKm91dF9yaW5nID0gJmFkZXYtPnZjZS5yaW5nW3Jp bmddOwotCQl9IGVsc2UgewotCQkJRFJNX0VSUk9SKCJvbmx5ICVkIFZDRSByaW5ncyBhcmUgc3Vw cG9ydGVkXG4iLCBhZGV2LT52Y2UubnVtX3JpbmdzKTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9 Ci0JCWJyZWFrOworCXIgPSBhbWRncHVfcXVldWVfbWdyX21hcChhZGV2LCBtZ3IsIGlwX3R5cGUs IHVzZXJfcmluZywgb3V0X3JpbmcpOworCWlmIChyKSB7CisJCURSTV9FUlJPUigidW5hYmxlIHRv IG1hcCB1c2Vyc3BhY2UgaXA6JWQgcmluZzolZCB0byBrZXJuZWwgcmluZ1xuIiwKKwkJCQlpcF90 eXBlLCB1c2VyX3JpbmcpOworCQlyZXR1cm4gcjsKIAl9CisKIAlyZXR1cm4gMDsKIH0KIAogc3Rh dGljIGludCBhbWRncHVfY3NfdXNlcl9mZW5jZV9jaHVuayhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNl ciAqcCwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19mZW5jZSAqZGF0YSwK IAkJCQkgICAgICB1aW50MzJfdCAqb2Zmc2V0KQogewogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAq Z29iajsKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAKQEAgLTg2OCwyMSArODM2LDIxIEBAIHN0YXRp YyBpbnQgYW1kZ3B1X2NzX2liX2ZpbGwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCXN0 cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2liICpjaHVua19pYjsKIAkJc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nOwogCiAJCWNodW5rID0gJnBhcnNlci0+Y2h1bmtzW2ldOwogCQlpYiA9ICZwYXJz ZXItPmpvYi0+aWJzW2pdOwogCQljaHVua19pYiA9IChzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVu a19pYiAqKWNodW5rLT5rZGF0YTsKIAogCQlpZiAoY2h1bmstPmNodW5rX2lkICE9IEFNREdQVV9D SFVOS19JRF9JQikKIAkJCWNvbnRpbnVlOwogCi0JCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRl diwgY2h1bmtfaWItPmlwX3R5cGUsCisJCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwgJmZw cml2LT5xdWV1ZV9tZ3IsIGNodW5rX2liLT5pcF90eXBlLAogCQkJCSAgICAgICBjaHVua19pYi0+ aXBfaW5zdGFuY2UsIGNodW5rX2liLT5yaW5nLAogCQkJCSAgICAgICAmcmluZyk7CiAJCWlmIChy KQogCQkJcmV0dXJuIHI7CiAKIAkJaWYgKGliLT5mbGFncyAmIEFNREdQVV9JQl9GTEFHX1BSRUFN QkxFKSB7CiAJCQlwYXJzZXItPmpvYi0+cHJlYW1ibGVfc3RhdHVzIHw9IEFNREdQVV9QUkVBTUJM RV9JQl9QUkVTRU5UOwogCQkJaWYgKCFwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkKSB7 CiAJCQkJcGFyc2VyLT5qb2ItPnByZWFtYmxlX3N0YXR1cyB8PSBBTURHUFVfUFJFQU1CTEVfSUJf UFJFU0VOVF9GSVJTVDsKIAkJCQlwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkID0gdHJ1 ZTsKQEAgLTk3MiwyMSArOTQwLDIyIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2RlcGVuZGVuY2ll cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCQlkZXBzID0gKHN0cnVjdCBkcm1fYW1k Z3B1X2NzX2NodW5rX2RlcCAqKWNodW5rLT5rZGF0YTsKIAkJbnVtX2RlcHMgPSBjaHVuay0+bGVu Z3RoX2R3ICogNCAvCiAJCQlzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZGVwKTsK IAogCQlmb3IgKGogPSAwOyBqIDwgbnVtX2RlcHM7ICsraikgewogCQkJc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nOwogCQkJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAkJCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOwogCi0JCQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGRlcHNbal0uaXBf dHlwZSwKKwkJCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwgJmZwcml2LT5xdWV1ZV9tZ3Is CisJCQkJCSAgICAgICBkZXBzW2pdLmlwX3R5cGUsCiAJCQkJCSAgICAgICBkZXBzW2pdLmlwX2lu c3RhbmNlLAogCQkJCQkgICAgICAgZGVwc1tqXS5yaW5nLCAmcmluZyk7CiAJCQlpZiAocikKIAkJ CQlyZXR1cm4gcjsKIAogCQkJY3R4ID0gYW1kZ3B1X2N0eF9nZXQoZnByaXYsIGRlcHNbal0uY3R4 X2lkKTsKIAkJCWlmIChjdHggPT0gTlVMTCkKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQkJZmVu Y2UgPSBhbWRncHVfY3R4X2dldF9mZW5jZShjdHgsIHJpbmcsCkBAIC0xMDk5LDI5ICsxMDY4LDMx IEBAIGludCBhbWRncHVfY3NfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgc3RydWN0IGRybV9maWxlICpmaWxwKQogICoKICAqIEBkZXY6IGRybSBkZXZpY2UKICAqIEBk YXRhOiBkYXRhIGZyb20gdXNlcnNwYWNlCiAgKiBAZmlscDogZmlsZSBwcml2YXRlCiAgKgogICog V2FpdCBmb3IgdGhlIGNvbW1hbmQgc3VibWlzc2lvbiBpZGVudGlmaWVkIGJ5IGhhbmRsZSB0byBm aW5pc2guCiAgKi8KIGludCBhbWRncHVfY3Nfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkKIHsKKwlzdHJ1Y3Qg YW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2OwogCXVuaW9uIGRybV9hbWRn cHVfd2FpdF9jcyAqd2FpdCA9IGRhdGE7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGFtZGdwdV9nZW1fdGlt ZW91dCh3YWl0LT5pbi50aW1lb3V0KTsKIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBOVUxM OwogCXN0cnVjdCBhbWRncHVfY3R4ICpjdHg7CiAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJ bG9uZyByOwogCi0JciA9IGFtZGdwdV9jc19nZXRfcmluZyhhZGV2LCB3YWl0LT5pbi5pcF90eXBl LCB3YWl0LT5pbi5pcF9pbnN0YW5jZSwKKwlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsICZm cHJpdi0+cXVldWVfbWdyLAorCQkJICAgICAgIHdhaXQtPmluLmlwX3R5cGUsIHdhaXQtPmluLmlw X2luc3RhbmNlLAogCQkJICAgICAgIHdhaXQtPmluLnJpbmcsICZyaW5nKTsKIAlpZiAocikKIAkJ cmV0dXJuIHI7CiAKIAljdHggPSBhbWRncHVfY3R4X2dldChmaWxwLT5kcml2ZXJfcHJpdiwgd2Fp dC0+aW4uY3R4X2lkKTsKIAlpZiAoY3R4ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJ ZmVuY2UgPSBhbWRncHVfY3R4X2dldF9mZW5jZShjdHgsIHJpbmcsIHdhaXQtPmluLmhhbmRsZSk7 CiAJaWYgKElTX0VSUihmZW5jZSkpCkBAIC0xMTQ5LDI0ICsxMTIwLDI1IEBAIGludCBhbWRncHVf Y3Nfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogICogQGZp bHA6IGZpbGUgcHJpdmF0ZQogICogQHVzZXI6IGRybV9hbWRncHVfZmVuY2UgY29waWVkIGZyb20g dXNlciBzcGFjZQogICovCiBzdGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqYW1kZ3B1X2NzX2dldF9m ZW5jZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbHAsCiAJCQkJCSAgICAgc3RydWN0IGRybV9hbWRncHVfZmVuY2UgKnVzZXIpCiB7CiAJ c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwogCXN0cnVjdCBhbWRncHVfY3R4ICpjdHg7CiAJc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBmaWxw LT5kcml2ZXJfcHJpdjsKIAlpbnQgcjsKIAotCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwg dXNlci0+aXBfdHlwZSwgdXNlci0+aXBfaW5zdGFuY2UsCi0JCQkgICAgICAgdXNlci0+cmluZywg JnJpbmcpOworCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwgJmZwcml2LT5xdWV1ZV9tZ3Is IHVzZXItPmlwX3R5cGUsCisJCQkgICAgICAgdXNlci0+aXBfaW5zdGFuY2UsIHVzZXItPnJpbmcs ICZyaW5nKTsKIAlpZiAocikKIAkJcmV0dXJuIEVSUl9QVFIocik7CiAKIAljdHggPSBhbWRncHVf Y3R4X2dldChmaWxwLT5kcml2ZXJfcHJpdiwgdXNlci0+Y3R4X2lkKTsKIAlpZiAoY3R4ID09IE5V TEwpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCiAJZmVuY2UgPSBhbWRncHVfY3R4X2dl dF9mZW5jZShjdHgsIHJpbmcsIHVzZXItPnNlcV9ubyk7CiAJYW1kZ3B1X2N0eF9wdXQoY3R4KTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCmluZGV4IDYxZDk0YzcuLjA5 MzJhZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKQEAgLTIzLDIw ICsyMywyMSBAQAogICoKICAqIEF1dGhvcnM6IERhdmUgQWlybGllCiAgKiAgICAgICAgICBBbGV4 IERldWNoZXIKICAqICAgICAgICAgIEplcm9tZSBHbGlzc2UKICAqLwogI2luY2x1ZGUgPGRybS9k cm1QLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4K ICNpbmNsdWRlICJhbWRncHVfdXZkLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3ZjZS5oIgorI2luY2x1 ZGUgImFtZGdwdV9xdWV1ZV9tZ3IuaCIKIAogI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hlcm9v Lmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu aD4KICNpbmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCiAKICNpZiBkZWZpbmVkKENPTkZJR19WR0Ff U1dJVENIRVJPTykKIGJvb2wgYW1kZ3B1X2hhc19hdHB4KHZvaWQpOwogI2Vsc2UKIHN0YXRpYyBp bmxpbmUgYm9vbCBhbWRncHVfaGFzX2F0cHgodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY1 OCwyMCArNjU5LDIxIEBAIGludCBhbWRncHVfZHJpdmVyX29wZW5fa21zKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogCWlmIChhbWRncHVfc3Jpb3Zf dmYoYWRldikpIHsKIAkJciA9IGFtZGdwdV9tYXBfc3RhdGljX2NzYShhZGV2LCAmZnByaXYtPnZt KTsKIAkJaWYgKHIpCiAJCQlnb3RvIG91dF9zdXNwZW5kOwogCX0KIAogCW11dGV4X2luaXQoJmZw cml2LT5ib19saXN0X2xvY2spOwogCWlkcl9pbml0KCZmcHJpdi0+Ym9fbGlzdF9oYW5kbGVzKTsK IAogCWFtZGdwdV9jdHhfbWdyX2luaXQoJmZwcml2LT5jdHhfbWdyKTsKKwlhbWRncHVfcXVldWVf bWdyX2luaXQoYWRldiwgJmZwcml2LT5xdWV1ZV9tZ3IpOwogCiAJZmlsZV9wcml2LT5kcml2ZXJf cHJpdiA9IGZwcml2OwogCiBvdXRfc3VzcGVuZDoKIAlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5 KGRldi0+ZGV2KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYtPmRldik7CiAKIAly ZXR1cm4gcjsKIH0KIApAQCAtNjg3LDIwICs2ODksMjEgQEAgdm9pZCBhbWRncHVfZHJpdmVyX3Bv c3RjbG9zZV9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpCiB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9w cml2YXRlOwogCXN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gZmlsZV9wcml2LT5kcml2ZXJf cHJpdjsKIAlzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3QgKmxpc3Q7CiAJaW50IGhhbmRsZTsKIAogCWlm ICghZnByaXYpCiAJCXJldHVybjsKIAorCWFtZGdwdV9xdWV1ZV9tZ3JfZmluaShhZGV2LCAmZnBy aXYtPnF1ZXVlX21ncik7CiAJYW1kZ3B1X2N0eF9tZ3JfZmluaSgmZnByaXYtPmN0eF9tZ3IpOwog CiAJYW1kZ3B1X3V2ZF9mcmVlX2hhbmRsZXMoYWRldiwgZmlsZV9wcml2KTsKIAlhbWRncHVfdmNl X2ZyZWVfaGFuZGxlcyhhZGV2LCBmaWxlX3ByaXYpOwogCiAJaWYgKGFtZGdwdV9zcmlvdl92Zihh ZGV2KSkgewogCQkvKiBUT0RPOiBob3cgdG8gaGFuZGxlIHJlc2VydmUgZmFpbHVyZSAqLwogCQlC VUdfT04oYW1kZ3B1X2JvX3Jlc2VydmUoYWRldi0+dmlydC5jc2Ffb2JqLCBmYWxzZSkpOwogCQlh bWRncHVfdm1fYm9fcm12KGFkZXYsIGZwcml2LT52bS5jc2FfYm9fdmEpOwogCQlmcHJpdi0+dm0u Y3NhX2JvX3ZhID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9xdWV1ZV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9x dWV1ZV9tZ3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTE4YmRiCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVl X21nci5jCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgVmFsdmUgQ29y cG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBD T1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBbmRyZXMgUm9kcmlndWV6 CisgKi8KKworI2luY2x1ZGUgImFtZGdwdV9yaW5nLmgiCisjaW5jbHVkZSAiYW1kZ3B1X3F1ZXVl X21nci5oIgorCitzdGF0aWMgaW50IGFtZGdwdV9xdWV1ZV9tYXBwZXJfaW5pdChzdHJ1Y3QgYW1k Z3B1X3F1ZXVlX21hcHBlciAqbWFwcGVyLAorCQkJCSAgICBpbnQgaHdfaXAsCisJCQkJICAgIHN0 cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyX2Z1bmNzICpmdW5jcykKK3sKKwlpZiAoIW1hcHBlciB8 fCAhZnVuY3MpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGh3X2lwID4gQU1ER1BVX01BWF9J UF9OVU0pCisJCXJldHVybiAtRUlOVkFMOworCisJbWFwcGVyLT5od19pcCA9IGh3X2lwOworCW1h cHBlci0+ZnVuY3MgPSBmdW5jczsKKwltdXRleF9pbml0KCZtYXBwZXItPmxvY2spOworCisJbWVt c2V0KG1hcHBlci0+cXVldWVfbWFwLCAwLCBzaXplb2YobWFwcGVyLT5xdWV1ZV9tYXApKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGFtZGdwdV9yaW5nICpnZXRfY2FjaGVkX21h cChzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVyLAorCQkJCQkgIGludCByaW5nKQor eworCXJldHVybiBtYXBwZXItPnF1ZXVlX21hcFtyaW5nXTsKK30KKworc3RhdGljIGludCB1cGRh dGVfY2FjaGVkX21hcChzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVyLAorCQkJICAg ICBpbnQgcmluZywgc3RydWN0IGFtZGdwdV9yaW5nICpwcmluZykKK3sKKwlpZiAoV0FSTl9PTiht YXBwZXItPnF1ZXVlX21hcFtyaW5nXSkpIHsKKwkJRFJNX0VSUk9SKCJVbi1leHBlY3RlZCByaW5n IHJlLW1hcFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW1hcHBlci0+cXVldWVfbWFw W3JpbmddID0gcHJpbmc7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfaWRl bnRpdHlfbWFwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgIHN0cnVjdCBh bWRncHVfcXVldWVfbWFwcGVyICptYXBwZXIsCisJCQkgICAgICAgaW50IHJpbmcsCisJCQkgICAg ICAgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpCit7CisJc3dpdGNoIChtYXBwZXItPmh3 X2lwKSB7CisJY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgorCQkqb3V0X3JpbmcgPSAmYWRldi0+Z2Z4 LmdmeF9yaW5nW3JpbmddOworCQlicmVhazsKKwljYXNlIEFNREdQVV9IV19JUF9DT01QVVRFOgor CQkqb3V0X3JpbmcgPSAmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tyaW5nXTsKKwkJYnJlYWs7CisJ Y2FzZSBBTURHUFVfSFdfSVBfRE1BOgorCQkqb3V0X3JpbmcgPSAmYWRldi0+c2RtYS5pbnN0YW5j ZVtyaW5nXS5yaW5nOworCQlicmVhazsKKwljYXNlIEFNREdQVV9IV19JUF9VVkQ6CisJCSpvdXRf cmluZyA9ICZhZGV2LT51dmQucmluZzsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfVkNF OgorCQkqb3V0X3JpbmcgPSAmYWRldi0+dmNlLnJpbmdbcmluZ107CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCSpvdXRfcmluZyA9IE5VTEw7CisJCURSTV9FUlJPUigidW5rbm93biBIVyBJUCB0eXBl OiAlZFxuIiwgbWFwcGVyLT5od19pcCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVy biB1cGRhdGVfY2FjaGVkX21hcChtYXBwZXIsIHJpbmcsICpvdXRfcmluZyk7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlcl9mdW5jcyBpZGVudGl0eV9tYXBwZXIgPSB7CisJ Lm1hcCA9IGFtZGdwdV9pZGVudGl0eV9tYXAKK307CisKK2ludCBhbWRncHVfcXVldWVfbWdyX2lu aXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgIHN0cnVjdCBhbWRncHVfcXVldWVf bWdyICptZ3IpCit7CisJaW50IGk7CisKKwlpZiAoIWFkZXYgfHwgIW1ncikKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwltZW1zZXQobWdyLCAwLCBzaXplb2YoKm1ncikpOworCisJZm9yIChpID0gMDsg aSA8IEFNREdQVV9NQVhfSVBfTlVNOyArK2kpCisJCWFtZGdwdV9xdWV1ZV9tYXBwZXJfaW5pdCgm bWdyLT5tYXBwZXJbaV0sIGksICZpZGVudGl0eV9tYXBwZXIpOworCisJcmV0dXJuIDA7Cit9CisK K2ludCBhbWRncHVfcXVldWVfbWdyX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJ CQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpCit7CisJcmV0dXJuIDA7Cit9CisKK2lu dCBhbWRncHVfcXVldWVfbWdyX21hcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSBz dHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyLAorCQkJIGludCBod19pcCwgaW50IHJpbmcsCisJ CQkgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpCit7CisJaW50IHI7CisJc3RydWN0IGFt ZGdwdV9xdWV1ZV9tYXBwZXIgKm1hcHBlciA9ICZtZ3ItPm1hcHBlcltod19pcF07CisKKwlpZiAo IWFkZXYgfHwgIW1nciB8fCAhb3V0X3JpbmcpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGh3 X2lwID49IEFNREdQVV9NQVhfSVBfTlVNKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyaW5n ID49IEFNREdQVV9NQVhfUklOR1MpCisJCXJldHVybiAtRUlOVkFMOworCisJciA9IGFtZGdwdV9y aW5nX2lzX3ZhbGlkX2luZGV4KGFkZXYsIGh3X2lwLCByaW5nKTsKKwlpZiAocikKKwkJcmV0dXJu IHI7CisKKwltdXRleF9sb2NrKCZtYXBwZXItPmxvY2spOworCisJKm91dF9yaW5nID0gZ2V0X2Nh Y2hlZF9tYXAobWFwcGVyLCByaW5nKTsKKwlpZiAoKm91dF9yaW5nKSB7CisJCS8qIGNhY2hlIGhp dCAqLworCQlyID0gMDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCXIgPSBtYXBwZXItPmZ1 bmNzLT5tYXAoYWRldiwgbWFwcGVyLCByaW5nLCBvdXRfcmluZyk7CisKK291dF91bmxvY2s6CisJ bXV0ZXhfdW5sb2NrKCZtYXBwZXItPmxvY2spOworCXJldHVybiByOworfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5oIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1ZXVlX21nci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmE4NWJiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq IENvcHlyaWdodCAyMDE3IFZhbHZlIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICog QXV0aG9yczoKKyAqIAlBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5jb20+CisgKi8K KworI2lmbmRlZiBfX0FNREdQVV9RVUVVRV9NR1JfSF9fCisjZGVmaW5lIF9fQU1ER1BVX1FVRVVF X01HUl9IX18KKworI2luY2x1ZGUgImFtZGdwdS5oIgorCisvKioKKyAqIGFtZGdwdV9xdWV1ZV9t Z3JfaW5pdCAtIGluaXQgYW4gYW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3QKKyAqCisgKiBAYWRldjog YW1kZ3B1X2RldmljZSBwb2ludGVyCisgKiBAbWdyOiBhbWRncHVfcXVldWVfbWdyIHN0cnVjdHVy ZSBob2xkaW5nIHF1ZXVlIGluZm9ybWF0aW9uCisgKgorICogSW5pdGlhbGl6ZSB0aGUgdGhlIHNl bGVjdGVkIEBtZ3IgKGFsbCBhc2ljcykuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVy cm9yIG9uIGZhaWx1cmUuCisgKi8KK2ludCBhbWRncHVfcXVldWVfbWdyX2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpOwor CisvKioKKyAqIGFtZGdwdV9xdWV1ZV9tZ3JfZmluaSAtIGRlLWluaXRpYWxpemUgYW4gYW1kZ3B1 X3F1ZXVlX21nciBzdHJ1Y3QKKyAqCisgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCisg KiBAbWdyOiBhbWRncHVfcXVldWVfbWdyIHN0cnVjdHVyZSBob2xkaW5nIHF1ZXVlIGluZm9ybWF0 aW9uCisgKgorICogRGUtaW5pdGlhbGl6ZSB0aGUgdGhlIHNlbGVjdGVkIEBtZ3IgKGFsbCBhc2lj cykuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZhaWx1cmUuCisgKi8K K2ludCBhbWRncHVfcXVldWVfbWdyX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJ CQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpOworCisvKioKKyAqIGFtZGdwdV9xdWV1 ZV9tZ3JfbWFwIC0gTWFwIGEgdXNlcnNwYWNlIHJpbmcgaWQgdG8gYW4gYW1kZ3B1X3JpbmcKKyAq CisgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKiBAbWdyOiBhbWRncHVfcXVldWVf bWdyIHN0cnVjdHVyZSBob2xkaW5nIHF1ZXVlIGluZm9ybWF0aW9uCisgKiBAaHdfaXA6IEhXIElQ IGVudW0KKyAqIEByaW5nOiB1c2VyIHJpbmcgaWQKKyAqIEBvdXJfcmluZzogcG9pbnRlciB0byBt YXBwZWQgYW1kZ3B1X3JpbmcKKyAqCisgKiBNYXAgYSB1c2Vyc3BhY2UgcmluZyBpZCB0byBhbiBh cHByb3ByaWF0ZSBrZXJuZWwgcmluZy4gRGlmZmVyZW50CisgKiBwb2xpY2llcyBhcmUgY29uZmln dXJhYmxlIGF0IGEgSFcgSVAgbGV2ZWwuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVy cm9yIG9uIGZhaWx1cmUuCisgKi8KK2ludCBhbWRncHVfcXVldWVfbWdyX21hcChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKKwkJCSBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyLAorCQkJ IGludCBod19pcCwgaW50IHJpbmcsCisJCQkgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3Jpbmcp OworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwppbmRleCA0 ZmY3NjJjLi5hMDRmMDdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcmluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5n LmMKQEAgLTQ1LDIwICs0NSw2NSBAQAogICogcG9pbnRlcnMgYXJlIGVxdWFsLCB0aGUgcmluZyBp cyBpZGxlLiAgV2hlbiB0aGUgaG9zdAogICogd3JpdGVzIGNvbW1hbmRzIHRvIHRoZSByaW5nIGJ1 ZmZlciwgaXQgaW5jcmVtZW50cyB0aGUKICAqIHdwdHIuICBUaGUgR1BVIHRoZW4gc3RhcnRzIGZl dGNoaW5nIGNvbW1hbmRzIGFuZCBleGVjdXRlcwogICogdGhlbSB1bnRpbCB0aGUgcG9pbnRlcnMg YXJlIGVxdWFsIGFnYWluLgogICovCiBzdGF0aWMgaW50IGFtZGdwdV9kZWJ1Z2ZzX3JpbmdfaW5p dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nKTsKIHN0YXRpYyB2b2lkIGFtZGdwdV9kZWJ1Z2ZzX3JpbmdfZmluaShzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcpOwogCiAvKioKKyAqIGFtZGdwdV9yaW5nX2lzX3ZhbGlkX2luZGV4IC0g Y2hlY2sgaWYgYSByaW5nIGlkZXggaXMgdmFsaWQgZm9yIGEgSFcgSVAKKyAqCisgKiBAYWRldjog YW1kZ3B1X2RldmljZSBwb2ludGVyCisgKiBAaXBfdHlwZTogVGhlIEhXIElQIHRvIGNoZWNrIGFn YWluc3QKKyAqIEByaW5nOiB0aGUgcmluZyBpbmRleAorICoKKyAqIENoZWNrIGlmIEByaW5nIGlz IGEgdmFsaWQgaW5kZXggZm9yIEBpcF90eXBlIChhbGwgYXNpY3MpLgorICogUmV0dXJucyAwIG9u IHN1Y2Nlc3MsIGVycm9yIG9uIGZhaWx1cmUuCisgKi8KK2ludCBhbWRncHVfcmluZ19pc192YWxp ZF9pbmRleChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgICAgICBpbnQgaXBfdHlw ZSwgaW50IHJpbmcpCit7CisJaW50IGlwX251bV9yaW5nczsKKworCXN3aXRjaCAoaXBfdHlwZSkg eworCWNhc2UgQU1ER1BVX0hXX0lQX0dGWDoKKwkJaXBfbnVtX3JpbmdzID0gYWRldi0+Z2Z4Lm51 bV9nZnhfcmluZ3M7CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX0hXX0lQX0NPTVBVVEU6CisJCWlw X251bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5nczsKKwkJYnJlYWs7CisJY2Fz ZSBBTURHUFVfSFdfSVBfRE1BOgorCQlpcF9udW1fcmluZ3MgPSBhZGV2LT5zZG1hLm51bV9pbnN0 YW5jZXM7CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX0hXX0lQX1VWRDoKKwkJaXBfbnVtX3Jpbmdz ID0gMTsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVfSFdfSVBfVkNFOgorCQlpcF9udW1fcmluZ3Mg PSBhZGV2LT52Y2UubnVtX3JpbmdzOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1Io InVua25vd24gaXAgdHlwZTogJWRcbiIsIGlwX3R5cGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlpZiAocmluZyA+PSBpcF9udW1fcmluZ3MpIHsKKwkJRFJNX0VSUk9SKCJSaW5nIGluZGV4 OiVkIGV4Y2VlZHMgbWF4aW11bTolZCBmb3IgaXA6JWRcbiIsCisJCQkJcmluZywgaXBfbnVtX3Jp bmdzLCBpcF90eXBlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisK Ky8qKgogICogYW1kZ3B1X3JpbmdfYWxsb2MgLSBhbGxvY2F0ZSBzcGFjZSBvbiB0aGUgcmluZyBi dWZmZXIKICAqCiAgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCiAgKiBAcmluZzogYW1k Z3B1X3Jpbmcgc3RydWN0dXJlIGhvbGRpbmcgcmluZyBpbmZvcm1hdGlvbgogICogQG5kdzogbnVt YmVyIG9mIGR3b3JkcyB0byBhbGxvY2F0ZSBpbiB0aGUgcmluZyBidWZmZXIKICAqCiAgKiBBbGxv Y2F0ZSBAbmR3IGR3b3JkcyBpbiB0aGUgcmluZyBidWZmZXIgKGFsbCBhc2ljcykuCiAgKiBSZXR1 cm5zIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4KICAqLwogaW50IGFtZGdwdV9yaW5n X2FsbG9jKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbmR3KQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKaW5kZXggM2ZmMDIxZi4uNzMxYzQyMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCkBAIC0xNjksMjAgKzE2OSwy MiBAQCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgewogCXVpbnQ2NF90CQljdXJyZW50X2N0eDsKIAljaGFy CQkJbmFtZVsxNl07CiAJdW5zaWduZWQJCWNvbmRfZXhlX29mZnM7CiAJdTY0CQkJY29uZF9leGVf Z3B1X2FkZHI7CiAJdm9sYXRpbGUgdTMyCQkqY29uZF9leGVfY3B1X2FkZHI7CiAjaWYgZGVmaW5l ZChDT05GSUdfREVCVUdfRlMpCiAJc3RydWN0IGRlbnRyeSAqZW50OwogI2VuZGlmCiB9OwogCitp bnQgYW1kZ3B1X3JpbmdfaXNfdmFsaWRfaW5kZXgoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CisJCQkgICAgICAgaW50IGh3X2lwLCBpbnQgcmluZyk7CiBpbnQgYW1kZ3B1X3JpbmdfYWxsb2Mo c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25lZCBuZHcpOwogdm9pZCBhbWRncHVfcmlu Z19pbnNlcnRfbm9wKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgY291bnQpOwog dm9pZCBhbWRncHVfcmluZ19nZW5lcmljX3BhZF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs IHN0cnVjdCBhbWRncHVfaWIgKmliKTsKIHZvaWQgYW1kZ3B1X3JpbmdfY29tbWl0KHN0cnVjdCBh bWRncHVfcmluZyAqcmluZyk7CiB2b2lkIGFtZGdwdV9yaW5nX3VuZG8oc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nKTsKIGludCBhbWRncHVfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCiAJCSAgICAgaW50IGh3X2lwLCB1bnNpZ25l ZCByaW5nX3NpemUsCiAJCSAgICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICppcnFfc3JjLCB1bnNp Z25lZCBpcnFfdHlwZSk7CiB2b2lkIGFtZGdwdV9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nKTsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=