From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v5 02/32] drm/i915: Complete page table structures Date: Tue, 24 Feb 2015 15:10:24 +0200 Message-ID: <87k2z7foan.fsf@gaia.fi.intel.com> References: <1418922621-25818-1-git-send-email-michel.thierry@intel.com> <1424706272-3016-1-git-send-email-michel.thierry@intel.com> <1424706272-3016-3-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 477226E2B4 for ; Tue, 24 Feb 2015 05:10:39 -0800 (PST) In-Reply-To: <1424706272-3016-3-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gd3JpdGVzOgoKPiBGcm9t OiBCZW4gV2lkYXdza3kgPGJlbmphbWluLndpZGF3c2t5QGludGVsLmNvbT4KPgo+IE1vdmUgdGhl IHJlbWFpbmluZyBtZW1iZXJzIG92ZXIgdG8gdGhlIG5ldyBwYWdlIHRhYmxlIHN0cnVjdHVyZXMu Cj4KPiBUaGlzIGNhbiBiZSBzcXVhc2hlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21taXQgaWYgZGVz aXJlLiBUaGUgcmVhc29uaW5nCj4gaXMgdGhlIHNhbWUgYXMgdGhhdCBwYXRjaC4gSSBzaW1wbHkg ZmVsdCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIHNwbGl0Lgo+Cj4gdjI6IEluIGxyYzogcy9w cGd0dC0+cGRfZG1hX2FkZHJbaV0vcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXS5kYWRkci8K PiB2MzogUmViYXNlLgo+Cj4gU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3 c2submV0Pgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBp bnRlbC5jb20+ICh2MiwgdjMpCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCA4 NSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwgMTQgKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jICAgIHwgMTYgKysrLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2Vy dGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBpbmRleCA2M2JlMzc0Li40ZDA3MDMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBAQCAtMjE4NSw3ICsyMTg1LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4g IAo+ICAJCXNlcV9wdXRzKG0sICJhbGlhc2luZyBQUEdUVDpcbiIpOwo+IC0JCXNlcV9wcmludGYo bSwgInBkIGd0dCBvZmZzZXQ6IDB4JTA4eFxuIiwgcHBndHQtPnBkX29mZnNldCk7Cj4gKwkJc2Vx X3ByaW50ZihtLCAicGQgZ3R0IG9mZnNldDogMHglMDh4XG4iLCBwcGd0dC0+cGQucGRfb2Zmc2V0 KTsKPiAgCj4gIAkJcHBndHQtPmRlYnVnX2R1bXAocHBndHQsIG0pOwo+ICAJfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMTAwMjZkMy4uZWIwNzE0YyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMg aW50IGdlbjhfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCWludCB1 c2VkX3BkID0gcHBndHQtPm51bV9wZF9lbnRyaWVzIC8gR0VOOF9QREVTX1BFUl9QQUdFOwo+ICAK PiAgCWZvciAoaSA9IHVzZWRfcGQgLSAxOyBpID49IDA7IGktLSkgewo+IC0JCWRtYV9hZGRyX3Qg YWRkciA9IHBwZ3R0LT5wZF9kbWFfYWRkcltpXTsKPiArCQlkbWFfYWRkcl90IGFkZHIgPSBwcGd0 dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLmRhZGRyOwo+ICAJCXJldCA9IGdlbjhfd3JpdGVfcGRw KHJpbmcsIGksIGFkZHIpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gQEAgLTQz Nyw3ICs0MzcsNiBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0KQo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX3BhZ2Vz OyBpKyspIHsKPiAgCQlnZW44X2ZyZWVfcGFnZV9kaXJlY3RvcnkoJnBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbaV0pOwo+IC0JCWtmcmVlKHBwZ3R0LT5nZW44X3B0X2RtYV9hZGRyW2ldKTsKPiAg CX0KPiAgfQo+ICAKPiBAQCAtNDQ5LDE0ICs0NDgsMTQgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0 dF91bm1hcF9wYWdlcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIAlmb3IgKGkgPSAw OyBpIDwgcHBndHQtPm51bV9wZF9wYWdlczsgaSsrKSB7Cj4gIAkJLyogVE9ETzogSW4gdGhlIGZ1 dHVyZSB3ZSdsbCBzdXBwb3J0IHNwYXJzZSBtYXBwaW5ncywgc28gdGhpcwo+ICAJCSAqIHdpbGwg aGF2ZSB0byBjaGFuZ2UuICovCj4gLQkJaWYgKCFwcGd0dC0+cGRfZG1hX2FkZHJbaV0pCj4gKwkJ aWYgKCFwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLmRhZGRyKQo+ICAJCQljb250aW51ZTsK PiAgCj4gLQkJcGNpX3VubWFwX3BhZ2UoaHdkZXYsIHBwZ3R0LT5wZF9kbWFfYWRkcltpXSwgUEFH RV9TSVpFLAo+ICsJCXBjaV91bm1hcF9wYWdlKGh3ZGV2LCBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0 b3J5W2ldLmRhZGRyLCBQQUdFX1NJWkUsCj4gIAkJCSAgICAgICBQQ0lfRE1BX0JJRElSRUNUSU9O QUwpOwo+ICAKPiAgCQlmb3IgKGogPSAwOyBqIDwgR0VOOF9QREVTX1BFUl9QQUdFOyBqKyspIHsK PiAtCQkJZG1hX2FkZHJfdCBhZGRyID0gcHBndHQtPmdlbjhfcHRfZG1hX2FkZHJbaV1bal07Cj4g KwkJCWRtYV9hZGRyX3QgYWRkciA9IHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0ucGFnZV90 YWJsZXNbal0uZGFkZHI7Cj4gIAkJCWlmIChhZGRyKQo+ICAJCQkJcGNpX3VubWFwX3BhZ2UoaHdk ZXYsIGFkZHIsIFBBR0VfU0laRSwKPiAgCQkJCQkgICAgICAgUENJX0RNQV9CSURJUkVDVElPTkFM KTsKPiBAQCAtNDczLDMyICs0NzIsMTkgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVw KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAJZ2VuOF9wcGd0dF9mcmVlKHBwZ3R0 KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jYXRlX2RtYShzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpCj4gLXsKPiAtCWludCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7 IGkgPCBwcGd0dC0+bnVtX3BkX3BhZ2VzOyBpKyspIHsKPiAtCQlwcGd0dC0+Z2VuOF9wdF9kbWFf YWRkcltpXSA9IGtjYWxsb2MoR0VOOF9QREVTX1BFUl9QQUdFLAo+IC0JCQkJCQkgICAgIHNpemVv ZihkbWFfYWRkcl90KSwKPiAtCQkJCQkJICAgICBHRlBfS0VSTkVMKTsKPiAtCQlpZiAoIXBwZ3R0 LT5nZW44X3B0X2RtYV9hZGRyW2ldKQo+IC0JCQlyZXR1cm4gLUVOT01FTTsKPiAtCX0KPiAtCj4g LQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jYXRlX3Bh Z2VfdGFibGVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+ICAJaW50IGksIGo7 Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRfcGFnZXM7IGkrKykgewo+ICsJ CXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCA9ICZwcGd0dC0+cGRwLnBhZ2Vf ZGlyZWN0b3J5W2ldOwo+ICAJCWZvciAoaiA9IDA7IGogPCBHRU44X1BERVNfUEVSX1BBR0U7IGor Kykgewo+IC0JCQlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdCA9ICZwcGd0dC0+cGRw LnBhZ2VfZGlyZWN0b3J5W2ldLnBhZ2VfdGFibGVzW2pdOwo+ICsJCQlzdHJ1Y3QgaTkxNV9wYWdl X3RhYmxlX2VudHJ5ICpwdCA9ICZwZC0+cGFnZV90YWJsZXNbal07Cj4gIAo+ICAJCQlwdC0+cGFn ZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOwo+ICAJCQlpZiAoIXB0LT5w YWdlKQo+ICAJCQkJZ290byB1bndpbmRfb3V0Owo+ICsKClRoaXMgaHVuayBzaG91bGQgaGF2ZSBi ZWVuIGluIHRoZSBwcmV2aW91cyBwYXRjaCwgb2ggd2VsbC4uCgo+ICAJCX0KPiAgCX0KPiAgCj4g QEAgLTU2MSwxMCArNTQ3LDYgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCj4gIAlwcGd0dC0+bnVtX3BkX2VudHJpZXMgPSBtYXhf cGRwICogR0VOOF9QREVTX1BFUl9QQUdFOwo+ICAKPiAtCXJldCA9IGdlbjhfcHBndHRfYWxsb2Nh dGVfZG1hKHBwZ3R0KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnJfb3V0Owo+IC0KPiAgCXJl dHVybiAwOwo+ICAKPiAgZXJyX291dDoKPiBAQCAtNTg2LDcgKzU2OCw3IEBAIHN0YXRpYyBpbnQg Z2VuOF9wcGd0dF9zZXR1cF9wYWdlX2RpcmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCwKCkhlcmUgd2UgYXJlIGFnYWluIHNldHRpbmcgb25seSBvbmUgcGFnZSBkaXJlY3Rvcnku IEJ1dCBhcyBpdCBpcyBub3QKcHJvYmxlbSB3aXRoIHRoaXMgcGF0Y2g6CgpSZXZpZXdlZC1ieTog TWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cgo+ICAJaWYgKHJldCkKPiAg CQlyZXR1cm4gcmV0Owo+ICAKPiAtCXBwZ3R0LT5wZF9kbWFfYWRkcltwZF0gPSBwZF9hZGRyOwo+ ICsJcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZF0uZGFkZHIgPSBwZF9hZGRyOwo+ICAKPiAg CXJldHVybiAwOwo+ICB9Cj4gQEAgLTU5NiwxNyArNTc4LDE4IEBAIHN0YXRpYyBpbnQgZ2VuOF9w cGd0dF9zZXR1cF9wYWdlX3RhYmxlcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAkJ CQkJY29uc3QgaW50IHB0KQo+ICB7Cj4gIAlkbWFfYWRkcl90IHB0X2FkZHI7Cj4gLQlzdHJ1Y3Qg cGFnZSAqcDsKPiArCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZGlyID0gJnBw Z3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRdOwo+ICsJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9l bnRyeSAqcHRhYiA9ICZwZGlyLT5wYWdlX3RhYmxlc1twdF07Cj4gKwlzdHJ1Y3QgcGFnZSAqcCA9 IHB0YWItPnBhZ2U7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXAgPSBwcGd0dC0+cGRwLnBhZ2VfZGly ZWN0b3J5W3BkXS5wYWdlX3RhYmxlc1twdF0ucGFnZTsKPiAgCXB0X2FkZHIgPSBwY2lfbWFwX3Bh Z2UocHBndHQtPmJhc2UuZGV2LT5wZGV2LAo+ICAJCQkgICAgICAgcCwgMCwgUEFHRV9TSVpFLCBQ Q0lfRE1BX0JJRElSRUNUSU9OQUwpOwo+ICAJcmV0ID0gcGNpX2RtYV9tYXBwaW5nX2Vycm9yKHBw Z3R0LT5iYXNlLmRldi0+cGRldiwgcHRfYWRkcik7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBy ZXQ7Cj4gIAo+IC0JcHBndHQtPmdlbjhfcHRfZG1hX2FkZHJbcGRdW3B0XSA9IHB0X2FkZHI7Cj4g KwlwdGFiLT5kYWRkciA9IHB0X2FkZHI7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNjYy LDcgKzY0NSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCwgdWludDY0X3Qgc2l6ZSkKPiAgCQlnZW44X3BwZ3R0X3BkZV90ICpwZF92YWRk cjsKPiAgCQlwZF92YWRkciA9IGttYXBfYXRvbWljKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rvcnlb aV0ucGFnZSk7Cj4gIAkJZm9yIChqID0gMDsgaiA8IEdFTjhfUERFU19QRVJfUEFHRTsgaisrKSB7 Cj4gLQkJCWRtYV9hZGRyX3QgYWRkciA9IHBwZ3R0LT5nZW44X3B0X2RtYV9hZGRyW2ldW2pdOwo+ ICsJCQlkbWFfYWRkcl90IGFkZHIgPSBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLnBhZ2Vf dGFibGVzW2pdLmRhZGRyOwo+ICAJCQlwZF92YWRkcltqXSA9IGdlbjhfcGRlX2VuY29kZShwcGd0 dC0+YmFzZS5kZXYsIGFkZHIsCj4gIAkJCQkJCSAgICAgIEk5MTVfQ0FDSEVfTExDKTsKPiAgCQl9 Cj4gQEAgLTcwNSwxNCArNjg4LDE1IEBAIHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCXNjcmF0Y2hf cHRlID0gdm0tPnB0ZV9lbmNvZGUodm0tPnNjcmF0Y2guYWRkciwgSTkxNV9DQUNIRV9MTEMsIHRy dWUsIDApOwo+ICAKPiAgCXBkX2FkZHIgPSAoZ2VuNl9ndHRfcHRlX3QgX19pb21lbSAqKWRldl9w cml2LT5ndHQuZ3NtICsKPiAtCQlwcGd0dC0+cGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0 ZV90KTsKPiArCQlwcGd0dC0+cGQucGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0ZV90KTsK PiAgCj4gIAlzZXFfcHJpbnRmKG0sICIgIFZNICVwIChwZF9vZmZzZXQgJXgtJXgpOlxuIiwgdm0s Cj4gLQkJICAgcHBndHQtPnBkX29mZnNldCwgcHBndHQtPnBkX29mZnNldCArIHBwZ3R0LT5udW1f cGRfZW50cmllcyk7Cj4gKwkJICAgcHBndHQtPnBkLnBkX29mZnNldCwKPiArCQkgICBwcGd0dC0+ cGQucGRfb2Zmc2V0ICsgcHBndHQtPm51bV9wZF9lbnRyaWVzKTsKPiAgCWZvciAocGRlID0gMDsg cGRlIDwgcHBndHQtPm51bV9wZF9lbnRyaWVzOyBwZGUrKykgewo+ICAJCXUzMiBleHBlY3RlZDsK PiAgCQlnZW42X2d0dF9wdGVfdCAqcHRfdmFkZHI7Cj4gLQkJZG1hX2FkZHJfdCBwdF9hZGRyID0g cHBndHQtPnB0X2RtYV9hZGRyW3BkZV07Cj4gKwkJZG1hX2FkZHJfdCBwdF9hZGRyID0gcHBndHQt PnBkLnBhZ2VfdGFibGVzW3BkZV0uZGFkZHI7Cj4gIAkJcGRfZW50cnkgPSByZWFkbChwZF9hZGRy ICsgcGRlKTsKPiAgCQlleHBlY3RlZCA9IChHRU42X1BERV9BRERSX0VOQ09ERShwdF9hZGRyKSB8 IEdFTjZfUERFX1ZBTElEKTsKPiAgCj4gQEAgLTc1NiwxMyArNzQwLDEzIEBAIHN0YXRpYyB2b2lk IGdlbjZfd3JpdGVfcGRlcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIAl1aW50MzJf dCBwZF9lbnRyeTsKPiAgCWludCBpOwo+ICAKPiAtCVdBUk5fT04ocHBndHQtPnBkX29mZnNldCAm IDB4M2YpOwo+ICsJV0FSTl9PTihwcGd0dC0+cGQucGRfb2Zmc2V0ICYgMHgzZik7Cj4gIAlwZF9h ZGRyID0gKGdlbjZfZ3R0X3B0ZV90IF9faW9tZW0qKWRldl9wcml2LT5ndHQuZ3NtICsKPiAtCQlw cGd0dC0+cGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0ZV90KTsKPiArCQlwcGd0dC0+cGQu cGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0ZV90KTsKPiAgCWZvciAoaSA9IDA7IGkgPCBw cGd0dC0+bnVtX3BkX2VudHJpZXM7IGkrKykgewo+ICAJCWRtYV9hZGRyX3QgcHRfYWRkcjsKPiAg Cj4gLQkJcHRfYWRkciA9IHBwZ3R0LT5wdF9kbWFfYWRkcltpXTsKPiArCQlwdF9hZGRyID0gcHBn dHQtPnBkLnBhZ2VfdGFibGVzW2ldLmRhZGRyOwo+ICAJCXBkX2VudHJ5ID0gR0VONl9QREVfQURE Ul9FTkNPREUocHRfYWRkcik7Cj4gIAkJcGRfZW50cnkgfD0gR0VONl9QREVfVkFMSUQ7Cj4gIAo+ IEBAIC03NzMsOSArNzU3LDkgQEAgc3RhdGljIHZvaWQgZ2VuNl93cml0ZV9wZGVzKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCj4gIHN0YXRpYyB1aW50MzJfdCBnZXRfcGRfb2Zmc2V0 KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+IC0JQlVHX09OKHBwZ3R0LT5wZF9v ZmZzZXQgJiAweDNmKTsKPiArCUJVR19PTihwcGd0dC0+cGQucGRfb2Zmc2V0ICYgMHgzZik7Cj4g IAo+IC0JcmV0dXJuIChwcGd0dC0+cGRfb2Zmc2V0IC8gNjQpIDw8IDE2Owo+ICsJcmV0dXJuIChw cGd0dC0+cGQucGRfb2Zmc2V0IC8gNjQpIDw8IDE2Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGhz d19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+IEBAIC05ODgsMTkgKzk3 MiwxNiBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X3VubWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKPiAgewo+ICAJaW50IGk7Cj4gIAo+IC0JaWYgKHBwZ3R0LT5wdF9kbWFf YWRkcikgewo+IC0JCWZvciAoaSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX2VudHJpZXM7IGkrKykK PiAtCQkJcGNpX3VubWFwX3BhZ2UocHBndHQtPmJhc2UuZGV2LT5wZGV2LAo+IC0JCQkJICAgICAg IHBwZ3R0LT5wdF9kbWFfYWRkcltpXSwKPiAtCQkJCSAgICAgICA0MDk2LCBQQ0lfRE1BX0JJRElS RUNUSU9OQUwpOwo+IC0JfQo+ICsJZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRfZW50cmll czsgaSsrKQo+ICsJCXBjaV91bm1hcF9wYWdlKHBwZ3R0LT5iYXNlLmRldi0+cGRldiwKPiArCQkJ ICAgICAgIHBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tpXS5kYWRkciwKPiArCQkJICAgICAgIDQwOTYs IFBDSV9ETUFfQklESVJFQ1RJT05BTCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjZfcHBn dHRfZnJlZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAgCWludCBpOwo+ICAK PiAtCWtmcmVlKHBwZ3R0LT5wdF9kbWFfYWRkcik7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgcHBndHQt Pm51bV9wZF9lbnRyaWVzOyBpKyspCj4gIAkJX19mcmVlX3BhZ2UocHBndHQtPnBkLnBhZ2VfdGFi bGVzW2ldLnBhZ2UpOwo+ICAJa2ZyZWUocHBndHQtPnBkLnBhZ2VfdGFibGVzKTsKPiBAQCAtMTA5 MywxNCArMTA3NCw2IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxvYyhzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQlwcGd0dC0+cHRf ZG1hX2FkZHIgPSBrY2FsbG9jKHBwZ3R0LT5udW1fcGRfZW50cmllcywgc2l6ZW9mKGRtYV9hZGRy X3QpLAo+IC0JCQkJICAgICBHRlBfS0VSTkVMKTsKPiAtCWlmICghcHBndHQtPnB0X2RtYV9hZGRy KSB7Cj4gLQkJZHJtX21tX3JlbW92ZV9ub2RlKCZwcGd0dC0+bm9kZSk7Cj4gLQkJZ2VuNl9wcGd0 dF9mcmVlKHBwZ3R0KTsKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCX0KPiAtCj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiBAQCAtMTEyMiw3ICsxMDk1LDcgQEAgc3RhdGljIGludCBnZW42X3BwZ3R0 X3NldHVwX3BhZ2VfdGFibGVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCQkJcmV0 dXJuIC1FSU87Cj4gIAkJfQo+ICAKPiAtCQlwcGd0dC0+cHRfZG1hX2FkZHJbaV0gPSBwdF9hZGRy Owo+ICsJCXBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tpXS5kYWRkciA9IHB0X2FkZHI7Cj4gIAl9Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTExNjQsNyArMTEzNyw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9w cGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCXBwZ3R0LT5iYXNlLnRv dGFsID0gcHBndHQtPm51bV9wZF9lbnRyaWVzICogSTkxNV9QUEdUVF9QVF9FTlRSSUVTICogUEFH RV9TSVpFOwo+ICAJcHBndHQtPmRlYnVnX2R1bXAgPSBnZW42X2R1bXBfcHBndHQ7Cj4gIAo+IC0J cHBndHQtPnBkX29mZnNldCA9Cj4gKwlwcGd0dC0+cGQucGRfb2Zmc2V0ID0KPiAgCQlwcGd0dC0+ bm9kZS5zdGFydCAvIFBBR0VfU0laRSAqIHNpemVvZihnZW42X2d0dF9wdGVfdCk7Cj4gIAo+ICAJ cHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UoJnBwZ3R0LT5iYXNlLCAwLCBwcGd0dC0+YmFzZS50b3Rh bCwgdHJ1ZSk7Cj4gQEAgLTExNzUsNyArMTE0OCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9p bml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCj4gIAlnZW42X3dyaXRlX3BkZXMo cHBndHQpOwo+ICAJRFJNX0RFQlVHKCJBZGRpbmcgUFBHVFQgYXQgb2Zmc2V0ICV4XG4iLAo+IC0J CSAgcHBndHQtPnBkX29mZnNldCA8PCAxMCk7Cj4gKwkJICBwcGd0dC0+cGQucGRfb2Zmc2V0IDw8 IDEwKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCj4gaW5kZXggZDliYzM3NS4uNmVmZWIxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCj4gQEAgLTE4OSwxMCArMTg5LDE2IEBAIHN0cnVjdCBpOTE1X3ZtYSB7Cj4gIAo+ ICBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5IHsKPiAgCXN0cnVjdCBwYWdlICpwYWdlOwo+ ICsJZG1hX2FkZHJfdCBkYWRkcjsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0 b3J5X2VudHJ5IHsKPiAgCXN0cnVjdCBwYWdlICpwYWdlOyAvKiBOVUxMIGZvciBHRU42LUdFTjcg Ki8KPiArCXVuaW9uIHsKPiArCQl1aW50MzJfdCBwZF9vZmZzZXQ7Cj4gKwkJZG1hX2FkZHJfdCBk YWRkcjsKPiArCX07Cj4gKwo+ICAJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAqcGFnZV90 YWJsZXM7Cj4gIH07Cj4gIAo+IEBAIC0yODYsMTQgKzI5Miw2IEBAIHN0cnVjdCBpOTE1X2h3X3Bw Z3R0IHsKPiAgCXVuc2lnbmVkIG51bV9wZF9lbnRyaWVzOwo+ICAJdW5zaWduZWQgbnVtX3BkX3Bh Z2VzOyAvKiBnZW44KyAqLwo+ICAJdW5pb24gewo+IC0JCXVpbnQzMl90IHBkX29mZnNldDsKPiAt CQlkbWFfYWRkcl90IHBkX2RtYV9hZGRyW0dFTjhfTEVHQUNZX1BEUEVTXTsKPiAtCX07Cj4gLQl1 bmlvbiB7Cj4gLQkJZG1hX2FkZHJfdCAqcHRfZG1hX2FkZHI7Cj4gLQkJZG1hX2FkZHJfdCAqZ2Vu OF9wdF9kbWFfYWRkcltHRU44X0xFR0FDWV9QRFBFU107Cj4gLQl9Owo+IC0JdW5pb24gewo+ICAJ CXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgcGRwOwo+ICAJCXN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5IHBkOwo+ICAJfTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+IGluZGV4IDFjNjU5NDkuLjllNzE5OTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+IEBAIC0xNzM1LDE0ICsxNzM1LDE0IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v Cj4gIAlyZWdfc3RhdGVbQ1RYX1BEUDFfTERXXSA9IEdFTjhfUklOR19QRFBfTERXKHJpbmcsIDEp Owo+ICAJcmVnX3N0YXRlW0NUWF9QRFAwX1VEV10gPSBHRU44X1JJTkdfUERQX1VEVyhyaW5nLCAw KTsKPiAgCXJlZ19zdGF0ZVtDVFhfUERQMF9MRFddID0gR0VOOF9SSU5HX1BEUF9MRFcocmluZywg MCk7Cj4gLQlyZWdfc3RhdGVbQ1RYX1BEUDNfVURXKzFdID0gdXBwZXJfMzJfYml0cyhwcGd0dC0+ cGRfZG1hX2FkZHJbM10pOwo+IC0JcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9IGxvd2VyXzMy X2JpdHMocHBndHQtPnBkX2RtYV9hZGRyWzNdKTsKPiAtCXJlZ19zdGF0ZVtDVFhfUERQMl9VRFcr MV0gPSB1cHBlcl8zMl9iaXRzKHBwZ3R0LT5wZF9kbWFfYWRkclsyXSk7Cj4gLQlyZWdfc3RhdGVb Q1RYX1BEUDJfTERXKzFdID0gbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRfZG1hX2FkZHJbMl0pOwo+ IC0JcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkX2Rt YV9hZGRyWzFdKTsKPiAtCXJlZ19zdGF0ZVtDVFhfUERQMV9MRFcrMV0gPSBsb3dlcl8zMl9iaXRz KHBwZ3R0LT5wZF9kbWFfYWRkclsxXSk7Cj4gLQlyZWdfc3RhdGVbQ1RYX1BEUDBfVURXKzFdID0g dXBwZXJfMzJfYml0cyhwcGd0dC0+cGRfZG1hX2FkZHJbMF0pOwo+IC0JcmVnX3N0YXRlW0NUWF9Q RFAwX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMocHBndHQtPnBkX2RtYV9hZGRyWzBdKTsKPiArCXJl Z19zdGF0ZVtDVFhfUERQM19VRFcrMV0gPSB1cHBlcl8zMl9iaXRzKHBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbM10uZGFkZHIpOwo+ICsJcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9IGxvd2Vy XzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVszXS5kYWRkcik7Cj4gKwlyZWdfc3Rh dGVbQ1RYX1BEUDJfVURXKzFdID0gdXBwZXJfMzJfYml0cyhwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0 b3J5WzJdLmRhZGRyKTsKPiArCXJlZ19zdGF0ZVtDVFhfUERQMl9MRFcrMV0gPSBsb3dlcl8zMl9i aXRzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbMl0uZGFkZHIpOwo+ICsJcmVnX3N0YXRlW0NU WF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsx XS5kYWRkcik7Cj4gKwlyZWdfc3RhdGVbQ1RYX1BEUDFfTERXKzFdID0gbG93ZXJfMzJfYml0cyhw cGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5WzFdLmRhZGRyKTsKPiArCXJlZ19zdGF0ZVtDVFhfUERQ MF9VRFcrMV0gPSB1cHBlcl8zMl9iaXRzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbMF0uZGFk ZHIpOwo+ICsJcmVnX3N0YXRlW0NUWF9QRFAwX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMocHBndHQt PnBkcC5wYWdlX2RpcmVjdG9yeVswXS5kYWRkcik7Cj4gIAlpZiAocmluZy0+aWQgPT0gUkNTKSB7 Cj4gIAkJcmVnX3N0YXRlW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSk7Cj4gIAkJcmVnX3N0YXRlW0NUWF9SX1BXUl9DTEtfU1RBVEVdID0gMHgyMGM4Owo+IC0tIAo+ IDIuMS4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=