From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 16/25] drm/amdgpu: untie user ring ids from kernel ring ids v4 Date: Tue, 4 Apr 2017 18:05:42 -0400 Message-ID: <20170404220551.8669-17-andresx7@gmail.com> References: <20170404220551.8669-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-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: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org QWRkIGFtZGdwdV9xdWV1ZV9tZ3IsIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGRpc2pvaW50aW5n IHVzZXJtb2RlJ3MKcmluZyBpZHMgZnJvbSB0aGUga2VybmVsJ3MgcmluZyBpZHMuCgpUaGUgcXVl dWUgbWFuYWdlciBtYWludGFpbnMgYSBwZXItZmlsZSBkZXNjcmlwdG9yIG1hcCBvZiB1c2VyIHJp bmcgaWRzCnRvIGFtZGdwdV9yaW5nIHBvaW50ZXJzLiBPbmNlIGEgbWFwIGlzIGNyZWF0ZWQgaXQg aXMgcGVybWFuZW50ICh0aGlzIGlzCnJlcXVpcmVkIHRvIG1haW50YWluIEZJRk8gZXhlY3V0aW9u IGd1YXJhbnRlZXMgZm9yIGEgY29udGV4dCdzIHJpbmcpLgoKRGlmZmVyZW50IHF1ZXVlIG1hcCBw b2xpY2llcyBjYW4gYmUgY29uZmlndXJlZCBmb3IgZWFjaCBIVyBJUC4KQ3VycmVudGx5IGFsbCBI VyBJUHMgdXNlIHRoZSBpZGVudGl0eSBtYXBwZXIsIGkuZS4ga2VybmVsIHJpbmcgaWQgaXMKZXF1 YWwgdG8gdGhlIHVzZXIgcmluZyBpZC4KClRoZSBwdXJwb3NlIG9mIHRoaXMgbWVjaGFuaXNtIGlz IHRvIGRpc3RyaWJ1dGUgdGhlIGxvYWQgYWNyb3NzIG11bHRpcGxlCnF1ZXVlcyBtb3JlIGVmZmVj dGl2ZWx5IGZvciBIVyBJUHMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIHJpbmdzLgpVc2Vyc3BhY2Ug Y2xpZW50cyBhcmUgdW5hYmxlIHRvIGNoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyByZXNvdXJjZSBp cyBpbgp1c2UgYnkgYSBkaWZmZXJlbnQgY2xpZW50LiBUaGVyZWZvcmUsIGl0IGlzIHVwIHRvIHRo ZSBrZXJuZWwgZHJpdmVyIHRvCm1ha2UgdGhlIG9wdGltYWwgY2hvaWNlLgoKdjI6IHJlbW92ZSBh bWRncHVfcXVldWVfbWFwcGVyX2Z1bmNzCnYzOiBtYWRlIGFtZGdwdV9xdWV1ZV9tZ3IgcGVyIGNv bnRleHQgaW5zdGVhZCBvZiBwZXItZmQKdjQ6IGFkZCBjb250ZXh0X3B1dCBvbiBlcnJvciBwYXRo cwoKUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNv bT4KU2lnbmVkLW9mZi1ieTogQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzeDdAZ21haWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlICAgICAgICAgICB8ICAgMyAr LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAgICAgICAgIHwgIDI3ICsr LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgICAgICAgIHwgMTE3ICsr Ky0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYyAgICAg ICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmMg fCAyMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9yaW5nLmMgICAgICB8ICA0NSArKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3JpbmcuaCAgICAgIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMzM1IGlu c2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvTWFrZWZpbGUKaW5kZXggNjYwNzg2YS4uZGQ0OGViMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvTWFrZWZpbGUKQEAgLTE3LDIxICsxNywyMiBAQCBhbWRncHUteSA6PSBhbWRncHVfZHJ2Lm8K IGFtZGdwdS15ICs9IGFtZGdwdV9kZXZpY2UubyBhbWRncHVfa21zLm8gXAogCWFtZGdwdV9hdG9t Ymlvcy5vIGF0b21iaW9zX2NydGMubyBhbWRncHVfY29ubmVjdG9ycy5vIFwKIAlhdG9tLm8gYW1k Z3B1X2ZlbmNlLm8gYW1kZ3B1X3R0bS5vIGFtZGdwdV9vYmplY3QubyBhbWRncHVfZ2FydC5vIFwK IAlhbWRncHVfZW5jb2RlcnMubyBhbWRncHVfZGlzcGxheS5vIGFtZGdwdV9pMmMubyBcCiAJYW1k Z3B1X2ZiLm8gYW1kZ3B1X2dlbS5vIGFtZGdwdV9yaW5nLm8gXAogCWFtZGdwdV9jcy5vIGFtZGdw dV9iaW9zLm8gYW1kZ3B1X2JlbmNobWFyay5vIGFtZGdwdV90ZXN0Lm8gXAogCWFtZGdwdV9wbS5v IGF0b21iaW9zX2RwLm8gYW1kZ3B1X2FmbXQubyBhbWRncHVfdHJhY2VfcG9pbnRzLm8gXAogCWF0 b21iaW9zX2VuY29kZXJzLm8gYW1kZ3B1X3NhLm8gYXRvbWJpb3NfaTJjLm8gXAogCWFtZGdwdV9w cmltZS5vIGFtZGdwdV92bS5vIGFtZGdwdV9pYi5vIGFtZGdwdV9wbGwubyBcCiAJYW1kZ3B1X3Vj b2RlLm8gYW1kZ3B1X2JvX2xpc3QubyBhbWRncHVfY3R4Lm8gYW1kZ3B1X3N5bmMubyBcCi0JYW1k Z3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdwdV9hdG9t ZmlybXdhcmUubworCWFtZGdwdV9ndHRfbWdyLm8gYW1kZ3B1X3ZyYW1fbWdyLm8gYW1kZ3B1X3Zp cnQubyBhbWRncHVfYXRvbWZpcm13YXJlLm8gXAorCWFtZGdwdV9xdWV1ZV9tZ3IubwogCiAjIGFk ZCBhc2ljIHNwZWNpZmljIGJsb2NrCiBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0g Y2lrLm8gY2lrX2loLm8ga3Zfc21jLm8ga3ZfZHBtLm8gXAogCWNpX3NtYy5vIGNpX2RwbS5vIGRj ZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAubyBcCiAJ YW1kZ3B1X2FtZGtmZF9nZnhfdjcubwogCiBhbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9TSSkr PSBzaS5vIGdtY192Nl8wLm8gZ2Z4X3Y2XzAubyBzaV9paC5vIHNpX2RtYS5vIGRjZV92Nl8wLm8g c2lfZHBtLm8gc2lfc21jLm8KIAogYW1kZ3B1LXkgKz0gXAogCXZpLm8gbXhncHVfdmkubyBuYmlv X3Y2XzEubyBzb2MxNS5vIG14Z3B1X2FpLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgK aW5kZXggMDY3NGJhMC4uOWNhNjQ3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgK QEAgLTc4MCwzMiArNzgwLDU2IEBAIGludCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAogaW50IGFtZGdwdV9qb2JfYWxsb2Nfd2l0 aF9pYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgc2l6ZSwKIAkJCSAgICAg c3RydWN0IGFtZGdwdV9qb2IgKipqb2IpOwogCiB2b2lkIGFtZGdwdV9qb2JfZnJlZV9yZXNvdXJj ZXMoc3RydWN0IGFtZGdwdV9qb2IgKmpvYik7CiB2b2lkIGFtZGdwdV9qb2JfZnJlZShzdHJ1Y3Qg YW1kZ3B1X2pvYiAqam9iKTsKIGludCBhbWRncHVfam9iX3N1Ym1pdChzdHJ1Y3QgYW1kZ3B1X2pv YiAqam9iLCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCiAJCSAgICAgIHN0cnVjdCBhbWRfc2No ZWRfZW50aXR5ICplbnRpdHksIHZvaWQgKm93bmVyLAogCQkgICAgICBzdHJ1Y3QgZG1hX2ZlbmNl ICoqZik7CiAKIC8qCisgKiBRdWV1ZSBtYW5hZ2VyCisgKi8KK3N0cnVjdCBhbWRncHVfcXVldWVf bWFwcGVyIHsKKwlpbnQgCQlod19pcDsKKwlzdHJ1Y3QgbXV0ZXgJbG9jazsKKwkvKiBwcm90ZWN0 ZWQgYnkgbG9jayAqLworCXN0cnVjdCBhbWRncHVfcmluZyAqcXVldWVfbWFwW0FNREdQVV9NQVhf UklOR1NdOworfTsKKworc3RydWN0IGFtZGdwdV9xdWV1ZV9tZ3IgeworCXN0cnVjdCBhbWRncHVf cXVldWVfbWFwcGVyIG1hcHBlcltBTURHUFVfTUFYX0lQX05VTV07Cit9OworCitpbnQgYW1kZ3B1 X3F1ZXVlX21ncl9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICBzdHJ1Y3Qg YW1kZ3B1X3F1ZXVlX21nciAqbWdyKTsKK2ludCBhbWRncHVfcXVldWVfbWdyX2Zpbmkoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3Ip OworaW50IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAor CQkJIHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IsCisJCQkgaW50IGh3X2lwLCBpbnQgaW5z dGFuY2UsIGludCByaW5nLAorCQkJIHN0cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKTsKKwor LyoKICAqIGNvbnRleHQgcmVsYXRlZCBzdHJ1Y3R1cmVzCiAgKi8KIAogc3RydWN0IGFtZGdwdV9j dHhfcmluZyB7CiAJdWludDY0X3QJCXNlcXVlbmNlOwogCXN0cnVjdCBkbWFfZmVuY2UJKipmZW5j ZXM7CiAJc3RydWN0IGFtZF9zY2hlZF9lbnRpdHkJZW50aXR5OwogfTsKIAogc3RydWN0IGFtZGdw dV9jdHggewogCXN0cnVjdCBrcmVmCQlyZWZjb3VudDsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAg ICAqYWRldjsKKwlzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciBxdWV1ZV9tZ3I7CiAJdW5zaWduZWQJ CXJlc2V0X2NvdW50ZXI7CiAJc3BpbmxvY2tfdAkJcmluZ19sb2NrOwogCXN0cnVjdCBkbWFfZmVu Y2UJKipmZW5jZXM7CiAJc3RydWN0IGFtZGdwdV9jdHhfcmluZwlyaW5nc1tBTURHUFVfTUFYX1JJ TkdTXTsKIAlib29sIHByZWFtYmxlX3ByZXNlbnRlZDsKIH07CiAKIHN0cnVjdCBhbWRncHVfY3R4 X21nciB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7CiAJc3RydWN0IG11dGV4CQlsb2Nr OwpAQCAtMTg3MywyMyArMTg5NywyMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1X2lzX21l Y19xdWV1ZV9lbmFibGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogI2RlZmluZSBhbWRn cHVfcHNwX2NoZWNrX2Z3X2xvYWRpbmdfc3RhdHVzKGFkZXYsIGkpIChhZGV2KS0+ZmlybXdhcmUu ZnVuY3MtPmNoZWNrX2Z3X2xvYWRpbmdfc3RhdHVzKChhZGV2KSwgKGkpKQogCiAvKiBDb21tb24g ZnVuY3Rpb25zICovCiBpbnQgYW1kZ3B1X2dwdV9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldik7CiBib29sIGFtZGdwdV9uZWVkX2JhY2t1cChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dik7CiB2b2lkIGFtZGdwdV9wY2lfY29uZmlnX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KTsKIGJvb2wgYW1kZ3B1X25lZWRfcG9zdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7 CiB2b2lkIGFtZGdwdV91cGRhdGVfZGlzcGxheV9wcmlvcml0eShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldik7CiAKIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IGFtZGdwdV9jc19w YXJzZXIgKnAsIHZvaWQgKmRhdGEpOwotaW50IGFtZGdwdV9jc19nZXRfcmluZyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgdTMyIGlwX3R5cGUsCi0JCSAgICAgICB1MzIgaXBfaW5zdGFuY2Us IHUzMiByaW5nLAotCQkgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICoqb3V0X3JpbmcpOwogdm9p ZCBhbWRncHVfY3NfcmVwb3J0X21vdmVkX2J5dGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1NjQgbnVtX2J5dGVzKTsKIHZvaWQgYW1kZ3B1X3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o c3RydWN0IGFtZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKTsKIGJvb2wgYW1kZ3B1X3R0bV9ib19p c19hbWRncHVfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7CiBpbnQgYW1kZ3B1X3R0 bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFn ZXMpOwogaW50IGFtZGdwdV90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtLCB1 aW50NjRfdCBhZGRyLAogCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpOwogYm9vbCBhbWRncHVfdHRt X3R0X2hhc191c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSk7CiBzdHJ1Y3QgbW1fc3RydWN0ICph bWRncHVfdHRtX3R0X2dldF91c2VybW0oc3RydWN0IHR0bV90dCAqdHRtKTsKIGJvb2wgYW1kZ3B1 X3R0bV90dF9hZmZlY3RfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVuc2lnbmVkIGxvbmcg c3RhcnQsCiAJCQkJICB1bnNpZ25lZCBsb25nIGVuZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jCmluZGV4IDljN2Y3ZWQuLjFkOTFlZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9jcy5jCkBAIC0yMyw5MiArMjMsMjAgQEAKICAqCiAgKiBBdXRob3JzOgog ICogICAgSmVyb21lIEdsaXNzZSA8Z2xpc3NlQGZyZWVkZXNrdG9wLm9yZz4KICAqLwogI2luY2x1 ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRy bS9hbWRncHVfZHJtLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3Ry YWNlLmgiCiAKLWludCBhbWRncHVfY3NfZ2V0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHUzMiBpcF90eXBlLAotCQkgICAgICAgdTMyIGlwX2luc3RhbmNlLCB1MzIgcmluZywKLQkJ ICAgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQotewotCS8qIFJpZ2h0IG5vdyBh bGwgSVBzIGhhdmUgb25seSBvbmUgaW5zdGFuY2UgLSBtdWx0aXBsZSByaW5ncy4gKi8KLQlpZiAo aXBfaW5zdGFuY2UgIT0gMCkgewotCQlEUk1fRVJST1IoImludmFsaWQgaXAgaW5zdGFuY2U6ICVk XG4iLCBpcF9pbnN0YW5jZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAoaXBf dHlwZSkgewotCWRlZmF1bHQ6Ci0JCURSTV9FUlJPUigidW5rbm93biBpcCB0eXBlOiAlZFxuIiwg aXBfdHlwZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCWNhc2UgQU1ER1BVX0hXX0lQX0dGWDoKLQkJ aWYgKHJpbmcgPCBhZGV2LT5nZngubnVtX2dmeF9yaW5ncykgewotCQkJKm91dF9yaW5nID0gJmFk ZXYtPmdmeC5nZnhfcmluZ1tyaW5nXTsKLQkJfSBlbHNlIHsKLQkJCURSTV9FUlJPUigib25seSAl ZCBnZnggcmluZ3MgYXJlIHN1cHBvcnRlZCBub3dcbiIsCi0JCQkJICBhZGV2LT5nZngubnVtX2dm eF9yaW5ncyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQ VV9IV19JUF9DT01QVVRFOgotCQlpZiAocmluZyA8IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5n cykgewotCQkJKm91dF9yaW5nID0gJmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbcmluZ107Ci0JCX0g ZWxzZSB7Ci0JCQlEUk1fRVJST1IoIm9ubHkgJWQgY29tcHV0ZSByaW5ncyBhcmUgc3VwcG9ydGVk IG5vd1xuIiwKLQkJCQkgIGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5ncyk7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQVV9IV19JUF9ETUE6Ci0JCWlmIChy aW5nIDwgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzKSB7Ci0JCQkqb3V0X3JpbmcgPSAmYWRldi0+ c2RtYS5pbnN0YW5jZVtyaW5nXS5yaW5nOwotCQl9IGVsc2UgewotCQkJRFJNX0VSUk9SKCJvbmx5 ICVkIFNETUEgcmluZ3MgYXJlIHN1cHBvcnRlZFxuIiwKLQkJCQkgIGFkZXYtPnNkbWEubnVtX2lu c3RhbmNlcyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCQlicmVhazsKLQljYXNlIEFNREdQ VV9IV19JUF9VVkQ6Ci0JCSpvdXRfcmluZyA9ICZhZGV2LT51dmQucmluZzsKLQkJYnJlYWs7Ci0J Y2FzZSBBTURHUFVfSFdfSVBfVkNFOgotCQlpZiAocmluZyA8IGFkZXYtPnZjZS5udW1fcmluZ3Mp ewotCQkJKm91dF9yaW5nID0gJmFkZXYtPnZjZS5yaW5nW3JpbmddOwotCQl9IGVsc2UgewotCQkJ RFJNX0VSUk9SKCJvbmx5ICVkIFZDRSByaW5ncyBhcmUgc3VwcG9ydGVkXG4iLCBhZGV2LT52Y2Uu bnVtX3JpbmdzKTsKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JCWJyZWFrOwotCWNhc2UgQU1E R1BVX0hXX0lQX1VWRF9FTkM6Ci0JCWlmIChyaW5nIDwgYWRldi0+dXZkLm51bV9lbmNfcmluZ3Mp ewotCQkJKm91dF9yaW5nID0gJmFkZXYtPnV2ZC5yaW5nX2VuY1tyaW5nXTsKLQkJfSBlbHNlIHsK LQkJCURSTV9FUlJPUigib25seSAlZCBVVkQgRU5DIHJpbmdzIGFyZSBzdXBwb3J0ZWRcbiIsCi0J CQkJYWRldi0+dXZkLm51bV9lbmNfcmluZ3MpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQkJ YnJlYWs7Ci0JfQotCi0JaWYgKCEoKm91dF9yaW5nICYmICgqb3V0X3JpbmcpLT5hZGV2KSkgewot CQlEUk1fRVJST1IoIlJpbmcgJWQgaXMgbm90IGluaXRpYWxpemVkIG9uIElQICVkXG4iLAotCQkJ ICByaW5nLCBpcF90eXBlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcmV0dXJuIDA7Ci19 Ci0KIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3VzZXJfZmVuY2VfY2h1bmsoc3RydWN0IGFtZGdwdV9j c19wYXJzZXIgKnAsCiAJCQkJICAgICAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZmVuY2Ug KmRhdGEsCiAJCQkJICAgICAgdWludDMyX3QgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdvYmo7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCiAJZ29iaiA9IGRybV9nZW1fb2Jq ZWN0X2xvb2t1cChwLT5maWxwLCBkYXRhLT5oYW5kbGUpOwogCWlmIChnb2JqID09IE5VTEwpCiAJ CXJldHVybiAtRUlOVkFMOwpAQCAtOTA5LDIzICs4MzcsMjIgQEAgc3RhdGljIGludCBhbWRncHVf Y3NfaWJfZmlsbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJY2VfcHJlZW1wdCsr OwogCQkJCWVsc2UKIAkJCQkJZGVfcHJlZW1wdCsrOwogCQkJfQogCiAJCQkvKiBlYWNoIEdGWCBj b21tYW5kIHN1Ym1pdCBhbGxvd3MgMCBvciAxIElCIHByZWVtcHRpYmxlIGZvciBDRSAmIERFICov CiAJCQlpZiAoY2VfcHJlZW1wdCA+IDEgfHwgZGVfcHJlZW1wdCA+IDEpCiAJCQkJcmV0dXJuIC1F SU5WQUw7CiAJCX0KIAotCQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGNodW5rX2liLT5p cF90eXBlLAotCQkJCSAgICAgICBjaHVua19pYi0+aXBfaW5zdGFuY2UsIGNodW5rX2liLT5yaW5n LAotCQkJCSAgICAgICAmcmluZyk7CisJCXIgPSBhbWRncHVfcXVldWVfbWdyX21hcChhZGV2LCAm cGFyc2VyLT5jdHgtPnF1ZXVlX21nciwgY2h1bmtfaWItPmlwX3R5cGUsCisJCQkJCSBjaHVua19p Yi0+aXBfaW5zdGFuY2UsIGNodW5rX2liLT5yaW5nLCAmcmluZyk7CiAJCWlmIChyKQogCQkJcmV0 dXJuIHI7CiAKIAkJaWYgKGNodW5rX2liLT5mbGFncyAmIEFNREdQVV9JQl9GTEFHX1BSRUFNQkxF KSB7CiAJCQlwYXJzZXItPmpvYi0+cHJlYW1ibGVfc3RhdHVzIHw9IEFNREdQVV9QUkVBTUJMRV9J Ql9QUkVTRU5UOwogCQkJaWYgKCFwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkKSB7CiAJ CQkJcGFyc2VyLT5qb2ItPnByZWFtYmxlX3N0YXR1cyB8PSBBTURHUFVfUFJFQU1CTEVfSUJfUFJF U0VOVF9GSVJTVDsKIAkJCQlwYXJzZXItPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkID0gdHJ1ZTsK IAkJCX0KIAkJfQpAQCAtMTAxMywzMCArOTQwLDMzIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2Rl cGVuZGVuY2llcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCQlkZXBzID0gKHN0cnVj dCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RlcCAqKWNodW5rLT5rZGF0YTsKIAkJbnVtX2RlcHMgPSBj aHVuay0+bGVuZ3RoX2R3ICogNCAvCiAJCQlzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1 bmtfZGVwKTsKIAogCQlmb3IgKGogPSAwOyBqIDwgbnVtX2RlcHM7ICsraikgewogCQkJc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nOwogCQkJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAkJCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwogCi0JCQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGRl cHNbal0uaXBfdHlwZSwKLQkJCQkJICAgICAgIGRlcHNbal0uaXBfaW5zdGFuY2UsCi0JCQkJCSAg ICAgICBkZXBzW2pdLnJpbmcsICZyaW5nKTsKLQkJCWlmIChyKQotCQkJCXJldHVybiByOwotCiAJ CQljdHggPSBhbWRncHVfY3R4X2dldChmcHJpdiwgZGVwc1tqXS5jdHhfaWQpOwogCQkJaWYgKGN0 eCA9PSBOVUxMKQogCQkJCXJldHVybiAtRUlOVkFMOwogCisJCQlyID0gYW1kZ3B1X3F1ZXVlX21n cl9tYXAoYWRldiwgJmN0eC0+cXVldWVfbWdyLAorCQkJCQkJIGRlcHNbal0uaXBfdHlwZSwKKwkJ CQkJCSBkZXBzW2pdLmlwX2luc3RhbmNlLAorCQkJCQkJIGRlcHNbal0ucmluZywgJnJpbmcpOwor CQkJaWYgKHIpIHsKKwkJCQlhbWRncHVfY3R4X3B1dChjdHgpOworCQkJCXJldHVybiByOworCQkJ fQorCiAJCQlmZW5jZSA9IGFtZGdwdV9jdHhfZ2V0X2ZlbmNlKGN0eCwgcmluZywKIAkJCQkJCSAg ICAgZGVwc1tqXS5oYW5kbGUpOwogCQkJaWYgKElTX0VSUihmZW5jZSkpIHsKIAkJCQlyID0gUFRS X0VSUihmZW5jZSk7CiAJCQkJYW1kZ3B1X2N0eF9wdXQoY3R4KTsKIAkJCQlyZXR1cm4gcjsKIAog CQkJfSBlbHNlIGlmIChmZW5jZSkgewogCQkJCXIgPSBhbWRncHVfc3luY19mZW5jZShhZGV2LCAm cC0+am9iLT5zeW5jLAogCQkJCQkJICAgICAgZmVuY2UpOwpAQCAtMTE0OCwyOSArMTA3OCwzMiBA QCBpbnQgYW1kZ3B1X2NzX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCiB7CiAJdW5pb24gZHJtX2FtZGdwdV93 YWl0X2NzICp3YWl0ID0gZGF0YTsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gYW1kZ3B1X2dlbV90aW1lb3V0 KHdhaXQtPmluLnRpbWVvdXQpOwogCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9IE5VTEw7CiAJ c3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlsb25n IHI7CiAKLQlyID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIHdhaXQtPmluLmlwX3R5cGUsIHdh aXQtPmluLmlwX2luc3RhbmNlLAotCQkJICAgICAgIHdhaXQtPmluLnJpbmcsICZyaW5nKTsKLQlp ZiAocikKLQkJcmV0dXJuIHI7Ci0KIAljdHggPSBhbWRncHVfY3R4X2dldChmaWxwLT5kcml2ZXJf cHJpdiwgd2FpdC0+aW4uY3R4X2lkKTsKIAlpZiAoY3R4ID09IE5VTEwpCiAJCXJldHVybiAtRUlO VkFMOwogCisJciA9IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKGFkZXYsICZjdHgtPnF1ZXVlX21nciwK KwkJCQkgd2FpdC0+aW4uaXBfdHlwZSwgd2FpdC0+aW4uaXBfaW5zdGFuY2UsCisJCQkJIHdhaXQt PmluLnJpbmcsICZyaW5nKTsKKwlpZiAocikgeworCQlhbWRncHVfY3R4X3B1dChjdHgpOworCQly ZXR1cm4gcjsKKwl9CisKIAlmZW5jZSA9IGFtZGdwdV9jdHhfZ2V0X2ZlbmNlKGN0eCwgcmluZywg d2FpdC0+aW4uaGFuZGxlKTsKIAlpZiAoSVNfRVJSKGZlbmNlKSkKIAkJciA9IFBUUl9FUlIoZmVu Y2UpOwogCWVsc2UgaWYgKGZlbmNlKSB7CiAJCXIgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZl bmNlLCB0cnVlLCB0aW1lb3V0KTsKIAkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CiAJfSBlbHNlCiAJ CXIgPSAxOwogCiAJYW1kZ3B1X2N0eF9wdXQoY3R4KTsKQEAgLTExOTIsMjkgKzExMjUsMzEgQEAg aW50IGFtZGdwdV9jc193YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICphbWRncHVfY3NfZ2V0X2ZlbmNlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls cCwKIAkJCQkJICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9mZW5jZSAqdXNlcikKIHsKIAlzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmc7CiAJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKIAlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKIAlpbnQgcjsKIAotCXIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwg dXNlci0+aXBfdHlwZSwgdXNlci0+aXBfaW5zdGFuY2UsCi0JCQkgICAgICAgdXNlci0+cmluZywg JnJpbmcpOwotCWlmIChyKQotCQlyZXR1cm4gRVJSX1BUUihyKTsKLQogCWN0eCA9IGFtZGdwdV9j dHhfZ2V0KGZpbHAtPmRyaXZlcl9wcml2LCB1c2VyLT5jdHhfaWQpOwogCWlmIChjdHggPT0gTlVM TCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKKwlyID0gYW1kZ3B1X3F1ZXVlX21ncl9t YXAoYWRldiwgJmN0eC0+cXVldWVfbWdyLCB1c2VyLT5pcF90eXBlLAorCQkJCSB1c2VyLT5pcF9p bnN0YW5jZSwgdXNlci0+cmluZywgJnJpbmcpOworCWlmIChyKSB7CisJCWFtZGdwdV9jdHhfcHV0 KGN0eCk7CisJCXJldHVybiBFUlJfUFRSKHIpOworCX0KKwogCWZlbmNlID0gYW1kZ3B1X2N0eF9n ZXRfZmVuY2UoY3R4LCByaW5nLCB1c2VyLT5zZXFfbm8pOwogCWFtZGdwdV9jdHhfcHV0KGN0eCk7 CiAKIAlyZXR1cm4gZmVuY2U7CiB9CiAKIC8qKgogICogYW1kZ3B1X2NzX3dhaXRfYWxsX2ZlbmNl IC0gd2FpdCBvbiBhbGwgZmVuY2VzIHRvIHNpZ25hbAogICoKICAqIEBhZGV2OiBhbWRncHUgZGV2 aWNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKaW5kZXggY2YwNTAwNi4u YjM4ZWRhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0 eC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwpAQCAtNTEs MjAgKzUxLDI0IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2N0eF9pbml0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4KQogCQlzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcgPSBhZGV2LT5yaW5nc1tpXTsKIAkJc3RydWN0IGFtZF9zY2hlZF9ycSAqcnE7CiAKIAkJ cnEgPSAmcmluZy0+c2NoZWQuc2NoZWRfcnFbQU1EX1NDSEVEX1BSSU9SSVRZX05PUk1BTF07CiAJ CXIgPSBhbWRfc2NoZWRfZW50aXR5X2luaXQoJnJpbmctPnNjaGVkLCAmY3R4LT5yaW5nc1tpXS5l bnRpdHksCiAJCQkJCSAgcnEsIGFtZGdwdV9zY2hlZF9qb2JzKTsKIAkJaWYgKHIpCiAJCQlnb3Rv IGZhaWxlZDsKIAl9CiAKKwlyID0gYW1kZ3B1X3F1ZXVlX21ncl9pbml0KGFkZXYsICZjdHgtPnF1 ZXVlX21ncik7CisJaWYgKHIpCisJCWdvdG8gZmFpbGVkOworCiAJcmV0dXJuIDA7CiAKIGZhaWxl ZDoKIAlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQogCQlhbWRfc2NoZWRfZW50aXR5X2ZpbmkoJmFk ZXYtPnJpbmdzW2pdLT5zY2hlZCwKIAkJCQkgICAgICAmY3R4LT5yaW5nc1tqXS5lbnRpdHkpOwog CWtmcmVlKGN0eC0+ZmVuY2VzKTsKIAljdHgtPmZlbmNlcyA9IE5VTEw7CiAJcmV0dXJuIHI7CiB9 CkBAIC03OSwyMCArODMsMjIgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2N0eF9maW5pKHN0cnVjdCBh bWRncHVfY3R4ICpjdHgpCiAKIAlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytp KQogCQlmb3IgKGogPSAwOyBqIDwgYW1kZ3B1X3NjaGVkX2pvYnM7ICsraikKIAkJCWRtYV9mZW5j ZV9wdXQoY3R4LT5yaW5nc1tpXS5mZW5jZXNbal0pOwogCWtmcmVlKGN0eC0+ZmVuY2VzKTsKIAlj dHgtPmZlbmNlcyA9IE5VTEw7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+bnVtX3JpbmdzOyBp KyspCiAJCWFtZF9zY2hlZF9lbnRpdHlfZmluaSgmYWRldi0+cmluZ3NbaV0tPnNjaGVkLAogCQkJ CSAgICAgICZjdHgtPnJpbmdzW2ldLmVudGl0eSk7CisKKwlhbWRncHVfcXVldWVfbWdyX2Zpbmko YWRldiwgJmN0eC0+cXVldWVfbWdyKTsKIH0KIAogc3RhdGljIGludCBhbWRncHVfY3R4X2FsbG9j KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgIHN0cnVjdCBhbWRncHVfZnByaXYg KmZwcml2LAogCQkJICAgIHVpbnQzMl90ICppZCkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3Ig Km1nciA9ICZmcHJpdi0+Y3R4X21ncjsKIAlzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4OwogCWludCBy OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVf bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVfbWdyLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U5YWM4MAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9tZ3IuYwpAQCAtMCww ICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFZhbHZlIENvcnBvcmF0aW9uCisgKgor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERF UihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAq IE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQXV0aG9yczogQW5kcmVzIFJvZHJpZ3VlegorICovCisKKyNpbmNs dWRlICJhbWRncHUuaCIKKyNpbmNsdWRlICJhbWRncHVfcmluZy5oIgorCitzdGF0aWMgaW50IGFt ZGdwdV9xdWV1ZV9tYXBwZXJfaW5pdChzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVy LAorCQkJCSAgICBpbnQgaHdfaXApCit7CisJaWYgKCFtYXBwZXIpCisJCXJldHVybiAtRUlOVkFM OworCisJaWYgKGh3X2lwID4gQU1ER1BVX01BWF9JUF9OVU0pCisJCXJldHVybiAtRUlOVkFMOwor CisJbWFwcGVyLT5od19pcCA9IGh3X2lwOworCW11dGV4X2luaXQoJm1hcHBlci0+bG9jayk7CisK KwltZW1zZXQobWFwcGVyLT5xdWV1ZV9tYXAsIDAsIHNpemVvZihtYXBwZXItPnF1ZXVlX21hcCkp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKmFtZGdwdV9n ZXRfY2FjaGVkX21hcChzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVyLAorCQkJCQkg IGludCByaW5nKQoreworCXJldHVybiBtYXBwZXItPnF1ZXVlX21hcFtyaW5nXTsKK30KKworc3Rh dGljIGludCBhbWRncHVfdXBkYXRlX2NhY2hlZF9tYXAoc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBw ZXIgKm1hcHBlciwKKwkJCSAgICAgaW50IHJpbmcsIHN0cnVjdCBhbWRncHVfcmluZyAqcHJpbmcp Cit7CisJaWYgKFdBUk5fT04obWFwcGVyLT5xdWV1ZV9tYXBbcmluZ10pKSB7CisJCURSTV9FUlJP UigiVW4tZXhwZWN0ZWQgcmluZyByZS1tYXBcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwltYXBwZXItPnF1ZXVlX21hcFtyaW5nXSA9IHByaW5nOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgYW1kZ3B1X2lkZW50aXR5X21hcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK KwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21hcHBlciAqbWFwcGVyLAorCQkJICAgICAg IGludCByaW5nLAorCQkJICAgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQorewor CXN3aXRjaCAobWFwcGVyLT5od19pcCkgeworCWNhc2UgQU1ER1BVX0hXX0lQX0dGWDoKKwkJKm91 dF9yaW5nID0gJmFkZXYtPmdmeC5nZnhfcmluZ1tyaW5nXTsKKwkJYnJlYWs7CisJY2FzZSBBTURH UFVfSFdfSVBfQ09NUFVURToKKwkJKm91dF9yaW5nID0gJmFkZXYtPmdmeC5jb21wdXRlX3Jpbmdb cmluZ107CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX0hXX0lQX0RNQToKKwkJKm91dF9yaW5nID0g JmFkZXYtPnNkbWEuaW5zdGFuY2VbcmluZ10ucmluZzsKKwkJYnJlYWs7CisJY2FzZSBBTURHUFVf SFdfSVBfVVZEOgorCQkqb3V0X3JpbmcgPSAmYWRldi0+dXZkLnJpbmc7CisJCWJyZWFrOworCWNh c2UgQU1ER1BVX0hXX0lQX1ZDRToKKwkJKm91dF9yaW5nID0gJmFkZXYtPnZjZS5yaW5nW3Jpbmdd OworCQlicmVhazsKKwlkZWZhdWx0OgorCQkqb3V0X3JpbmcgPSBOVUxMOworCQlEUk1fRVJST1Io InVua25vd24gSFcgSVAgdHlwZTogJWRcbiIsIG1hcHBlci0+aHdfaXApOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlyZXR1cm4gYW1kZ3B1X3VwZGF0ZV9jYWNoZWRfbWFwKG1hcHBlciwgcmlu ZywgKm91dF9yaW5nKTsKK30KKworLyoqCisgKiBhbWRncHVfcXVldWVfbWdyX2luaXQgLSBpbml0 IGFuIGFtZGdwdV9xdWV1ZV9tZ3Igc3RydWN0CisgKgorICogQGFkZXY6IGFtZGdwdV9kZXZpY2Ug cG9pbnRlcgorICogQG1ncjogYW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3R1cmUgaG9sZGluZyBxdWV1 ZSBpbmZvcm1hdGlvbgorICoKKyAqIEluaXRpYWxpemUgdGhlIHRoZSBzZWxlY3RlZCBAbWdyIChh bGwgYXNpY3MpLgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJl LgorICovCitpbnQgYW1kZ3B1X3F1ZXVlX21ncl9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAorCQkJICBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyKQoreworCWludCBpLCByOwor CisJaWYgKCFhZGV2IHx8ICFtZ3IpCisJCXJldHVybiAtRUlOVkFMOworCisJbWVtc2V0KG1nciwg MCwgc2l6ZW9mKCptZ3IpKTsKKworCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX0lQX05VTTsg KytpKSB7CisJCXIgPSBhbWRncHVfcXVldWVfbWFwcGVyX2luaXQoJm1nci0+bWFwcGVyW2ldLCBp KTsKKwkJaWYgKHIpCisJCQlyZXR1cm4gcjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisg KiBhbWRncHVfcXVldWVfbWdyX2ZpbmkgLSBkZS1pbml0aWFsaXplIGFuIGFtZGdwdV9xdWV1ZV9t Z3Igc3RydWN0CisgKgorICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgorICogQG1ncjog YW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3R1cmUgaG9sZGluZyBxdWV1ZSBpbmZvcm1hdGlvbgorICoK KyAqIERlLWluaXRpYWxpemUgdGhlIHRoZSBzZWxlY3RlZCBAbWdyIChhbGwgYXNpY3MpLgorICoK KyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJlLgorICovCitpbnQgYW1k Z3B1X3F1ZXVlX21ncl9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICBzdHJ1 Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyKQoreworCXJldHVybiAwOworfQorCisvKioKKyAqIGFt ZGdwdV9xdWV1ZV9tZ3JfbWFwIC0gTWFwIGEgdXNlcnNwYWNlIHJpbmcgaWQgdG8gYW4gYW1kZ3B1 X3JpbmcKKyAqCisgKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCisgKiBAbWdyOiBhbWRn cHVfcXVldWVfbWdyIHN0cnVjdHVyZSBob2xkaW5nIHF1ZXVlIGluZm9ybWF0aW9uCisgKiBAaHdf aXA6IEhXIElQIGVudW0KKyAqIEBpbnN0YW5jZTogSFcgaW5zdGFuY2UKKyAqIEByaW5nOiB1c2Vy IHJpbmcgaWQKKyAqIEBvdXJfcmluZzogcG9pbnRlciB0byBtYXBwZWQgYW1kZ3B1X3JpbmcKKyAq CisgKiBNYXAgYSB1c2Vyc3BhY2UgcmluZyBpZCB0byBhbiBhcHByb3ByaWF0ZSBrZXJuZWwgcmlu Zy4gRGlmZmVyZW50CisgKiBwb2xpY2llcyBhcmUgY29uZmlndXJhYmxlIGF0IGEgSFcgSVAgbGV2 ZWwuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZhaWx1cmUuCisgKi8K K2ludCBhbWRncHVfcXVldWVfbWdyX21hcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJ CSBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyLAorCQkJIGludCBod19pcCwgaW50IGluc3Rh bmNlLCBpbnQgcmluZywKKwkJCSBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipvdXRfcmluZykKK3sKKwlp bnQgciwgaXBfbnVtX3JpbmdzOworCXN0cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyICptYXBwZXIg PSAmbWdyLT5tYXBwZXJbaHdfaXBdOworCisJaWYgKCFhZGV2IHx8ICFtZ3IgfHwgIW91dF9yaW5n KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChod19pcCA+PSBBTURHUFVfTUFYX0lQX05VTSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocmluZyA+PSBBTURHUFVfTUFYX1JJTkdTKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCS8qIFJpZ2h0IG5vdyBhbGwgSVBzIGhhdmUgb25seSBvbmUgaW5z dGFuY2UgLSBtdWx0aXBsZSByaW5ncy4gKi8KKwlpZiAoaW5zdGFuY2UgIT0gMCkgeworCQlEUk1f RVJST1IoImludmFsaWQgaXAgaW5zdGFuY2U6ICVkXG4iLCBpbnN0YW5jZSk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCXN3aXRjaCAoaHdfaXApIHsKKwljYXNlIEFNREdQVV9IV19JUF9HRlg6 CisJCWlwX251bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzOworCQlicmVhazsKKwlj YXNlIEFNREdQVV9IV19JUF9DT01QVVRFOgorCQlpcF9udW1fcmluZ3MgPSBhZGV2LT5nZngubnVt X2NvbXB1dGVfcmluZ3M7CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX0hXX0lQX0RNQToKKwkJaXBf bnVtX3JpbmdzID0gYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOworCQlicmVhazsKKwljYXNlIEFN REdQVV9IV19JUF9VVkQ6CisJCWlwX251bV9yaW5ncyA9IDE7CisJCWJyZWFrOworCWNhc2UgQU1E R1BVX0hXX0lQX1ZDRToKKwkJaXBfbnVtX3JpbmdzID0gYWRldi0+dmNlLm51bV9yaW5nczsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJ1bmtub3duIGlwIHR5cGU6ICVkXG4iLCBo d19pcCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChyaW5nID49IGlwX251bV9yaW5n cykgeworCQlEUk1fRVJST1IoIlJpbmcgaW5kZXg6JWQgZXhjZWVkcyBtYXhpbXVtOiVkIGZvciBp cDolZFxuIiwKKwkJCQlyaW5nLCBpcF9udW1fcmluZ3MsIGh3X2lwKTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJbXV0ZXhfbG9jaygmbWFwcGVyLT5sb2NrKTsKKworCSpvdXRfcmluZyA9IGFt ZGdwdV9nZXRfY2FjaGVkX21hcChtYXBwZXIsIHJpbmcpOworCWlmICgqb3V0X3JpbmcpIHsKKwkJ LyogY2FjaGUgaGl0ICovCisJCXIgPSAwOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJc3dp dGNoIChtYXBwZXItPmh3X2lwKSB7CisJY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgorCWNhc2UgQU1E R1BVX0hXX0lQX0NPTVBVVEU6CisJY2FzZSBBTURHUFVfSFdfSVBfRE1BOgorCWNhc2UgQU1ER1BV X0hXX0lQX1VWRDoKKwljYXNlIEFNREdQVV9IV19JUF9WQ0U6CisJCXIgPSBhbWRncHVfaWRlbnRp dHlfbWFwKGFkZXYsIG1hcHBlciwgcmluZywgb3V0X3JpbmcpOworCQlicmVhazsKKwlkZWZhdWx0 OgorCQkqb3V0X3JpbmcgPSBOVUxMOworCQlyID0gLUVJTlZBTDsKKwkJRFJNX0VSUk9SKCJ1bmtu b3duIEhXIElQIHR5cGU6ICVkXG4iLCBtYXBwZXItPmh3X2lwKTsKKwl9CisKK291dF91bmxvY2s6 CisJbXV0ZXhfdW5sb2NrKCZtYXBwZXItPmxvY2spOworCXJldHVybiByOworfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKaW5kZXggNmE4NWRiMC4uMTJmYzgxNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5jCkBAIC00NSwyMCArNDUsNjUg QEAKICAqIHBvaW50ZXJzIGFyZSBlcXVhbCwgdGhlIHJpbmcgaXMgaWRsZS4gIFdoZW4gdGhlIGhv c3QKICAqIHdyaXRlcyBjb21tYW5kcyB0byB0aGUgcmluZyBidWZmZXIsIGl0IGluY3JlbWVudHMg dGhlCiAgKiB3cHRyLiAgVGhlIEdQVSB0aGVuIHN0YXJ0cyBmZXRjaGluZyBjb21tYW5kcyBhbmQg ZXhlY3V0ZXMKICAqIHRoZW0gdW50aWwgdGhlIHBvaW50ZXJzIGFyZSBlcXVhbCBhZ2Fpbi4KICAq Lwogc3RhdGljIGludCBhbWRncHVfZGVidWdmc19yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJICAgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7CiBzdGF0aWMgdm9p ZCBhbWRncHVfZGVidWdmc19yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKIAog LyoqCisgKiBhbWRncHVfcmluZ19pc192YWxpZF9pbmRleCAtIGNoZWNrIGlmIGEgcmluZyBpZGV4 IGlzIHZhbGlkIGZvciBhIEhXIElQCisgKgorICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRl cgorICogQGlwX3R5cGU6IFRoZSBIVyBJUCB0byBjaGVjayBhZ2FpbnN0CisgKiBAcmluZzogdGhl IHJpbmcgaW5kZXgKKyAqCisgKiBDaGVjayBpZiBAcmluZyBpcyBhIHZhbGlkIGluZGV4IGZvciBA aXBfdHlwZSAoYWxsIGFzaWNzKS4KKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBm YWlsdXJlLgorICovCitpbnQgYW1kZ3B1X3JpbmdfaXNfdmFsaWRfaW5kZXgoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCisJCQkgICAgICAgaW50IGlwX3R5cGUsIGludCByaW5nKQoreworCWlu dCBpcF9udW1fcmluZ3M7CisKKwlzd2l0Y2ggKGlwX3R5cGUpIHsKKwljYXNlIEFNREdQVV9IV19J UF9HRlg6CisJCWlwX251bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzOworCQlicmVh azsKKwljYXNlIEFNREdQVV9IV19JUF9DT01QVVRFOgorCQlpcF9udW1fcmluZ3MgPSBhZGV2LT5n ZngubnVtX2NvbXB1dGVfcmluZ3M7CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX0hXX0lQX0RNQToK KwkJaXBfbnVtX3JpbmdzID0gYWRldi0+c2RtYS5udW1faW5zdGFuY2VzOworCQlicmVhazsKKwlj YXNlIEFNREdQVV9IV19JUF9VVkQ6CisJCWlwX251bV9yaW5ncyA9IDE7CisJCWJyZWFrOworCWNh c2UgQU1ER1BVX0hXX0lQX1ZDRToKKwkJaXBfbnVtX3JpbmdzID0gYWRldi0+dmNlLm51bV9yaW5n czsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJ1bmtub3duIGlwIHR5cGU6ICVk XG4iLCBpcF90eXBlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKHJpbmcgPj0gaXBf bnVtX3JpbmdzKSB7CisJCURSTV9FUlJPUigiUmluZyBpbmRleDolZCBleGNlZWRzIG1heGltdW06 JWQgZm9yIGlwOiVkXG4iLAorCQkJCXJpbmcsIGlwX251bV9yaW5ncywgaXBfdHlwZSk7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCisvKioKICAqIGFtZGdwdV9yaW5n X2FsbG9jIC0gYWxsb2NhdGUgc3BhY2Ugb24gdGhlIHJpbmcgYnVmZmVyCiAgKgogICogQGFkZXY6 IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgogICogQHJpbmc6IGFtZGdwdV9yaW5nIHN0cnVjdHVyZSBo b2xkaW5nIHJpbmcgaW5mb3JtYXRpb24KICAqIEBuZHc6IG51bWJlciBvZiBkd29yZHMgdG8gYWxs b2NhdGUgaW4gdGhlIHJpbmcgYnVmZmVyCiAgKgogICogQWxsb2NhdGUgQG5kdyBkd29yZHMgaW4g dGhlIHJpbmcgYnVmZmVyIChhbGwgYXNpY3MpLgogICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVy cm9yIG9uIGZhaWx1cmUuCiAgKi8KIGludCBhbWRncHVfcmluZ19hbGxvYyhzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsIHVuc2lnbmVkIG5kdykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcmluZy5oCmluZGV4IDYzZTU2MzkuLmNmNDExZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3JpbmcuaApAQCAtMTc2LDIwICsxNzYsMjIgQEAgc3RydWN0IGFtZGdwdV9y aW5nIHsKIAl1aW50NjRfdAkJY3VycmVudF9jdHg7CiAJY2hhcgkJCW5hbWVbMTZdOwogCXVuc2ln bmVkCQljb25kX2V4ZV9vZmZzOwogCXU2NAkJCWNvbmRfZXhlX2dwdV9hZGRyOwogCXZvbGF0aWxl IHUzMgkJKmNvbmRfZXhlX2NwdV9hZGRyOwogI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQog CXN0cnVjdCBkZW50cnkgKmVudDsKICNlbmRpZgogfTsKIAoraW50IGFtZGdwdV9yaW5nX2lzX3Zh bGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgIGludCBod19p cCwgaW50IHJpbmcpOwogaW50IGFtZGdwdV9yaW5nX2FsbG9jKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdW5zaWduZWQgbmR3KTsKIHZvaWQgYW1kZ3B1X3JpbmdfaW5zZXJ0X25vcChzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGNvdW50KTsKIHZvaWQgYW1kZ3B1X3JpbmdfZ2Vu ZXJpY19wYWRfaWIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2liICpp Yik7CiB2b2lkIGFtZGdwdV9yaW5nX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwog dm9pZCBhbWRncHVfcmluZ191bmRvKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7CiBpbnQgYW1k Z3B1X3JpbmdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLAogCQkgICAgIHVuc2lnbmVkIHJpbmdfc2l6ZSwgc3RydWN0IGFtZGdwdV9pcnFf c3JjICppcnFfc3JjLAogCQkgICAgIHVuc2lnbmVkIGlycV90eXBlKTsKIHZvaWQgYW1kZ3B1X3Jp bmdfZmluaShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwogc3RhdGljIGlubGluZSB2b2lkIGFt ZGdwdV9yaW5nX2NsZWFyX3Jpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQotLSAKMi45LjMK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=