From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F98C89DEC for ; Wed, 6 Nov 2019 11:12:02 +0000 (UTC) MIME-Version: 1.0 From: Chris Wilson In-Reply-To: <20191105214220.6394-1-imre.deak@intel.com> References: <20191105193454.4611-1-imre.deak@intel.com> <20191105214220.6394-1-imre.deak@intel.com> Message-ID: <157303870005.24928.3132671099761392777@skylake-alporthouse-com> Date: Wed, 06 Nov 2019 11:11:40 +0000 Subject: Re: [igt-dev] [PATCH v3 1/3] lib/rendercopy: Add AUX page table support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Imre Deak , igt-dev@lists.freedesktop.org Cc: Brian Welty List-ID: UXVvdGluZyBJbXJlIERlYWsgKDIwMTktMTEtMDUgMjE6NDI6MjApCj4gT24gR0VOMTIrIHRoZSBB VVggQ0NTIHN1cmZhY2VzIHJlcXVpcmVkIGJ5IHRoZSByZW5kZXIgYW5kIG1lZGlhCj4gY29tcHJl c3Npb24gbXVzdCBiZSBzcGVjaWZpZWQgYnkgYSAzIGxldmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5 LCB3aGljaAo+IHRyYW5zbGF0ZXMgdGhlIG1haW4gc3VyZmFjZSBncmFwaGljcyBhZGRyZXNzIHRv IHRoZSBBVVggQ0NTIHN1cmZhY2UKPiBncmFwaGljcyBhZGRyZXNzLiBGb3IgdGhpcyBwdXJwb3Nl IGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBhIEdFTSBidWZmZXIKPiB0byB0cmFuc2xhdGUgdGhl IGxpbmVhciBzdXJmYWNlIGFkZHJlc3MgcmFuZ2UgdG8gdGhlIGxpbmVhciBBVVggc3VyZmFjZQo+ IGFkZHJlc3MgcmFuZ2UuCj4gCj4gVGhlIGJ1ZmZlcnMgY29udGFpbmluZyB0aGUgbWFpbiBzdXJm YWNlIG11c3QgYmUgcGlubmVkIGRvd24sIHNpbmNlIHRoZQo+IGRpcmVjdG9yeSB0YWJsZSBlbnRy eSBpbmRpY2VzIGRlcGVuZCBvbiB0aGUgc3VyZmFjZSBhZGRyZXNzLCBhbmQgdGhleQo+IG11c3Qg YmUgNjRrQiBhbGlnbmVkLiBUaGUgcGFnZSB0YWJsZSBjYW4gYmUgcmVsb2NhdGVkIE9UT0gsIHNv IGFsbG93Cj4gdGhhdCBhbmQgZW1pdCB0aGUgcmVxdWlyZWQgcmVsb2NhdGlvbiBlbnRyaWVzLgo+ IAo+IHYyOgo+IC0gTWFrZSBsZXZlbCB2YXJpYWJsZXMgdG8gYmUgMCBiYXNlZCAobDEuLmwzIC0+ IGxldmVsPTAuLjIpLgo+IC0gQWRkIG1pc3NpbmcgZHJtX2ludGVsX2JvX3NldF9zb2Z0cGluX29m ZnNldCgpIHN0dWIgdG8gZml4IGJ1aWxkIG9uCj4gICBub24tSW50ZWwgYXJjaHMuCj4gLSBGaXgg bWlzc2luZyBvZmZzZXRzIGluIHJlbG9jIGVudHJpZXMgb2YgYWxyZWFkeSBib3VuZCBvYmplY3Rz LiAoQ2hyaXMpCj4gLSBSYW5kb21pemUgcGluIG9mZnNldHMsIHRvIHRyeSB0byBhdm9pZCBldmlj dGlvbi4gKENocmlzKQo+IC0gUmVtb3ZlIHJlZHVuZGFudCBNSV9OT09QUyBhcm91bmQgTUlfTE9B RF9SRUdJU1RFUl9NRU0KPiAtIFN0b3AgdXNpbmcgZXhwbGljaXQgcmVsb2MgY2FjaGUgZG9tYWlu cywgYXMgdGhlc2UgZG9uJ3QgbWFrZSBzZW5zZSBvbgo+ICAgR0VOMTIgYW55d2F5LiAoQ2hyaXMp Cj4gLSBGaXggbWlzc2luZyBhdXRvdG9vbHMgc3VwcG9ydC4gKENocmlzKQo+IC0gcy9pZ3RfYXV4 X3BndGFibGUvaW50ZWxfYXV4X3BndGFibGUvLCBzaW5jZSB0aGUgZnVuY3Rpb25hbGl0eSBpcyBJ bnRlbAo+ICAgc3BlY2lmaWMuIChDaHJpcykKPiB2MzoKPiAtIE1ha2Ugc3VyZSBhbGwgb2JqZWN0 cyB3aXRoIGFuIEFVWCBzdXJmYWNlIGFyZSBwaW5uZWQuCj4gCj4gQ2M6IE1pa2EgS2Fob2xhIDxt aWthLmthaG9sYUBpbnRlbC5jb20+Cj4gQ2M6IEJyaWFuIFdlbHR5IDxicmlhbi53ZWx0eUBpbnRl bC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENj OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiAtLS0KPiAgbGliL01h a2VmaWxlLnNvdXJjZXMgICAgICAgICB8ICAgMSArCj4gIGxpYi9pbnRlbF9hdXhfcGd0YWJsZS5j ICAgICAgfCAzNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliL2lu dGVsX2F1eF9wZ3RhYmxlLmggICAgICB8ICAxMiArKwo+ICBsaWIvaW50ZWxfcmVnLmggICAgICAg ICAgICAgIHwgICAyICsKPiAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSArCj4g IGxpYi9yZW5kZXJjb3B5X2dlbjkuYyAgICAgICAgfCAyMzQgKysrKysrKysrKysrKysrKysrKyst Cj4gIGxpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmMgfCAgIDYgKwo+ICA3IGZpbGVzIGNoYW5n ZWQsIDYyOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbnRl bF9hdXhfcGd0YWJsZS5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIv bGliL01ha2VmaWxlLnNvdXJjZXMKPiBpbmRleCBjZjA5NGFiOC4uMWQwZjQ1ZjcgMTAwNjQ0Cj4g LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKPiArKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+ IEBAIC0xMDAsNiArMTAwLDcgQEAgbGliX3NvdXJjZV9saXN0ID0gICAgICAgICAgIFwKPiAgICAg ICAgIHN1cmZhY2Vmb3JtYXQuaCAgICAgICAgIFwKPiAgICAgICAgIHN3X3N5bmMuYyAgICAgICAg ICAgICAgIFwKPiAgICAgICAgIHN3X3N5bmMuaCAgICAgICAgICAgICAgIFwKPiArICAgICAgIGlu dGVsX2F1eF9wZ3RhYmxlLmMgICAgIFwKPiAgICAgICAgIGludGVsX3JlZ19tYXAuYyAgICAgICAg IFwKPiAgICAgICAgIGludGVsX2lvc2YuYyAgICAgICAgICAgIFwKPiAgICAgICAgIGlndF9rbXMu YyAgICAgICAgICAgICAgIFwKPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMg Yi9saWIvaW50ZWxfYXV4X3BndGFibGUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAuLjc5NDAyODEzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9pbnRlbF9hdXhf cGd0YWJsZS5jCj4gQEAgLTAsMCArMSwzNzkgQEAKPiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ICsj aW5jbHVkZSA8c3RkYm9vbC5oPgo+ICsKPiArI2luY2x1ZGUgImRybXRlc3QuaCIKPiArI2luY2x1 ZGUgImludGVsX2F1eF9wZ3RhYmxlLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKPiAr I2luY2x1ZGUgImludGVsX2JhdGNoYnVmZmVyLmgiCj4gKyNpbmNsdWRlICJpb2N0bF93cmFwcGVy cy5oIgo+ICsKPiArI2luY2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKPiArCj4gKyNkZWZpbmUgQklU U19QRVJfTE9ORyAgICAgICAgICAoc2l6ZW9mKGxvbmcpICogOCkKPiArI2RlZmluZSBCSVRNQVNL KGUsIHMpICAgICAgICAgICgofjBVTCA8PCAocykpICYgXAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh+MFVMID4+IChCSVRTX1BFUl9MT05HIC0gMSAtIChlKSkpKQo+ICsKPiAr I2RlZmluZSBBTElHTl9ET1dOKHgsIGEpICAgICAgIEFMSUdOKCh4KSAtICgoYSkgLSAxKSwgKGEp KQo+ICsKPiArLyogVGhlIHVuaXQgc2l6ZSB0byB3aGljaCB0aGUgQVVYIENDUyBzdXJmYWNlIGlz IGFsaWduZWQgdG8uICovCj4gKyNkZWZpbmUgQVVYX0NDU19VTklUX1NJWkUgICAgICA2NAo+ICsv Kgo+ICsgKiBUaGUgYmxvY2sgc2l6ZSBvbiB0aGUgQVVYIENDUyBzdXJmYWNlIHdoaWNoIGlzIG1h cHBlZCBieSBvbmUgTDEgQVVYCj4gKyAqIHBhZ2V0YWJsZSBlbnRyeS4KPiArICovCj4gKyNkZWZp bmUgQVVYX0NDU19CTE9DS19TSVpFICAgICAoNCAqIEFVWF9DQ1NfVU5JVF9TSVpFKQo+ICsvKgo+ ICsgKiBUaGUgYmxvY2sgc2l6ZSBvbiB0aGUgbWFpbiBzdXJmYWNlIG1hcHBlZCBieSBvbmUgQVVY IENDUyBibG9jazoKPiArICogICAyNTYgYnl0ZXMgcGVyIENDUyBibG9jayAqCj4gKyAqICAgOCAg IGJpdHMgcGVyIGJ5dGUgLwo+ICsgKiAgIDIgICBiaXRzIHBlciBtYWluIHN1cmZhY2UgQ0wgKgo+ ICsgKiAgIDY0ICBieXRlcyBwZXIgbWFpbiBzdXJmYWNlIENMCj4gKyAqLwo+ICsjZGVmaW5lIE1B SU5fU1VSRkFDRV9CTE9DS19TSVpFICAgICAgICAoQVVYX0NDU19CTE9DS19TSVpFICogOCAvIDIg KiA2NCkKPiArCj4gKyNkZWZpbmUgR0ZYX0FERFJFU1NfQklUUyAgICAgICA0OAo+ICsKPiArI2Rl ZmluZSBtYXgoYSwgYikgICAgICAgICAgICAgICgoYSkgPiAoYikgPyAoYSkgOiAoYikpCj4gKwo+ ICtzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjIHsKPiArICAgICAgIGludCBpZHhfc2hpZnQ7Cj4g KyAgICAgICBpbnQgaWR4X2JpdHM7Cj4gKyAgICAgICBpbnQgZW50cnlfcHRyX3NoaWZ0Owo+ICsg ICAgICAgaW50IHRhYmxlX3NpemU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9p bmZvIHsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBwZ3RhYmxlX2xldmVsX2Rlc2MgKmRlc2M7Cj4g KyAgICAgICBpbnQgdGFibGVfY291bnQ7Cj4gKyAgICAgICBpbnQgYWxsb2NfYmFzZTsKPiArICAg ICAgIGludCBhbGxvY19wdHI7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgcGd0YWJsZSB7Cj4gKyAgICAg ICBpbnQgbGV2ZWxzOwo+ICsgICAgICAgc3RydWN0IHBndGFibGVfbGV2ZWxfaW5mbyAqbGV2ZWxf aW5mbzsKPiArICAgICAgIGludCBzaXplOwo+ICsgICAgICAgaW50IG1heF9hbGlnbjsKPiArICAg ICAgIGRybV9pbnRlbF9ibyAqYm87Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3BndF90YWJs ZV9jb3VudChpbnQgYWRkcmVzc19iaXRzLCBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqKmJ1ZnMsIGlu dCBidWZfY291bnQpCj4gK3sKPiArICAgICAgIHVpbnQ2NF90IGVuZDsKPiArICAgICAgIGludCBj b3VudDsKPiArICAgICAgIGludCBpOwo+ICsKPiArICAgICAgIGNvdW50ID0gMDsKPiArICAgICAg IGVuZCA9IDA7Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnVmX2NvdW50OyBpKyspIHsKPiAr ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiA9IGJ1ZnNbaV07Cj4gKyAg ICAgICAgICAgICAgIHVpbnQ2NF90IHN0YXJ0Owo+ICsKPiArICAgICAgICAgICAgICAgLyogV2Ug cmVxdWlyZSBidWZzIHRvIGJlIHNvcnRlZC4gKi8KPiArICAgICAgICAgICAgICAgaWd0X2Fzc2Vy dChpID09IDAgfHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBidWYtPmJvLT5vZmZzZXQ2 NCA+PSBidWZzW2kgLSAxXS0+Ym8tPm9mZnNldDY0ICsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzW2kgLSAxXS0+Ym8tPnNpemUpOwo+ICsKPiAr ICAgICAgICAgICAgICAgc3RhcnQgPSBBTElHTl9ET1dOKGJ1Zi0+Ym8tPm9mZnNldDY0LCAxVUwg PDwgYWRkcmVzc19iaXRzKTsKPiArICAgICAgICAgICAgICAgLyogQXZvaWQgZG91YmxlIGNvdW50 aW5nIGZvciBvdmVybGFwcGluZyBhbGlnbmVkIGJ1ZnMuICovCj4gKyAgICAgICAgICAgICAgIHN0 YXJ0ID0gbWF4KHN0YXJ0LCBlbmQpOwo+ICsKPiArICAgICAgICAgICAgICAgZW5kID0gQUxJR04o YnVmLT5iby0+b2Zmc2V0NjQgKyBidWYtPnNpemUsIDFVTCA8PCBhZGRyZXNzX2JpdHMpOwo+ICsg ICAgICAgICAgICAgICBpZ3RfYXNzZXJ0KGVuZCA+PSBzdGFydCk7Cj4gKwo+ICsgICAgICAgICAg ICAgICBjb3VudCArPSAoZW5kIC0gc3RhcnQpID4+IGFkZHJlc3NfYml0czsKPiArICAgICAgIH0K PiArCj4gKyAgICAgICByZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Bn dF9jYWxjX3NpemUoc3RydWN0IHBndGFibGUgKnBndCwgY29uc3Qgc3RydWN0IGlndF9idWYgKipi dWZzLCBpbnQgYnVmX2NvdW50KQo+ICt7Cj4gKyAgICAgICBpbnQgbGV2ZWw7Cj4gKwo+ICsgICAg ICAgcGd0LT5zaXplID0gMDsKPiArCj4gKyAgICAgICBmb3IgKGxldmVsID0gcGd0LT5sZXZlbHMg LSAxOyBsZXZlbCA+PSAwOyBsZXZlbC0tKSB7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwZ3Rh YmxlX2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2ZWxfaW5mb1tsZXZlbF07Cj4gKwo+ICsgICAg ICAgICAgICAgICBsaS0+YWxsb2NfYmFzZSA9IEFMSUdOKHBndC0+c2l6ZSwgbGktPmRlc2MtPnRh YmxlX3NpemUpOwo+ICsgICAgICAgICAgICAgICBsaS0+YWxsb2NfcHRyID0gbGktPmFsbG9jX2Jh c2U7Cj4gKwo+ICsgICAgICAgICAgICAgICBsaS0+dGFibGVfY291bnQgPSBwZ3RfdGFibGVfY291 bnQobGktPmRlc2MtPmlkeF9zaGlmdCArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaS0+ZGVzYy0+aWR4X2JpdHMsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzLCBidWZfY291bnQpOwo+ICsK PiArICAgICAgICAgICAgICAgcGd0LT5zaXplID0gbGktPmFsbG9jX2Jhc2UgKwo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaS0+dGFibGVfY291bnQgKiBsaS0+ZGVzYy0+dGFibGVfc2l6 ZTsKPiArICAgICAgIH0KPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90IHBndF9hbGxvY190YWJs ZShzdHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwpCj4gK3sKPiArICAgICAgIHN0cnVjdCBw Z3RhYmxlX2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2ZWxfaW5mb1tsZXZlbF07Cj4gKyAgICAg ICB1aW50NjRfdCB0YWJsZTsKPiArCj4gKyAgICAgICB0YWJsZSA9IGxpLT5hbGxvY19wdHI7Cj4g KyAgICAgICBsaS0+YWxsb2NfcHRyICs9IGxpLT5kZXNjLT50YWJsZV9zaXplOwo+ICsKPiArICAg ICAgIGlndF9hc3NlcnQobGktPmFsbG9jX3B0ciA8PQo+ICsgICAgICAgICAgICAgICAgICBsaS0+ YWxsb2NfYmFzZSArIGxpLT50YWJsZV9jb3VudCAqIGxpLT5kZXNjLT50YWJsZV9zaXplKTsKPiAr Cj4gKyAgICAgICByZXR1cm4gdGFibGU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcGd0X2FkZHJl c3NfaW5kZXgoc3RydWN0IHBndGFibGUgKnBndCwgaW50IGxldmVsLCB1aW50NjRfdCBhZGRyZXNz KQo+ICt7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjICpsZCA9IHBn dC0+bGV2ZWxfaW5mb1tsZXZlbF0uZGVzYzsKPiArICAgICAgIHVpbnQ2NF90IG1hc2sgPSBCSVRN QVNLKGxkLT5pZHhfc2hpZnQgKyBsZC0+aWR4X2JpdHMgLSAxLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGQtPmlkeF9zaGlmdCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChhZGRy ZXNzICYgbWFzaykgPj4gbGQtPmlkeF9zaGlmdDsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90 IHB0cl9tYXNrKHN0cnVjdCBwZ3RhYmxlICpwZ3QsIGludCBsZXZlbCkKPiArewo+ICsgICAgICAg Y29uc3Qgc3RydWN0IHBndGFibGVfbGV2ZWxfZGVzYyAqbGQgPSBwZ3QtPmxldmVsX2luZm9bbGV2 ZWxdLmRlc2M7Cj4gKwo+ICsgICAgICAgcmV0dXJuIEJJVE1BU0soR0ZYX0FERFJFU1NfQklUUyAt IDEsIGxkLT5lbnRyeV9wdHJfc2hpZnQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdWludDY0X3QgcGd0 X2VudHJ5X3B0cihzdHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwsIHVpbnQ2NF90IGVudHJ5 KQo+ICt7Cj4gKyAgICAgICB1aW50NjRfdCBwdHIgPSBlbnRyeSAmIHB0cl9tYXNrKHBndCwgbGV2 ZWwpOwo+ICsKPiArICAgICAgIGlmIChsZXZlbCkKPiArICAgICAgICAgICAgICAgcHRyIC09IHBn dC0+Ym8tPm9mZnNldDY0Owo+ICsgICAgICAgaWd0X2Fzc2VydCghKHB0ciAmIH5wdHJfbWFzayhw Z3QsIGxldmVsKSkpOwo+ICsKPiArICAgICAgIHJldHVybiBwdHI7Cj4gK30KPiArCj4gK3N0YXRp YyB1aW50NjRfdCBwZ3RfbWtlbnRyeShzdHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwsIHVp bnQ2NF90IHB0ciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZmxhZ3Mp Cj4gK3sKPiArICAgICAgIGlmIChsZXZlbCkKPiArICAgICAgICAgICAgICAgcHRyICs9IHBndC0+ Ym8tPm9mZnNldDY0Owo+ICsgICAgICAgaWd0X2Fzc2VydCghKHB0ciAmIH5wdHJfbWFzayhwZ3Qs IGxldmVsKSkpOwo+ICsKPiArICAgICAgIHJldHVybiBwdHIgfCBmbGFnczsKPiArfQo+ICsKPiAr c3RhdGljIHVpbnQ2NF90Cj4gK3BndF9nZXRfdGFibGUoc3RydWN0IHBndGFibGUgKnBndCwgdWlu dDY0X3QgcGFyZW50X3RhYmxlLAo+ICsgICAgICAgICAgICAgaW50IGxldmVsLCB1aW50NjRfdCBh ZGRyZXNzLCB1aW50NjRfdCBmbGFncykKPiArewo+ICsgICAgICAgdWludDY0X3QgKnRhYmxlX3B0 ciA9IHBndC0+Ym8tPnZpcnR1YWwgKyBwYXJlbnRfdGFibGU7Cj4gKyAgICAgICBpbnQgZW50cnlf aWR4ID0gcGd0X2FkZHJlc3NfaW5kZXgocGd0LCBsZXZlbCwgYWRkcmVzcyk7Cj4gKyAgICAgICB1 aW50NjRfdCAqZW50cnlfcHRyOwo+ICsKPiArICAgICAgIGVudHJ5X3B0ciA9ICZ0YWJsZV9wdHJb ZW50cnlfaWR4XTsKPiArICAgICAgIGlmICghKmVudHJ5X3B0cikgewo+ICsgICAgICAgICAgICAg ICB1aW50NjRfdCBjaGlsZF90YWJsZSA9IHBndF9hbGxvY190YWJsZShwZ3QsIGxldmVsIC0gMSk7 Cj4gKwo+ICsgICAgICAgICAgICAgICAqZW50cnlfcHRyID0gcGd0X21rZW50cnkocGd0LCBsZXZl bCwgY2hpbGRfdGFibGUsIGZsYWdzKTsKClRoZSB2YWx1ZSBpbiB0aGUgYmF0Y2ggaXMgdGhlIGFi c29sdXRlIGFkZHJlc3MsIGdvb2QuCgo+ICsKPiArICAgICAgICAgICAgICAgZHJtX2ludGVsX2Jv X2VtaXRfcmVsb2MocGd0LT5ibywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50X3RhYmxlICsgZW50cnlfaWR4ICogc2l6ZW9mKHVpbnQ2NF90KSwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGd0LT5ibywgKmVudHJ5X3B0ciwg MCwgMCk7CgpCdXQgeW91IHRoZW4gcGFzcyB0aGUgYWJzb2x1dGUgYWRkcmVzcyBhcyB0aGUgcmVs b2NhdGlvbiBkZWx0YS4gTm90IHNvCmdvb2QuCgo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJl dHVybiBwZ3RfZW50cnlfcHRyKHBndCwgbGV2ZWwsICplbnRyeV9wdHIpOwoKWW91IG9ubHkgdXNl IHBndF9lbnRyeV9wdHIsIGhlcmUgc28ganVzdCBrZWVwIHRoZSBiYXRjaCBlbnRyeSBzZXBhcmF0 ZQpmcm9tIHRoZSByZWxhdGl2ZSBvZmZzZXQuCgp1aW50NjRfdCBwdGUgPSBwZ3RfbWtlbnRyeShw Z3QsIGxldmVsLCBjaGlsZF90YWJsZSwgZmxhZ3MpOwoKSG1tLCBub3RlIHRoaXMgaW50ZXJmYWNl IGlzIGxpbWl0ZWQgdG8gczMyLgppZ3RfYXNzZXJ0KHB0ZSA8IFMzMl9NQVgpOwoKKmVudHJ5X3B0 ciA9IGJvLT5vZmZzZXQ2NCArIHB0ZTsKZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MocGd0LT5ibywK CXBhcmVudF90YWJsZSArIGVudHJ5X2lkeCAqIHNpemVvZih1aW50NjRfdCksCglwZ3QtPmJvLCBv ZmZzZXQsIDAsIDApOwoKCnJldHVybiBvZmZzZXQgJiBwdHJfbWFzayhwZ3QsIGxldmVsKTsKCldo YXQncyB0aGUgY29oZXJlbmN5IG1vZGVsIGZvciB0aGUgcGd0LT5ibz8gVGhlcmUncyBhIGxvdCBv ZiB3cml0ZXMgaGVyZQpmcm9tIHRoZSBDUFUgaG93IGFyZSB5b3UgbWFraW5nIHN1cmUgdGhleSBh cmUgdmlzaWJsZSB0byB0aGUgR1BVPwotQ2hyaXMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2