From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 07/11] drm/i915/gtt: Use NULL to encode scratch shadow entries Date: Wed, 10 Jul 2019 19:21:15 +0300 Message-ID: <87y315q2ro.fsf@gaia.fi.intel.com> References: <20190707210024.26192-1-chris@chris-wilson.co.uk> <20190707210024.26192-8-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 46F186E10F for ; Wed, 10 Jul 2019 16:21:30 +0000 (UTC) In-Reply-To: <20190707210024.26192-8-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+IHdyaXRlczoKCj4gV2UgY2Fu IHNpbXBsaWZ5IG91ciBndHQgd2Fsa2luZyBjb2RlIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IE5VTEwg Zm9yCj4gc2NyYXRjaCBlbnRyaWVzIGFzIG9wcG9zZWQgdG8gbG9va2luZyB1cCB0aGUgZGlzdGlu Y3QgcGVyLWxldmVsIHNjcmF0Y2gKPiBwb2ludGVyLgo+Cj4gVGhlIG9ubHkgY2F2ZWF0IGlzIHRv IHJlbWVtYmVyIHRvIHByb3RlY3QgZXh0ZXJuYWwgcGFydGllcyBhbmQgbWFwIHRoZQo+IE5VTEwg dG8gdGhlIHNjcmF0Y2ggdG9wIHBkLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIHwgMTI0ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgIDIgKy0KPiAgMiBmaWxlcyBjaGFuZ2Vk LCA0MSBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gaW5kZXggYjc4ODJmMDYyMTRhLi5hOTliODk1MDJhOTAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC01OTYsMTggKzU5NiwxNyBAQCBzdGF0 aWMgdm9pZCBjbGVhbnVwX3BhZ2VfZG1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ ICAKPiAgI2RlZmluZSBrbWFwX2F0b21pY19weChweCkga21hcF9hdG9taWMocHhfYmFzZShweCkt PnBhZ2UpCj4gIAo+IC0jZGVmaW5lIGZpbGxfcHgocHgsIHYpIGZpbGxfcGFnZV9kbWEocHhfYmFz ZShweCksICh2KSkKPiAtI2RlZmluZSBmaWxsMzJfcHgocHgsIHYpIGZpbGxfcGFnZV9kbWFfMzIo cHhfYmFzZShweCksICh2KSkKPiAtCj4gLXN0YXRpYyB2b2lkIGZpbGxfcGFnZV9kbWEoc3RydWN0 IGk5MTVfcGFnZV9kbWEgKnAsIGNvbnN0IHU2NCB2YWwpCj4gK3N0YXRpYyB2b2lkCj4gK2ZpbGxf cGFnZV9kbWEoc3RydWN0IGk5MTVfcGFnZV9kbWEgKnAsIGNvbnN0IHU2NCB2YWwsIHVuc2lnbmVk IGludCBjb3VudCkKPiAgewo+IC0Ja3VubWFwX2F0b21pYyhtZW1zZXQ2NChrbWFwX2F0b21pYyhw LT5wYWdlKSwgdmFsLCBJOTE1X1BERVMpKTsKPiArCWt1bm1hcF9hdG9taWMobWVtc2V0NjQoa21h cF9hdG9taWMocC0+cGFnZSksIHZhbCwgY291bnQpKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQg ZmlsbF9wYWdlX2RtYV8zMihzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqcCwgY29uc3QgdTMyIHYpCj4g LXsKPiAtCWZpbGxfcGFnZV9kbWEocCwgKHU2NCl2IDw8IDMyIHwgdik7Cj4gLX0KPiArI2RlZmlu ZSBmaWxsX3B4KHB4LCB2KSBmaWxsX3BhZ2VfZG1hKHB4X2Jhc2UocHgpLCAodiksIEk5MTVfUERF UykKPiArI2RlZmluZSBmaWxsMzJfcHgocHgsIHYpIGRvIHsgXAo+ICsJdTY0IHZ2ID0gbG93ZXJf MzJfYml0cyh2KTsgXAo+ICsJZmlsbF9weChweCwgdnYgPDwgMzIgfCB2dik7IFwKPiArfSB3aGls ZSAoMCkKPiAgCj4gIHN0YXRpYyBpbnQKPiAgc2V0dXBfc2NyYXRjaF9wYWdlKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLCBnZnBfdCBnZnApCj4gQEAgLTcxMSw3ICs3MTAsNiBAQCBzdGF0 aWMgc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqYWxsb2NfcHQoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0pCj4gIAl9Cj4gIAo+ICAJYXRvbWljX3NldCgmcHQtPnVzZWQsIDApOwo+IC0KPiAg CXJldHVybiBwdDsKPiAgfQo+ICAKPiBAQCAtNzE5LDEzICs3MTcsMTEgQEAgc3RhdGljIHN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpfX2FsbG9jX3BkKHZvaWQpCj4gIHsKPiAgCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKPiAgCj4gLQlwZCA9IGttYWxsb2Moc2l6ZW9mKCpwZCks IEk5MTVfR0ZQX0FMTE9XX0ZBSUwpOwo+ICsJcGQgPSBremFsbG9jKHNpemVvZigqcGQpLCBJOTE1 X0dGUF9BTExPV19GQUlMKTsKPiAgCWlmICh1bmxpa2VseSghcGQpKQo+ICAJCXJldHVybiBOVUxM Owo+ICAKPiAtCWF0b21pY19zZXQocHhfdXNlZChwZCksIDApOwo+ICAJc3Bpbl9sb2NrX2luaXQo JnBkLT5sb2NrKTsKPiAtCj4gIAlyZXR1cm4gcGQ7Cj4gIH0KPiAgCj4gQEAgLTc1Myw2MyArNzQ5 LDU2IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s IHN0cnVjdCBpOTE1X3BhZ2VfZG1hICpwZCkKPiAgCj4gICNkZWZpbmUgZnJlZV9weCh2bSwgcHgp IGZyZWVfcGQodm0sIHB4X2Jhc2UocHgpKQo+ICAKPiAtc3RhdGljIHZvaWQgaW5pdF9wZChzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQsCj4gLQkJICAgIHN0cnVjdCBpOTE1X3BhZ2Vfc2Ny YXRjaCAqc2NyYXRjaCkKPiAtewo+IC0JZmlsbF9weChwZCwgc2NyYXRjaC0+ZW5jb2RlKTsKPiAt CW1lbXNldF9wKHBkLT5lbnRyeSwgc2NyYXRjaCwgNTEyKTsKPiAtfQo+IC0KPiAgc3RhdGljIGlu bGluZSB2b2lkCj4gIHdyaXRlX2RtYV9lbnRyeShzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqIGNvbnN0 IHBkbWEsCj4gLQkJY29uc3QgdW5zaWduZWQgc2hvcnQgcGRlLAo+ICsJCWNvbnN0IHVuc2lnbmVk IHNob3J0IGlkeCwKPiAgCQljb25zdCB1NjQgZW5jb2RlZF9lbnRyeSkKPiAgewo+ICAJdTY0ICog Y29uc3QgdmFkZHIgPSBrbWFwX2F0b21pYyhwZG1hLT5wYWdlKTsKPiAgCj4gLQl2YWRkcltwZGVd ID0gZW5jb2RlZF9lbnRyeTsKPiArCXZhZGRyW2lkeF0gPSBlbmNvZGVkX2VudHJ5Owo+ICAJa3Vu bWFwX2F0b21pYyh2YWRkcik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+ICBfX3Nl dF9wZF9lbnRyeShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqIGNvbnN0IHBkLAo+IC0JICAg ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBkZSwKPiArCSAgICAgICBjb25zdCB1bnNpZ25lZCBz aG9ydCBpZHgsCgpNeSBleGN1c2Ugd2FzIHRoYXQgYXMgaXQgaXMgYSBwZCwgdGhlIHBkZSBmaXRz LgpDb25zaWRlcmluZyB0aGF0IG5vdyBpdCBpcyBhdCBhbnkgbGV2ZWwgYW5kIHBkZQppbiBic3Bl YyBpcyByZXNlcnZlZCBmb3IgdGhlIGxhc3QgbGV2ZWwsIGlkeAppcyBiZXR0ZXIuCgo+ICAJICAg ICAgIHN0cnVjdCBpOTE1X3BhZ2VfZG1hICogY29uc3QgdG8sCj4gIAkgICAgICAgdTY0ICgqZW5j b2RlKShjb25zdCBkbWFfYWRkcl90LCBjb25zdCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwpKQo+ICB7 Cj4gIAlHRU1fQlVHX09OKGF0b21pY19yZWFkKHB4X3VzZWQocGQpKSA+IDUxMik7Cj4gIAo+ICAJ YXRvbWljX2luYyhweF91c2VkKHBkKSk7Cj4gLQlwZC0+ZW50cnlbcGRlXSA9IHRvOwo+IC0Jd3Jp dGVfZG1hX2VudHJ5KHB4X2Jhc2UocGQpLCBwZGUsIGVuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FD SEVfTExDKSk7Cj4gKwlwZC0+ZW50cnlbaWR4XSA9IHRvOwo+ICsJd3JpdGVfZG1hX2VudHJ5KHB4 X2Jhc2UocGQpLCBpZHgsIGVuY29kZSh0by0+ZGFkZHIsIEk5MTVfQ0FDSEVfTExDKSk7Cj4gIH0K PiAgCj4gLSNkZWZpbmUgc2V0X3BkX2VudHJ5KHBkLCBwZGUsIHRvKSBcCj4gLQlfX3NldF9wZF9l bnRyeSgocGQpLCAocGRlKSwgcHhfYmFzZSh0byksIGdlbjhfcGRlX2VuY29kZSkKPiArI2RlZmlu ZSBzZXRfcGRfZW50cnkocGQsIGlkeCwgdG8pIFwKPiArCV9fc2V0X3BkX2VudHJ5KChwZCksIChp ZHgpLCBweF9iYXNlKHRvKSwgZ2VuOF9wZGVfZW5jb2RlKQo+ICAKPiAgc3RhdGljIGlubGluZSB2 b2lkCj4gIGNsZWFyX3BkX2VudHJ5KHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICogY29uc3Qg cGQsCj4gLQkgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgcGRlLAo+IC0JICAgICAgIHN0cnVj dCBpOTE1X3BhZ2Vfc2NyYXRjaCAqIGNvbnN0IHNjcmF0Y2gpCj4gKwkgICAgICAgY29uc3QgdW5z aWduZWQgc2hvcnQgaWR4LAo+ICsJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X3BhZ2Vfc2NyYXRj aCAqIGNvbnN0IHNjcmF0Y2gpCj4gIHsKPiAgCUdFTV9CVUdfT04oYXRvbWljX3JlYWQocHhfdXNl ZChwZCkpID09IDApOwo+ICAKPiAtCXdyaXRlX2RtYV9lbnRyeShweF9iYXNlKHBkKSwgcGRlLCBz Y3JhdGNoLT5lbmNvZGUpOwo+IC0JcGQtPmVudHJ5W3BkZV0gPSBzY3JhdGNoOwo+ICsJd3JpdGVf ZG1hX2VudHJ5KHB4X2Jhc2UocGQpLCBpZHgsIHNjcmF0Y2gtPmVuY29kZSk7Cj4gKwlwZC0+ZW50 cnlbaWR4XSA9IE5VTEw7Cj4gIAlhdG9taWNfZGVjKHB4X3VzZWQocGQpKTsKPiAgfQo+ICAKPiAg c3RhdGljIGJvb2wKPiAgcmVsZWFzZV9wZF9lbnRyeShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9y eSAqIGNvbnN0IHBkLAo+IC0JCSBjb25zdCB1bnNpZ25lZCBzaG9ydCBwZGUsCj4gKwkJIGNvbnN0 IHVuc2lnbmVkIHNob3J0IGlkeCwKPiAgCQkgc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqIGNvbnN0 IHB0LAo+IC0JCSBzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKiBjb25zdCBzY3JhdGNoKQo+ICsJ CSBjb25zdCBzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKiBjb25zdCBzY3JhdGNoKQo+ICB7Cj4g IAlib29sIGZyZWUgPSBmYWxzZTsKPiAgCj4gIAlzcGluX2xvY2soJnBkLT5sb2NrKTsKPiAgCWlm IChhdG9taWNfZGVjX2FuZF90ZXN0KCZwdC0+dXNlZCkpIHsKPiAtCQljbGVhcl9wZF9lbnRyeShw ZCwgcGRlLCBzY3JhdGNoKTsKPiArCQljbGVhcl9wZF9lbnRyeShwZCwgaWR4LCBzY3JhdGNoKTsK PiAgCQlmcmVlID0gdHJ1ZTsKPiAgCX0KPiAgCXNwaW5fdW5sb2NrKCZwZC0+bG9jayk7Cj4gQEAg LTkxMCw3ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBnZW44X2ZyZWVfcGFnZV90YWJsZXMoc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAlpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBp IDwgSTkxNV9QREVTOyBpKyspIHsKPiAtCQlpZiAocGQtPmVudHJ5W2ldICE9ICZ2bS0+c2NyYXRj aFsxXSkKPiArCQlpZiAocGQtPmVudHJ5W2ldKQo+ICAJCQlmcmVlX3BkKHZtLCBwZC0+ZW50cnlb aV0pOwo+ICAJfQo+ICB9Cj4gQEAgLTkyMiw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3Bw Z3R0X2NsZWFudXBfM2x2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCWludCBp Owo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBwZHBlczsgaSsrKSB7Cj4gLQkJaWYgKHBkcC0+ZW50 cnlbaV0gPT0gJnZtLT5zY3JhdGNoWzJdKQo+ICsJCWlmICghcGRwLT5lbnRyeVtpXSkKPiAgCQkJ Y29udGludWU7Cj4gIAo+ICAJCWdlbjhfZnJlZV9wYWdlX3RhYmxlcyh2bSwgcGRwLT5lbnRyeVtp XSk7Cj4gQEAgLTk0MCw3ICs5MjksNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBf NGx2bChzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQpCj4gIAlmb3IgKGkgPSAwOyBpIDwgR0VOOF9Q TUw0RVNfUEVSX1BNTDQ7IGkrKykgewo+ICAJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpw ZHAgPSBpOTE1X3BkcF9lbnRyeShwbWw0LCBpKTsKPiAgCj4gLQkJaWYgKHB4X2Jhc2UocGRwKSA9 PSBweF9iYXNlKCZwcGd0dC0+dm0uc2NyYXRjaFszXSkpCj4gKwkJaWYgKCFwZHApCj4gIAkJCWNv bnRpbnVlOwo+ICAKPiAgCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bCgmcHBndHQtPnZtLCBwZHAp Owo+IEBAIC05OTQsOCArOTgzLDYgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9wZChz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCXUzMiBwZGU7Cj4gIAo+ICAJZ2VuOF9m b3JfZWFjaF9wZGUocHQsIHBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpIHsKPiAtCQlHRU1fQlVHX09O KHB4X2Jhc2UocHQpID09IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzFdKSk7Cj4gLQoKTnVsbCBvb3Bz IGlzIGF0bGVhc3QgZXF1YWxseSBkZXNjcmlwdGl2ZS4KCj4gIAkJYXRvbWljX2luYygmcHQtPnVz ZWQpOwo+ICAJCWdlbjhfcHBndHRfY2xlYXJfcHQodm0sIHB0LCBzdGFydCwgbGVuZ3RoKTsKPiAg CQlpZiAocmVsZWFzZV9wZF9lbnRyeShwZCwgcGRlLCBwdCwgJnZtLT5zY3JhdGNoWzFdKSkKPiBA QCAtMTAxNCw4ICsxMDAxLDYgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9wZHAoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAl1bnNpZ25lZCBpbnQgcGRwZTsKPiAgCj4g IAlnZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgcGRwZSkgewo+IC0J CUdFTV9CVUdfT04ocHhfYmFzZShwZCkgPT0gcHhfYmFzZSgmdm0tPnNjcmF0Y2hbMl0pKTsKPiAt Cj4gIAkJYXRvbWljX2luYyhweF91c2VkKHBkKSk7Cj4gIAkJZ2VuOF9wcGd0dF9jbGVhcl9wZCh2 bSwgcGQsIHN0YXJ0LCBsZW5ndGgpOwo+ICAJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBkcCwgcGRw ZSwgJnBkLT5wdCwgJnZtLT5zY3JhdGNoWzJdKSkKPiBAQCAtMTA0NCw4ICsxMDI5LDYgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl80bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+ICAJR0VNX0JVR19PTighaTkxNV92bV9pc180bHZsKHZtKSk7Cj4gIAo+ICAJZ2VuOF9m b3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHBtbDRlKSB7Cj4gLQkJR0VN X0JVR19PTihweF9iYXNlKHBkcCkgPT0gcHhfYmFzZSgmdm0tPnNjcmF0Y2hbM10pKTsKPiAtCj4g IAkJYXRvbWljX2luYyhweF91c2VkKHBkcCkpOwo+ICAJCWdlbjhfcHBndHRfY2xlYXJfcGRwKHZt LCBwZHAsIHN0YXJ0LCBsZW5ndGgpOwo+ICAJCWlmIChyZWxlYXNlX3BkX2VudHJ5KHBtbDQsIHBt bDRlLCAmcGRwLT5wdCwgJnZtLT5zY3JhdGNoWzNdKSkKPiBAQCAtMTA2Niw3ICsxMDQ5LDcgQEAg c3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+ICAJZ2VuOF9mb3JfZWFjaF9wZGUocHQsIHBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpIHsK PiAgCQljb25zdCBpbnQgY291bnQgPSBnZW44X3B0ZV9jb3VudChzdGFydCwgbGVuZ3RoKTsKPiAg Cj4gLQkJaWYgKHB4X2Jhc2UocHQpID09IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzFdKSkgewo+ICsJ CWlmICghcHQpIHsKPiAgCQkJc3Bpbl91bmxvY2soJnBkLT5sb2NrKTsKPiAgCj4gIAkJCXB0ID0g ZmV0Y2hfYW5kX3plcm8oJmFsbG9jKTsKPiBAQCAtMTA4MSw3ICsxMDY0LDcgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2FsbG9jX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJ CQkJZmlsbF9weChwdCwgdm0tPnNjcmF0Y2hbMF0uZW5jb2RlKTsKPiAgCj4gIAkJCXNwaW5fbG9j aygmcGQtPmxvY2spOwo+IC0JCQlpZiAocGQtPmVudHJ5W3BkZV0gPT0gJnZtLT5zY3JhdGNoWzFd KSB7Cj4gKwkJCWlmICghcGQtPmVudHJ5W3BkZV0pIHsKPiAgCQkJCXNldF9wZF9lbnRyeShwZCwg cGRlLCBwdCk7Cj4gIAkJCX0gZWxzZSB7Cj4gIAkJCQlhbGxvYyA9IHB0Owo+IEBAIC0xMTEzLDcg KzEwOTYsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGRwKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAo+ICAKPiAgCXNwaW5fbG9jaygmcGRwLT5sb2NrKTsKPiAgCWdlbjhf Zm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCBwZHBlKSB7Cj4gLQkJaWYgKHB4 X2Jhc2UocGQpID09IHB4X2Jhc2UoJnZtLT5zY3JhdGNoWzJdKSkgewo+ICsJCWlmICghcGQpIHsK PiAgCQkJc3Bpbl91bmxvY2soJnBkcC0+bG9jayk7Cj4gIAo+ICAJCQlwZCA9IGZldGNoX2FuZF96 ZXJvKCZhbGxvYyk7Cj4gQEAgLTExMjQsMTAgKzExMDcsMTAgQEAgc3RhdGljIGludCBnZW44X3Bw Z3R0X2FsbG9jX3BkcChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCQkJCWdvdG8g dW53aW5kOwo+ICAJCQl9Cj4gIAo+IC0JCQlpbml0X3BkKHBkLCAmdm0tPnNjcmF0Y2hbMV0pOwo+ ICsJCQlmaWxsX3B4KHBkLCB2bS0+c2NyYXRjaFsxXS5lbmNvZGUpOwo+ICAKPiAgCQkJc3Bpbl9s b2NrKCZwZHAtPmxvY2spOwo+IC0JCQlpZiAocGRwLT5lbnRyeVtwZHBlXSA9PSAmdm0tPnNjcmF0 Y2hbMl0pIHsKPiArCQkJaWYgKCFwZHAtPmVudHJ5W3BkcGVdKSB7Cj4gIAkJCQlzZXRfcGRfZW50 cnkocGRwLCBwZHBlLCBwZCk7Cj4gIAkJCX0gZWxzZSB7Cj4gIAkJCQlhbGxvYyA9IHBkOwo+IEBA IC0xMTc3LDcgKzExNjAsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfNGx2bChzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCj4gIAlzcGluX2xvY2soJnBtbDQtPmxvY2sp Owo+ICAJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHBtbDRl KSB7Cj4gLQkJaWYgKHB4X2Jhc2UocGRwKSA9PSBweF9iYXNlKCZ2bS0+c2NyYXRjaFszXSkpIHsK PiArCQlpZiAoIXBkcCkgewo+ICAJCQlzcGluX3VubG9jaygmcG1sNC0+bG9jayk7Cj4gIAo+ICAJ CQlwZHAgPSBmZXRjaF9hbmRfemVybygmYWxsb2MpOwo+IEBAIC0xMTg4LDEwICsxMTcxLDEwIEBA IHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY180bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtLAo+ICAJCQkJZ290byB1bndpbmQ7Cj4gIAkJCX0KPiAgCj4gLQkJCWluaXRfcGQocGRw LCAmdm0tPnNjcmF0Y2hbMl0pOwo+ICsJCQlmaWxsX3B4KHBkcCwgdm0tPnNjcmF0Y2hbMl0uZW5j b2RlKTsKPiAgCj4gIAkJCXNwaW5fbG9jaygmcG1sNC0+bG9jayk7Cj4gLQkJCWlmIChwbWw0LT5l bnRyeVtwbWw0ZV0gPT0gJnZtLT5zY3JhdGNoWzNdKSB7Cj4gKwkJCWlmICghcG1sNC0+ZW50cnlb cG1sNGVdKSB7Cj4gIAkJCQlzZXRfcGRfZW50cnkocG1sNCwgcG1sNGUsIHBkcCk7Cj4gIAkJCX0g ZWxzZSB7Cj4gIAkJCQlhbGxvYyA9IHBkcDsKPiBAQCAtMTUyNyw3ICsxNTEwLDcgQEAgc3RhdGlj IGludCBnZW44X3ByZWFsbG9jYXRlX3RvcF9sZXZlbF9wZHAoc3RydWN0IGk5MTVfcHBndHQgKnBw Z3R0KQo+ICAJCWlmIChJU19FUlIocGQpKQo+ICAJCQlnb3RvIHVud2luZDsKPiAgCj4gLQkJaW5p dF9wZChwZCwgJnZtLT5zY3JhdGNoWzFdKTsKPiArCQlmaWxsX3B4KHBkLCB2bS0+c2NyYXRjaFsx XS5lbmNvZGUpOwo+ICAJCXNldF9wZF9lbnRyeShwZHAsIHBkcGUsIHBkKTsKPiAgCX0KPiAgCj4g QEAgLTE1NTgsNDYgKzE1NDEsMTkgQEAgc3RhdGljIHZvaWQgcHBndHRfaW5pdChzdHJ1Y3QgaTkx NV9wcGd0dCAqcHBndHQsIHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAlwcGd0dC0+dm0udG9wID0g aTkxNV92bV9pc180bHZsKCZwcGd0dC0+dm0pID8gMyA6IDI7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIGluaXRfcGRfbihzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkgICAgICBz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQsCj4gLQkJICAgICAgc3RydWN0IGk5MTVfcGFn ZV9zY3JhdGNoICpzY3JhdGNoLAo+IC0JCSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBlbnRyaWVz KQo+IC17Cj4gLQl1NjQgKiBjb25zdCB2YWRkciA9IGttYXBfYXRvbWljX3B4KHBkKTsKPiAtCj4g LQltZW1zZXQ2NCh2YWRkciwgc2NyYXRjaC0+ZW5jb2RlLCBlbnRyaWVzKTsKPiAtCWt1bm1hcF9h dG9taWModmFkZHIpOwo+IC0KPiAtCW1lbXNldF9wKHBkLT5lbnRyeSwgc2NyYXRjaCwgZW50cmll cyk7Cj4gLX0KPiAtCj4gIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqCj4gIGdl bjhfYWxsb2NfdG9wX3BkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICB7Cj4gKwlj b25zdCB1bnNpZ25lZCBpbnQgY291bnQgPSB2bS0+dG90YWwgPj4gX19nZW44X3B0ZV9zaGlmdCh2 bS0+dG9wKTsKCk5pY2UuCgo+ICAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkOwo+ICAK PiAtCWlmIChpOTE1X3ZtX2lzXzRsdmwodm0pKSB7Cj4gLQkJcGQgPSBhbGxvY19wZCh2bSk7Cj4g LQkJaWYgKCFJU19FUlIocGQpKQo+IC0JCQlpbml0X3BkKHBkLCAmdm0tPnNjcmF0Y2hbM10pOwo+ ICsJR0VNX0JVR19PTihjb3VudCA+IEFSUkFZX1NJWkUocGQtPmVudHJ5KSk7CgpJIGRvbid0IGhh dmUgdG8gdGhpbmsuIEkgbGlrZSB0aGF0LgoKPiAgCj4gKwlwZCA9IGFsbG9jX3BkKHZtKTsKPiAr CWlmIChJU19FUlIocGQpKQo+ICAJCXJldHVybiBwZDsKPiAtCX0KPiAtCj4gLQkvKiAzbHZsICov Cj4gLQlwZCA9IF9fYWxsb2NfcGQoKTsKPiAtCWlmICghcGQpCj4gLQkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4gLQo+IC0JcGQtPmVudHJ5W0dFTjhfM0xWTF9QRFBFU10gPSBOVUxMOwoKT2sg eW91IGRvbnQgbGlrZSB0aGUgc2VudHJ5LiBQZXJoYXBzIHlvdSBjb3VsZCB3cml0ZQphIGZldyBz b290aGluZyB3b3JkcyBob3cgbm9pc2lseSB3ZSBjcmFzaCBpZiB3ZQpydW4gbG9uZyBvbiB0aGlz IHJ1bndheS4gSWYgdGhlIHRvd2VyIHNlZXMgYW5kCnNlbmRzIGZpcmV0cnVja3MsIGl0IGlzIGZp bmUuCgo+IC0KPiAtCWlmICh1bmxpa2VseShzZXR1cF9wYWdlX2RtYSh2bSwgcHhfYmFzZShwZCkp KSkgewo+IC0JCWtmcmVlKHBkKTsKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCX0K PiAtCj4gLQlpbml0X3BkX24odm0sIHBkLCAmdm0tPnNjcmF0Y2hbMl0sIEdFTjhfM0xWTF9QRFBF Uyk7Cj4gIAo+ICsJZmlsbF9wYWdlX2RtYShweF9iYXNlKHBkKSwgdm0tPnNjcmF0Y2hbdm0tPnRv cF0uZW5jb2RlLCBjb3VudCk7Cj4gIAlyZXR1cm4gcGQ7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCA2NjliMjA0ZDRjMTMuLjIzNDE5NDRiOWIxNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTYxMCw3ICs2MTAsNyBAQCBp OTE1X3BhZ2VfZGlyX2RtYV9hZGRyKGNvbnN0IHN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCwgY29u c3QgdW5zaWduZWQgaW50IG4pCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3BhZ2VfZG1hICpwdCA9IHBw Z3R0LT5wZC0+ZW50cnlbbl07Cj4gIAo+IC0JcmV0dXJuIHB4X2RtYShwdCk7Cj4gKwlyZXR1cm4g cHhfZG1hKHB0ID86IHB4X2Jhc2UoJnBwZ3R0LT52bS5zY3JhdGNoW3BwZ3R0LT52bS50b3BdKSk7 CgpObyBvdGhlciBleHRlcm5hbCB1c2Vycy4KCkVhcmxpZXIgaW4gc2VyaWVzIEkgeWVhcm5lZCBh IGxpdHRsZSBvZiBpc19lbnRyeV9hdmFpbGFibGV8ZnJlZXxlbXB0eS4KQnV0IHRoZSBjb21wYXJp bmcgYWdhaW5zdCBudWxsIGJlYXRzIGFueS4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxt aWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUg c3RydWN0IGk5MTVfZ2d0dCAqCj4gLS0gCj4gMi4yMC4xCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==