From mboxrd@z Thu Jan 1 00:00:00 1970 From: Damien Lespiau Subject: Re: [PATCH] drm/i915: Adding dbuf support for skl nv12 format. Date: Fri, 8 May 2015 15:31:57 +0100 Message-ID: <20150508143157.GD29944@strange.ger.corp.intel.com> References: <1430174857-19204-1-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 6FA3F7206B for ; Fri, 8 May 2015 07:32:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1430174857-19204-1-git-send-email-chandra.konduru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chandra Konduru Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, ville.syrjala@intel.com List-Id: intel-gfx@lists.freedesktop.org SGkgQ2hhbmRyYSwKCk9uIE1vbiwgQXByIDI3LCAyMDE1IGF0IDAzOjQ3OjM3UE0gLTA3MDAsIENo YW5kcmEgS29uZHVydSB3cm90ZToKPiBTa3lsYWtlIG52MTIgZm9ybWF0IHJlcXVpcmVzIGRidWYg KGFrYS4gZGRiKSBjYWxjdWxhdGlvbnMKPiBhbmQgcHJvZ3JhbW1pbmcgZm9yIGVhY2ggb2YgeSBh bmQgdXYgc3ViLXBsYW5lcy4gTWFkZSBtaW5vcgo+IGNoYW5nZXMgdG8gcmV1c2UgY3VycmVudCBk YnVmIGNhbGN1bGF0aW9ucyBhbmQgcHJvZ3JhbW1pbmcKPiBmb3IgdXYgcGxhbmUuIGkuZS4sIHdp dGggdGhpcyBjaGFuZ2UsIGV4aXN0aW5nIGNvbXB1dGF0aW9uCj4gaXMgdXNlZCBmb3IgZWl0aGVy IHBhY2tlZCBmb3JtYXQgb3IgdXYgcG9ydGlvbiBvZiBudjEyCj4gZGVwZW5kaW5nIG9uIGluY29t aW5nIGZvcm1hdC4gQWRkZWQgbmV3IGNvZGUgZm9yIGRidWYKPiBjb21wdXRhdGlvbiBhbmQgcHJv Z3JhbW1pbmcgZm9yIHkgcGxhbmUuCj4gCj4gVGhpcyBwYXRjaCBpcyBhIHByZS1yZXF1aXNpdGUg Zm9yIGFkZGluZyBOVjEyIGZvcm1hdCBzdXBwb3J0Lgo+IEFjdHVhbCBudjEyIHN1cHBvcnQgaXMg Y29taW5nIGluIGxhdGVyIHBhdGNoZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hhbmRyYSBLb25k dXJ1IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwuY29tPgoKSSBmb3VuZCBhIGZldyB0aGluZ3MgdG8g dGFsayBhYm91dC4gTm90aGluZyBtYWpvciwgZXhjZXB0IG1heWJlIHRoYXQgdGhlCmNvZiBmb3Ig WSB0aWxlZCBidWZmZXJzIG1pbmltdW0gYWxsb2NhdGlvbiB0aGF0IGlzIG5vdCB0aGVyZSBhbmQg d291bGQKbmVlZCB0byB0YWtlIHRoZSBVViBwbGFuZSBzaXplIGludG8gYWNjb3VudC4KCkEgbW9y ZSBnZW5lcmFsIHJlbWFyayB0aG91Z2gsIGlzIHRoYXQgSSBiZWxpZXZlIHdlIHNob3VsZCBtYWtl IHRoZSBjb2RlCm1vcmUgZ2VuZXJpYyBhbmQgdGFsayBhYm91dCBmYiBwbGFuZXMgMCBhbmQgMSBp bnN0ZWFkIG9mIGhhdmluZyB0aGUKICBpZiAoeV9ieXRlc19wZXJfcGl4ZWwpCmV2ZXJ5d2hlcmUu IEl0J2QgYmUgYSBnb29kIGZpdCBmb3IgdGhlIFdNIGNvZGUgYXMgd2UncmUgYWx3YXlzCmludGVy ZXN0ZWQgaW4gZmIgcGxhbmUgMCAoZWl0aGVyIFJHQiBvciBZIHBsYW5lKS4gQ29uY3JldGVseSBp dCBtZWFucwpoYXZpbmcgcGVyLWZiIHBsYW5lIHZhcmlhYmxlcyBpbiB0aGUgc3RydWN0dXJlcywg aWUgYnl0ZXNfcGVyX3BpeGVsWzJdLAppbmRleGVkIGJ5IHRoZSBmYiBwbGFuZSBudW1iZXIuCgpP dGhlcndpc2UgdGhlIHJlc3QgbG9va3MgZ29vZCB0byBtZS4gSSdkIGxvdmUgdG8gc2VlIHRoZSBt b3JlIGdlbmVyaWMKdmVyc2lvbiAoZXNwZWNpYWxseSB0aGUgcmVtYXJrIGFib3V0IGRlcml2aW5n IHRoZSBzdWItc2FtcGxpbmcgZmFjdG9ycwpmcm9tIHRoZSBmb3JtYXQpLCBidXQgdGhpcyBjYW4g YmUgZG9uZSBpbiB0cmVlIGlmIHlvdSB3YW50LgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuL2ggIHwgICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICB8ICAgMTEgKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwg ICAgOCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgIHwgICA3OSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDg4 IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IGluZGV4IGIxM2M1NTIuLjc1ZWIzYTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtMTQ1MCw3ICsxNDUwLDggQEAgc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50cnlf ZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUxLAo+ICAKPiAgc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiB7Cj4gIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBwaXBlW0k5MTVfTUFYX1BJ UEVTXTsKPiAtCXN0cnVjdCBza2xfZGRiX2VudHJ5IHBsYW5lW0k5MTVfTUFYX1BJUEVTXVtJOTE1 X01BWF9QTEFORVNdOwo+ICsJc3RydWN0IHNrbF9kZGJfZW50cnkgcGxhbmVbSTkxNV9NQVhfUElQ RVNdW0k5MTVfTUFYX1BMQU5FU107IC8qIHBhY2tlZC91diAqLwo+ICsJc3RydWN0IHNrbF9kZGJf ZW50cnkgeV9wbGFuZVtJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVTXTsgLyogeS1wbGFu ZSAqLwo+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgY3Vyc29yW0k5MTVfTUFYX1BJUEVTXTsKPiAg fTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggMDg2NWVjNy4uYWEyYTBkZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC00ODgwLDYgKzQ4ODAsOCBAQCBlbnVt IHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSBfUExBTkVfS0VZTUFYXzJfQQkJCTB4 NzAyYTAKPiAgI2RlZmluZSBfUExBTkVfQlVGX0NGR18xX0EJCQkweDcwMjdjCj4gICNkZWZpbmUg X1BMQU5FX0JVRl9DRkdfMl9BCQkJMHg3MDM3Ywo+ICsjZGVmaW5lIF9QTEFORV9OVjEyX0JVRl9D RkdfMV9BCQkweDcwMjc4Cj4gKyNkZWZpbmUgX1BMQU5FX05WMTJfQlVGX0NGR18yX0EJCTB4NzAz NzgKPiAgCj4gICNkZWZpbmUgX1BMQU5FX0NUTF8xX0IJCQkJMHg3MTE4MAo+ICAjZGVmaW5lIF9Q TEFORV9DVExfMl9CCQkJCTB4NzEyODAKPiBAQCAtNDk2Niw2ICs0OTY4LDE1IEBAIGVudW0gc2ts X2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmUp CVwKPiAgCV9QTEFORShwbGFuZSwgX1BMQU5FX0JVRl9DRkdfMShwaXBlKSwgX1BMQU5FX0JVRl9D RkdfMihwaXBlKSkKPiAgCj4gKyNkZWZpbmUgX1BMQU5FX05WMTJfQlVGX0NGR18xX0IJCTB4NzEy NzgKPiArI2RlZmluZSBfUExBTkVfTlYxMl9CVUZfQ0ZHXzJfQgkJMHg3MTM3OAo+ICsjZGVmaW5l IF9QTEFORV9OVjEyX0JVRl9DRkdfMShwaXBlKQlcCj4gKwlfUElQRShwaXBlLCBfUExBTkVfTlYx Ml9CVUZfQ0ZHXzFfQSwgX1BMQU5FX05WMTJfQlVGX0NGR18xX0IpCj4gKyNkZWZpbmUgX1BMQU5F X05WMTJfQlVGX0NGR18yKHBpcGUpCVwKPiArCV9QSVBFKHBpcGUsIF9QTEFORV9OVjEyX0JVRl9D RkdfMl9BLCBfUExBTkVfTlYxMl9CVUZfQ0ZHXzJfQikKPiArI2RlZmluZSBQTEFORV9OVjEyX0JV Rl9DRkcocGlwZSwgcGxhbmUpCVwKPiArCV9QTEFORShwbGFuZSwgX1BMQU5FX05WMTJfQlVGX0NG R18xKHBpcGUpLCBfUExBTkVfTlYxMl9CVUZfQ0ZHXzIocGlwZSkpCj4gKwo+ICAvKiBTS0wgbmV3 IGN1cnNvciByZWdpc3RlcnMgKi8KPiAgI2RlZmluZSBfQ1VSX0JVRl9DRkdfQQkJCQkweDcwMTdj Cj4gICNkZWZpbmUgX0NVUl9CVUZfQ0ZHX0IJCQkJMHg3MTE3Ywo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gaW5kZXggYzliYzk3NS4uODA3OTg2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gQEAgLTU2Niw3ICs1NjYsMTUgQEAgc3RydWN0IGludGVsX2NydGMgewo+ICBzdHJ1 Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyB7Cj4gIAl1aW50MzJfdCBob3Jpel9waXhlbHM7 Cj4gIAl1aW50MzJfdCB2ZXJ0X3BpeGVsczsKPiArCS8qCj4gKwkgKiAgIEZvciBwYWNrZWQgcGl4 ZWwgZm9ybWF0czoKPiArCSAqICAgICBieXRlc19wZXJfcGl4ZWwgLSBob2xkcyBieXRlcyBwZXIg cGl4ZWwKPiArCSAqICAgRm9yIHBsYW5hciBwaXhlbCBmb3JtYXRzOgo+ICsJICogICAgIGJ5dGVz X3Blcl9waXhlbCAtIGhvbGRzIGJ5dGVzIHBlciBwaXhlbCBmb3IgdXYtcGxhbmUKPiArCSAqICAg ICB5X2J5dGVzX3Blcl9waXhlbCAtIGhvbGRzIGJ5dGVzIHBlciBwaXhlbCBmb3IgeS1wbGFuZQo+ ICsJICovCj4gIAl1aW50OF90IGJ5dGVzX3Blcl9waXhlbDsKPiArCXVpbnQ4X3QgeV9ieXRlc19w ZXJfcGl4ZWw7Cj4gIAlib29sIGVuYWJsZWQ7Cj4gIAlib29sIHNjYWxlZDsKPiAgCXU2NCB0aWxp bmc7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggMGY0MzkxZS4uYjhkZjEyMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yNjE2LDggKzI2MTYsMTggQEAgdm9pZCBz a2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IH0KPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQKPiAtc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFf cmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcCkKPiArc2tsX3Bs YW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1l dGVycyAqcCwgaW50IHkpCj4gIHsKPiArCj4gKwkvKiBmb3IgcGxhbmFyIGZvcm1hdCAqLwo+ICsJ aWYgKHAtPnlfYnl0ZXNfcGVyX3BpeGVsKSB7Cj4gKwkJaWYgKHkpICAvKiB5LXBsYW5lIGRhdGEg cmF0ZSAqLwo+ICsJCQlyZXR1cm4gcC0+aG9yaXpfcGl4ZWxzICogcC0+dmVydF9waXhlbHMgKiBw LT55X2J5dGVzX3Blcl9waXhlbDsKPiArCQllbHNlICAgIC8qIHV2LXBsYW5lIGRhdGEgcmF0ZSAq Lwo+ICsJCQlyZXR1cm4gKHAtPmhvcml6X3BpeGVscy8yKSAqIChwLT52ZXJ0X3BpeGVscy8yKSAq IHAtPmJ5dGVzX3Blcl9waXhlbDsKClRoZSBrbm93bGVkZ2UgdGhhdCB0aGUgVVYgcGxhbmUgaXMg c3ViLXNhbXBsZWQgYnkgMiBpbiBib3RoIGRpcmVjdGlvbnMKaXMgaGlkZGVuIHRoZXJlLCB3ZSBt YXkgd2FudCB0byBhZGQgYSBuZXcgZHJtXyBmdW5jdGlvbiB0byBnaXZlIHRoZQpzdWItc2FtcGxl IGZhY3RvcnMgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQgYW5kIHRoZSBwbGFuZSBudW1iZXIuIFRo aXMKd2F5LCB0aGUgY29kZSB3b3VsZCBtb3JlIGdlbmVyaWMgaWYgdGhlIGh3IGV2ZXIgYWRkcyBz dXBwb3J0IGZvciBtb3JlCnBsYW5hciBmb3JtYXRzLiBJZiB3ZSBzdGlsbCB3YW50IHRvIGNhY2hl IHRoZSBwYXJhbWV0ZXJzIGluCmludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMsIEkgdGhpbmsgd2Ug c2hvdWxkIGhhdmUgcGVyLXBsYW5lIChpZSB0aGUKc3VyZmFjZXMgaW4gdGhlIGZiKSBieXRlc19w ZXJfcGl4ZWwsIHdpZHRoLCBoZWlnaHQsIC4uLgoKSSdkIGFsc28gdHJ5IHVzZSBzb21ldGhpbmcg YSBiaXQgbW9yZSBnZW5lcmFsIHJhdGhlciB0aGFuIHRoZSAneScKcGFyYW1ldGVyLCBtYXliZSB0 aGUgcGxhbmUgbnVtYmVyICgwLT55LCAxLT5VViBpbiB0aGUgTlYxMiBjYXNlIDAtPlJHQgpvdGhl cndpc2UpLgoKPiArCX0KPiArCj4gKwkvKiBmb3IgcGFja2VkIGZvcm1hdHMgKi8KPiAgCXJldHVy biBwLT5ob3Jpel9waXhlbHMgKiBwLT52ZXJ0X3BpeGVscyAqIHAtPmJ5dGVzX3Blcl9waXhlbDsK PiAgfQoKT2gsIGFuZCBzb21ldGhpbmcgZWxzZSBJIG5vdGljZWQsIHdlIGFwcGFyZW50bHkgbmVl ZCB0byBjb21wdXRlIGEKc2NhbGluZyBmYWN0b3IgaW4gdGhlcmUuIEFzIHlvdSd2ZSBsb29rZWQg YXQgdGhlIHNjYWxlcnMgZm9yIFNLTCwgeW91Cm1heSBiZSBpbnRlcmVzdGVkIGluIGxvb2tpbmcg aW50byBpdC4KCj4gIAo+IEBAIC0yNjQwLDcgKzI2NTAsMTAgQEAgc2tsX2dldF90b3RhbF9yZWxh dGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAkJaWYgKCFw LT5lbmFibGVkKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJdG90YWxfZGF0YV9yYXRlICs9IHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUocCk7Cj4gKwkJdG90YWxfZGF0YV9yYXRlICs9IHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUocCwgMCk7IC8qIHBhY2tlZC91diAqLwo+ICsJCWlm IChwLT55X2J5dGVzX3Blcl9waXhlbCkgewo+ICsJCQl0b3RhbF9kYXRhX3JhdGUgKz0gc2tsX3Bs YW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShwLCAxKTsgLyogeS1wbGFuZSAqLwo+ICsJCX0KPiAgCX0K PiAgCj4gIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwo+IEBAIC0yNjU5LDYgKzI2NzIsNyBAQCBz a2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IHNr bF9kZGJfZW50cnkgKmFsbG9jID0gJmRkYi0+cGlwZVtwaXBlXTsKPiAgCXVpbnQxNl90IGFsbG9j X3NpemUsIHN0YXJ0LCBjdXJzb3JfYmxvY2tzOwo+ICAJdWludDE2X3QgbWluaW11bVtJOTE1X01B WF9QTEFORVNdOwo+ICsJdWludDE2X3QgeV9taW5pbXVtW0k5MTVfTUFYX1BMQU5FU107Cj4gIAl1 bnNpZ25lZCBpbnQgdG90YWxfZGF0YV9yYXRlOwo+ICAJaW50IHBsYW5lOwo+ICAKPiBAQCAtMjY4 Nyw2ICsyNzAxLDggQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCj4gIAkJbWluaW11bVtwbGFuZV0gPSA4Owo+ICAJCWFsbG9jX3NpemUgLT0gbWluaW11 bVtwbGFuZV07Cj4gKwkJeV9taW5pbXVtW3BsYW5lXSA9IHAtPnlfYnl0ZXNfcGVyX3BpeGVsID8g OCA6IDA7Cj4gKwkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1bcGxhbmVdOwo+ICAJfQoKSHVtLCB0 aGlzIG1hZGUgbWUgbG9vayBhdCB0aGUgRERCIGFsbG9jYXRpb24gcGFnZSBhbmQgaXQgc2VlbXMg d2UncmUKbWlzc2luZyB0aGUgY29kZSB0byBjb21wdXRlIHRoZSBtaW5pbXVtIGFsbG9jYXRlIGZv ciBZIHRpbGVkIEZCcy4gSXQncwpzb21ld2hhdCBpbXBvcnRhbnQgaGVyZSBhcyB0aGF0IGNvZGUg aXMgdXNpbmcgdGhlIHdpZHRoIG9mIHRoZSBwbGFuZSwKd2lkdGggdGhhdCB3b3VsZCBiZSBoYWx2 ZWQgZm9yIGEgWSB0aWxlZCBVViBwbGFuZS4KCj4gIAo+ICAJLyoKPiBAQCAtMjcwMCwxNiArMjcx NiwxNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ c3RhcnQgPSBhbGxvYy0+c3RhcnQ7Cj4gIAlmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBpbnRlbF9u dW1fcGxhbmVzKGludGVsX2NydGMpOyBwbGFuZSsrKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3dtX3BhcmFtZXRlcnMgKnA7Cj4gLQkJdW5zaWduZWQgaW50IGRhdGFfcmF0ZTsKPiAt CQl1aW50MTZfdCBwbGFuZV9ibG9ja3M7Cj4gKwkJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgeV9k YXRhX3JhdGU7Cj4gKwkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7 Cj4gIAo+ICAJCXAgPSAmcGFyYW1zLT5wbGFuZVtwbGFuZV07Cj4gIAkJaWYgKCFwLT5lbmFibGVk KQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJZGF0YV9yYXRlID0gc2tsX3BsYW5lX3JlbGF0aXZl X2RhdGFfcmF0ZShwKTsKPiArCQlkYXRhX3JhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9y YXRlKHAsIDApOwo+ICAKPiAgCQkvKgo+ICsJCSAqIGFsbG9jYXRpb24gZm9yIChwYWNrZWQgZm9y bWF0cykgb3IgKHV2LXBsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdCk6Cj4gIAkJICogcHJvbW90 ZSB0aGUgZXhwcmVzc2lvbiB0byA2NCBiaXRzIHRvIGF2b2lkIG92ZXJmbG93aW5nLCB0aGUKPiAg CQkgKiByZXN1bHQgaXMgPCBhdmFpbGFibGUgYXMgZGF0YV9yYXRlIC8gdG90YWxfZGF0YV9yYXRl IDwgMQo+ICAJCSAqLwo+IEBAIC0yNzIxLDYgKzI3MzgsMjIgQEAgc2tsX2FsbG9jYXRlX3BpcGVf ZGRiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lXS5l bmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiAgCj4gIAkJc3RhcnQgKz0gcGxhbmVfYmxvY2tz Owo+ICsKPiArCQkvKgo+ICsJCSAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFu YXIgZm9ybWF0Ogo+ICsJCSAqLwo+ICsJCWlmIChwLT55X2J5dGVzX3Blcl9waXhlbCkgewo+ICsJ CQl5X2RhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUocCwgMSk7Cj4gKwkJ CXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lXTsKPiArCQkJeV9wbGFuZV9ibG9ja3Mg Kz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIHlfZGF0YV9yYXRlLAo+ICsJCQkJCQl0 b3RhbF9kYXRhX3JhdGUpOwo+ICsKPiArCQkJZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lXS5zdGFy dCA9IHN0YXJ0Owo+ICsJCQlkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVdLmVuZCA9IHN0YXJ0ICsg eV9wbGFuZV9ibG9ja3M7Cj4gKwo+ICsJCQlzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiArCQl9 Cj4gKwo+ICAJfQo+ICAKPiAgfQo+IEBAIC0yODMzLDEzICsyODY2LDE4IEBAIHN0YXRpYyB2b2lk IHNrbF9jb21wdXRlX3dtX3BpcGVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJcC0+cGl4ZWxfcmF0ZSA9IHNrbF9waXBlX3BpeGVsX3JhdGUoaW50ZWxfY3J0Yy0+Y29uZmln KTsKPiAgCj4gIAkJZmIgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gKwkJLyogRm9yIHBs YW5hcjogQnBwIGlzIGZvciB1diBwbGFuZSwgeV9CcHAgaXMgZm9yIHkgcGxhbmUgKi8KPiAgCQlp ZiAoZmIpIHsKPiAgCQkJcC0+cGxhbmVbMF0uZW5hYmxlZCA9IHRydWU7Cj4gLQkJCXAtPnBsYW5l WzBdLmJ5dGVzX3Blcl9waXhlbCA9IGZiLT5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gKwkJCXAtPnBs YW5lWzBdLmJ5dGVzX3Blcl9waXhlbCA9IGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9O VjEyID8KPiArCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEpIDog ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiArCQkJcC0+cGxhbmVbMF0ueV9ieXRlc19wZXJfcGl4 ZWwgPSBmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiA/Cj4gKwkJCQlkcm1fZm9y bWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKSA6IDA7Cgpkcm1fZm9ybWF0X3BsYW5l X2NwcCgpIHNlZW1zIGdlbmVyYWwgZW5vdWdoIHRvIGFsd2F5cyB3b3JrPwoKPiAgCQkJcC0+cGxh bmVbMF0udGlsaW5nID0gZmItPm1vZGlmaWVyWzBdOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCXAtPnBs YW5lWzBdLmVuYWJsZWQgPSBmYWxzZTsKPiAgCQkJcC0+cGxhbmVbMF0uYnl0ZXNfcGVyX3BpeGVs ID0gMDsKPiArCQkJcC0+cGxhbmVbMF0ueV9ieXRlc19wZXJfcGl4ZWwgPSAwOwo+ICAJCQlwLT5w bGFuZVswXS50aWxpbmcgPSBEUk1fRk9STUFUX01PRF9OT05FOwo+ICAJCX0KPiAgCQlwLT5wbGFu ZVswXS5ob3Jpel9waXhlbHMgPSBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gQEAg LTI4NDcsNiArMjg4NSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX3BpcGVfcGFyYW1l dGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJcC0+cGxhbmVbMF0ucm90YXRpb24gPSBj cnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb247Cj4gIAo+ICAJCWZiID0gY3J0Yy0+Y3Vyc29y LT5zdGF0ZS0+ZmI7Cj4gKwkJcC0+Y3Vyc29yLnlfYnl0ZXNfcGVyX3BpeGVsID0gMDsKPiAgCQlp ZiAoZmIpIHsKPiAgCQkJcC0+Y3Vyc29yLmVuYWJsZWQgPSB0cnVlOwo+ICAJCQlwLT5jdXJzb3Iu Ynl0ZXNfcGVyX3BpeGVsID0gZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKPiBAQCAtMjg4MiwyMiAr MjkyMSwyNSBAQCBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl1aW50MzJfdCBwbGFuZV9ieXRlc19wZXJf bGluZSwgcGxhbmVfYmxvY2tzX3Blcl9saW5lOwo+ICAJdWludDMyX3QgcmVzX2Jsb2NrcywgcmVz X2xpbmVzOwo+ICAJdWludDMyX3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ICsJdWludDhfdCBieXRlc19w ZXJfcGl4ZWw7Cj4gIAo+ICAJaWYgKGxhdGVuY3kgPT0gMCB8fCAhcC0+YWN0aXZlIHx8ICFwX3Bh cmFtcy0+ZW5hYmxlZCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICsJYnl0ZXNfcGVyX3BpeGVs ID0gcF9wYXJhbXMtPnlfYnl0ZXNfcGVyX3BpeGVsID8KPiArCQlwX3BhcmFtcy0+eV9ieXRlc19w ZXJfcGl4ZWwgOgo+ICsJCXBfcGFyYW1zLT5ieXRlc19wZXJfcGl4ZWw7Cj4gIAltZXRob2QxID0g c2tsX3dtX21ldGhvZDEocC0+cGl4ZWxfcmF0ZSwKPiAtCQkJCSBwX3BhcmFtcy0+Ynl0ZXNfcGVy X3BpeGVsLAo+ICsJCQkJIGJ5dGVzX3Blcl9waXhlbCwKPiAgCQkJCSBsYXRlbmN5KTsKPiAgCW1l dGhvZDIgPSBza2xfd21fbWV0aG9kMihwLT5waXhlbF9yYXRlLAo+ICAJCQkJIHAtPnBpcGVfaHRv dGFsLAo+ICAJCQkJIHBfcGFyYW1zLT5ob3Jpel9waXhlbHMsCj4gLQkJCQkgcF9wYXJhbXMtPmJ5 dGVzX3Blcl9waXhlbCwKPiArCQkJCSBieXRlc19wZXJfcGl4ZWwsCj4gIAkJCQkgcF9wYXJhbXMt PnRpbGluZywKPiAgCQkJCSBsYXRlbmN5KTsKPiAgCj4gLQlwbGFuZV9ieXRlc19wZXJfbGluZSA9 IHBfcGFyYW1zLT5ob3Jpel9waXhlbHMgKgo+IC0JCQkJCXBfcGFyYW1zLT5ieXRlc19wZXJfcGl4 ZWw7Cj4gKwlwbGFuZV9ieXRlc19wZXJfbGluZSA9IHBfcGFyYW1zLT5ob3Jpel9waXhlbHMgKiBi eXRlc19wZXJfcGl4ZWw7Cj4gIAlwbGFuZV9ibG9ja3NfcGVyX2xpbmUgPSBESVZfUk9VTkRfVVAo cGxhbmVfYnl0ZXNfcGVyX2xpbmUsIDUxMik7Cj4gIAo+ICAJaWYgKHBfcGFyYW1zLT50aWxpbmcg PT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiBAQCAtMzExNCwxMCArMzE1NiwxNCBAQCBz dGF0aWMgdm9pZCBza2xfd3JpdGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJCSAgIG5ldy0+cGxhbmVfdHJhbnNbcGlwZV1baV0pOwo+ICAJCUk5MTVf V1JJVEUoQ1VSX1dNX1RSQU5TKHBpcGUpLCBuZXctPmN1cnNvcl90cmFuc1twaXBlXSk7Cj4gIAo+ IC0JCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGNydGMpOyBpKyspCj4gKwkJZm9y IChpID0gMDsgaSA8IGludGVsX251bV9wbGFuZXMoY3J0Yyk7IGkrKykgewo+ICAJCQlza2xfZGRi X2VudHJ5X3dyaXRlKGRldl9wcml2LAo+ICAJCQkJCSAgICBQTEFORV9CVUZfQ0ZHKHBpcGUsIGkp LAo+ICAJCQkJCSAgICAmbmV3LT5kZGIucGxhbmVbcGlwZV1baV0pOwo+ICsJCQlza2xfZGRiX2Vu dHJ5X3dyaXRlKGRldl9wcml2LAo+ICsJCQkJCSAgICBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwg aSksCj4gKwkJCQkJICAgICZuZXctPmRkYi55X3BsYW5lW3BpcGVdW2ldKTsKPiArCQl9Cj4gIAo+ ICAJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIENVUl9CVUZfQ0ZHKHBpcGUpLAo+ICAJ CQkJICAgICZuZXctPmRkYi5jdXJzb3JbcGlwZV0pOwo+IEBAIC0zMjc1LDYgKzMzMjEsNyBAQCBz dGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCj4gIAlpbnRlbF9jcnRjLT53bS5za2xfYWN0aXZlID0gKnBpcGVf d207Cj4gKwo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gQEAgLTMzNjgsOCArMzQxNSwxNiBA QCBza2xfdXBkYXRlX3Nwcml0ZV93bShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJaW50ZWxfcGxhbmUtPndtLnNjYWxlZCA9IHNjYWxlZDsKPiAgCWlu dGVsX3BsYW5lLT53bS5ob3Jpel9waXhlbHMgPSBzcHJpdGVfd2lkdGg7Cj4gIAlpbnRlbF9wbGFu ZS0+d20udmVydF9waXhlbHMgPSBzcHJpdGVfaGVpZ2h0Owo+IC0JaW50ZWxfcGxhbmUtPndtLmJ5 dGVzX3Blcl9waXhlbCA9IHBpeGVsX3NpemU7Cj4gIAlpbnRlbF9wbGFuZS0+d20udGlsaW5nID0g RFJNX0ZPUk1BVF9NT0RfTk9ORTsKPiArCj4gKwkvKiBGb3IgcGxhbmFyOiBCcHAgaXMgZm9yIFVW IHBsYW5lLCB5X0JwcCBpcyBmb3IgWSBwbGFuZSAqLwo+ICsJaW50ZWxfcGxhbmUtPndtLmJ5dGVz X3Blcl9waXhlbCA9Cj4gKwkJKGZiICYmIGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9O VjEyKSA/Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGxhbmUtPnN0YXRlLT5mYi0+cGl4ZWxf Zm9ybWF0LCAxKSA6IHBpeGVsX3NpemU7Cj4gKwlpbnRlbF9wbGFuZS0+d20ueV9ieXRlc19wZXJf cGl4ZWwgPQo+ICsJCShmYiAmJiBmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikg Pwo+ICsJCWRybV9mb3JtYXRfcGxhbmVfY3BwKHBsYW5lLT5zdGF0ZS0+ZmItPnBpeGVsX2Zvcm1h dCwgMCkgOiAwOwo+ICsKCmRybV9mb3JtYXRfcGxhbmVfY3BwKCkgc2VlbXMgZ2VuZXJhbCBlbm91 Z2ggdG8gYWx3YXlzIHdvcms/Cgo+ICAJLyoKPiAgCSAqIEZyYW1lYnVmZmVyIGNhbiBiZSBOVUxM IG9uIHBsYW5lIGRpc2FibGUsIGJ1dCBpdCBkb2VzIG5vdAo+ICAJICogbWF0dGVyIGZvciB3YXRl cm1hcmtzIGlmIHdlIGFzc3VtZSBubyB0aWxpbmcgaW4gdGhhdCBjYXNlLgo+IC0tIAo+IDEuNy45 LjUKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK