From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 3/8] drm/i915: Add a new "remapped" gtt_view Date: Mon, 1 Oct 2018 18:03:30 +0300 Message-ID: <20181001150330.GI9144@intel.com> References: <20180925193714.25280-1-ville.syrjala@linux.intel.com> <20180925193714.25280-4-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD59E6E205 for ; Mon, 1 Oct 2018 15:03:49 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjYsIDIwMTggYXQgMDg6NTA6MjVBTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMjUvMDkvMjAxOCAyMDozNywgVmlsbGUgU3lyamFsYSB3cm90ZToKPiA+ IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g PiAKPiA+IFRvIG92ZXJjb21lIGRpc3BsYXkgZW5naW5lIHN0cmlkZSBsaW1pdHMgd2UnbGwgd2Fu dCB0byByZW1hcCB0aGUKPiA+IHBhZ2VzIGluIHRoZSBHVFQuIFRvIHRoYXQgZW5kIHdlIG5lZWQg YSBuZXcgZ3R0X3ZpZXcgdHlwZSB3aGljaAo+ID4gaXMganVzdCBsaWtlIHRoZSAicm90YXRlZCIg dHlwZSBleGNlcHQgbm90IHJvdGF0ZWQuCj4gPiAKPiA+IHYyOiBVc2UgaW50ZWxfcmVtYXBwZWRf cGxhbmVfaW5mbyBiYXNlIHR5cGUKPiA+ICAgICAgcy91bnVzZWQvdW51c2VkX21iei8gKENocmlz KQo+ID4gICAgICBTZXBhcmF0ZSBCVUlMRF9CVUdfT04oKXMgKENocmlzKQo+ID4gICAgICBVc2Ug STkxNV9HVFRfUEFHRV9TSVpFIChDaHJpcykKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICB8IDEyICsrKysKPiA+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgfCA5MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oICAgICAgIHwgMjUgKysrKysrKy0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmMgICAgICAgICAgIHwgIDYgKy0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuaCAgICAgICAgICAgfCAgMyArCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyAgICAgIHwgMTEgKysrKwo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICAgICAgICB8ICAxICsKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfdm1hLmMgfCAgNiArLQo+ID4gICA4IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ID4gaW5kZXggYjQ3NDRhNjhjZDg4Li5lZGI5ZjZmM2MwY2YgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+IEBAIC0xOTYsNiArMTk2LDE4IEBAIGRlc2Ny aWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4gPiAgIAkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucm90YXRlZC5wbGFuZVsxXS5vZmZzZXQp Owo+ID4gICAJCQkJYnJlYWs7Cj4gPiAgIAo+ID4gKwkJCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVN QVBQRUQ6Cj4gPiArCQkJCXNlcV9wcmludGYobSwgIiwgcmVtYXBwZWQgWygldXgldSwgc3RyaWRl PSV1LCBvZmZzZXQ9JXUpLCAoJXV4JXUsIHN0cmlkZT0ldSwgb2Zmc2V0PSV1KV0iLAo+ID4gKwkJ CQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxhbmVbMF0ud2lkdGgsCj4gPiArCQkJCQkg ICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVswXS5oZWlnaHQsCj4gPiArCQkJCQkgICB2 bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVswXS5zdHJpZGUsCj4gPiArCQkJCQkgICB2bWEt PmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVswXS5vZmZzZXQsCj4gPiArCQkJCQkgICB2bWEtPmdn dHRfdmlldy5yZW1hcHBlZC5wbGFuZVsxXS53aWR0aCwKPiA+ICsJCQkJCSAgIHZtYS0+Z2d0dF92 aWV3LnJlbWFwcGVkLnBsYW5lWzFdLmhlaWdodCwKPiA+ICsJCQkJCSAgIHZtYS0+Z2d0dF92aWV3 LnJlbWFwcGVkLnBsYW5lWzFdLnN0cmlkZSwKPiA+ICsJCQkJCSAgIHZtYS0+Z2d0dF92aWV3LnJl bWFwcGVkLnBsYW5lWzFdLm9mZnNldCk7Cj4gPiArCQkJCWJyZWFrOwo+ID4gKwo+ID4gICAJCQlk ZWZhdWx0Ogo+ID4gICAJCQkJTUlTU0lOR19DQVNFKHZtYS0+Z2d0dF92aWV3LnR5cGUpOwo+ID4g ICAJCQkJYnJlYWs7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gaW5kZXgg ZjZjN2FiNDEzMDgxLi5lNGQ0OWMzNDVjODEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiA+IEBAIC0zNzk4LDYgKzM3OTgsOTIgQEAgaW50ZWxfcm90YXRlX3BhZ2Vz KHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbywKPiA+ICAgCXJldHVybiBFUlJf UFRSKHJldCk7Cj4gPiAgIH0KPiA+ICAgCj4gPiArc3RhdGljIHN0cnVjdCBzY2F0dGVybGlzdCAq Cj4gPiArcmVtYXBfcGFnZXMoY29uc3QgZG1hX2FkZHJfdCAqaW4sIHVuc2lnbmVkIGludCBvZmZz ZXQsCj4gPiArCSAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCj4g PiArCSAgICB1bnNpZ25lZCBpbnQgc3RyaWRlLAo+ID4gKwkgICAgc3RydWN0IHNnX3RhYmxlICpz dCwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKPiA+ICt7Cj4gPiArCXVuc2lnbmVkIGludCBjb2x1 bW4sIHJvdzsKPiA+ICsKPiA+ICsJZm9yIChyb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdysrKSB7 Cj4gPiArCQlmb3IgKGNvbHVtbiA9IDA7IGNvbHVtbiA8IHdpZHRoOyBjb2x1bW4rKykgewo+ID4g KwkJCXN0LT5uZW50cysrOwo+ID4gKwkJCS8qIFdlIGRvbid0IG5lZWQgdGhlIHBhZ2VzLCBidXQg bmVlZCB0byBpbml0aWFsaXplCj4gPiArCQkJICogdGhlIGVudHJpZXMgc28gdGhlIHNnIGxpc3Qg Y2FuIGJlIGhhcHBpbHkgdHJhdmVyc2VkLgo+ID4gKwkJCSAqIFRoZSBvbmx5IHRoaW5nIHdlIG5l ZWQgYXJlIERNQSBhZGRyZXNzZXMuCj4gPiArCQkJICovCj4gPiArCQkJc2dfc2V0X3BhZ2Uoc2cs IE5VTEwsIEk5MTVfR1RUX1BBR0VfU0laRSwgMCk7Cj4gPiArCQkJc2dfZG1hX2FkZHJlc3Moc2cp ID0gaW5bb2Zmc2V0ICsgY29sdW1uXTsKPiA+ICsJCQlzZ19kbWFfbGVuKHNnKSA9IEk5MTVfR1RU X1BBR0VfU0laRTsKPiA+ICsJCQlzZyA9IHNnX25leHQoc2cpOwo+IAo+IEZvciB0aGlzIHR5cGUg b2YgcmVtYXBwaW5nIHlvdSBjb3VsZCBJIHRoaW5rIHBvdGVudGlhbGx5IGdldCBzb21lIAo+IGRl Y3JlYXNlZCBtZW1vcnkgdXNlIGJlbmVmaXRzIGJ5IGNvYWxlc2NpbmcgdGhlIGNvbnNlY3V0aXZl IGFkZHJlc3NlcyAKPiBpbnRvIHNpbmdsZSBzZyBlbnRyaWVzLiBJZiBJIHVuZGVyc3Rvb2QgY29y cmVjdGx5IHdoYXQgaXQncyBkb2luZyBhdCAKPiBsZWFzdC4uIFNpbmNlIGZyYW1lYnVmZmVycyBj b3VsZCBoYXZlIGEgZ29vZCBjaGFuY2UgdG8gaGF2ZSBiZWVuIAo+IGluaXRpYWxseSBhbGxvY2F0 ZWQgaW4gbGFyZ2VyIHRoYW4gcGFnZSBzaXplIGNodW5rcy4KPiAKPiBJZiB5b3UgZGVjaWRlIHRv IGRvIHRoYXQsIHRoZW4uLi4KPiAKPiA+ICsJCX0KPiA+ICsJCW9mZnNldCArPSBzdHJpZGU7Cj4g PiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIHNnOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgbm9p bmxpbmUgc3RydWN0IHNnX3RhYmxlICoKPiA+ICtpbnRlbF9yZW1hcF9wYWdlcyhzdHJ1Y3QgaW50 ZWxfcmVtYXBwZWRfaW5mbyAqcmVtX2luZm8sCj4gPiArCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCj4gPiArewo+ID4gKwljb25zdCB1bnNpZ25lZCBsb25nIG5fcGFnZXMgPSBv YmotPmJhc2Uuc2l6ZSAvIEk5MTVfR1RUX1BBR0VfU0laRTsKPiA+ICsJdW5zaWduZWQgaW50IHNp emUgPSBpbnRlbF9yZW1hcHBlZF9pbmZvX3NpemUocmVtX2luZm8pOwo+ID4gKwlzdHJ1Y3Qgc2d0 X2l0ZXIgc2d0X2l0ZXI7Cj4gPiArCWRtYV9hZGRyX3QgZG1hX2FkZHI7Cj4gPiArCXVuc2lnbmVk IGxvbmcgaTsKPiA+ICsJZG1hX2FkZHJfdCAqcGFnZV9hZGRyX2xpc3Q7Cj4gPiArCXN0cnVjdCBz Z190YWJsZSAqc3Q7Cj4gPiArCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4gPiArCWludCByZXQg PSAtRU5PTUVNOwo+ID4gKwo+ID4gKwkvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIHNv dXJjZSBwYWdlcyBmb3IgcmFuZG9tIGFjY2Vzcy4gKi8KPiA+ICsJcGFnZV9hZGRyX2xpc3QgPSBr dm1hbGxvY19hcnJheShuX3BhZ2VzLAo+ID4gKwkJCQkJc2l6ZW9mKGRtYV9hZGRyX3QpLAo+ID4g KwkJCQkJR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghcGFnZV9hZGRyX2xpc3QpCj4gPiArCQlyZXR1 cm4gRVJSX1BUUihyZXQpOwo+ID4gKwo+ID4gKwkvKiBBbGxvY2F0ZSB0YXJnZXQgU0cgbGlzdC4g Ki8KPiA+ICsJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiA+ICsJaWYg KCFzdCkKPiA+ICsJCWdvdG8gZXJyX3N0X2FsbG9jOwo+ID4gKwo+ID4gKwlyZXQgPSBzZ19hbGxv Y190YWJsZShzdCwgc2l6ZSwgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3Rv IGVycl9zZ19hbGxvYzsKPiA+ICsKPiA+ICsJLyogUG9wdWxhdGUgc291cmNlIHBhZ2UgbGlzdCBm cm9tIHRoZSBvYmplY3QuICovCj4gPiArCWkgPSAwOwo+ID4gKwlmb3JfZWFjaF9zZ3RfZG1hKGRt YV9hZGRyLCBzZ3RfaXRlciwgb2JqLT5tbS5wYWdlcykKPiA+ICsJCXBhZ2VfYWRkcl9saXN0W2kr K10gPSBkbWFfYWRkcjsKPiA+ICsKPiA+ICsJR0VNX0JVR19PTihpICE9IG5fcGFnZXMpOwo+ID4g KwlzdC0+bmVudHMgPSAwOwo+ID4gKwlzZyA9IHN0LT5zZ2w7Cj4gPiArCj4gPiArCWZvciAoaSA9 IDAgOyBpIDwgQVJSQVlfU0laRShyZW1faW5mby0+cGxhbmUpOyBpKyspIHsKPiA+ICsJCXNnID0g cmVtYXBfcGFnZXMocGFnZV9hZGRyX2xpc3QsIHJlbV9pbmZvLT5wbGFuZVtpXS5vZmZzZXQsCj4g PiArCQkJCSByZW1faW5mby0+cGxhbmVbaV0ud2lkdGgsIHJlbV9pbmZvLT5wbGFuZVtpXS5oZWln aHQsCj4gPiArCQkJCSByZW1faW5mby0+cGxhbmVbaV0uc3RyaWRlLCBzdCwgc2cpOwo+ID4gKwl9 Cj4gPiArCj4gPiArCWt2ZnJlZShwYWdlX2FkZHJfbGlzdCk7Cj4gPiArCj4gCj4gLi4uIHB1dCBp OTE1X3NnX3RyaW0gaGVyZSB0byBsb3NlIHRoZSB0cmFpbGluZyBlbmQgb2YgdW51c2VkIHNnIGVu dHJpZXMuCgpZZWFoLCBJIGd1ZXNzIHRoYXQgbWFrZXMgc2Vuc2UuCgo+IAo+IE9uZSBtb3JlIHRo aW5nLCBkbyB5b3UgcmVhbGx5IG5lZWQgcmFuZG9tIGFjY2VzcyBmb3IgdGhpcyAKPiB0cmFuc2Zv cm1hdGlvbj8gT3IgeW91IGNvdWxkIHdhbGsgdGhlIHNnIGxpc3QgYXMgaXQgaXM/IEp1c3QgaWYg eW91IGhpdCAKPiBhIHRvbyBsb25nIGNodW5rIHlvdSBuZWVkIHRvIGNvcHkgYSB0cmltbWVkIHZl cnNpb24gb3ZlciBhbmQga25vdyB3aGVyZSAKPiB0byBjb250aW51ZSBmb3IgdGhlIG5leHQgcm93 LiBJZiBkb2FibGUgaXQgd291bGQgYmUgYmV0dGVyIHRoYW4gaGF2aW5nIAo+IHRvIGt2bWFsbG9j X2FycmF5LgoKSSB0aGluayBDaHJpcyBzdWdnZXN0ZWQganVzdCB1c2luZyBpOTE1X2dlbV9vYmpl Y3RfZ2V0X2RtYV9hZGRyZXNzKCkKaGVyZS4gQnV0IEknbSBub3Qgc3VyZSB3aHkgd2UncmUgbm90 IHVzaW5nIGl0IGZvciByb3RhdGVfcGFnZXMoKQphcyB3ZWxsLgoKPiAKPiBSZWdhcmRzLAo+IAo+ IFR2cnRrbwo+IAo+ID4gKwlyZXR1cm4gc3Q7Cj4gPiArCj4gPiArZXJyX3NnX2FsbG9jOgo+ID4g KwlrZnJlZShzdCk7Cj4gPiArZXJyX3N0X2FsbG9jOgo+ID4gKwlrdmZyZWUocGFnZV9hZGRyX2xp c3QpOwo+ID4gKwo+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gY3JlYXRlIHJlbWFw cGVkIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6dSEgKCV1eCV1IHRpbGVzLCAldSBwYWdlcylc biIsCj4gPiArCQkJIG9iai0+YmFzZS5zaXplLCByZW1faW5mby0+cGxhbmVbMF0ud2lkdGgsIHJl bV9pbmZvLT5wbGFuZVswXS5oZWlnaHQsIHNpemUpOwo+ID4gKwo+ID4gKwlyZXR1cm4gRVJSX1BU UihyZXQpOwo+ID4gK30KPiA+ICsKPiA+ICAgc3RhdGljIG5vaW5saW5lIHN0cnVjdCBzZ190YWJs ZSAqCj4gPiAgIGludGVsX3BhcnRpYWxfcGFnZXMoY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3LAo+ID4gICAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4g QEAgLTM4NzQsNiArMzk2MCwxMSBAQCBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkx NV92bWEgKnZtYSkKPiA+ICAgCQkJaW50ZWxfcm90YXRlX3BhZ2VzKCZ2bWEtPmdndHRfdmlldy5y b3RhdGVkLCB2bWEtPm9iaik7Cj4gPiAgIAkJYnJlYWs7Cj4gPiAgIAo+ID4gKwljYXNlIEk5MTVf R0dUVF9WSUVXX1JFTUFQUEVEOgo+ID4gKwkJdm1hLT5wYWdlcyA9Cj4gPiArCQkJaW50ZWxfcmVt YXBfcGFnZXMoJnZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLCB2bWEtPm9iaik7Cj4gPiArCQlicmVh azsKPiA+ICsKPiA+ICAgCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUEFSVElBTDoKPiA+ICAgCQl2bWEt PnBhZ2VzID0gaW50ZWxfcGFydGlhbF9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcsIHZtYS0+b2JqKTsK PiA+ICAgCQlicmVhazsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gPiBpbmRl eCA3ZTJhZjVmNGYzOWIuLjY5YTIyZjU3ZTZjYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaAo+ID4gQEAgLTE2MCwxMSArMTYwLDE4IEBAIHR5cGVkZWYgdTY0IGdlbjhf cHBndHRfcG1sNGVfdDsKPiA+ICAgCj4gPiAgIHN0cnVjdCBzZ190YWJsZTsKPiA+ICAgCj4gPiAr c3RydWN0IGludGVsX3JlbWFwcGVkX3BsYW5lX2luZm8gewo+ID4gKwkvKiBpbiBndHQgcGFnZXMg Ki8KPiA+ICsJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwgb2Zmc2V0Owo+ID4g K30gX19wYWNrZWQ7Cj4gPiArCj4gPiArc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8gewo+ID4g KwlzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfcGxhbmVfaW5mbyBwbGFuZVsyXTsKPiA+ICsJdW5zaWdu ZWQgaW50IHVudXNlZF9tYno7Cj4gPiArfSBfX3BhY2tlZDsKPiA+ICsKPiA+ICAgc3RydWN0IGlu dGVsX3JvdGF0aW9uX2luZm8gewo+ID4gLQlzdHJ1Y3QgaW50ZWxfcm90YXRpb25fcGxhbmVfaW5m byB7Cj4gPiAtCQkvKiB0aWxlcyAqLwo+ID4gLQkJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQs IHN0cmlkZSwgb2Zmc2V0Owo+ID4gLQl9IHBsYW5lWzJdOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcmVt YXBwZWRfcGxhbmVfaW5mbyBwbGFuZVsyXTsKPiA+ICAgfSBfX3BhY2tlZDsKPiA+ICAgCj4gPiAg IHN0cnVjdCBpbnRlbF9wYXJ0aWFsX2luZm8gewo+ID4gQEAgLTE3NiwxMiArMTgzLDIwIEBAIGVu dW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB7Cj4gPiAgIAlJOTE1X0dHVFRfVklFV19OT1JNQUwgPSAw LAo+ID4gICAJSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCA9IHNpemVvZihzdHJ1Y3QgaW50ZWxfcm90 YXRpb25faW5mbyksCj4gPiAgIAlJOTE1X0dHVFRfVklFV19QQVJUSUFMID0gc2l6ZW9mKHN0cnVj dCBpbnRlbF9wYXJ0aWFsX2luZm8pLAo+ID4gKwlJOTE1X0dHVFRfVklFV19SRU1BUFBFRCA9IHNp emVvZihzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyksCj4gPiAgIH07Cj4gPiAgIAo+ID4gICBz dGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0X2k5MTVfZ2VtX2d0dF90eXBlcyh2b2lkKQo+ID4gICB7 Cj4gPiAgIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvKSAh PSA4KnNpemVvZih1bnNpZ25lZCBpbnQpKTsKPiA+ICAgCUJVSUxEX0JVR19PTihzaXplb2Yoc3Ry dWN0IGludGVsX3BhcnRpYWxfaW5mbykgIT0gc2l6ZW9mKHU2NCkgKyBzaXplb2YodW5zaWduZWQg aW50KSk7Cj4gPiArCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2lu Zm8pICE9IDkqc2l6ZW9mKHVuc2lnbmVkIGludCkpOwo+ID4gKwo+ID4gKwkvKiBDaGVjayB0aGF0 IHJvdGF0aW9uL3JlbWFwcGVkIHNoYXJlcyBvZmZzZXRzIGZvciBzaW1wbGljaXR5ICovCj4gPiAr CUJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbywgcGxhbmVb MF0pICE9Cj4gPiArCQkgICAgIG9mZnNldG9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvLCBw bGFuZVswXSkpOwo+ID4gKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2ZlbmQoc3RydWN0IGludGVsX3Jl bWFwcGVkX2luZm8sIHBsYW5lWzFdKSAhPQo+ID4gKwkJICAgICBvZmZzZXRvZmVuZChzdHJ1Y3Qg aW50ZWxfcm90YXRpb25faW5mbywgcGxhbmVbMV0pKTsKPiA+ICAgCj4gPiAgIAkvKiBBcyB3ZSBl bmNvZGUgdGhlIHNpemUgb2YgZWFjaCBicmFuY2ggaW5zaWRlIHRoZSB1bmlvbiBpbnRvIGl0cyB0 eXBlLAo+ID4gICAJICogd2UgaGF2ZSB0byBiZSBjYXJlZnVsIHRoYXQgZWFjaCBicmFuY2ggaGFz IGEgdW5pcXVlIHNpemUuCj4gPiBAQCAtMTkwLDYgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBhc3NlcnRfaTkxNV9nZW1fZ3R0X3R5cGVzKHZvaWQpCj4gPiAgIAljYXNlIEk5MTVfR0dUVF9W SUVXX05PUk1BTDoKPiA+ICAgCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUEFSVElBTDoKPiA+ICAgCWNh c2UgSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRDoKPiA+ICsJY2FzZSBJOTE1X0dHVFRfVklFV19SRU1B UFBFRDoKPiA+ICAgCQkvKiBnY2MgY29tcGxhaW5zIGlmIHRoZXNlIGFyZSBpZGVudGljYWwgY2Fz ZXMgKi8KPiA+ICAgCQlicmVhazsKPiA+ICAgCX0KPiA+IEBAIC0yMDEsNiArMjE3LDcgQEAgc3Ry dWN0IGk5MTVfZ2d0dF92aWV3IHsKPiA+ICAgCQkvKiBNZW1iZXJzIG5lZWQgdG8gY29udGFpbiBu byBob2xlcy9wYWRkaW5nICovCj4gPiAgIAkJc3RydWN0IGludGVsX3BhcnRpYWxfaW5mbyBwYXJ0 aWFsOwo+ID4gICAJCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHJvdGF0ZWQ7Cj4gPiArCQlz dHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyByZW1hcHBlZDsKPiA+ICAgCX07Cj4gPiAgIH07Cj4g PiAgIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gPiBpbmRleCAzMWVmYzk3MWEzYTguLjE3 OTNjNzAyYWI5NCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1h LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiA+IEBAIC0xNjQs NiArMTY0LDkgQEAgdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ID4gICAJCX0gZWxzZSBpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RBVEVEKSB7 Cj4gPiAgIAkJCXZtYS0+c2l6ZSA9IGludGVsX3JvdGF0aW9uX2luZm9fc2l6ZSgmdmlldy0+cm90 YXRlZCk7Cj4gPiAgIAkJCXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKPiA+ICsJCX0gZWxzZSBp ZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19SRU1BUFBFRCkgewo+ID4gKwkJCXZtYS0+ c2l6ZSA9IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZSgmdmlldy0+cmVtYXBwZWQpOwo+ID4gKwkJ CXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKPiA+ICAgCQl9Cj4gPiAgIAl9Cj4gPiAgIAo+ID4g QEAgLTQ2NCw3ICs0NjcsOCBAQCB2b2lkIF9faTkxNV92bWFfc2V0X21hcF9hbmRfZmVuY2VhYmxl KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ID4gICAJICogRXhwbGljaXRseSBkaXNhYmxlIGZvciBy b3RhdGVkIFZNQSBzaW5jZSB0aGUgZGlzcGxheSBkb2VzIG5vdAo+ID4gICAJICogbmVlZCB0aGUg ZmVuY2UgYW5kIHRoZSBWTUEgaXMgbm90IGFjY2Vzc2libGUgdG8gb3RoZXIgdXNlcnMuCj4gPiAg IAkgKi8KPiA+IC0JaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9U QVRFRCkKPiA+ICsJaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9U QVRFRCB8fAo+ID4gKwkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19S RU1BUFBFRCkKPiA+ICAgCQlyZXR1cm47Cj4gPiAgIAo+ID4gICAJZmVuY2VhYmxlID0gKHZtYS0+ bm9kZS5zaXplID49IHZtYS0+ZmVuY2Vfc2l6ZSAmJgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5o Cj4gPiBpbmRleCA0ZjdjMWM3NTk5ZjQuLjY0Y2YwMjljMDI4YSAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmgKPiA+IEBAIC0yNjUsOCArMjY1LDExIEBAIGk5MTVfdm1hX2NvbXBhcmUo c3RydWN0IGk5MTVfdm1hICp2bWEsCj4gPiAgIAkgKi8KPiA+ICAgCUJVSUxEX0JVR19PTihJOTE1 X0dHVFRfVklFV19OT1JNQUwgPj0gSTkxNV9HR1RUX1ZJRVdfUEFSVElBTCk7Cj4gPiAgIAlCVUlM RF9CVUdfT04oSTkxNV9HR1RUX1ZJRVdfUEFSVElBTCA+PSBJOTE1X0dHVFRfVklFV19ST1RBVEVE KTsKPiA+ICsJQlVJTERfQlVHX09OKEk5MTVfR0dUVF9WSUVXX1JPVEFURUQgPj0gSTkxNV9HR1RU X1ZJRVdfUkVNQVBQRUQpOwo+ID4gICAJQlVJTERfQlVHX09OKG9mZnNldG9mKHR5cGVvZigqdmll dyksIHJvdGF0ZWQpICE9Cj4gPiAgIAkJICAgICBvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCBwYXJ0 aWFsKSk7Cj4gPiArCUJVSUxEX0JVR19PTihvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCByb3RhdGVk KSAhPQo+ID4gKwkJICAgICBvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCByZW1hcHBlZCkpOwo+ID4g ICAJcmV0dXJuIG1lbWNtcCgmdm1hLT5nZ3R0X3ZpZXcucGFydGlhbCwgJnZpZXctPnBhcnRpYWws IHZpZXctPnR5cGUpOwo+ID4gICB9Cj4gPiAgIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ID4gaW5kZXggMWZlNWNmM2VkMDYyLi40ZjlmNTE5Y2NkNDYgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTIwMDYsNiArMjAwNiwxNyBA QCB1bnNpZ25lZCBpbnQgaW50ZWxfcm90YXRpb25faW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRl bF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbwo+ID4gICAJcmV0dXJuIHNpemU7Cj4gPiAgIH0KPiA+ ICAgCj4gPiArdW5zaWduZWQgaW50IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyAqcmVtX2luZm8pCj4gPiArewo+ID4gKwl1bnNpZ25lZCBp bnQgc2l6ZSA9IDA7Cj4gPiArCWludCBpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwIDsgaSA8IEFS UkFZX1NJWkUocmVtX2luZm8tPnBsYW5lKTsgaSsrKQo+ID4gKwkJc2l6ZSArPSByZW1faW5mby0+ cGxhbmVbaV0ud2lkdGggKiByZW1faW5mby0+cGxhbmVbaV0uaGVpZ2h0Owo+ID4gKwo+ID4gKwly ZXR1cm4gc2l6ZTsKPiA+ICt9Cj4gPiArCj4gPiAgIHN0YXRpYyB2b2lkCj4gPiAgIGludGVsX2Zp bGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKPiA+ICAgCQkJY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ID4gaW5kZXggNGZjYmE5OWQxMmMwLi5hODhhMTZiNzRmMjQgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0xNTAzLDYgKzE1MDMsNyBAQCB1bnNpZ25lZCBpbnQg aW50ZWxfZmJfeHlfdG9fbGluZWFyKGludCB4LCBpbnQgeSwKPiA+ICAgdm9pZCBpbnRlbF9hZGRf ZmJfb2Zmc2V0cyhpbnQgKngsIGludCAqeSwKPiA+ICAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlLCBpbnQgcGxhbmUpOwo+ID4gICB1bnNpZ25lZCBpbnQgaW50ZWxf cm90YXRpb25faW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3Rf aW5mbyk7Cj4gPiArdW5zaWduZWQgaW50IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZShjb25zdCBz dHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyAqcmVtX2luZm8pOwo+ID4gICBib29sIGludGVsX2hh c19wZW5kaW5nX2ZiX3VucGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g PiAgIHZvaWQgaW50ZWxfbWFya19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gPiAgIHZvaWQgaW50ZWxfbWFya19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+ ID4gaW5kZXggZmZhNzQyOTBlMDU0Li40ZmM0OWMyN2YxM2MgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKPiA+IEBAIC0zOTUsOCArMzk1LDggQEAg YXNzZXJ0X3JvdGF0ZWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ICAgCXJl dHVybiBzZzsKPiA+ICAgfQo+ID4gICAKPiA+IC1zdGF0aWMgdW5zaWduZWQgaW50IHJvdGF0ZWRf c2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcm90YXRpb25fcGxhbmVfaW5mbyAqYSwKPiA+IC0JCQkJ IGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9wbGFuZV9pbmZvICpiKQo+ID4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgcm90YXRlZF9zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFu ZV9pbmZvICphLAo+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGludGVsX3JlbWFwcGVkX3BsYW5lX2lu Zm8gKmIpCj4gPiAgIHsKPiA+ICAgCXJldHVybiBhLT53aWR0aCAqIGEtPmhlaWdodCArIGItPndp ZHRoICogYi0+aGVpZ2h0Owo+ID4gICB9Cj4gPiBAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRpYyBp bnQgaWd0X3ZtYV9yb3RhdGUodm9pZCAqYXJnKQo+ID4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBhcmc7Cj4gPiAgIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZp OTE1LT5nZ3R0LnZtOwo+ID4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ IC0JY29uc3Qgc3RydWN0IGludGVsX3JvdGF0aW9uX3BsYW5lX2luZm8gcGxhbmVzW10gPSB7Cj4g PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIHBsYW5lc1tdID0gewo+ ID4gICAJCXsgLndpZHRoID0gMSwgLmhlaWdodCA9IDEsIC5zdHJpZGUgPSAxIH0sCj4gPiAgIAkJ eyAud2lkdGggPSAyLCAuaGVpZ2h0ID0gMiwgLnN0cmlkZSA9IDIgfSwKPiA+ICAgCQl7IC53aWR0 aCA9IDQsIC5oZWlnaHQgPSA0LCAuc3RyaWRlID0gNCB9LAo+ID4gCgotLSAKVmlsbGUgU3lyasOk bMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=