From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH] drm/atomic-helper: implementatations for legacy interfaces Date: Wed, 5 Nov 2014 14:48:48 -0500 Message-ID: References: <1415138934-12688-1-git-send-email-daniel.vetter@ffwll.ch> <1415195170-13089-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1415195170-13089-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel Graphics Development , Daniel Thompson , DRI Development List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMDUsIDIwMTQgYXQgMDI6NDY6MTBQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBXZWxsLCBleGNlcHQgcGFnZV9mbGlwIHNpbmNlIHRoYXQgcmVxdWlyZXMgYXN5bmMg Y29tbWl0LCB3aGljaCBpc24ndAo+IHRoZXJlIHlldC4KPgo+IEZvciB0aGUgZnVuY3Rpb25zIHdo aWNoIGNoYW5nZXMgcGxhbmVzIHRoZXJlJ3MgYSBiaXQgb2YgdHJpY2tlcnkKPiBpbnZvbHZlZCB0 byBrZWVwIHRoZSBmYiByZWZjb3VudGluZyB3b3JraW5nLiBCdXQgb3RoZXJ3aXNlIGZhaXJseQo+ IHN0cmFpZ2h0LWZvcndhcmQgYXRvbWljIHVwZGF0ZXMuCj4KPiBUaGUgcHJvcGVydHkgc2V0dGlu ZyBmdW5jdGlvbnMgYXJlIHN0aWxsIGEgYml0IGluY29tcGxldGUuIE9uY2Ugd2UKPiBoYXZlIGdl bmVyaWMgcHJvcGVydGllcyAoZS5nLiByb3RhdGlvbiwgYnV0IGFsc28gYWxsIHRoZSBwcm9wZXJ0 aWVzCj4gbmVlZGVkIGJ5IHRoZSBhdG9taWMgaW9jdGwpIHdlIG5lZWQgdG8gZmlsdGVyIHRob3Nl IG91dCBhbmQgcGFyc2UgdGhlbQo+IGluIHRoZSBoZWxwZXIuIFByZWZlcnJhYmx5IHdpdGggdGhl IHNhbWUgZnVuY3Rpb24gYXMgdXNlZCBieSB0aGUgcmVhbAo+IGF0b21pYyBpb2N0bCBpbXBsZW1l bnRhdGlvbi4KPgo+IHYyOiBGaXh1cCBrZXJuZWxkb2MsIHJlcG9ydGVkIGJ5IFBhdWxvLgo+Cj4g djM6IEFkZCBtaXNzaW5nIEVYUE9SVF9TWU1CT0wuCj4KPiB2NDogV2UgbmVlZCB0byBsb29rIGF0 IHRoZSBjcnRjIG9mIHRoZSBtb2Rlc2V0LCBub3Qgc29tZSByYW5kb20KPiBsZWZ0b3ZlciBvbmUg ZnJvbSBhIHByZXZpb3VzIGxvb3Agd2hlbiB1ZHBhdGluZyB0aGUgY29ubmVjdG9yLT5jcnRjCj4g cm91dGluZy4gQWxzbyBwdXNoIHNvbWUgbG9jYWwgdmFyaWFibGVzIGludG8gaW5uZXIgbG9vcHMg dG8gYXZvaWQKPiB0aGVzZSBraW5kcyBvZiBidWdzLgo+Cj4gdjU6IEFkanVzdCBzZW1hbnRpY3Mg LSBkcml2ZXJzIG5vdyBvd24gdGhlIGF0b21pYyBzdGF0ZSB1cG9uCj4gc3VjY2Vzc2Z1bGx5IHN5 bmNocm9ub3VzIGNvbW1pdC4KPgo+IHY2OiBVc2UgdGhlIHNldF9jcnRjX2Zvcl9wbGFuZSBmdW5j dGlvbiB0byBhc3NpZ24gdGhlIGNydGMsIHNpbmNlCj4gb3RoZXJ3aXNlIHRoZSBib29rLWtlZXBp bmcgaXMgb2ZmLgo+Cj4gdjc6Cj4gLSBJbXByb3ZlIGNvbW1lbnRzLgo+IC0gRmlsdGVyIG91dCB0 aGUgY3J0YyBvZiB0aGUgLT5zZXRfY29uZmlnIGNhbGwgd2hlbiByZWNvbXB1dGluZwo+ICAgY3J0 Y19zdGF0ZS0+ZW5hYmxlZDogV2Ugc2hvdWxkIGNvbXB1dGUgdGhlIHNhbWUgc3RhdGUsIGJ1dCBu b3QgZG9pbmcKPiAgIHNvIHdpbGwgZ2l2ZSB1cyBhIGdvb2QgY2hhbmNlIHRvIGNhdGNoIGJ1Z3Mg YW5kIGluY29uc2lzdGVuY2llcyAtCj4gICB0aGUgYXRvbWljIGhlbHBlcidzIGF0b21pY19jaGVj ayBmdW5jdGlvbiByZS12YWxpZGF0ZXMgdGhpcyBhZ2Fpbi4KPiAtIEZpeCB0aGUgc2V0X2NvbmZp ZyBpbXBsZW1lbnRhdGlvbiBsb2dpYyB3aGVuIGRpc2FibGluZyB0aGUgY3J0YzogV2UKPiAgIHN0 aWxsIG5lZWQgdG8gdXBkYXRlIHRoZSBvdXRwdXQgcm91dGluZyB0byBkaXNhYmxlIGFsbCB0aGUK PiAgIGNvbm5lY3RvcnMgcHJvcGVybHkgaW4gdGhlIHN0YXRlLiBDYXVnaHQgYnkgdGhlIGF0b21p Y19jaGVjawo+ICAgZnVuY3Rpb25zLCBzbyBhdCBsZWFzdCB0aGF0IHBhcnQgd29ya2VkIDstKSBB bHNvIGFkZCBzb21lIFdBUk5fT05zCj4gICB0byBlbnN1cmUgLT5zZXRfY29uZmlnIHByZWNvbmRp dGlvbnMgYWxsIGFwcGx5Lgo+Cj4gdjg6IEZpeHVwIGFuIGVtYmFycmFzc2luZyBoL3ZkaXNwbGF5 IG1peHVwLgo+Cj4gdjk6IFNodWZmbGVkIGJhZCBzcXVhc2ggdG8gdGhlIHJpZ2h0IHBhdGNoLCBz cG90dGVkIGJ5IERhbmllbAo+Cj4gdjEwOiBVc2Ugc2V0X2NydGNfZm9yX2Nvbm5lY3RvciBhcyBz dWdnZXN0ZWQgYnkgU2Vhbi4KPgo+IHYxMTogRGFuaWVsIFRob21wc29uIG5vdGljZWQgdGhhdCBt eSBlcnJvciBoYW5kbGluZyBpcyBpbmNvbnNpc3RlbnQKPiBhbmQgdGhhdCBpbiBhIGZldyBjYXNl cyBJIGRpZG4ndCBoYW5kbGUgZmF0YWwgZXJyb3JzIChpLmUuIG5vdAo+IC1FREVBRExLKS4gRml4 IHRoaXMgYnkgY29uc29saWRhdGUgdGhlIHd3IG11dGV4IGJhY2tvZmYgaGFuZGxpbmcKPiBpbnRv IG9uZSBjaGVjayBpbiB0aGUgZmFpbDogYmxvY2sgYW5kIGZsYXR0ZW4gdGhlIGVycm9yIGNvbnRy b2wKPiBmbG93IGV2ZXJ5d2hlcmUgZWxzZS4KPgo+IENjOiBEYW5pZWwgVGhvbXBzb24gPGRhbmll bC50aG9tcHNvbkBsaW5hcm8ub3JnPgo+IENjOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVt Lm9yZz4KPiBDYzogRGFuaWVsIFRob21wc29uIDxkYW5pZWwudGhvbXBzb25AbGluYXJvLm9yZz4K PiBDYzogUGF1bG8gWmFub25pIDxwcnphbm9uaUBnbWFpbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCkxvb2tzIGdvb2QgdG8gbWUs IGEgY291cGxlIG5pdHMuCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1 bS5vcmc+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDUw NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vZHJt X2F0b21pY19oZWxwZXIuaCAgICAgfCAgMjEgKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCA1MjQgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPiBpbmRleCA4ODdlMTk3MWM5MTUuLmI4NDU4MWY4YzhmYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTg2LDYgKzg2LDcgQEAgc3RlYWxfZW5jb2RlcihzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Cj4gICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAgc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPiArIGludCByZXQ7Cj4KPiAg IC8qCj4gICAqIFdlIGNhbiBvbmx5IHN0ZWFsIGFuIGVuY29kZXIgY29taW5nIGZyb20gYSBjb25u ZWN0b3IsIHdoaWNoIG1lYW5zIHdlCj4gQEAgLTExNiw3ICsxMTcsOSBAQCBzdGVhbF9lbmNvZGVy KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgIGlmIChJU19FUlIoY29ubmVjdG9y X3N0YXRlKSkKPiAgIHJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0ZSk7Cj4KPiAtIGNvbm5l Y3Rvcl9zdGF0ZS0+Y3J0YyA9IE5VTEw7Cj4gKyByZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zv cl9jb25uZWN0b3IoY29ubmVjdG9yX3N0YXRlLCBOVUxMKTsKPiArIGlmIChyZXQpCj4gKyByZXR1 cm4gcmV0Owo+ICAgY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwo+ICAgfQo+ Cj4gQEAgLTEwNDUsMyArMTA0OCw1MDIgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICB9Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWlj X2hlbHBlcl91cGRhdGVfcGxhbmUgLSBIZWxwZXIgZm9yIHByaW1hcnkgcGxhbmUgdXBkYXRlIHVz aW5nIGF0b21pYwo+ICsgKiBAcGxhbmU6IHBsYW5lIG9iamVjdCB0byB1cGRhdGUKPiArICogQGNy dGM6IG93bmluZyBDUlRDIG9mIG93bmluZyBwbGFuZQo+ICsgKiBAZmI6IGZyYW1lYnVmZmVyIHRv IGZsaXAgb250byBwbGFuZQo+ICsgKiBAY3J0Y194OiB4IG9mZnNldCBvZiBwcmltYXJ5IHBsYW5l IG9uIGNydGMKPiArICogQGNydGNfeTogeSBvZmZzZXQgb2YgcHJpbWFyeSBwbGFuZSBvbiBjcnRj Cj4gKyAqIEBjcnRjX3c6IHdpZHRoIG9mIHByaW1hcnkgcGxhbmUgcmVjdGFuZ2xlIG9uIGNydGMK PiArICogQGNydGNfaDogaGVpZ2h0IG9mIHByaW1hcnkgcGxhbmUgcmVjdGFuZ2xlIG9uIGNydGMK PiArICogQHNyY194OiB4IG9mZnNldCBvZiBAZmIgZm9yIHBhbm5pbmcKPiArICogQHNyY195OiB5 IG9mZnNldCBvZiBAZmIgZm9yIHBhbm5pbmcKPiArICogQHNyY193OiB3aWR0aCBvZiBzb3VyY2Ug cmVjdGFuZ2xlIGluIEBmYgo+ICsgKiBAc3JjX2g6IGhlaWdodCBvZiBzb3VyY2UgcmVjdGFuZ2xl IGluIEBmYgo+ICsgKgo+ICsgKiBQcm92aWRlcyBhIGRlZmF1bHQgcGxhbmUgdXBkYXRlIGhhbmRs ZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2ZXIgaW50ZXJmYWNlLgo+ICsgKgo+ICsgKiBSRVRVUk5T Ogo+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZQo+ICsgKi8KPiAr aW50IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiArICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKPiArICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiArICAgdW5zaWduZWQgaW50 IGNydGNfdywgdW5zaWduZWQgaW50IGNydGNfaCwKPiArICAgdWludDMyX3Qgc3JjX3gsIHVpbnQz Ml90IHNyY195LAo+ICsgICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4gK3sKPiAr IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiArIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlOwo+ICsgaW50IHJldCA9IDA7Cj4gKwo+ICsgc3RhdGUgPSBkcm1fYXRv bWljX3N0YXRlX2FsbG9jKHBsYW5lLT5kZXYpOwo+ICsgaWYgKCFzdGF0ZSkKPiArIHJldHVybiAt RU5PTUVNOwo+ICsKPiArIHN0YXRlLT5hY3F1aXJlX2N0eCA9IGRybV9tb2Rlc2V0X2xlZ2FjeV9h Y3F1aXJlX2N0eChjcnRjKTsKPiArcmV0cnk6Cj4gKyBwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7Cj4gKyBpZiAoSVNfRVJSKHBsYW5lX3N0YXRl KSkgewo+ICsgcmV0ID0gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gKyBnb3RvIGZhaWw7Cj4gKyB9 Cj4gKwo+ICsgcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUocGxhbmVfc3RhdGUs IGNydGMpOwo+ICsgaWYgKHJldCAhPSAwKQo+ICsgZ290byBmYWlsOwo+ICsgcGxhbmVfc3RhdGUt PmZiID0gZmI7Cj4gKyBwbGFuZV9zdGF0ZS0+Y3J0Y194ID0gY3J0Y194Owo+ICsgcGxhbmVfc3Rh dGUtPmNydGNfeSA9IGNydGNfeTsKPiArIHBsYW5lX3N0YXRlLT5jcnRjX2ggPSBjcnRjX2g7Cj4g KyBwbGFuZV9zdGF0ZS0+Y3J0Y193ID0gY3J0Y193Owo+ICsgcGxhbmVfc3RhdGUtPnNyY194ID0g c3JjX3g7Cj4gKyBwbGFuZV9zdGF0ZS0+c3JjX3kgPSBzcmNfeTsKPiArIHBsYW5lX3N0YXRlLT5z cmNfaCA9IHNyY19oOwo+ICsgcGxhbmVfc3RhdGUtPnNyY193ID0gc3JjX3c7Cj4gKwo+ICsgcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsgaWYgKHJldCAhPSAwKQo+ICsgZ290byBm YWlsOwo+ICsKPiArIC8qIERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vz c2Z1bCBjb21taXQuICovCj4gKyByZXR1cm4gMDsKPiArZmFpbDoKPiArIGlmIChyZXQgPT0gLUVE RUFETEspCj4gKyBnb3RvIGJhY2tvZmY7Cj4gKwo+ICsgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0 YXRlKTsKPiArCj4gKyByZXR1cm4gcmV0Owo+ICtiYWNrb2ZmOgo+ICsgZHJtX2F0b21pY19sZWdh Y3lfYmFja29mZihzdGF0ZSk7Cj4gKyBkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiAr Cj4gKyAvKgo+ICsgKiBTb21lb25lIG1pZ2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBmcmFtZWJ1ZmZl ciB3aGlsZSB3ZSBkcm9wcGVkIGxvY2tzCj4gKyAqIGluIHRoZSBiYWNrb2ZmIGNvZGUuIFdlIG5l ZWQgdG8gZml4IHVwIHRoZSBmYiByZWZjb3VudCB0cmFja2luZyB0aGUKPiArICogY29yZSBkb2Vz IGZvciB1cy4KPiArICovCj4gKyBwbGFuZS0+b2xkX2ZiID0gcGxhbmUtPmZiOwo+ICsKPiArIGdv dG8gcmV0cnk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVf cGxhbmUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUg LSBIZWxwZXIgZm9yIHByaW1hcnkgcGxhbmUgZGlzYWJsZSB1c2luZyAqIGF0b21pYwo+ICsgKiBA cGxhbmU6IHBsYW5lIHRvIGRpc2FibGUKPiArICoKPiArICogUHJvdmlkZXMgYSBkZWZhdWx0IHBs YW5lIGRpc2FibGxlIGhhbmRsZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2ZXIgaW50ZXJmYWNlLgoK cy9kaXNhYmxsZS9kaXNhYmxlLwoKPiArICoKPiArICogUkVUVVJOUzoKPiArICogWmVybyBvbiBz dWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUKPiArICovCj4gK2ludCBkcm1fYXRvbWljX2hl bHBlcl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ICt7Cj4gKyBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZTsKPiArIGludCByZXQgPSAwOwo+ICsKPiArIHN0YXRlID0gZHJtX2F0b21pY19z dGF0ZV9hbGxvYyhwbGFuZS0+ZGV2KTsKPiArIGlmICghc3RhdGUpCj4gKyByZXR1cm4gLUVOT01F TTsKPiArCj4gKyBzdGF0ZS0+YWNxdWlyZV9jdHggPSBkcm1fbW9kZXNldF9sZWdhY3lfYWNxdWly ZV9jdHgocGxhbmUtPmNydGMpOwo+ICtyZXRyeToKPiArIHBsYW5lX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiArIGlmIChJU19FUlIocGxhbmVfc3Rh dGUpKSB7Cj4gKyByZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKPiArIGdvdG8gZmFpbDsKPiAr IH0KPiArCj4gKyByZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwbGFuZV9zdGF0 ZSwgTlVMTCk7Cj4gKyBpZiAocmV0ICE9IDApCj4gKyBnb3RvIGZhaWw7Cj4gKyBwbGFuZV9zdGF0 ZS0+ZmIgPSBOVUxMOwo+ICsgcGxhbmVfc3RhdGUtPmNydGNfeCA9IDA7Cj4gKyBwbGFuZV9zdGF0 ZS0+Y3J0Y195ID0gMDsKPiArIHBsYW5lX3N0YXRlLT5jcnRjX2ggPSAwOwo+ICsgcGxhbmVfc3Rh dGUtPmNydGNfdyA9IDA7Cj4gKyBwbGFuZV9zdGF0ZS0+c3JjX3ggPSAwOwo+ICsgcGxhbmVfc3Rh dGUtPnNyY195ID0gMDsKPiArIHBsYW5lX3N0YXRlLT5zcmNfaCA9IDA7Cj4gKyBwbGFuZV9zdGF0 ZS0+c3JjX3cgPSAwOwo+ICsKPiArIHJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiAr IGlmIChyZXQgIT0gMCkKPiArIGdvdG8gZmFpbDsKPiArCj4gKyAvKiBEcml2ZXIgdGFrZXMgb3du ZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwo+ICsgcmV0dXJuIDA7Cj4g K2ZhaWw6Cj4gKyBpZiAocmV0ID09IC1FREVBRExLKQo+ICsgZ290byBiYWNrb2ZmOwo+ICsKPiAr IGRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwo+ICsgcmV0dXJuIHJldDsKPiArYmFj a29mZjoKPiArIGRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwo+ICsgZHJtX2F0b21p Y19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gKwo+ICsgLyoKPiArICogU29tZW9uZSBtaWdodCBoYXZl IGV4Y2hhbmdlZCB0aGUgZnJhbWVidWZmZXIgd2hpbGUgd2UgZHJvcHBlZCBsb2Nrcwo+ICsgKiBp biB0aGUgYmFja29mZiBjb2RlLiBXZSBuZWVkIHRvIGZpeCB1cCB0aGUgZmIgcmVmY291bnQgdHJh Y2tpbmcgdGhlCj4gKyAqIGNvcmUgZG9lcyBmb3IgdXMuCj4gKyAqLwo+ICsgcGxhbmUtPm9sZF9m YiA9IHBsYW5lLT5mYjsKPiArCj4gKyBnb3RvIHJldHJ5Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wo ZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZSk7Cj4gKwo+ICtzdGF0aWMgaW50IHVwZGF0 ZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsgICAgICAg c3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQo+ICt7Cj4gKyBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gc2V0LT5jcnRjLT5kZXY7Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9z dGF0ZTsKPiArIGludCBuY29ubmVjdG9ycyA9IHN0YXRlLT5kZXYtPm1vZGVfY29uZmlnLm51bV9j b25uZWN0b3I7Cj4gKyBpbnQgbmNydGNzID0gc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2Ny dGM7Cj4gKyBpbnQgcmV0LCBpLCBqOwo+ICsKPiArIHJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRl di0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwKPiArICAgICAgIHN0YXRlLT5hY3F1aXJl X2N0eCk7Cj4gKyBpZiAocmV0KQo+ICsgcmV0dXJuIHJldDsKPiArCj4gKyAvKiBGaXJzdCBncmFi IGFsbCBhZmZlY3RlZCBjb25uZWN0b3IvY3J0YyBzdGF0ZXMuICovCj4gKyBmb3IgKGkgPSAwOyBp IDwgc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7Cj4gKyBjb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLAo+ICsgICAgc2V0LT5jb25uZWN0b3JzW2ldKTsK PiArIGlmIChJU19FUlIoY29ubl9zdGF0ZSkpCj4gKyByZXR1cm4gUFRSX0VSUihjb25uX3N0YXRl KTsKPiArIH0KPiArCj4gKyBmb3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsKPiArIHN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKPiArCj4gKyBpZiAoIWNydGMpCj4g KyBjb250aW51ZTsKPiArCj4gKyByZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0 b3JzKHN0YXRlLCBjcnRjKTsKPiArIGlmIChyZXQpCj4gKyByZXR1cm4gcmV0Owo+ICsgfQo+ICsK PiArIC8qIFRoZW4gcmVjb21wdXRlIGNvbm5lY3Rvci0+Y3J0YyBsaW5rcyBhbmQgY3J0YyBlbmFi bGluZyBzdGF0ZS4gKi8KPiArIGZvciAoaSA9IDA7IGkgPCBuY29ubmVjdG9yczsgaSsrKSB7Cj4g KyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsKPiArIGNvbm5lY3RvciA9IHN0 YXRlLT5jb25uZWN0b3JzW2ldOwo+ICsgY29ubl9zdGF0ZSA9IHN0YXRlLT5jb25uZWN0b3Jfc3Rh dGVzW2ldOwo+ICsKPiArIGlmICghY29ubmVjdG9yKQo+ICsgY29udGludWU7Cj4gKwo+ICsgaWYg KGNvbm5fc3RhdGUtPmNydGMgPT0gc2V0LT5jcnRjKSB7Cj4gKyByZXQgPSBkcm1fYXRvbWljX3Nl dF9jcnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwKPiArIE5VTEwpOwo+ICsgaWYgKHJldCkK PiArIHJldHVybiByZXQ7Cj4gKyB9Cj4gKwo+ICsgZm9yIChqID0gMDsgaiA8IHNldC0+bnVtX2Nv bm5lY3RvcnM7IGorKykgewo+ICsgaWYgKHNldC0+Y29ubmVjdG9yc1tqXSA9PSBjb25uZWN0b3Ip IHsKPiArIHJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRl LAo+ICsgc2V0LT5jcnRjKTsKPiArIGlmIChyZXQpCj4gKyByZXR1cm4gcmV0Owo+ICsgYnJlYWs7 Cj4gKyB9Cj4gKyB9Cj4gKyB9Cj4gKwo+ICsgZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7 Cj4gKyBzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0Y3NbaV07Cj4gKyBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV07Cj4gKwo+ ICsgaWYgKCFjcnRjICYmIGNydGMgIT0gc2V0LT5jcnRjKQoKSSB0aGluayB0aGlzIHNob3VsZCBi ZSBhbiB8fAoKPiArIGNvbnRpbnVlOwo+ICsKPiArIGNydGNfc3RhdGUtPmVuYWJsZSA9Cj4gKyBk cm1fYXRvbWljX2Nvbm5lY3RvcnNfZm9yX2NydGMoc3RhdGUsIGNydGMpOwo+ICsgfQo+ICsKPiAr IHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxwZXJfc2V0X2Nv bmZpZyAtIHNldCBhIG5ldyBjb25maWcgZnJvbSB1c2Vyc3BhY2UKPiArICogQHNldDogbW9kZSBz ZXQgY29uZmlndXJhdGlvbgo+ICsgKgo+ICsgKiBQcm92aWRlcyBhIGRlZmF1bHQgY3J0YyBzZXRf Y29uZmlnIGhhbmRsZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2ZXIgaW50ZXJmYWNlLgo+ICsgKgo+ ICsgKiBSZXR1cm5zOgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8g bnVtYmVycyBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGRybV9hdG9taWNfaGVscGVyX3NldF9j b25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQo+ICt7Cj4gKyBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzZXQtPmNydGM7Cj4g KyBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwcmltYXJ5X3N0YXRlOwo+ICsgaW50IHJldCA9IDA7Cj4gKwo+ICsgc3RhdGUgPSBk cm1fYXRvbWljX3N0YXRlX2FsbG9jKGNydGMtPmRldik7Cj4gKyBpZiAoIXN0YXRlKQo+ICsgcmV0 dXJuIC1FTk9NRU07Cj4gKwo+ICsgc3RhdGUtPmFjcXVpcmVfY3R4ID0gZHJtX21vZGVzZXRfbGVn YWN5X2FjcXVpcmVfY3R4KGNydGMpOwo+ICtyZXRyeToKPiArIGNydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArIGlmIChJU19FUlIoY3J0Y19zdGF0 ZSkpIHsKPiArIHJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7Cj4gKyBnb3RvIGZhaWw7Cj4gKyB9 Cj4gKwo+ICsgaWYgKCFzZXQtPm1vZGUpIHsKPiArIFdBUk5fT04oc2V0LT5mYik7Cj4gKyBXQVJO X09OKHNldC0+bnVtX2Nvbm5lY3RvcnMpOwo+ICsKPiArIGNydGNfc3RhdGUtPmVuYWJsZSA9IGZh bHNlOwo+ICsgZ290byBjb21taXQ7Cj4gKyB9Cj4gKwo+ICsgV0FSTl9PTighc2V0LT5mYik7Cj4g KyBXQVJOX09OKCFzZXQtPm51bV9jb25uZWN0b3JzKTsKPiArCj4gKyBjcnRjX3N0YXRlLT5lbmFi bGUgPSB0cnVlOwo+ICsgZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+bW9kZSwgc2V0LT5tb2Rl KTsKPiArCj4gKyBwcmltYXJ5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3Rh dGUsIGNydGMtPnByaW1hcnkpOwo+ICsgaWYgKElTX0VSUihwcmltYXJ5X3N0YXRlKSkgewo+ICsg cmV0ID0gUFRSX0VSUihwcmltYXJ5X3N0YXRlKTsKPiArIGdvdG8gZmFpbDsKPiArIH0KPiArCj4g KyByZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwcmltYXJ5X3N0YXRlLCBjcnRj KTsKPiArIGlmIChyZXQgIT0gMCkKPiArIGdvdG8gZmFpbDsKPiArIHByaW1hcnlfc3RhdGUtPmZi ID0gc2V0LT5mYjsKPiArIHByaW1hcnlfc3RhdGUtPmNydGNfeCA9IDA7Cj4gKyBwcmltYXJ5X3N0 YXRlLT5jcnRjX3kgPSAwOwo+ICsgcHJpbWFyeV9zdGF0ZS0+Y3J0Y19oID0gc2V0LT5tb2RlLT52 ZGlzcGxheTsKPiArIHByaW1hcnlfc3RhdGUtPmNydGNfdyA9IHNldC0+bW9kZS0+aGRpc3BsYXk7 Cj4gKyBwcmltYXJ5X3N0YXRlLT5zcmNfeCA9IHNldC0+eCA8PCAxNjsKPiArIHByaW1hcnlfc3Rh dGUtPnNyY195ID0gc2V0LT55IDw8IDE2Owo+ICsgcHJpbWFyeV9zdGF0ZS0+c3JjX2ggPSBzZXQt Pm1vZGUtPnZkaXNwbGF5IDw8IDE2Owo+ICsgcHJpbWFyeV9zdGF0ZS0+c3JjX3cgPSBzZXQtPm1v ZGUtPmhkaXNwbGF5IDw8IDE2Owo+ICsKPiArY29tbWl0Ogo+ICsgcmV0ID0gdXBkYXRlX291dHB1 dF9zdGF0ZShzdGF0ZSwgc2V0KTsKPiArIGlmIChyZXQpCj4gKyBnb3RvIGZhaWw7Cj4gKwo+ICsg cmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsgaWYgKHJldCAhPSAwKQo+ICsgZ290 byBmYWlsOwo+ICsKPiArIC8qIERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3Vj Y2Vzc2Z1bCBjb21taXQuICovCj4gKyByZXR1cm4gMDsKPiArZmFpbDoKPiArIGlmIChyZXQgPT0g LUVERUFETEspCj4gKyBnb3RvIGJhY2tvZmY7Cj4gKwo+ICsgZHJtX2F0b21pY19zdGF0ZV9mcmVl KHN0YXRlKTsKPiArCj4gKyByZXR1cm4gcmV0Owo+ICtiYWNrb2ZmOgo+ICsgZHJtX2F0b21pY19s ZWdhY3lfYmFja29mZihzdGF0ZSk7Cj4gKyBkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsK PiArCj4gKyAvKgo+ICsgKiBTb21lb25lIG1pZ2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBmcmFtZWJ1 ZmZlciB3aGlsZSB3ZSBkcm9wcGVkIGxvY2tzCj4gKyAqIGluIHRoZSBiYWNrb2ZmIGNvZGUuIFdl IG5lZWQgdG8gZml4IHVwIHRoZSBmYiByZWZjb3VudCB0cmFja2luZyB0aGUKPiArICogY29yZSBk b2VzIGZvciB1cy4KPiArICovCj4gKyBjcnRjLT5wcmltYXJ5LT5vbGRfZmIgPSBjcnRjLT5wcmlt YXJ5LT5mYjsKPiArCj4gKyBnb3RvIHJldHJ5Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0 b21pY19oZWxwZXJfc2V0X2NvbmZpZyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxw ZXJfY3J0Y19zZXRfcHJvcGVydHkgLSBoZWxwZXIgZm9yIGNydGMgcHJvcnRpZXMKPiArICogQGNy dGM6IERSTSBjcnRjCj4gKyAqIEBwcm9wZXJ0eTogRFJNIHByb3BlcnR5Cj4gKyAqIEB2YWw6IHZh bHVlIG9mIHByb3BlcnR5Cj4gKyAqCj4gKyAqIFByb3ZpZGVzIGEgZGVmYXVsdCBwbGFuZSBkaXNh YmxsZSBoYW5kbGVyIHVzaW5nIHRoZSBhdG9taWMgZHJpdmVyIGludGVyZmFjZS4KPiArICoKPiAr ICogUkVUVVJOUzoKPiArICogWmVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUK PiArICovCj4gK2ludAo+ICtkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3NldF9wcm9wZXJ0eShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gKyAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwK PiArICAgIHVpbnQ2NF90IHZhbCkKPiArewo+ICsgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlOwo+ICsgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsgaW50IHJldCA9 IDA7Cj4gKwo+ICsgc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGNydGMtPmRldik7Cj4g KyBpZiAoIXN0YXRlKQo+ICsgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgLyogLT5zZXRfcHJvcGVy dHkgaXMgYWx3YXlzIGNhbGxlZCB3aXRoIGFsbCBsb2NrcyBoZWxkLiAqLwo+ICsgc3RhdGUtPmFj cXVpcmVfY3R4ID0gY3J0Yy0+ZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJlX2N0eDsKPiArcmV0cnk6 Cj4gKyBjcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7 Cj4gKyBpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4gKyByZXQgPSBQVFJfRVJSKGNydGNfc3Rh dGUpOwo+ICsgZ290byBmYWlsOwo+ICsgfQo+ICsKPiArIHJldCA9IGNydGMtPmZ1bmNzLT5hdG9t aWNfc2V0X3Byb3BlcnR5KGNydGMsIGNydGNfc3RhdGUsCj4gKyAgICAgICBwcm9wZXJ0eSwgdmFs KTsKPiArIGlmIChyZXQpCj4gKyBnb3RvIGZhaWw7Cj4gKwo+ICsgcmV0ID0gZHJtX2F0b21pY19j b21taXQoc3RhdGUpOwo+ICsgaWYgKHJldCAhPSAwKQo+ICsgZ290byBmYWlsOwo+ICsKPiArIC8q IERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICov Cj4gKyByZXR1cm4gMDsKPiArZmFpbDoKPiArIGlmIChyZXQgPT0gLUVERUFETEspCj4gKyBnb3Rv IGJhY2tvZmY7Cj4gKwo+ICsgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiArCj4gKyBy ZXR1cm4gcmV0Owo+ICtiYWNrb2ZmOgo+ICsgZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0 ZSk7Cj4gKyBkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiArCj4gKyBnb3RvIHJldHJ5 Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY3J0Y19zZXRfcHJvcGVy dHkpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3NldF9wcm9wZXJ0 eSAtIGhlbHBlciBmb3IgcGxhbmUgcHJvcnRpZXMKPiArICogQHBsYW5lOiBEUk0gcGxhbmUKPiAr ICogQHByb3BlcnR5OiBEUk0gcHJvcGVydHkKPiArICogQHZhbDogdmFsdWUgb2YgcHJvcGVydHkK PiArICoKPiArICogUHJvdmlkZXMgYSBkZWZhdWx0IHBsYW5lIGRpc2FibGUgaGFuZGxlciB1c2lu ZyB0aGUgYXRvbWljIGRyaXZlciBpbnRlcmZhY2UuCj4gKyAqCj4gKyAqIFJFVFVSTlM6Cj4gKyAq IFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4gKyAqLwo+ICtpbnQKPiAr ZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICsgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKyAgICB1aW50NjRf dCB2YWwpCj4gK3sKPiArIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiArIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICsgaW50IHJldCA9IDA7Cj4gKwo+ICsg c3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKHBsYW5lLT5kZXYpOwo+ICsgaWYgKCFzdGF0 ZSkKPiArIHJldHVybiAtRU5PTUVNOwo+ICsKPiArIC8qIC0+c2V0X3Byb3BlcnR5IGlzIGFsd2F5 cyBjYWxsZWQgd2l0aCBhbGwgbG9ja3MgaGVsZC4gKi8KPiArIHN0YXRlLT5hY3F1aXJlX2N0eCA9 IHBsYW5lLT5kZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4Owo+ICtyZXRyeToKPiArIHBsYW5l X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiArIGlm IChJU19FUlIocGxhbmVfc3RhdGUpKSB7Cj4gKyByZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsK PiArIGdvdG8gZmFpbDsKPiArIH0KPiArCj4gKyByZXQgPSBwbGFuZS0+ZnVuY3MtPmF0b21pY19z ZXRfcHJvcGVydHkocGxhbmUsIHBsYW5lX3N0YXRlLAo+ICsgICAgICAgcHJvcGVydHksIHZhbCk7 Cj4gKyBpZiAocmV0KQo+ICsgZ290byBmYWlsOwo+ICsKPiArIHJldCA9IGRybV9hdG9taWNfY29t bWl0KHN0YXRlKTsKPiArIGlmIChyZXQgIT0gMCkKPiArIGdvdG8gZmFpbDsKPiArCj4gKyAvKiBE cml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwo+ ICsgcmV0dXJuIDA7Cj4gK2ZhaWw6Cj4gKyBpZiAocmV0ID09IC1FREVBRExLKQo+ICsgZ290byBi YWNrb2ZmOwo+ICsKPiArIGRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwo+ICsgcmV0 dXJuIHJldDsKPiArYmFja29mZjoKPiArIGRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUp Owo+ICsgZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gKwo+ICsgZ290byByZXRyeTsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3NldF9wcm9wZXJ0 eSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3NldF9wcm9w ZXJ0eSAtIGhlbHBlciBmb3IgY29ubmVjdG9yIHByb3J0aWVzCj4gKyAqIEBjb25uZWN0b3I6IERS TSBjb25uZWN0b3IKPiArICogQHByb3BlcnR5OiBEUk0gcHJvcGVydHkKPiArICogQHZhbDogdmFs dWUgb2YgcHJvcGVydHkKPiArICoKPiArICogUHJvdmlkZXMgYSBkZWZhdWx0IHBsYW5lIGRpc2Fi bGxlIGhhbmRsZXIgdXNpbmcgdGhlIGF0b21pYyBkcml2ZXIgaW50ZXJmYWNlLgo+ICsgKgo+ICsg KiBSRVRVUk5TOgo+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZQo+ ICsgKi8KPiAraW50Cj4gK2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHko c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgIHN0cnVjdCBkcm1fcHJvcGVy dHkgKnByb3BlcnR5LAo+ICsgICAgdWludDY0X3QgdmFsKQo+ICt7Cj4gKyBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVj dG9yX3N0YXRlOwo+ICsgaW50IHJldCA9IDA7Cj4gKwo+ICsgc3RhdGUgPSBkcm1fYXRvbWljX3N0 YXRlX2FsbG9jKGNvbm5lY3Rvci0+ZGV2KTsKPiArIGlmICghc3RhdGUpCj4gKyByZXR1cm4gLUVO T01FTTsKPiArCj4gKyAvKiAtPnNldF9wcm9wZXJ0eSBpcyBhbHdheXMgY2FsbGVkIHdpdGggYWxs IGxvY2tzIGhlbGQuICovCj4gKyBzdGF0ZS0+YWNxdWlyZV9jdHggPSBjb25uZWN0b3ItPmRldi0+ bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7Cj4gK3JldHJ5Ogo+ICsgY29ubmVjdG9yX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwo+ICsgaWYg KElTX0VSUihjb25uZWN0b3Jfc3RhdGUpKSB7Cj4gKyByZXQgPSBQVFJfRVJSKGNvbm5lY3Rvcl9z dGF0ZSk7Cj4gKyBnb3RvIGZhaWw7Cj4gKyB9Cj4gKwo+ICsgcmV0ID0gY29ubmVjdG9yLT5mdW5j cy0+YXRvbWljX3NldF9wcm9wZXJ0eShjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwKPiArICAg ICAgIHByb3BlcnR5LCB2YWwpOwo+ICsgaWYgKHJldCkKPiArIGdvdG8gZmFpbDsKPiArCj4gKyBy ZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKyBpZiAocmV0ICE9IDApCj4gKyBnb3Rv IGZhaWw7Cj4gKwo+ICsgLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNj ZXNzZnVsIGNvbW1pdC4gKi8KPiArIHJldHVybiAwOwo+ICtmYWlsOgo+ICsgaWYgKHJldCA9PSAt RURFQURMSykKPiArIGdvdG8gYmFja29mZjsKPiArCj4gKyBkcm1fYXRvbWljX3N0YXRlX2ZyZWUo c3RhdGUpOwo+ICsKPiArIHJldHVybiByZXQ7Cj4gK2JhY2tvZmY6Cj4gKyBkcm1fYXRvbWljX2xl Z2FjeV9iYWNrb2ZmKHN0YXRlKTsKPiArIGRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ ICsKPiArIGdvdG8gcmV0cnk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X2F0b21pY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPiBpbmRl eCA5NzgxY2U3MzllMTAuLjhjZDZmZTdhNDhlNSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljX2hlbHBlci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIu aAo+IEBAIC00OSw0ICs0OSwyNSBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxh bmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dh cF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSk7Cj4KPiArLyogaW1wbGVtZW50YXRpb25zIGZvciBsZWdhY3kgaW50ZXJmYWNl cyAqLwo+ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICsgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKyAgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLAo+ICsgICBpbnQgY3J0Y194LCBpbnQgY3J0Y195LAo+ICsgICB1bnNp Z25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAo+ICsgICB1aW50MzJfdCBzcmNf eCwgdWludDMyX3Qgc3JjX3ksCj4gKyAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCk7 Cj4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lKTsKPiAraW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc3RydWN0IGRybV9t b2RlX3NldCAqc2V0KTsKPiArCj4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3NldF9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKyBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9w ZXJ0eSwKPiArIHVpbnQ2NF90IHZhbCk7Cj4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9z ZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKyBzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpwcm9wZXJ0eSwKPiArIHVpbnQ2NF90IHZhbCk7Cj4gK2ludCBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gKyBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiArIHVpbnQ2NF90IHZhbCk7Cj4g Kwo+ICAjZW5kaWYgLyogRFJNX0FUT01JQ19IRUxQRVJfSF8gKi8KPiAtLQo+IDIuMS4xCj4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK