From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v5 7/7] drm/i915: refactor duplicate object vmap functions (reworked some more) Date: Mon, 29 Feb 2016 20:42:25 +0000 Message-ID: <56D4AD31.5020704@intel.com> References: <1456744394-29831-1-git-send-email-david.s.gordon@intel.com> <1456744394-29831-8-git-send-email-david.s.gordon@intel.com> <56D43B5C.3020608@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 71D226E36E for ; Mon, 29 Feb 2016 20:42:28 +0000 (UTC) In-Reply-To: <56D43B5C.3020608@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 T24gMjkvMDIvMTYgMTI6MzYsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMjkvMDIvMTYg MTE6MTMsIERhdmUgR29yZG9uIHdyb3RlOgo+PiBUaGlzIGlzIGVzc2VudGlhbGx5IENocmlzIFdp bHNvbidzIHBhdGNoIG9mIGEgc2ltaWxhciBuYW1lLCByZXdvcmtlZCBvbgo+PiB0b3Agb2YgQWxl eCBEYWkncyByZWNlbnQgcGF0Y2g6Cj4+PiBkcm0vaTkxNTogQWRkIGk5MTVfZ2VtX29iamVjdF92 bWFwIHRvIG1hcCBHRU0gb2JqZWN0IHRvIHZpcnR1YWwgc3BhY2UKPj4gQ2hyaXMnIG9yaWdpbmFs IGNvbW1lbnRhcnkgc2FpZDoKPj4KPj4+IFdlIG5vdyBoYXZlIHR3byBpbXBsZW1lbnRhdGlvbnMg Zm9yIHZtYXBwaW5nIGEgd2hvbGUgb2JqZWN0LCBvbmUgZm9yCj4+PiBkbWEtYnVmIGFuZCBvbmUg Zm9yIHRoZSByaW5nYnVmZmVyLiBJZiB3ZSBjb3VwbGUgdGhlIHZtYXBwaW5nIGludG8KPj4+IHRo ZSBvYmotPnBhZ2VzIGxpZmV0aW1lLCB0aGVuIHdlIGNhbiByZXVzZSBhbiBvYmotPnZtYXBwaW5n IGZvciBib3RoCj4+PiBhbmQgYXQgdGhlIHNhbWUgdGltZSBjb3VwbGUgaXQgaW50byB0aGUgc2hy aW5rZXIuCj4+Pgo+Pj4gdjI6IE1hcmsgdGhlIGZhaWxhYmxlIGttYWxsb2MoKSBhcyBfX0dGUF9O T1dBUk4gKHZzeXJqYWxhKQo+Pj4gdjM6IENhbGwgdW5waW5fdm1hcCBmcm9tIHRoZSByaWdodCBk bWFidWYgdW5tYXBwZXIKPj4KPj4gdjQ6IHJlaW1wbGVtZW50cyB0aGUgc2FtZSBmdW5jdGlvbmFs aXR5LCBidXQgbm93IGFzIHdyYXBwZXJzIHJvdW5kIHRoZQo+PiAgICAgIHJlY2VudGx5LWludHJv ZHVjZWQgaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2UoKSBmcm9tIEFsZXgncyBwYXRjaAo+PiAg ICAgIG1lbnRpb25lZCBhYm92ZS4KPj4KPj4gdjU6IHNlcGFyYXRlZCBmcm9tIHR3byBtaW5vciBi dXQgdW5yZWxhdGVkIGNoYW5nZXMgW1R2cnRrbyBVcnN1bGluXTsKPj4gICAgICB0aGlzIGlzIHRo ZSB0aGlyZCBhbmQgbW9zdCBzdWJzdGFudGlhbCBwb3J0aW9uLgo+Pgo+PiAgICAgIERlY2lkZWQg bm90IHRvIGhvbGQgb250byB2bWFwcGluZ3MgYWZ0ZXIgdGhlIHBpbiBjb3VudCBnb2VzIHRvIHpl cm8uCj4+ICAgICAgVGhpcyBtYXkgcmVkdWNlIHRoZSBiZW5lZml0IG9mIENocmlzJyBzY2hlbWUg YSBiaXQsIGJ1dCBkb2VzIGF2b2lkCj4+ICAgICAgYW55IGluY3JlYXNlZCByaXNrIG9mIGV4aGF1 c3Rpbmcga2VybmVsIHZtYXAgc3BhY2Ugb24gMzItYml0IGtlcm5lbHMKPj4gICAgICBbVHZydGtv IFVyc3VsaW5dLiBQb3RlbnRpYWxseSwgdGhlIHZ1bm1hcCgpIGNvdWxkIGJlIGRlZmVycmVkIHVu dGlsCj4+ICAgICAgdGhlIHB1dF9wYWdlcygpIHN0YWdlIGlmIGEgc3VpdGFibGUgbm90aWZpZXIg d2VyZSB3cml0dGVuLCBidXQgd2UncmUKPj4gICAgICBub3QgZG9pbmcgdGhhdCBoZXJlLiBOb25l dGhlbGVzcywgdGhlIHNpbXBsaWZpY2F0aW9uIG9mIGJvdGggZG1hYnVmCj4+ICAgICAgYW5kIHJp bmdidWZmZXIgY29kZSBtYWtlcyBpdCB3b3J0aHdoaWxlIGluIGl0cyBvd24gcmlnaHQuCj4+Cj4+ IFdpdGggdGhpcyBjaGFuZ2UsIHdlIGhhdmUgb25seSBvbmUgdm1hcCgpIGluIHRoZSB3aG9sZSBk cml2ZXIgOikKPgo+IFRoZSBhYm92ZSBsaW5lIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgcGF0Y2gg YWZ0ZXIgdGhlIHNwbGl0IGFueSBtb3JlLiA6KQoKWWVzLCBhY3R1YWxseSB0aGF0IGNvbW1lbnQg bm93IGFwcGxpZXMgdG8gcGF0Y2ggWzMvN10gd2hpY2ggdW5pZmllZCB0aGUgCnZhcmlvdXMgdm1h cCBjYWxsZXJzIGludG8gaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2UoKSBhbmQgdGhlbiB0aGlz IApwYXRjaCB3cmFwcyB0aGF0IGFuZCBidW5kbGVzIGl0IHdpdGggZ2V0X3BhZ2VzKCkgYW5kIHBp bl9wYWdlcygpIC4uLiAKdGhlcmUgd2lsbCBzdGlsbCBiZSBvbmUgbW9yZSByZXNwaW4sIHNvIEkn bGwgdHdlYWsgdGhlIG1lc3NhZ2UgYSBiaXQgbW9yZSA6KQoKPj4KPj4gU2lnbmVkLW9mZi1ieTog RGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPj4gQ2M6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBDYzogQWxleCBEYWkgPHl1LmRhaUBpbnRl bC5jb20+Cj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAyMiAr KysrKysrKysrKysrKystLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICB8IDM2Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgIHwgMzcKPj4gKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIHwgMTAgKysrKy0tLS0tCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCA0MyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ IGluZGV4IDkxOGIwYmIuLjdmYWNkYjUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiBAQCAtMjE3MiwxMCArMjE3Miw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPj4g ICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4+ICAgICAgICAgICBpbnQgbGFzdDsK Pj4gICAgICAgfSBnZXRfcGFnZTsKPj4gLQo+PiAtICAgIC8qIHByaW1lIGRtYS1idWYgc3VwcG9y dCAqLwo+PiAtICAgIHZvaWQgKmRtYV9idWZfdm1hcHBpbmc7Cj4+IC0gICAgaW50IHZtYXBwaW5n X2NvdW50Owo+PiArICAgIHZvaWQgKnZtYXBwaW5nOwo+Pgo+PiAgICAgICAvKiogQnJlYWRjcnVt YiBvZiBsYXN0IHJlbmRlcmluZyB0byB0aGUgYnVmZmVyLgo+PiAgICAgICAgKiBUaGVyZSBjYW4g b25seSBiZSBvbmUgd3JpdGVyLCBidXQgd2UgYWxsb3cgZm9yIG11bHRpcGxlIHJlYWRlcnMuCj4+ IEBAIC0yOTgwLDcgKzI5NzcsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkCj4+IGk5MTVfZ2VtX29i amVjdF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gICBzdGF0 aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdAo+PiBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgewo+PiAgICAgICBCVUdfT04ob2JqLT5wYWdlc19w aW5fY291bnQgPT0gMCk7Cj4+IC0gICAgb2JqLT5wYWdlc19waW5fY291bnQtLTsKPj4gKyAgICBp ZiAoLS1vYmotPnBhZ2VzX3Bpbl9jb3VudCA9PSAwICYmIG9iai0+dm1hcHBpbmcpIHsKPj4gKyAg ICAgICAgLyoKPj4gKyAgICAgICAgICogUmVsZWFzaW5nIHRoZSB2bWFwcGluZyBoZXJlIG1heSB5 aWVsZCBsZXNzIGJlbmVmaXQgdGhhbgo+PiArICAgICAgICAgKiBpZiB3ZSBrZXB0IGl0IHVudGls IHB1dF9wYWdlcygpLCBidXQgb24gdGhlIG90aGVyIGhhbmQKPj4gKyAgICAgICAgICogYXZvaWRz IGlzc3VlcyBvZiBleGhhdXN0aW5nIGtlcm5lbCB2bWFwcGFibGUgYWRkcmVzcwo+PiArICAgICAg ICAgKiBzcGFjZSBvbiAzMi1iaXQga2VybmVscy4KPj4gKyAgICAgICAgICovCj4+ICsgICAgICAg IHZ1bm1hcChvYmotPnZtYXBwaW5nKTsKPj4gKyAgICAgICAgb2JqLT52bWFwcGluZyA9IE5VTEw7 Cj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICt2b2lkICpfX211c3RfY2hlY2sgaTkxNV9nZW1fb2Jq ZWN0X3Bpbl92bWFwKHN0cnVjdAo+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiArc3Rh dGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKHN0cnVjdAo+PiBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICt7Cj4+ICsgICAgaTkxNV9nZW1fb2JqZWN0X3VucGlu X3BhZ2VzKG9iaik7Cj4+ICAgfQo+Pgo+PiAgIHZvaWQgKl9fbXVzdF9jaGVjayBpOTE1X2dlbV9v YmplY3Rfdm1hcF9yYW5nZShzdHJ1Y3QKPj4gZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggYzEyNjIxMS4uNzlkM2Q1YiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0yMjM1LDYgKzIyMzUsOCBAQCBzdGF0aWMg dm9pZAo+PiBpOTE1X2dlbV9vYmplY3RfZnJlZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+PiAgICAgICBvcHMtPnB1dF9wYWdlcyhvYmopOwo+PiAgICAgICBv YmotPnBhZ2VzID0gTlVMTDsKPj4KPj4gKyAgICBCVUdfT04ob2JqLT52bWFwcGluZyk7Cj4+ICsK Pgo+IERvIHdlIGtub3cgZm9yIGNlcnRhaW4ga2VybmVsIHdpbGwgY3Jhc2ggYW5kIG5vdCBqdXN0 IG1heWJlIGxlYWsgYQo+IHZtYXBwaW5nPyBJIHRoaW5rIG5vdCBzbyB3b3VsZCBiZSBiZXR0ZXIg dG8ganVzdCBXQVJOLgo+Cj4gTWF5YmUgZXZlbiBXQVJOX09OIGFuZCByZXR1cm4gLUVCVVNZIGhp Z2hlciB1cCwgYXMgdGhlIGZ1bmN0aW9uIGFscmVhZHkKPiBkb2VzIGZvciBvYmotPnBhZ2VzX3Bp bl9jb3VudD8KClRoaXMgQlVHX09OIG1hcmtzIHRoZSBwb2ludCB3aGVyZSBDaHJpcyBvcmlnaW5h bGx5IGhhZCB0aGUgdnVubWFwKCksIApiZWZvcmUgd2UgcmVhbGlzZWQgaXQgd291bGQgbmVlZCBh IG5ldyBub3RpZmllciBhbmQgZGVjaWRlZCB0byBkcm9wIHRoZSAKbWFwcGluZyBpbiBpOTE1X2dl bV9vYmplY3RfdW5waW5fcGFnZXMoKSBpbnN0ZWFkLiBJdCB3YXMgcmVhbGx5IGp1c3QgCnRoZXJl IGZvciBtZSB0byBjaGVjayB0aGF0IHlvdSBjb3VsZG4ndCByZWFjaCBwdXRfcGFnZXMoKSB3aXRo b3V0IGhhdmluZyAKZ29uZSB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gKGUuZy4gcGxheWluZyB3aXRo IHBhZ2VzX3Bpbl9jb3VudCkuCgpIbW0gLi4uIGFjdHVhbGx5IHRoZXJlICppcyogYSBwYXRoIHdo ZXJlIHBhZ2VzX3Bpbl9jb3VudCBnZXRzIHNldCB0byAKemVybyBvdGhlciB0aGFuIGJ5IGk5MTVf Z2VtX29iamVjdF91bnBpbl9wYWdlcygpIDooCgpJZiB5b3UgdHJ5IHRvIGZyZWUgYSBwaW5uZWQg b2JqZWN0LCB5b3UgZ2V0IGEgV0FSTklORywgYnV0IHRoZW4gCmk5MTVfZ2VtX2ZyZWVfb2JqZWN0 KCkgd2lsbCBmb3JjZSBwYWdlc19waW5fY291bnQgdG8gMCBhbnl3YXksIGFuZCB0aGVuIApjYWxs IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoKSwgd2hpY2ggd291bGQgZGVmaW5pdGVseSB0cmln Z2VyIHRoZSAKQlVHX09OKCkuCgpTbyBJIHRoaW5rIEknbGwgbWFrZSBpdCBhIFdBUk5fT04oKSBh bmQgdGhlbiByZWxlYXNlIHRoZSBtYXBwaW5nIGFueXdheS4gClRoZW4gaWYgYW55b25lIHdhbnRz IHRvIGV4dGVuZCB0aGUgdm1hcCBsaWZldGltZSBiYWNrIHRvIGFzIENocmlzIGhhZCAKb3JpZ2lu YWxseSBpdCwgaXQncyBqdXN0IGEgbWF0dGVyIG9mIHJlbW92aW5nIHRoZSBXQVJOaW5nIGhlcmUg YW5kIHRoZSAKZWFybHktdW5tYXAgY29kZSBpbiBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo KS4KCi5EYXZlLgoKPj4gICAgICAgaTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUob2JqKTsKPj4K Pj4gICAgICAgcmV0dXJuIDA7Cj4+IEBAIC0yNDUyLDYgKzI0NTQsNDAgQEAgdm9pZCAqaTkxNV9n ZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uoc3RydWN0Cj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK Pj4gICAgICAgcmV0dXJuIGFkZHI7Cj4+ICAgfQo+Pgo+PiArLyoqCj4+ICsgKiBpOTE1X2dlbV9v YmplY3RfcGluX3ZtYXAgLSBwaW4gYSBHRU0gb2JqZWN0IGFuZCBtYXAgaXQgaW50byBrZXJuZWwK Pj4gc3BhY2UKPj4gKyAqIEBvYmo6IHRoZSBHRU0gb2JqZWN0IHRvIGJlIG1hcHBlZAo+PiArICoK Pj4gKyAqIENvbWJpbmVzIHRoZSBmdW5jdGlvbnMgb2YgZ2V0X3BhZ2VzKCksIHBpbl9wYWdlcygp IGFuZAo+PiB2bWFwX3JhbmdlKCkgb24KPj4gKyAqIHRoZSB3aG9sZSBvYmplY3QuICBUaGUgY2Fs bGVyIHNob3VsZCByZWxlYXNlIHRoZSBtYXBwaW5nIGJ5IGNhbGxpbmcKPj4gKyAqIGk5MTVfZ2Vt X29iamVjdF91bnBpbl92bWFwKCkgd2hlbiBpdCBpcyBubyBsb25nZXIgcmVxdWlyZWQuCj4+ICsg Kgo+PiArICogUmV0dXJucyB0aGUgYWRkcmVzcyBhdCB3aGljaCB0aGUgb2JqZWN0IGhhcyBiZWVu IG1hcHBlZCwgb3IgYW4KPj4gRVJSX1BUUgo+PiArICogb24gZmFpbHVyZS4KPj4gKyAqLwo+PiAr dm9pZCAqaTkxNV9nZW1fb2JqZWN0X3Bpbl92bWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4+ICt7Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiArICAgIHJldCA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZXMob2JqKTsKPj4gKyAgICBpZiAocmV0KQo+PiArICAgICAgICByZXR1 cm4gRVJSX1BUUihyZXQpOwo+PiArCj4+ICsgICAgaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhv YmopOwo+PiArCj4+ICsgICAgaWYgKG9iai0+dm1hcHBpbmcgPT0gTlVMTCkgewo+PiArICAgICAg ICBvYmotPnZtYXBwaW5nID0gaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAo+PiAr ICAgICAgICAgICAgICAgICAgICBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUKTsKPj4gKwo+ PiArICAgICAgICBpZiAob2JqLT52bWFwcGluZyA9PSBOVUxMKSB7Cj4+ICsgICAgICAgICAgICBp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPj4gKyAgICAgICAgICAgIHJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmV0 dXJuIG9iai0+dm1hcHBpbmc7Cj4+ICt9Cj4+ICsKPj4gICB2b2lkIGk5MTVfdm1hX21vdmVfdG9f YWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+PiAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+ICAgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9kbWFidWYuYwo+PiBpbmRleCA2OGUyMWQxLi5hZGM3YjVlIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+PiBAQCAtMTA4LDQxICsxMDgsMTcg QEAgc3RhdGljIHZvaWQgKmk5MTVfZ2VtX2RtYWJ1Zl92bWFwKHN0cnVjdCBkbWFfYnVmCj4+ICpk bWFfYnVmKQo+PiAgIHsKPj4gICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IGRtYV9idWZfdG9fb2JqKGRtYV9idWYpOwo+PiAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gb2JqLT5iYXNlLmRldjsKPj4gKyAgICB2b2lkICphZGRyOwo+PiAgICAgICBpbnQgcmV0Owo+ Pgo+PiAgICAgICByZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+PiAg ICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4KPj4gLSAg ICBpZiAob2JqLT5kbWFfYnVmX3ZtYXBwaW5nKSB7Cj4+IC0gICAgICAgIG9iai0+dm1hcHBpbmdf Y291bnQrKzsKPj4gLSAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+PiAtICAgIH0KPj4gLQo+PiAt ICAgIHJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPj4gLSAgICBpZiAocmV0 KQo+PiAtICAgICAgICBnb3RvIGVycjsKPj4gLQo+PiAtICAgIGk5MTVfZ2VtX29iamVjdF9waW5f cGFnZXMob2JqKTsKPj4gLQo+PiAtICAgIHJldCA9IC1FTk9NRU07Cj4+IC0KPj4gLSAgICBvYmot PmRtYV9idWZfdm1hcHBpbmcgPSBpOTE1X2dlbV9vYmplY3Rfdm1hcF9yYW5nZShvYmosIDAsCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICBkbWFfYnVmLT5zaXplID4+IFBBR0VfU0hJRlQpOwo+ PiAtCj4+IC0gICAgaWYgKCFvYmotPmRtYV9idWZfdm1hcHBpbmcpCj4+IC0gICAgICAgIGdvdG8g ZXJyX3VucGluOwo+PiAtCj4+IC0gICAgb2JqLT52bWFwcGluZ19jb3VudCA9IDE7Cj4+IC1vdXRf dW5sb2NrOgo+PiArICAgIGFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAob2JqKTsKPj4g ICAgICAgbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+IC0gICAgcmV0dXJuIG9i ai0+ZG1hX2J1Zl92bWFwcGluZzsKPj4KPj4gLWVycl91bnBpbjoKPj4gLSAgICBpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKPj4gLWVycjoKPj4gLSAgICBtdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKPj4gLSAgICByZXR1cm4gRVJSX1BUUihyZXQpOwo+PiArICAgIHJl dHVybiBhZGRyOwo+PiAgIH0KPj4KPj4gICBzdGF0aWMgdm9pZCBpOTE1X2dlbV9kbWFidWZfdnVu bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB2b2lkCj4+ICp2YWRkcikKPj4gQEAgLTE1MSwx MiArMTI3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZG1hYnVmX3Z1bm1hcChzdHJ1Y3QgZG1h X2J1Zgo+PiAqZG1hX2J1Ziwgdm9pZCAqdmFkZHIpCj4+ICAgICAgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+Pgo+PiAgICAgICBtdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4+IC0gICAgaWYgKC0tb2JqLT52bWFwcGluZ19jb3VudCA9PSAwKSB7Cj4+IC0g ICAgICAgIHZ1bm1hcChvYmotPmRtYV9idWZfdm1hcHBpbmcpOwo+PiAtICAgICAgICBvYmotPmRt YV9idWZfdm1hcHBpbmcgPSBOVUxMOwo+PiAtCj4+IC0gICAgICAgIGk5MTVfZ2VtX29iamVjdF91 bnBpbl9wYWdlcyhvYmopOwo+PiAtICAgIH0KPj4gKyAgICBpOTE1X2dlbV9vYmplY3RfdW5waW5f dm1hcChvYmopOwo+PiAgICAgICBtdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPj4g ICB9Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gaW5k ZXggMTVlMmQyOS4uNDdmMTg2ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+PiBAQCAtMjA1Niw3ICsyMDU2LDcgQEAgc3RhdGljIGludCBpbml0X3BoeXNf c3RhdHVzX3BhZ2Uoc3RydWN0Cj4+IGludGVsX2VuZ2luZV9jcyAqcmluZykKPj4gICB2b2lkIGlu dGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm KQo+PiAgIHsKPj4gICAgICAgaWYgKEhBU19MTEMocmluZ2J1Zi0+b2JqLT5iYXNlLmRldikgJiYg IXJpbmdidWYtPm9iai0+c3RvbGVuKQo+PiAtICAgICAgICB2dW5tYXAocmluZ2J1Zi0+dmlydHVh bF9zdGFydCk7Cj4+ICsgICAgICAgIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKHJpbmdidWYt Pm9iaik7Cj4+ICAgICAgIGVsc2UKPj4gICAgICAgICAgIGlvdW5tYXAocmluZ2J1Zi0+dmlydHVh bF9zdGFydCk7Cj4+ICAgICAgIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSBOVUxMOwo+PiBAQCAt MjA4MCwxMCArMjA4MCwxMCBAQCBpbnQgaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmoo c3RydWN0Cj4+IGRybV9kZXZpY2UgKmRldiwKPj4gICAgICAgICAgIGlmIChyZXQpCj4+ICAgICAg ICAgICAgICAgZ290byB1bnBpbjsKPj4KPj4gLSAgICAgICAgcmluZ2J1Zi0+dmlydHVhbF9zdGFy dCA9IGk5MTVfZ2VtX29iamVjdF92bWFwX3JhbmdlKG9iaiwgMCwKPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgIHJpbmdidWYtPnNpemUgPj4gUEFHRV9TSElGVCk7Cj4+IC0gICAgICAgIGlmIChy aW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID09IE5VTEwpIHsKPj4gLSAgICAgICAgICAgIHJldCA9IC1F Tk9NRU07Cj4+ICsgICAgICAgIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX3ZtYXAob2JqKTsKPj4gKyAgICAgICAgaWYgKElTX0VSUihyaW5nYnVmLT52aXJ0dWFs X3N0YXJ0KSkgewo+PiArICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihyaW5nYnVmLT52aXJ0dWFs X3N0YXJ0KTsKPj4gKyAgICAgICAgICAgIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSBOVUxMOwo+ PiAgICAgICAgICAgICAgIGdvdG8gdW5waW47Cj4+ICAgICAgICAgICB9Cj4+ICAgICAgIH0gZWxz ZSB7Cj4+Cj4KPiBMb29rcyBPSyB0byBtZS4gRXZlbiB0aGUgQlVHX09OIGlzIG5vdCBjcml0aWNh bCBzaW5jZSBpdCBjYW4ndCBoYXBwZW4KPiB3aGVuIHVzaW5nIHRoZSBBUEkgYWx0aG91Z2ggSSBk b24ndCBsaWtlIHRvIHNlZSB0aGVtLiBFaXRoZXIgd2F5Ogo+Cj4gUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4KPiBSZWdhcmRzLAo+Cj4gVHZy dGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK