From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [Intel-gfx] [PATCH 2/9] drm/i915: Plumb drm_framebuffer into more places Date: Thu, 2 Feb 2017 15:30:12 +0200 Message-ID: <20170202133012.GA3794@ideak-desk.fi.intel.com> References: <20170104184232.23048-1-ville.syrjala@linux.intel.com> <20170104184232.23048-3-ville.syrjala@linux.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170104184232.23048-3-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMDQsIDIwMTcgYXQgMDg6NDI6MjVQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBOb3cgdGhhdCBmcmFtZWJ1ZmZlcnMgY2FuIGJlIHVz ZWQgZXZlbiBiZWZvcmUgY2FsbGluZwo+IGRybV9mcmFtZWJ1ZmZlcl9pbml0KCkgd2UgY2FuIHN0 YXJ0IHRvIHBsdW1iIHRoZW0gaW50byBtb3JlIHBsYWNlcywKPiBpbnN0ZWFkIG9mIHBhc3Npbmcg aW5kaXZpZHVhbCBwaWVjZXMgZm9yIGZiIG1ldGFkYXRhLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CgpSZXZpZXdlZC1i eTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTI3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxMSAr LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwgICA0ICstCj4gIDMg ZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGUyMTUwYTY0ODYwYy4uZjBjYjgw YWJhODlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yMDUw LDEwICsyMDUwLDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfdGlsZV9zaXplKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXJldHVybiBJU19HRU4yKGRl dl9wcml2KSA/IDIwNDggOiA0MDk2Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdW5zaWduZWQgaW50IGlu dGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IC0JCQkJCSAgIHVpbnQ2NF90IGZiX21vZGlmaWVyLCB1bnNpZ25lZCBpbnQgY3BwKQo+ ICtzdGF0aWMgdW5zaWduZWQgaW50Cj4gK2ludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSkKPiAgewo+IC0Jc3dpdGNoIChmYl9t b2RpZmllcikgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShmYi0+ZGV2KTsKPiArCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbcGxhbmVd Owo+ICsKPiArCXN3aXRjaCAoZmItPm1vZGlmaWVyKSB7Cj4gIAljYXNlIERSTV9GT1JNQVRfTU9E X05PTkU6Cj4gIAkJcmV0dXJuIGNwcDsKPiAgCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6 Cj4gQEAgLTIwODIsNDEgKzIwODUsMzggQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF90aWxl X3dpZHRoX2J5dGVzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKPiAgCQl9 Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShmYl9tb2RpZmllcik7 Cj4gKwkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllcik7Cj4gIAkJcmV0dXJuIGNwcDsKPiAgCX0K PiAgfQo+ICAKPiAtdW5zaWduZWQgaW50IGludGVsX3RpbGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJICAgICAgIHVpbnQ2NF90IGZiX21vZGlm aWVyLCB1bnNpZ25lZCBpbnQgY3BwKQo+ICtzdGF0aWMgdW5zaWduZWQgaW50Cj4gK2ludGVsX3Rp bGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCj4g IHsKPiAtCWlmIChmYl9tb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9OT05FKQo+ICsJaWYgKGZi LT5tb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9OT05FKQo+ICAJCXJldHVybiAxOwo+ICAJZWxz ZQo+IC0JCXJldHVybiBpbnRlbF90aWxlX3NpemUoZGV2X3ByaXYpIC8KPiAtCQkJaW50ZWxfdGls ZV93aWR0aF9ieXRlcyhkZXZfcHJpdiwgZmJfbW9kaWZpZXIsIGNwcCk7Cj4gKwkJcmV0dXJuIGlu dGVsX3RpbGVfc2l6ZSh0b19pOTE1KGZiLT5kZXYpKSAvCj4gKwkJCWludGVsX3RpbGVfd2lkdGhf Ynl0ZXMoZmIsIHBsYW5lKTsKPiAgfQo+ICAKPiAgLyogUmV0dXJuIHRoZSB0aWxlIGRpbWVuc2lv bnMgaW4gcGl4ZWwgdW5pdHMgKi8KPiAtc3RhdGljIHZvaWQgaW50ZWxfdGlsZV9kaW1zKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArc3RhdGljIHZvaWQgaW50ZWxf dGlsZV9kaW1zKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4g IAkJCSAgICB1bnNpZ25lZCBpbnQgKnRpbGVfd2lkdGgsCj4gLQkJCSAgICB1bnNpZ25lZCBpbnQg KnRpbGVfaGVpZ2h0LAo+IC0JCQkgICAgdWludDY0X3QgZmJfbW9kaWZpZXIsCj4gLQkJCSAgICB1 bnNpZ25lZCBpbnQgY3BwKQo+ICsJCQkgICAgdW5zaWduZWQgaW50ICp0aWxlX2hlaWdodCkKPiAg ewo+IC0JdW5zaWduZWQgaW50IHRpbGVfd2lkdGhfYnl0ZXMgPQo+IC0JCWludGVsX3RpbGVfd2lk dGhfYnl0ZXMoZGV2X3ByaXYsIGZiX21vZGlmaWVyLCBjcHApOwo+ICsJdW5zaWduZWQgaW50IHRp bGVfd2lkdGhfYnl0ZXMgPSBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGZiLCBwbGFuZSk7Cj4gKwl1 bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwW3BsYW5lXTsKPiAgCj4gIAkqdGlsZV93 aWR0aCA9IHRpbGVfd2lkdGhfYnl0ZXMgLyBjcHA7Cj4gLQkqdGlsZV9oZWlnaHQgPSBpbnRlbF90 aWxlX3NpemUoZGV2X3ByaXYpIC8gdGlsZV93aWR0aF9ieXRlczsKPiArCSp0aWxlX2hlaWdodCA9 IGludGVsX3RpbGVfc2l6ZSh0b19pOTE1KGZiLT5kZXYpKSAvIHRpbGVfd2lkdGhfYnl0ZXM7Cj4g IH0KPiAgCj4gIHVuc2lnbmVkIGludAo+IC1pbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGhlaWdodCwKPiAtCQkgICAgICB1aW50MzJfdCBw aXhlbF9mb3JtYXQsIHVpbnQ2NF90IGZiX21vZGlmaWVyKQo+ICtpbnRlbF9mYl9hbGlnbl9oZWln aHQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gKwkJICAgICAgaW50IHBsYW5l LCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgY3BwID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAocGl4ZWxfZm9ybWF0LCAwKTsKPiAtCXVuc2lnbmVkIGludCB0aWxlX2hl aWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KHRvX2k5MTUoZGV2KSwgZmJfbW9kaWZpZXIsIGNwcCk7 Cj4gKwl1bnNpZ25lZCBpbnQgdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChmYiwgcGxh bmUpOwo+ICAKPiAgCXJldHVybiBBTElHTihoZWlnaHQsIHRpbGVfaGVpZ2h0KTsKPiAgfQo+IEBA IC0yMTU4LDIxICsyMTU4LDIzIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfbGluZWFyX2Fs aWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByCj4gIAkJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQo Y29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJCSB1aW50NjRf dCBmYl9tb2RpZmllcikKPiArc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdubWVu dChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiArCQkJCQkgaW50IHBsYW5lKQo+ ICB7Cj4gLQlzd2l0Y2ggKGZiX21vZGlmaWVyKSB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGZiLT5kZXYpOwo+ICsKPiArCXN3aXRjaCAoZmItPm1vZGlm aWVyKSB7Cj4gIAljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6Cj4gIAkJcmV0dXJuIGludGVsX2xp bmVhcl9hbGlnbm1lbnQoZGV2X3ByaXYpOwo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxF RDoKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+ICsJCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCj4gIAkJCXJldHVybiAyNTYgKiAxMDI0Owo+ICAJCXJldHVy biAwOwo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiAgCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEOgo+ICAJCXJldHVybiAxICogMTAyNCAqIDEwMjQ7Cj4gIAlkZWZhdWx0 Ogo+IC0JCU1JU1NJTkdfQ0FTRShmYl9tb2RpZmllcik7Cj4gKwkJTUlTU0lOR19DQVNFKGZiLT5t b2RpZmllcik7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIH0KPiBAQCAtMjE4OSw3ICsyMTkxLDcg QEAgaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs IHVuc2lnbmVkIGludCByb3RhdGlvbikKPiAgCj4gIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQo JmRldi0+c3RydWN0X211dGV4KSk7Cj4gIAo+IC0JYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGln bm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllcik7Cj4gKwlhbGlnbm1lbnQgPSBpbnRlbF9zdXJm X2FsaWdubWVudChmYiwgMCk7Cj4gIAo+ICAJaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoJnZpZXcs IGZiLCByb3RhdGlvbik7Cj4gIAo+IEBAIC0yMzU1LDggKzIzNTcsNyBAQCBzdGF0aWMgdTMyIGlu dGVsX2FkanVzdF90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwKPiAgCQl1bnNpZ25lZCBpbnQg cGl0Y2hfdGlsZXM7Cj4gIAo+ICAJCXRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShkZXZfcHJp dik7Cj4gLQkJaW50ZWxfdGlsZV9kaW1zKGRldl9wcml2LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVp Z2h0LAo+IC0JCQkJZmItPm1vZGlmaWVyLCBjcHApOwo+ICsJCWludGVsX3RpbGVfZGltcyhmYiwg cGxhbmUsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQpOwo+ICAKPiAgCQlpZiAoZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPiAgCQkJcGl0Y2hfdGlsZXMgPSBwaXRjaCAvIHRp bGVfaGVpZ2h0Owo+IEBAIC0yNDExLDggKzI0MTIsNyBAQCBzdGF0aWMgdTMyIF9pbnRlbF9jb21w dXRlX3RpbGVfb2Zmc2V0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQl1bnNpZ25lZCBpbnQgdGlsZV9yb3dzLCB0aWxlcywgcGl0Y2hfdGlsZXM7Cj4gIAo+ICAJ CXRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShkZXZfcHJpdik7Cj4gLQkJaW50ZWxfdGlsZV9k aW1zKGRldl9wcml2LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAo+IC0JCQkJZmJfbW9kaWZp ZXIsIGNwcCk7Cj4gKwkJaW50ZWxfdGlsZV9kaW1zKGZiLCBwbGFuZSwgJnRpbGVfd2lkdGgsICZ0 aWxlX2hlaWdodCk7Cj4gIAo+ICAJCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9u KSkgewo+ICAJCQlwaXRjaF90aWxlcyA9IHBpdGNoIC8gdGlsZV9oZWlnaHQ7Cj4gQEAgLTI0NTgs NyArMjQ1OCw3IEBAIHUzMiBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGludCAqeCwgaW50ICp5 LAo+ICAJaWYgKGZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUg PT0gMSkKPiAgCQlhbGlnbm1lbnQgPSA0MDk2Owo+ICAJZWxzZQo+IC0JCWFsaWdubWVudCA9IGlu dGVsX3N1cmZfYWxpZ25tZW50KGRldl9wcml2LCBmYi0+bW9kaWZpZXIpOwo+ICsJCWFsaWdubWVu dCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGZiLCBwbGFuZSk7Cj4gIAo+ICAJcmV0dXJuIF9pbnRl bF9jb21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCB4LCB5LCBmYiwgcGxhbmUsIHBpdGNoLAo+ ICAJCQkJCSAgcm90YXRpb24sIGFsaWdubWVudCk7Cj4gQEAgLTI1NDQsOCArMjU0NCw3IEBAIGlu dGVsX2ZpbGxfZmJfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CXVuc2lnbmVkIGludCBwaXRjaF90aWxlczsKPiAgCQkJc3RydWN0IGRybV9yZWN0IHI7Cj4gIAo+ IC0JCQlpbnRlbF90aWxlX2RpbXMoZGV2X3ByaXYsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQs Cj4gLQkJCQkJZmItPm1vZGlmaWVyLCBjcHApOwo+ICsJCQlpbnRlbF90aWxlX2RpbXMoZmIsIGks ICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQpOwo+ICAKPiAgCQkJcm90X2luZm8tPnBsYW5lW2ld Lm9mZnNldCA9IG9mZnNldDsKPiAgCQkJcm90X2luZm8tPnBsYW5lW2ldLnN0cmlkZSA9IERJVl9S T1VORF9VUChmYi0+cGl0Y2hlc1tpXSwgdGlsZV93aWR0aCAqIGNwcCk7Cj4gQEAgLTI4NzMsNyAr Mjg3Miw2IEBAIHN0YXRpYyBpbnQgc2tsX21heF9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwgaW50IHBsYW5lLAo+ICAKPiAgc3RhdGljIGludCBza2xfY2hlY2tf bWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy54MSA+PiAxNjsKPiBAQCAtMjg5Miw4ICsyODkwLDcgQEAgc3RhdGljIGludCBza2xf Y2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIAo+ICAJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMCk7Cj4g IAlvZmZzZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUs IDApOwo+IC0KPiAtCWFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGRldl9wcml2LCBm Yi0+bW9kaWZpZXIpOwo+ICsJYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGlnbm1lbnQoZmIsIDAp Owo+ICAKPiAgCS8qCj4gIAkgKiBBVVggc3VyZmFjZSBvZmZzZXQgaXMgc3BlY2lmaWVkIGFzIHRo ZSBkaXN0YW5jZSBmcm9tIHRoZQo+IEBAIC0zMjEwLDE2ICszMjA3LDEzIEBAIHN0YXRpYyB2b2lk IGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnks Cj4gIAlQT1NUSU5HX1JFQUQocmVnKTsKPiAgfQo+ICAKPiAtdTMyIGludGVsX2ZiX3N0cmlkZV9h bGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkg ICAgICB1aW50NjRfdCBmYl9tb2RpZmllciwgdWludDMyX3QgcGl4ZWxfZm9ybWF0KQo+ICtzdGF0 aWMgdTMyCj4gK2ludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsIGludCBwbGFuZSkKPiAgewo+IC0JaWYgKGZiX21vZGlmaWVyID09IERSTV9G T1JNQVRfTU9EX05PTkUpIHsKPiArCWlmIChmYi0+bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0Rf Tk9ORSkKPiAgCQlyZXR1cm4gNjQ7Cj4gLQl9IGVsc2Ugewo+IC0JCWludCBjcHAgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChwaXhlbF9mb3JtYXQsIDApOwo+IC0KPiAtCQlyZXR1cm4gaW50ZWxfdGls ZV93aWR0aF9ieXRlcyhkZXZfcHJpdiwgZmJfbW9kaWZpZXIsIGNwcCk7Cj4gLQl9Cj4gKwllbHNl Cj4gKwkJcmV0dXJuIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoZmIsIHBsYW5lKTsKPiAgfQo+ICAK PiAgdTMyIGludGVsX2ZiX2d0dF9vZmZzZXQoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4g QEAgLTMyNjksMjEgKzMyNjMsMTYgQEAgc3RhdGljIHZvaWQgc2tsX2RldGFjaF9zY2FsZXJzKHN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICB1MzIgc2tsX3BsYW5lX3N0cmlkZShjb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHBsYW5lLAo+ICAJCSAgICAgdW5zaWdu ZWQgaW50IHJvdGF0aW9uKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGZiLT5kZXYpOwo+ICAJdTMyIHN0cmlkZSA9IGludGVsX2ZiX3Bp dGNoKGZiLCBwbGFuZSwgcm90YXRpb24pOwo+ICAKPiAgCS8qCj4gIAkgKiBUaGUgc3RyaWRlIGlz IGVpdGhlciBleHByZXNzZWQgYXMgYSBtdWx0aXBsZSBvZiA2NCBieXRlcyBjaHVua3MgZm9yCj4g IAkgKiBsaW5lYXIgYnVmZmVycyBvciBpbiBudW1iZXIgb2YgdGlsZXMgZm9yIHRpbGVkIGJ1ZmZl cnMuCj4gIAkgKi8KPiAtCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+ IC0JCWludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbcGxhbmVdOwo+IC0KPiAtCQlzdHJpZGUgLz0g aW50ZWxfdGlsZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllciwgY3BwKTsKPiAtCX0gZWxz ZSB7Cj4gLQkJc3RyaWRlIC89IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2X3ByaXYsIGZi LT5tb2RpZmllciwKPiAtCQkJCQkJICAgIGZiLT5mb3JtYXQtPmZvcm1hdCk7Cj4gLQl9Cj4gKwlp ZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gKwkJc3RyaWRlIC89IGludGVs X3RpbGVfaGVpZ2h0KGZiLCBwbGFuZSk7Cj4gKwllbHNlCj4gKwkJc3RyaWRlIC89IGludGVsX2Zi X3N0cmlkZV9hbGlnbm1lbnQoZmIsIHBsYW5lKTsKPiAgCj4gIAlyZXR1cm4gc3RyaWRlOwo+ICB9 Cj4gQEAgLTg3NzMsOSArODc2Miw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJdmFsID0gSTkxNV9SRUFEKERTUFNUUklERShwaXBl KSk7Cj4gIAlmYi0+cGl0Y2hlc1swXSA9IHZhbCAmIDB4ZmZmZmZmYzA7Cj4gIAo+IC0JYWxpZ25l ZF9oZWlnaHQgPSBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoZGV2LCBmYi0+aGVpZ2h0LAo+IC0JCQkJ CSAgICAgICBmYi0+Zm9ybWF0LT5mb3JtYXQsCj4gLQkJCQkJICAgICAgIGZiLT5tb2RpZmllcik7 Cj4gKwlhbGlnbmVkX2hlaWdodCA9IGludGVsX2ZiX2FsaWduX2hlaWdodChmYiwgMCwgZmItPmhl aWdodCk7Cj4gIAo+ICAJcGxhbmVfY29uZmlnLT5zaXplID0gZmItPnBpdGNoZXNbMF0gKiBhbGln bmVkX2hlaWdodDsKPiAgCj4gQEAgLTk4MTAsMTMgKzk3OTcsMTAgQEAgc2t5bGFrZV9nZXRfaW5p dGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlmYi0+d2lkdGgg PSAoKHZhbCA+PiAwKSAmIDB4MWZmZikgKyAxOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChQTEFO RV9TVFJJREUocGlwZSwgMCkpOwo+IC0Jc3RyaWRlX211bHQgPSBpbnRlbF9mYl9zdHJpZGVfYWxp Z25tZW50KGRldl9wcml2LCBmYi0+bW9kaWZpZXIsCj4gLQkJCQkJCWZiLT5mb3JtYXQtPmZvcm1h dCk7Cj4gKwlzdHJpZGVfbXVsdCA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZmIsIDApOwo+ ICAJZmItPnBpdGNoZXNbMF0gPSAodmFsICYgMHgzZmYpICogc3RyaWRlX211bHQ7Cj4gIAo+IC0J YWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoZGV2LCBmYi0+aGVpZ2h0LAo+ IC0JCQkJCSAgICAgICBmYi0+Zm9ybWF0LT5mb3JtYXQsCj4gLQkJCQkJICAgICAgIGZiLT5tb2Rp Zmllcik7Cj4gKwlhbGlnbmVkX2hlaWdodCA9IGludGVsX2ZiX2FsaWduX2hlaWdodChmYiwgMCwg ZmItPmhlaWdodCk7Cj4gIAo+ICAJcGxhbmVfY29uZmlnLT5zaXplID0gZmItPnBpdGNoZXNbMF0g KiBhbGlnbmVkX2hlaWdodDsKPiAgCj4gQEAgLTk5MTIsOSArOTg5Niw3IEBAIGlyb25sYWtlX2dl dF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXZhbCA9 IEk5MTVfUkVBRChEU1BTVFJJREUocGlwZSkpOwo+ICAJZmItPnBpdGNoZXNbMF0gPSB2YWwgJiAw eGZmZmZmZmMwOwo+ICAKPiAtCWFsaWduZWRfaGVpZ2h0ID0gaW50ZWxfZmJfYWxpZ25faGVpZ2h0 KGRldiwgZmItPmhlaWdodCwKPiAtCQkJCQkgICAgICAgZmItPmZvcm1hdC0+Zm9ybWF0LAo+IC0J CQkJCSAgICAgICBmYi0+bW9kaWZpZXIpOwo+ICsJYWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9mYl9h bGlnbl9oZWlnaHQoZmIsIDAsIGZiLT5oZWlnaHQpOwo+ICAKPiAgCXBsYW5lX2NvbmZpZy0+c2l6 ZSA9IGZiLT5waXRjaGVzWzBdICogYWxpZ25lZF9oZWlnaHQ7Cj4gIAo+IEBAIC0xNTk2NywxNSAr MTU5NDksNiBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlzdHJpZGVfYWxp Z25tZW50ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXZfcHJpdiwKPiAtCQkJCQkJICAg ICBtb2RlX2NtZC0+bW9kaWZpZXJbMF0sCj4gLQkJCQkJCSAgICAgbW9kZV9jbWQtPnBpeGVsX2Zv cm1hdCk7Cj4gLQlpZiAobW9kZV9jbWQtPnBpdGNoZXNbMF0gJiAoc3RyaWRlX2FsaWdubWVudCAt IDEpKSB7Cj4gLQkJRFJNX0RFQlVHKCJwaXRjaCAoJWQpIG11c3QgYmUgYXQgbGVhc3QgJXUgYnl0 ZSBhbGlnbmVkXG4iLAo+IC0JCQkgIG1vZGVfY21kLT5waXRjaGVzWzBdLCBzdHJpZGVfYWxpZ25t ZW50KTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gIAlwaXRjaF9saW1pdCA9IGlu dGVsX2ZiX3BpdGNoX2xpbWl0KGRldl9wcml2LCBtb2RlX2NtZC0+bW9kaWZpZXJbMF0sCj4gIAkJ CQkJICAgbW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gIAlpZiAobW9kZV9jbWQtPnBpdGNoZXNb MF0gPiBwaXRjaF9saW1pdCkgewo+IEBAIC0xNjA1Nyw2ICsxNjAzMCwxNCBAQCBzdGF0aWMgaW50 IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gIAlkcm1faGVscGVyX21vZGVfZmlsbF9mYl9zdHJ1Y3QoZGV2LCAm aW50ZWxfZmItPmJhc2UsIG1vZGVfY21kKTsKPiArCj4gKwlzdHJpZGVfYWxpZ25tZW50ID0gaW50 ZWxfZmJfc3RyaWRlX2FsaWdubWVudCgmaW50ZWxfZmItPmJhc2UsIDApOwo+ICsJaWYgKG1vZGVf Y21kLT5waXRjaGVzWzBdICYgKHN0cmlkZV9hbGlnbm1lbnQgLSAxKSkgewo+ICsJCURSTV9ERUJV RygicGl0Y2ggKCVkKSBtdXN0IGJlIGF0IGxlYXN0ICV1IGJ5dGUgYWxpZ25lZFxuIiwKPiArCQkJ ICBtb2RlX2NtZC0+cGl0Y2hlc1swXSwgc3RyaWRlX2FsaWdubWVudCk7Cj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwl9Cj4gKwo+ICAJaW50ZWxfZmItPm9iaiA9IG9iajsKPiAgCj4gIAlyZXQgPSBp bnRlbF9maWxsX2ZiX2luZm8oZGV2X3ByaXYsICZpbnRlbF9mYi0+YmFzZSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA2YjAyZGFjNmVhMjYuLmUzZDE5ZmM2NzIwYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTEyMDgsMTIgKzEyMDgsOCBAQCB2b2lkIGlu dGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wg c3RhdGUpOwo+ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0X2xpbmtf ZHBsbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkJCQkgIGludCBjbG9jayk7Cj4g LXVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAtCQkJCSAgIHVuc2lnbmVkIGludCBoZWlnaHQsCj4gLQkJCQkgICB1aW50MzJfdCBwaXhl bF9mb3JtYXQsCj4gLQkJCQkgICB1aW50NjRfdCBmYl9mb3JtYXRfbW9kaWZpZXIpOwo+IC11MzIg aW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gLQkJCSAgICAgIHVpbnQ2NF90IGZiX21vZGlmaWVyLCB1aW50MzJfdCBwaXhl bF9mb3JtYXQpOwo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfZmJfYWxpZ25faGVpZ2h0KGNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICsJCQkJICAgaW50IHBsYW5lLCB1bnNpZ25lZCBp bnQgaGVpZ2h0KTsKPiAgCj4gIC8qIGludGVsX2F1ZGlvLmMgKi8KPiAgdm9pZCBpbnRlbF9pbml0 X2F1ZGlvX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gQEAgLTEz MjUsOSArMTMyMSw2IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdl cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICAgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ICAKPiAtdW5zaWduZWQgaW50IGludGVsX3Rp bGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJ ICAgICAgIHVpbnQ2NF90IGZiX21vZGlmaWVyLCB1bnNpZ25lZCBpbnQgY3BwKTsKPiAtCj4gIHZv aWQgYXNzZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJCSAgICBlbnVtIHBpcGUgcGlwZSk7Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IDczZDAyZDIxYzc2OC4uMzcxNjU1NGUzMmE5IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gQEAgLTYzMSw5ICs2MzEsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jpb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CQl9Cj4gIAo+ICAJCWN1cl9zaXplID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y192ZGlzcGxheTsKPiAtCQljdXJfc2l6ZSA9IGludGVsX2ZiX2FsaWduX2hlaWdo dChkZXYsIGN1cl9zaXplLAo+IC0JCQkJCQkgZmItPmJhc2UuZm9ybWF0LT5mb3JtYXQsCj4gLQkJ CQkJCSBmYi0+YmFzZS5tb2RpZmllcik7Cj4gKwkJY3VyX3NpemUgPSBpbnRlbF9mYl9hbGlnbl9o ZWlnaHQoJmZiLT5iYXNlLCAwLCBjdXJfc2l6ZSk7Cj4gIAkJY3VyX3NpemUgKj0gZmItPmJhc2Uu cGl0Y2hlc1swXTsKPiAgCQlEUk1fREVCVUdfS01TKCJwaXBlICVjIGFyZWE6ICVkeCVkLCBicHA6 ICVkLCBzaXplOiAlZFxuIiwKPiAgCQkJICAgICAgcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUp LAo+IC0tIAo+IDIuMTAuMgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK