From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 02/11] drm/i915/gtt: Wrap page_table with page_directory Date: Tue, 09 Jul 2019 17:43:15 +0300 Message-ID: <87bly31d6k.fsf@gaia.fi.intel.com> References: <20190707210024.26192-1-chris@chris-wilson.co.uk> <20190707210024.26192-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id A410089312 for ; Tue, 9 Jul 2019 14:43:29 +0000 (UTC) In-Reply-To: <20190707210024.26192-3-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVGhlIHBh Z2UgZGlyZWN0b3J5IGV4dGVuZHMgdGhlIHBhZ2UgdGFibGUgd2l0aCB0aGUgc2hhZG93IGVudHJp ZXMuIE1ha2UKPiB0aGUgcGFnZSBkaXJlY3Rvcnkgc3RydWN0IGVtYmVkIHRoZSBwYWdlIHRhYmxl IGZvciBlYXNpZXIgY29kZSByZXVzZS4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMgICAgICAgIHwgMTAwICsrKysrKysrKystLS0tLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgfCAgMzEgKysrKystLQo+ICAzIGZp bGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGIzM2NmYzU2ZjYy My4uOTE2M2I1MjM4MDgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jp bmdidWZmZXIuYwo+IEBAIC0xNTAzLDcgKzE1MDMsNyBAQCBzdGF0aWMgaW50IGxvYWRfcGRfZGly KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBjb25zdCBzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQp Cj4gIAo+ICAJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKPiAgCSpjcysrID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUtPm1taW9fYmFzZSkpOwo+ IC0JKmNzKysgPSBwcGd0dC0+cGQtPmJhc2UuZ2d0dF9vZmZzZXQgPDwgMTA7Cj4gKwkqY3MrKyA9 IHB4X2Jhc2UocHBndHQtPnBkKS0+Z2d0dF9vZmZzZXQgPDwgMTA7Cj4gIAo+ICAJaW50ZWxfcmlu Z19hZHZhbmNlKHJxLCBjcyk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g aW5kZXggOTM3MjM2OTEzZTcwLi4xZmE5M2Y1Njc5MmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IEBAIC0xMDcsNiArMTA3LDggQEAKPiAgICoKPiAgICovCj4gIAo+ICsj ZGVmaW5lIGFzX3BkKHgpIGNvbnRhaW5lcl9vZigoeCksIHR5cGVvZihzdHJ1Y3QgaTkxNV9wYWdl X2RpcmVjdG9yeSksIHB0KQo+ICsKClRoaXMgcmVtYWlucyB1bnVzZWQuCgo+ICBzdGF0aWMgaW50 Cj4gIGk5MTVfZ2V0X2dndHRfdm1hX3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAgCj4g QEAgLTcxMiwyOCArNzE0LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICphbGxv Y19wdChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgCXJldHVybiBwdDsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgZnJlZV9wdChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwg c3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQpCj4gLXsKPiAtCWNsZWFudXBfcGFnZV9kbWEodm0s ICZwdC0+YmFzZSk7Cj4gLQlrZnJlZShwdCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyBzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeSAqX19hbGxvY19wZCh2b2lkKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9w YWdlX2RpcmVjdG9yeSAqcGQ7Cj4gIAo+ICAJcGQgPSBrbWFsbG9jKHNpemVvZigqcGQpLCBJOTE1 X0dGUF9BTExPV19GQUlMKTsKPiAtCj4gIAlpZiAodW5saWtlbHkoIXBkKSkKPiAgCQlyZXR1cm4g TlVMTDsKPiAgCj4gLQltZW1zZXQoJnBkLT5iYXNlLCAwLCBzaXplb2YocGQtPmJhc2UpKTsKPiAt CWF0b21pY19zZXQoJnBkLT51c2VkLCAwKTsKPiArCWF0b21pY19zZXQocHhfdXNlZChwZCksIDAp Owo+ICAJc3Bpbl9sb2NrX2luaXQoJnBkLT5sb2NrKTsKPiAgCj4gLQkvKiBmb3Igc2FmZXR5ICov Cj4gLQlwZC0+ZW50cnlbMF0gPSBOVUxMOwoKUGVyaGFwcyB5ZXMgdGhpcyBpcyBzdXBlcmZsdW91 cyBhcyB3ZSAoYWxtb3N0KSBhbHdheXMgaW5pdCBhZnRlciB0aGlzLApvciBpbiB0aGUgbmV4dCBj YWxsIHRvIHZtLiBUaGUgYmxvd291dCB3b3VsZCBiZSBjbGVhcmVyIGlmIHdlIGZvcmdldCwKYnV0 IGNhbiBsaXZlIHdpdGhvdXQuCgo+IC0KPiAgCXJldHVybiBwZDsKPiAgfQo+ICAKPiBAQCAtNzQ1 LDcgKzczNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqYWxsb2NfcGQo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gIAlpZiAodW5saWtlbHkoIXBkKSkKPiAg CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gLQlpZiAodW5saWtlbHkoc2V0dXBfcGFn ZV9kbWEodm0sICZwZC0+YmFzZSkpKSB7Cj4gKwlpZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEo dm0sIHB4X2Jhc2UocGQpKSkpIHsKPiAgCQlrZnJlZShwZCk7Cj4gIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4gIAl9Cj4gQEAgLTc1MywxMyArNzQ0LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeSAqYWxsb2NfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Cj4gIAlyZXR1cm4gcGQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGZyZWVfcGQoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5 ICpwZCkKPiArc3RhdGljIHZvaWQgZnJlZV9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwgc3RydWN0IGk5MTVfcGFnZV9kbWEgKnBkKQo+ICB7Cj4gLQljbGVhbnVwX3BhZ2VfZG1hKHZt LCAmcGQtPmJhc2UpOwo+ICsJY2xlYW51cF9wYWdlX2RtYSh2bSwgcGQpOwo+ICAJa2ZyZWUocGQp Owo+ICB9Cj4gIAo+ICsjZGVmaW5lIGZyZWVfcHgodm0sIHB4KSBmcmVlX3BkKHZtLCBweF9iYXNl KHB4KSkKPiArCj4gIHN0YXRpYyB2b2lkIGluaXRfcGQoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKnBkLAo+ICAJCSAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqc2NyYXRjaCkKPiAgewo+IEBA IC03ODQsOSArNzc2LDkgQEAgX19zZXRfcGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKiBjb25zdCBwZCwKPiAgCSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNvbnN0IHRv LAo+ICAJICAgICAgIHU2NCAoKmVuY29kZSkoY29uc3QgZG1hX2FkZHJfdCwgY29uc3QgZW51bSBp OTE1X2NhY2hlX2xldmVsKSkKPiAgewo+IC0JR0VNX0JVR19PTihhdG9taWNfcmVhZCgmcGQtPnVz ZWQpID4gNTEyKTsKPiArCUdFTV9CVUdfT04oYXRvbWljX3JlYWQocHhfdXNlZChwZCkpID4gNTEy KTsKCkluIGhpbmRzaWdodCBJIHNob3VsZCBoYXZlIGFkZGVkIGNvbW1lbnQgaGVyZSB0byBleHBs YWluIHdoeSBub3QgPj0gNTEyCmJ1dCBub3QgYSBwcm9ibGVtIHdpdGggdGhpcyBwYXRjaC4KClJl dmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4K Cj4gIAo+IC0JYXRvbWljX2luYygmcGQtPnVzZWQpOwo+ICsJYXRvbWljX2luYyhweF91c2VkKHBk KSk7Cj4gIAlwZC0+ZW50cnlbcGRlXSA9IHRvOwo+ICAJd3JpdGVfZG1hX2VudHJ5KHB4X2Jhc2Uo cGQpLCBwZGUsIGVuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FDSEVfTExDKSk7Cj4gIH0KPiBAQCAt Nzk3LDExICs3ODksMTEgQEAgX19jbGVhcl9wZF9lbnRyeShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeSAqIGNvbnN0IHBkLAo+ICAJCSBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNvbnN0IHRvLAo+ ICAJCSB1NjQgKCplbmNvZGUpKGNvbnN0IGRtYV9hZGRyX3QsIGNvbnN0IGVudW0gaTkxNV9jYWNo ZV9sZXZlbCkpCj4gIHsKPiAtCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJnBkLT51c2VkKSA9PSAw KTsKPiArCUdFTV9CVUdfT04oYXRvbWljX3JlYWQocHhfdXNlZChwZCkpID09IDApOwo+ICAKPiAg CXdyaXRlX2RtYV9lbnRyeShweF9iYXNlKHBkKSwgcGRlLCBlbmNvZGUodG8tPmRhZGRyLCBJOTE1 X0NBQ0hFX0xMQykpOwo+ICAJcGQtPmVudHJ5W3BkZV0gPSB0bzsKPiAtCWF0b21pY19kZWMoJnBk LT51c2VkKTsKPiArCWF0b21pY19kZWMocHhfdXNlZChwZCkpOwo+ICB9Cj4gIAo+ICAjZGVmaW5l IHNldF9wZF9lbnRyeShwZCwgcGRlLCB0bykgXAo+IEBAIC04MTMsMTMgKzgwNSwxMyBAQCBfX2Ns ZWFyX3BkX2VudHJ5KHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICogY29uc3QgcGQsCj4gIHN0 YXRpYyBib29sCj4gIHJlbGVhc2VfcGRfZW50cnkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnkg KiBjb25zdCBwZCwKPiAgCQkgY29uc3QgdW5zaWduZWQgc2hvcnQgcGRlLAo+IC0JCSBhdG9taWNf dCAqY291bnRlciwKPiArCQkgc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqIGNvbnN0IHB0LAo+ICAJ CSBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNvbnN0IHNjcmF0Y2gpCj4gIHsKPiAgCWJvb2wgZnJl ZSA9IGZhbHNlOwo+ICAKPiAgCXNwaW5fbG9jaygmcGQtPmxvY2spOwo+IC0JaWYgKGF0b21pY19k ZWNfYW5kX3Rlc3QoY291bnRlcikpIHsKPiArCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZwdC0+ dXNlZCkpIHsKPiAgCQljbGVhcl9wZF9lbnRyeShwZCwgcGRlLCBzY3JhdGNoKTsKPiAgCQlmcmVl ID0gdHJ1ZTsKPiAgCX0KPiBAQCAtODcwLDggKzg2Miw4IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfY2xlYXJfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAo+ICAJCWF0b21p Y19pbmMoJnB0LT51c2VkKTsKPiAgCQlnZW44X3BwZ3R0X2NsZWFyX3B0KHZtLCBwdCwgc3RhcnQs IGxlbmd0aCk7Cj4gLQkJaWYgKHJlbGVhc2VfcGRfZW50cnkocGQsIHBkZSwgJnB0LT51c2VkLCAm dm0tPnNjcmF0Y2hfcHQpKQo+IC0JCQlmcmVlX3B0KHZtLCBwdCk7Cj4gKwkJaWYgKHJlbGVhc2Vf cGRfZW50cnkocGQsIHBkZSwgcHQsICZ2bS0+c2NyYXRjaF9wdCkpCj4gKwkJCWZyZWVfcHgodm0s IHB0KTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtODg4LDEwICs4ODAsMTAgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9jbGVhcl9wZHAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAln ZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgcGRwZSkgewo+ICAJCUdF TV9CVUdfT04ocHhfYmFzZShwZCkgPT0gJnZtLT5zY3JhdGNoX3BkKTsKPiAgCj4gLQkJYXRvbWlj X2luYygmcGQtPnVzZWQpOwo+ICsJCWF0b21pY19pbmMocHhfdXNlZChwZCkpOwo+ICAJCWdlbjhf cHBndHRfY2xlYXJfcGQodm0sIHBkLCBzdGFydCwgbGVuZ3RoKTsKPiAtCQlpZiAocmVsZWFzZV9w ZF9lbnRyeShwZHAsIHBkcGUsICZwZC0+dXNlZCwgJnZtLT5zY3JhdGNoX3BkKSkKPiAtCQkJZnJl ZV9wZCh2bSwgcGQpOwo+ICsJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRwZSwgJnBkLT5w dCwgJnZtLT5zY3JhdGNoX3BkKSkKPiArCQkJZnJlZV9weCh2bSwgcGQpOwo+ICAJfQo+ICB9Cj4g IAo+IEBAIC05MTgsMTAgKzkxMCwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyXzRs dmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAlnZW44X2Zvcl9lYWNoX3BtbDRl KHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgcG1sNGUpIHsKPiAgCQlHRU1fQlVHX09OKHB4X2Jh c2UocGRwKSA9PSAmdm0tPnNjcmF0Y2hfcGRwKTsKPiAgCj4gLQkJYXRvbWljX2luYygmcGRwLT51 c2VkKTsKPiArCQlhdG9taWNfaW5jKHB4X3VzZWQocGRwKSk7Cj4gIAkJZ2VuOF9wcGd0dF9jbGVh cl9wZHAodm0sIHBkcCwgc3RhcnQsIGxlbmd0aCk7Cj4gLQkJaWYgKHJlbGVhc2VfcGRfZW50cnko cG1sNCwgcG1sNGUsICZwZHAtPnVzZWQsICZ2bS0+c2NyYXRjaF9wZHApKQo+IC0JCQlmcmVlX3Bk KHZtLCBwZHApOwo+ICsJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBtbDQsIHBtbDRlLCAmcGRwLT5w dCwgJnZtLT5zY3JhdGNoX3BkcCkpCj4gKwkJCWZyZWVfcHgodm0sIHBkcCk7Cj4gIAl9Cj4gIH0K PiAgCj4gQEAgLTExNzYsNyArMTE2OCw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZnJlZV9wYWdlX3Rh YmxlcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCj4gIAlmb3IgKGkgPSAwOyBp IDwgSTkxNV9QREVTOyBpKyspIHsKPiAgCQlpZiAocGQtPmVudHJ5W2ldICE9ICZ2bS0+c2NyYXRj aF9wdCkKPiAtCQkJZnJlZV9wdCh2bSwgcGQtPmVudHJ5W2ldKTsKPiArCQkJZnJlZV9wZCh2bSwg cGQtPmVudHJ5W2ldKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTI1NSw5ICsxMjQ3LDkgQEAgc3Rh dGljIGludCBnZW44X3BwZ3R0X25vdGlmeV92Z3Qoc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0LCBi b29sIGNyZWF0ZSkKPiAgCWludCBpOwo+ICAKPiAgCWlmIChjcmVhdGUpCj4gLQkJYXRvbWljX2lu YygmcHBndHQtPnBkLT51c2VkKTsgLyogbmV2ZXIgcmVtb3ZlICovCj4gKwkJYXRvbWljX2luYyhw eF91c2VkKHBwZ3R0LT5wZCkpOyAvKiBuZXZlciByZW1vdmUgKi8KPiAgCWVsc2UKPiAtCQlhdG9t aWNfZGVjKCZwcGd0dC0+cGQtPnVzZWQpOwo+ICsJCWF0b21pY19kZWMocHhfdXNlZChwcGd0dC0+ cGQpKTsKPiAgCj4gIAlpZiAoaTkxNV92bV9pc180bHZsKHZtKSkgewo+ICAJCWNvbnN0IHU2NCBk YWRkciA9IHB4X2RtYShwcGd0dC0+cGQpOwo+IEBAIC0xMjk4LDcgKzEyOTAsNyBAQCBzdGF0aWMg dm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAgCQlmcmVlX3BkKHZtLCBwZHAtPmVudHJ5W2ldKTsKPiAgCX0KPiAgCj4gLQlmcmVlX3Bk KHZtLCBwZHApOwo+ICsJZnJlZV9weCh2bSwgcGRwKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwoc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0KQo+IEBAIC0x MzE1LDcgKzEzMDcsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1 Y3QgaTkxNV9wcGd0dCAqcHBndHQpCj4gIAkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoJnBwZ3R0 LT52bSwgcGRwKTsKPiAgCX0KPiAgCj4gLQlmcmVlX3BkKCZwcGd0dC0+dm0sIHBtbDQpOwo+ICsJ ZnJlZV9weCgmcHBndHQtPnZtLCBwbWw0KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+IEBAIC0xMzc5LDcg KzEzNzEsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGQoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gIAlnZW44X3BwZ3R0X2NsZWFyX3BkKHZtLCBwZCwgZnJvbSwgc3Rh cnQgLSBmcm9tKTsKPiAgb3V0Ogo+ICAJaWYgKGFsbG9jKQo+IC0JCWZyZWVfcHQodm0sIGFsbG9j KTsKPiArCQlmcmVlX3B4KHZtLCBhbGxvYyk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBA IC0xNDE1LDcgKzE0MDcsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGRwKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCQkJcGQgPSBwZHAtPmVudHJ5W3BkcGVdOwo+ ICAJCQl9Cj4gIAkJfQo+IC0JCWF0b21pY19pbmMoJnBkLT51c2VkKTsKPiArCQlhdG9taWNfaW5j KHB4X3VzZWQocGQpKTsKPiAgCQlzcGluX3VubG9jaygmcGRwLT5sb2NrKTsKPiAgCj4gIAkJcmV0 ID0gZ2VuOF9wcGd0dF9hbGxvY19wZCh2bSwgcGQsIHN0YXJ0LCBsZW5ndGgpOwo+IEBAIC0xNDIz LDE5ICsxNDE1LDE5IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wZHAoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCWdvdG8gdW53aW5kX3BkOwo+ICAKPiAgCQlzcGlu X2xvY2soJnBkcC0+bG9jayk7Cj4gLQkJYXRvbWljX2RlYygmcGQtPnVzZWQpOwo+ICsJCWF0b21p Y19kZWMocHhfdXNlZChwZCkpOwo+ICAJfQo+ICAJc3Bpbl91bmxvY2soJnBkcC0+bG9jayk7Cj4g IAlnb3RvIG91dDsKPiAgCj4gIHVud2luZF9wZDoKPiAtCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBk cCwgcGRwZSwgJnBkLT51c2VkLCAmdm0tPnNjcmF0Y2hfcGQpKQo+IC0JCWZyZWVfcGQodm0sIHBk KTsKPiArCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRwZSwgJnBkLT5wdCwgJnZtLT5zY3Jh dGNoX3BkKSkKPiArCQlmcmVlX3B4KHZtLCBwZCk7Cj4gIHVud2luZDoKPiAgCWdlbjhfcHBndHRf Y2xlYXJfcGRwKHZtLCBwZHAsIGZyb20sIHN0YXJ0IC0gZnJvbSk7Cj4gIG91dDoKPiAgCWlmIChh bGxvYykKPiAtCQlmcmVlX3BkKHZtLCBhbGxvYyk7Cj4gKwkJZnJlZV9weCh2bSwgYWxsb2MpOwo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtMTQ3OSw3ICsxNDcxLDcgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2FsbG9jXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g IAkJCQlwZHAgPSBwbWw0LT5lbnRyeVtwbWw0ZV07Cj4gIAkJCX0KPiAgCQl9Cj4gLQkJYXRvbWlj X2luYygmcGRwLT51c2VkKTsKPiArCQlhdG9taWNfaW5jKHB4X3VzZWQocGRwKSk7Cj4gIAkJc3Bp bl91bmxvY2soJnBtbDQtPmxvY2spOwo+ICAKPiAgCQlyZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3Bk cCh2bSwgcGRwLCBzdGFydCwgbGVuZ3RoKTsKPiBAQCAtMTQ4NywxOSArMTQ3OSwxOSBAQCBzdGF0 aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfNGx2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAgCQkJZ290byB1bndpbmRfcGRwOwo+ICAKPiAgCQlzcGluX2xvY2soJnBtbDQtPmxvY2sp Owo+IC0JCWF0b21pY19kZWMoJnBkcC0+dXNlZCk7Cj4gKwkJYXRvbWljX2RlYyhweF91c2VkKHBk cCkpOwo+ICAJfQo+ICAJc3Bpbl91bmxvY2soJnBtbDQtPmxvY2spOwo+ICAJZ290byBvdXQ7Cj4g IAo+ICB1bndpbmRfcGRwOgo+IC0JaWYgKHJlbGVhc2VfcGRfZW50cnkocG1sNCwgcG1sNGUsICZw ZHAtPnVzZWQsICZ2bS0+c2NyYXRjaF9wZHApKQo+IC0JCWZyZWVfcGQodm0sIHBkcCk7Cj4gKwlp ZiAocmVsZWFzZV9wZF9lbnRyeShwbWw0LCBwbWw0ZSwgJnBkcC0+cHQsICZ2bS0+c2NyYXRjaF9w ZHApKQo+ICsJCWZyZWVfcHgodm0sIHBkcCk7Cj4gIHVud2luZDoKPiAgCWdlbjhfcHBndHRfY2xl YXJfNGx2bCh2bSwgZnJvbSwgc3RhcnQgLSBmcm9tKTsKPiAgb3V0Ogo+ICAJaWYgKGFsbG9jKQo+ IC0JCWZyZWVfcGQodm0sIGFsbG9jKTsKPiArCQlmcmVlX3B4KHZtLCBhbGxvYyk7Cj4gIAlyZXR1 cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0xNTI1LDcgKzE1MTcsNyBAQCBzdGF0aWMgaW50IGdlbjhf cHJlYWxsb2NhdGVfdG9wX2xldmVsX3BkcChzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQpCj4gIAo+ ICB1bndpbmQ6Cj4gIAlnZW44X3BwZ3R0X2NsZWFyX3BkcCh2bSwgcGRwLCBmcm9tLCBzdGFydCAt IGZyb20pOwo+IC0JYXRvbWljX3NldCgmcGRwLT51c2VkLCAwKTsKPiArCWF0b21pY19zZXQocHhf dXNlZChwZHApLCAwKTsKPiAgCXJldHVybiAtRU5PTUVNOwo+ICB9Cj4gIAo+IEBAIC0xNTUyLDcg KzE1NDQsNyBAQCBzdGF0aWMgdm9pZCBpbml0X3BkX24oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCj4gIAkJICAgICAgY29uc3QgdW5zaWduZWQgaW50IGVudHJpZXMpCj4gIHsKPiAgCWNv bnN0IHU2NCBkYWRkciA9IGdlbjhfcGRlX2VuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FDSEVfTExD KTsKPiAtCXU2NCAqIGNvbnN0IHZhZGRyID0ga21hcF9hdG9taWMocGQtPmJhc2UucGFnZSk7Cj4g Kwl1NjQgKiBjb25zdCB2YWRkciA9IGttYXBfYXRvbWljX3B4KHBkKTsKPiAgCj4gIAltZW1zZXQ2 NCh2YWRkciwgZGFkZHIsIGVudHJpZXMpOwo+ICAJa3VubWFwX2F0b21pYyh2YWRkcik7Cj4gQEAg LTE1ODAsNyArMTU3Miw3IEBAIGdlbjhfYWxsb2NfdG9wX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtKQo+ICAKPiAgCXBkLT5lbnRyeVtHRU44XzNMVkxfUERQRVNdID0gTlVMTDsKPiAg Cj4gLQlpZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEodm0sICZwZC0+YmFzZSkpKSB7Cj4gKwlp ZiAodW5saWtlbHkoc2V0dXBfcGFnZV9kbWEodm0sIHB4X2Jhc2UocGQpKSkpIHsKPiAgCQlrZnJl ZShwZCk7Cj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAl9Cj4gQEAgLTE2NTYsNyAr MTY0OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wcGd0dCAqZ2VuOF9wcGd0dF9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlyZXR1cm4gcHBndHQ7Cj4gIAo+ICBlcnJf ZnJlZV9wZDoKPiAtCWZyZWVfcGQoJnBwZ3R0LT52bSwgcHBndHQtPnBkKTsKPiArCWZyZWVfcHgo JnBwZ3R0LT52bSwgcHBndHQtPnBkKTsKPiAgZXJyX2ZyZWVfc2NyYXRjaDoKPiAgCWZyZWVfc2Ny YXRjaCgmcHBndHQtPnZtKTsKPiAgZXJyX2ZyZWU6Cj4gQEAgLTE4NjcsNyArMTg1OSw3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAgCWdlbjZfcHBndHRfY2xlYXJfcmFuZ2Uodm0sIGZyb20sIHN0YXJ0IC0gZnJvbSk7Cj4g IG91dDoKPiAgCWlmIChhbGxvYykKPiAtCQlmcmVlX3B0KHZtLCBhbGxvYyk7Cj4gKwkJZnJlZV9w eCh2bSwgYWxsb2MpOwo+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoJnZtLT5pOTE1LT5ydW50aW1l X3BtLCB3YWtlcmVmKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMTkwOCw3ICsxOTAwLDcg QEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9mcmVlX3BkKHN0cnVjdCBnZW42X3BwZ3R0ICpwcGd0 dCkKPiAgCj4gIAlnZW42X2Zvcl9hbGxfcGRlcyhwdCwgcGQsIHBkZSkKPiAgCQlpZiAocHhfYmFz ZShwdCkgIT0gJnBwZ3R0LT5iYXNlLnZtLnNjcmF0Y2hfcHQpCj4gLQkJCWZyZWVfcHQoJnBwZ3R0 LT5iYXNlLnZtLCBwdCk7Cj4gKwkJCWZyZWVfcHgoJnBwZ3R0LT5iYXNlLnZtLCBwdCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGdlbjZfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSkKPiBAQCAtMTk0OSw3ICsxOTQxLDcgQEAgc3RhdGljIGludCBwZF92bWFfYmlu ZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0Owo+ ICAJdW5zaWduZWQgaW50IHBkZTsKPiAgCj4gLQlwcGd0dC0+YmFzZS5wZC0+YmFzZS5nZ3R0X29m ZnNldCA9IGdndHRfb2Zmc2V0ICogc2l6ZW9mKGdlbjZfcHRlX3QpOwo+ICsJcHhfYmFzZShwcGd0 dC0+YmFzZS5wZCktPmdndHRfb2Zmc2V0ID0gZ2d0dF9vZmZzZXQgKiBzaXplb2YoZ2VuNl9wdGVf dCk7Cj4gIAlwcGd0dC0+cGRfYWRkciA9IChnZW42X3B0ZV90IF9faW9tZW0gKilnZ3R0LT5nc20g KyBnZ3R0X29mZnNldDsKPiAgCj4gIAlnZW42X2Zvcl9hbGxfcGRlcyhwdCwgcHBndHQtPmJhc2Uu cGQsIHBkZSkKPiBAQCAtMTk3Nyw3ICsxOTY5LDcgQEAgc3RhdGljIHZvaWQgcGRfdm1hX3VuYmlu ZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCQlpZiAocHhfYmFzZShwdCkgPT0gc2NyYXRjaCB8 fCBhdG9taWNfcmVhZCgmcHQtPnVzZWQpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJZnJlZV9w dCgmcHBndHQtPmJhc2Uudm0sIHB0KTsKPiArCQlmcmVlX3B4KCZwcGd0dC0+YmFzZS52bSwgcHQp Owo+ICAJCXBkLT5lbnRyeVtwZGVdID0gc2NyYXRjaDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCA4NjA4NTA0MTFhMWIuLjQ4YmI4YzUxMjVlMyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTI0MCwyMSArMjQwLDM3IEBA IHN0cnVjdCBpOTE1X3BhZ2VfZG1hIHsKPiAgCX07Cj4gIH07Cj4gIAo+IC0jZGVmaW5lIHB4X2Jh c2UocHgpICgmKHB4KS0+YmFzZSkKPiAtI2RlZmluZSBweF9kbWEocHgpIChweF9iYXNlKHB4KS0+ ZGFkZHIpCj4gLQo+ICBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlIHsKPiAgCXN0cnVjdCBpOTE1X3Bh Z2VfZG1hIGJhc2U7Cj4gIAlhdG9taWNfdCB1c2VkOwo+ICB9Owo+ICAKPiAgc3RydWN0IGk5MTVf cGFnZV9kaXJlY3Rvcnkgewo+IC0Jc3RydWN0IGk5MTVfcGFnZV9kbWEgYmFzZTsKPiAtCWF0b21p Y190IHVzZWQ7Cj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlIHB0Owo+ICAJc3BpbmxvY2tfdCBs b2NrOwo+ICAJdm9pZCAqZW50cnlbNTEyXTsKPiAgfTsKPiAgCj4gKyNkZWZpbmUgX19weF9jaG9v c2VfZXhwcih4LCB0eXBlLCBleHByLCBvdGhlcikgXAo+ICsJX19idWlsdGluX2Nob29zZV9leHBy KCBcCj4gKwlfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZih4KSwgdHlwZSkgfHwg XAo+ICsJX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoeCksIGNvbnN0IHR5cGUp LCBcCj4gKwkoeyB0eXBlIF9feCA9ICh0eXBlKSh4KTsgZXhwcjsgfSksIFwKPiArCW90aGVyKQo+ ICsKPiArI2RlZmluZSBweF9iYXNlKHB4KSBcCj4gKwlfX3B4X2Nob29zZV9leHByKHB4LCBzdHJ1 Y3QgaTkxNV9wYWdlX2RtYSAqLCBfX3gsIFwKPiArCV9fcHhfY2hvb3NlX2V4cHIocHgsIHN0cnVj dCBpOTE1X3BhZ2VfdGFibGUgKiwgJl9feC0+YmFzZSwgXAo+ICsJX19weF9jaG9vc2VfZXhwcihw eCwgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKiwgJl9feC0+cHQuYmFzZSwgXAo+ICsJKHZv aWQpMCkpKQo+ICsjZGVmaW5lIHB4X2RtYShweCkgKHB4X2Jhc2UocHgpLT5kYWRkcikKPiArCj4g KyNkZWZpbmUgcHhfcHQocHgpIFwKPiArCV9fcHhfY2hvb3NlX2V4cHIocHgsIHN0cnVjdCBpOTE1 X3BhZ2VfdGFibGUgKiwgX194LCBcCj4gKwlfX3B4X2Nob29zZV9leHByKHB4LCBzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeSAqLCAmX194LT5wdCwgXAo+ICsJKHZvaWQpMCkpCj4gKyNkZWZpbmUg cHhfdXNlZChweCkgKCZweF9wdChweCktPnVzZWQpCj4gKwo+ICBzdHJ1Y3QgaTkxNV92bWFfb3Bz IHsKPiAgCS8qIE1hcCBhbiBvYmplY3QgaW50byBhbiBhZGRyZXNzIHNwYWNlIHdpdGggdGhlIGdp dmVuIGNhY2hlIGZsYWdzLiAqLwo+ICAJaW50ICgqYmluZF92bWEpKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+IEBAIC01ODksMTAgKzYwNSw5IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGdlbjhfcHRlX2Nv dW50KHU2NCBhZGRyZXNzLCB1NjQgbGVuZ3RoKQo+ICBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QK PiAgaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihjb25zdCBzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQs IGNvbnN0IHVuc2lnbmVkIGludCBuKQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9y eSAqcGQ7Cj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqcHQgPSBwcGd0dC0+cGQtPmVudHJ5W25d Owo+ICAKPiAtCXBkID0gaTkxNV9wZHBfZW50cnkocHBndHQtPnBkLCBuKTsKPiAtCXJldHVybiBw eF9kbWEocGQpOwo+ICsJcmV0dXJuIHB4X2RtYShwdCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxp bmUgc3RydWN0IGk5MTVfZ2d0dCAqCj4gLS0gCj4gMi4yMC4xCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==