From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v6 3/7] drm/i915: introduce and use i915_gem_object_vmap_range() Date: Tue, 1 Mar 2016 13:13:29 +0000 Message-ID: <56D59579.2010004@intel.com> References: <1456780572-19196-1-git-send-email-david.s.gordon@intel.com> <1456780572-19196-4-git-send-email-david.s.gordon@intel.com> <56D56B0D.2050704@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 1C3BD6E5F7 for ; Tue, 1 Mar 2016 13:13:31 +0000 (UTC) In-Reply-To: <56D56B0D.2050704@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDEvMDMvMTYgMTA6MTIsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMjkvMDIvMTYg MjE6MTYsIERhdmUgR29yZG9uIHdyb3RlOgo+PiBGcm9tOiBBbGV4IERhaSA8eXUuZGFpQGludGVs LmNvbT4KPj4KPj4gVGhlcmUgYXJlIHNldmVyYWwgcGxhY2VzIGluc2lkZSBkcml2ZXIgd2hlcmUg YSBHRU0gb2JqZWN0IGlzIG1hcHBlZAo+PiB0byBrZXJuZWwgdmlydHVhbCBzcGFjZS4gVGhlIG1h cHBpbmcgbWF5IGJlIGRvbmUgZWl0aGVyIGZvciB0aGUgd2hvbGUKPj4gb2JqZWN0IG9yIG9ubHkg YSBzdWJzZXQgb2YgaXQuCj4+Cj4+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uIGk5 MTVfZ2VtX29iamVjdF92bWFwX3JhbmdlKCkgdG8KPj4gaW1wbGVtZW50IHRoZSBjb21tb24gZnVu Y3Rpb25hbGl0eS4gVGhlIGNvZGUgaXRzZWxmIGlzIGV4dHJhY3RlZCBhbmQKPj4gYWRhcHRlZCBm cm9tIHRoYXQgaW4gdm1hcF9iYXRjaCgpLCBidXQgYWxzbyByZXBsYWNlcyB2bWFwX29iaigpIGFu ZCB0aGUKPj4gb3Blbi1jb2RlZCB2ZXJzaW9uIGluIGk5MTVfZ2VtX2RtYWJ1Zl92bWFwKCkuCj4+ Cj4+IHYyOiB1c2Ugb2JqLT5wYWdlcy0+bmVudHMgZm9yIGl0ZXJhdGlvbiB3aXRoaW4gaTkxNV9n ZW1fb2JqZWN0X3ZtYXA7Cj4+ICAgICAgYnJlYWsgd2hlbiBpdCBmaW5pc2hlcyBhbGwgZGVzaXJl ZCBwYWdlcy4gVGhlIGNhbGxlciBtdXN0IHBhc3MgdGhlCj4+ICAgICAgYWN0dWFsIHBhZ2UgY291 bnQgcmVxdWlyZWQuIFtUdnJ0a28gVXJzdWxpbl0KPj4KPj4gdjQ6IHJlbmFtZWQgdG8gaTkxNV9n ZW1fb2JqZWN0X3ZtYXBfcmFuZ2UoKSB0byBtYWtlIGl0cyBmdW5jdGlvbgo+PiAgICAgIGNsZWFy ZXIuIFtEYXZlIEdvcmRvbl0KPj4KPj4gdjU6IHVzZSBDaHJpcyBXaWxzb24ncyBuZXcgZHJtX21h bGxvY19nZnAoKSByYXRoZXIgdGhhbiBrbWFsbG9jKCkgb3IKPj4gICAgICBkcm1fbWFsbG9jX2Fi KCkuIFtEYXZlIEdvcmRvbl0KPj4KPj4gdjY6IGNoYW5nZWQgcmFuZ2UgY2hlY2tpbmcgdG8gbm90 IHVzZSBwYWdlcy0+bmVudHMuIFtUdnJ0a28gVXJzdWxpbl0KPj4gICAgICBVc2Ugc2dfbmVudHNf Zm9yX2xlbigpIGZvciByYW5nZSBjaGVjayBpbnN0ZWFkLiBbRGF2ZSBHb3Jkb25dCj4+ICAgICAg UGFzcyByYW5nZSBwYXJhbWV0ZXJzIGluIGJ5dGVzIHJhdGhlciB0aGFuIHBhZ2VzIChib3RoIGNh bGxlcnMKPj4gICAgICB3ZXJlIGNvbnZlcnRpbmcgZnJvbSBieXRlcyB0byBwYWdlcyBhbnl3YXks IHNvIHRoaXMgcmVkdWNlcyB0aGUKPj4gICAgICBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHRoZSBj b252ZXJzaW9uIGlzIGRvbmUpLgo+Pgo+PiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBoYXZlIG9ubHkg b25lIHZtYXAoKSBpbiB0aGUgd2hvbGUgZHJpdmVyIDopCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFs ZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRvbiA8 ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+PiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51 cnN1bGluQGludGVsLmNvbT4KPj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgo+PiAtLS0KCltzbmlwXQoKPj4gKy8qKgo+PiArICogaTkxNV9nZW1fb2JqZWN0X3Zt YXBfcmFuZ2UgLSBtYXAgc29tZSBvciBhbGwgb2YgYSBHRU0gb2JqZWN0IGludG8KPj4ga2VybmVs IHNwYWNlCj4+ICsgKiBAb2JqOiB0aGUgR0VNIG9iamVjdCB0byBiZSBtYXBwZWQKPj4gKyAqIEBz dGFydDogb2Zmc2V0IGluIGJ5dGVzIG9mIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgdG8gYmUgbWFw cGVkCj4+ICsgKiBAbGVuOiBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIHJhbmdlIHRvIGJlIG1hcHBl ZAo+Cj4ga2J1aWxkIHNwb3R0ZWQgdGhpcyBrZXJuZWxkb2MgaXNzdWUuCgpBaCB5ZXMsIHRoYXQg cGFyYW1ldGVyIGdvdCByZW5hbWVkCgo+PiArICoKPj4gKyAqIE1hcCBhIGdpdmVuIHJhbmdlIG9m IGEgR0VNIG9iamVjdCBpbnRvIGtlcm5lbCB2aXJ0dWFsIHNwYWNlLiBUaGUKPj4gcmFuZ2Ugd2ls bAo+PiArICogYmUgZXh0ZW5kZWQgYXQgYm90aCBlbmRzLCBpZiBuZWNlc3NhcnksIHRvIHNwYW4g YSB3aG9sZSBudW1iZXIgb2YKPj4gcGFnZXMuIFRoZQo+PiArICogY2FsbGVyIG11c3QgbWFrZSBz dXJlIHRoZSBhc3NvY2lhdGVkIHBhZ2VzIGFyZSBnYXRoZXJlZCBhbmQgcGlubmVkCj4+IGJlZm9y ZQo+PiArICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbmQgaXMgcmVzcG9uc2libGUgZm9yIHVu bWFwcGluZyB0aGUKPj4gcmV0dXJuZWQgYWRkcmVzcwo+PiArICogd2hlbiBpdCBpcyBubyBsb25n ZXIgcmVxdWlyZWQuCj4+ICsgKgo+PiArICogUmV0dXJucyB0aGUgYWRkcmVzcyBhdCB3aGljaCB0 aGUgb2JqZWN0IGhhcyBiZWVuIG1hcHBlZCwgb3IgTlVMTAo+PiBvbiBmYWlsdXJlLgo+PiArICov Cj4+ICt2b2lkICppOTE1X2dlbV9vYmplY3Rfdm1hcF9yYW5nZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+PiArICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+ PiArICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5ieXRlcykKPj4gK3sKPj4gKyAgICBz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gb2JqLT5wYWdlcy0+c2dsOwo+PiArICAgIHN0cnVjdCBz Z19wYWdlX2l0ZXIgc2dfaXRlcjsKPj4gKyAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+PiArICAg IHVuc2lnbmVkIGxvbmcgZmlyc3QsIG5wYWdlcywgaTsKPj4gKyAgICBpbnQgbmVudHM7Cj4+ICsg ICAgdm9pZCAqYWRkcjsKPj4gKwo+PiArICAgIC8qIENoZWNrIHJlcXVlc3RlZCByYW5nZSBhZ2Fp bnN0IHVuZGVybHlpbmcgc2cgbGlzdCAqLwo+PiArICAgIG5lbnRzID0gc2dfbmVudHNfZm9yX2xl bihzZywgc3RhcnQgKyBuYnl0ZXMpOwo+PiArICAgIGlmIChuZW50cyA8IDApIHsKPj4gKyAgICAg ICAgRFJNX0RFQlVHX0RSSVZFUigiSW52YWxpZCBwYWdlIGNvdW50XG4iKTsKPj4gKyAgICAgICAg cmV0dXJuIE5VTEw7Cj4+ICsgICAgfQo+Cj4gSSB0aGluayB0aGlzIGlzIG5lZWRsZXNzIG92ZXJo ZWFkLiBUaGUgaGVscGVyIHdpbGwgaXRlcmF0ZSB0aGUgd2hvbGUgc2cKPiBjaGFpbiB3aGlsZSB3 ZSBrbm93IHRoZSBzaXplIGluIG9iai0+YmFzZS5zaXplIGFuZCBmaW5kaW5nIG91dCB0aGUgcmVh bAo+IG5lbnRzIGlzIG9mIGxpdHRsZSAobm8pIHVzZSB0byB0aGUgY29kZSBiZWxvdy4KCkl0IHdh cyBtb3JlIG9mIGEgY29uc2lzdGVuY3kgY2hlY2sgYmV0d2VlbiB0aGUgR0VNIG9iamVjdCBvbiB0 aGUgb25lIApoYW5kLCBhbmQgdGhlIFNHbGlzdCBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgb3RoZXI7 IHNpbmNlIG5vbmUgb2YgdGhlIApvdGhlciBTRyBpbnRlcmZhY2VzIGFjdHVhbGx5IHdvcmsgaW4g YW55IHVzZWZ1bCBxdWFudGl0aWVzIChlLmcuIHBhZ2VzIApvciBieXRlczsgJ25lbnRzJyBpcyBw YXJ0aWN1bGFybHkgdXNlbGVzcywgYXMgaXQgaXMgYWZmZWN0ZWQgYnkgdGhlIApkZXRhaWxzIG9m IHRoZSB3YXkgdGhlIHVuZGVybHlpbmcgcGFnZXMgaGF2ZSBiZWVuIG1hcHBlZCwgaW4gcGFydGlj dWxhciAKaG93IG1hbnkgc2VwYXJhdGUgY2h1bmtzIHRoZXkncmUgaW4pLgoKPj4gKwo+PiArICAg IC8qIFdvcmsgaW4gcGFnZXMgZnJvbSBub3cgb24gKi8KPj4gKyAgICBmaXJzdCA9IHN0YXJ0ID4+ IFBBR0VfU0hJRlQ7Cj4+ICsgICAgbnBhZ2VzID0gRElWX1JPVU5EX1VQKHN0YXJ0ICsgbmJ5dGVz LCBQQUdFX1NJWkUpIC0gZmlyc3Q7Cj4KPiBBbmQgdGhpcyBsb29rcyBsaWtlIHdlYWsgQVBJIGlm IHRoZSBjYWxsZXIgY2FuIHBhc3Mgbm9uIHBhZ2UgYWxpZ25lZAo+IHN0YXJ0IGFuZCBzaXplIGFu ZCB0aGUgZnVuY3Rpb24gd2lsbCBzaWxlbnRseSB2bWFwIHNvbWV0aGluZyBlbHNlLgo+Cj4gSXQg c2hvdWxkIGFzc2VydCBhbmQgZmFpbCBvbiBib3RoIEkgdGhpbmssIG9yIGl0IG1heSBoYXZlIGJl ZW4gc2ltcGxlcgo+IHRvIGtlZXAgaXQgd29ya2luZyBpbiBwYWdlIHVuaXRzLgoKSXQgaXMgZXhh Y3RseSB0aGUgQVBJIHJlcXVpcmVkIGJ5IGNvcHlfYmF0Y2goKSAod2hpY2ggaXMgd2hlcmUgdGhp cyBjb2RlIApjYW1lIGZyb20pLCBhbmQgaXQncyBhIHBlcmZlY3RseSB3ZWxsLWRlZmluZWQgQVBJ OiB0aGUgc3RhcnQgb2Zmc2V0IGlzIApyb3VuZGVkIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBj b250YWluaW5nIHBhZ2UsIHRoZSBlbmQgYWRkcmVzcyAoc3RhcnQgCisgbGVuKSBpcyByb3VuZGVk IHVwIHRvIHRoZSBuZXh0IHBhZ2UgYm91bmRhcnksIGFuZCB0aGF0IGRlZmluZXMgd2hhdCAKZ2V0 cyBtYXBwZWQgaS5lLiB0aGUgc21hbGxlc3QgcGFnZS1hbGlnbmVkIHJlZ2lvbiBjb250YWluaW5n IHRoZSByYW5nZSAKc3BlY2lmaWVkLgoKQnV0IEkgY291bGQgbGV0IChhbGwpIHRoZSBjYWxsZXJz IGRvIHRoYXQgY29udmVyc2lvbiBpbnN0ZWFkIC4uLgoKPj4gKyAgICBwYWdlcyA9IGRybV9tYWxs b2NfZ2ZwKG5wYWdlcywgc2l6ZW9mKCpwYWdlcyksIEdGUF9URU1QT1JBUlkpOwo+PiArICAgIGlm IChwYWdlcyA9PSBOVUxMKSB7Cj4+ICsgICAgICAgIERSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0 byBnZXQgc3BhY2UgZm9yIHBhZ2VzXG4iKTsKPj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgaSA9IDA7Cj4+ICsgICAgZm9yX2VhY2hfc2dfcGFnZShzZywgJnNn X2l0ZXIsIG5lbnRzLCBmaXJzdCkgewo+PiArICAgICAgICBwYWdlc1tpXSA9IHNnX3BhZ2VfaXRl cl9wYWdlKCZzZ19pdGVyKTsKPj4gKyAgICAgICAgaWYgKCsraSA+PSBucGFnZXMpCj4+ICsgICAg ICAgICAgICBicmVhazsKPj4gKyAgICB9Cj4+ICsgICAgV0FSTl9PTihpICE9IG5wYWdlcyk7Cj4+ ICsKPj4gKyAgICBhZGRyID0gdm1hcChwYWdlcywgbnBhZ2VzLCAwLCBQQUdFX0tFUk5FTCk7Cj4+ ICsgICAgaWYgKGFkZHIgPT0gTlVMTCkKPj4gKyAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiRmFp bGVkIHRvIHZtYXAgcGFnZXNcbiIpOwo+PiArICAgIGRybV9mcmVlX2xhcmdlKHBhZ2VzKTsKPj4g Kwo+PiArICAgIHJldHVybiBhZGRyOwo+PiArfQo+PiArCj4+ICAgdm9pZCBpOTE1X3ZtYV9tb3Zl X3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPj4gICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+PiAgIHsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPj4gaW5kZXggMWYzZWVmNi4uYWVlNDE0OSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPj4gQEAgLTExMCw5ICsxMTAs NyBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fZG1hYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYKPj4g KmRtYV9idWYpCj4+ICAgewo+PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gZG1hX2J1Zl90b19vYmooZG1hX2J1Zik7Cj4+ICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBvYmotPmJhc2UuZGV2Owo+PiAtICAgIHN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsK Pj4gLSAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+PiAtICAgIGludCByZXQsIGk7Cj4+ICsgICAg aW50IHJldDsKPj4KPj4gICAgICAgcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUo ZGV2KTsKPj4gICAgICAgaWYgKHJldCkKPj4gQEAgLTEzMSwxNiArMTI5LDggQEAgc3RhdGljIHZv aWQgKmk5MTVfZ2VtX2RtYWJ1Zl92bWFwKHN0cnVjdCBkbWFfYnVmCj4+ICpkbWFfYnVmKQo+Pgo+ PiAgICAgICByZXQgPSAtRU5PTUVNOwo+Pgo+PiAtICAgIHBhZ2VzID0gZHJtX21hbGxvY19hYihv YmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZULCBzaXplb2YoKnBhZ2VzKSk7Cj4+IC0gICAgaWYg KHBhZ2VzID09IE5VTEwpCj4+IC0gICAgICAgIGdvdG8gZXJyX3VucGluOwo+PiAtCj4+IC0gICAg aSA9IDA7Cj4+IC0gICAgZm9yX2VhY2hfc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wsICZzZ19pdGVy LCBvYmotPnBhZ2VzLT5uZW50cywgMCkKPj4gLSAgICAgICAgcGFnZXNbaSsrXSA9IHNnX3BhZ2Vf aXRlcl9wYWdlKCZzZ19pdGVyKTsKPj4gLQo+PiAtICAgIG9iai0+ZG1hX2J1Zl92bWFwcGluZyA9 IHZtYXAocGFnZXMsIGksIDAsIFBBR0VfS0VSTkVMKTsKPj4gLSAgICBkcm1fZnJlZV9sYXJnZShw YWdlcyk7Cj4+ICsgICAgb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0gaTkxNV9nZW1fb2JqZWN0X3Zt YXBfcmFuZ2Uob2JqLCAwLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2J1Zi0+c2l6 ZSA+PiBQQUdFX1NISUZUKTsKPgo+IFRoaXMgaXMgc3RpbGwgaW4gcGFnZXMuIChBbHRob3VnaCBh cyBzYWlkIGJlbG93IEkgdGhpbmsgaXQgc2hvdWxkIHJlbWFpbgo+IGFuZCBBUEkgYmUgcmV2ZXJ0 ZWQgYmFjay4pCgpBaCB5ZXMsIEkgbWlzc2VkIHRoaXMgY2FsbCBhbmQgdGhlIG9uZSBiZWxvdywg J2NvcyB0aGV5IGdldCBmaXhlZCB1cCBieSAKdGhlIGxhc3QgcGF0Y2ggb2YgdGhlIHNlcmllcyAo d2hpY2ggKmRvZXMqIGFkb3B0IHRoZSBuZXcgaW50ZXJmYWNlKS4KCj4+ICAgICAgIGlmICghb2Jq LT5kbWFfYnVmX3ZtYXBwaW5nKQo+PiAgICAgICAgICAgZ290byBlcnJfdW5waW47Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gaW5kZXggNDVjZTQ1YS4uNDM0 YTQ1MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiBA QCAtMjA2NCwyNyArMjA2NCw2IEBAIHZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3Ry dWN0Cj4+IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICAgICAgIGk5MTVfZ2VtX29iamVj dF9nZ3R0X3VucGluKHJpbmdidWYtPm9iaik7Cj4+ICAgfQo+Pgo+PiAtc3RhdGljIHUzMiAqdm1h cF9vYmooc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gLXsKPj4gLSAgICBzdHJ1 Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7Cj4+IC0gICAgc3RydWN0IHBhZ2UgKipwYWdlczsKPj4g LSAgICB2b2lkICphZGRyOwo+PiAtICAgIGludCBpOwo+PiAtCj4+IC0gICAgcGFnZXMgPSBkcm1f bWFsbG9jX2FiKG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQsIHNpemVvZigqcGFnZXMpKTsK Pj4gLSAgICBpZiAocGFnZXMgPT0gTlVMTCkKPj4gLSAgICAgICAgcmV0dXJuIE5VTEw7Cj4+IC0K Pj4gLSAgICBpID0gMDsKPj4gLSAgICBmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNnbCwg JnNnX2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKQo+PiAtICAgICAgICBwYWdlc1tpKytdID0g c2dfcGFnZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpOwo+PiAtCj4+IC0gICAgYWRkciA9IHZtYXAocGFn ZXMsIGksIDAsIFBBR0VfS0VSTkVMKTsKPj4gLSAgICBkcm1fZnJlZV9sYXJnZShwYWdlcyk7Cj4+ IC0KPj4gLSAgICByZXR1cm4gYWRkcjsKPj4gLX0KPj4gLQo+PiAgIGludCBpbnRlbF9waW5fYW5k X21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+PiAgIHsKPj4g QEAgLTIxMDMsNyArMjA4Miw4IEBAIGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29i aihzdHJ1Y3QKPj4gZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+ICAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSB2 bWFwX29iaihvYmopOwo+PiArICAgICAgICByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID0gaTkxNV9n ZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg cmluZ2J1Zi0+c2l6ZSA+PiBQQUdFX1NISUZUKTsKPgo+IEhlcmUgYWxzby4KCkFjdHVhbGx5IC4u LiBpZiB3ZSB3b3JrIGluIHBhZ2VzIGJ1dCBhZG9wdCBhIGNvbnZlbnRpb24gdGhhdCBsZW5ndGg9 PTAgCm1lYW5zICJ0aGUgd2hvbGUgb2JqZWN0IiB0aGVuIG9ubHkgY29weV9iYXRjaCgpIHdvdWxk IGhhdmUgdG8gZG8gYW55IApwYWdlLWFsaWduaW5nIGNhbGN1bGF0aW9uczsgYWxsIG90aGVyIGNh bGxlcnMgYWx3YXlzIHdhbnQgdGhlIHdob2xlIApvYmplY3Qgc28gaXQncyBuaWNlIHRvIG1ha2Ug dGhlIGludGVyZmFjZSBjb252ZW5pZW50IGZvciB0aGVtIDopCgpJJ2xsIHNlZSBob3cgdGhhdCB3 b3JrcyBvdXQgLi4uCgouRGF2ZS4KCj4+ICAgICAgICAgICBpZiAocmluZ2J1Zi0+dmlydHVhbF9z dGFydCA9PSBOVUxMKSB7Cj4+ICAgICAgICAgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5w aW4ob2JqKTsKPj4gICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4KPgo+IFJlZ2FyZHMs Cj4gVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK