From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 06F006E81B for ; Tue, 3 Dec 2019 14:50:04 +0000 (UTC) From: "Kahola, Mika" Date: Tue, 3 Dec 2019 14:50:01 +0000 Message-ID: <42aaccd6deb6b5411ea83e42e6f8aa3f262091ac.camel@intel.com> References: <20191129103843.5765-1-imre.deak@intel.com> <20191129103843.5765-4-imre.deak@intel.com> In-Reply-To: <20191129103843.5765-4-imre.deak@intel.com> Content-Language: en-US Content-ID: <84C248F159CAAC4ABD50868A1BA245FC@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 3/6] lib: Move aux pgtable state prepare/emit to intel_aux_pgtable.c 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: "igt-dev@lists.freedesktop.org" , "Deak, Imre" Cc: "Welty, Brian" List-ID: T24gRnJpLCAyMDE5LTExLTI5IGF0IDEyOjM4ICswMjAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gVGhl IEFVWCBwYWdldGFibGVzIG5lZWQgdG8gYmUgc2V0IHVwIGZvciBibGl0cyB1c2luZyB0aGUgdmVi b3ggZW5naW5lCj4gdG9vLCBzbyBtb3ZlIHRoZSByZWxhdGVkIGhlbHBlciBmdW5jdGlvbnMgdG8g aW50ZWxfYXV4X3BndGFibGUuYy4KPiAKPiBDYzogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGlu dGVsLmNvbT4KPiBDYzogQnJpYW4gV2VsdHkgPGJyaWFuLndlbHR5QGludGVsLmNvbT4KPiBDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSW1y ZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKUmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxt aWthLmthaG9sYUBpbnRlbC5jb20+Cgo+IC0tLQo+ICBsaWIvaW50ZWxfYXV4X3BndGFibGUuYyB8 IDE5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWIvaW50ZWxf YXV4X3BndGFibGUuaCB8ICAyMyArKysrKwo+ICBsaWIvcmVuZGVyY29weV9nZW45LmMgICB8IDIw NSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tCj4gIDMgZmlsZXMg Y2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDIwNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYwo+ IGluZGV4IGVhOTA5ZWMwLi4zMTliMjc0NSAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfYXV4X3Bn dGFibGUuYwo+ICsrKyBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCj4gQEAgLTM3MCwzICszNzAs MjAxIEBAIGludGVsX2F1eF9wZ3RhYmxlX2NyZWF0ZShkcm1faW50ZWxfYnVmbWdyCj4gKmJ1Zm1n ciwKPiAgCj4gIAlyZXR1cm4gcGd0X2JvOwo+ICB9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICthdXhf cGd0YWJsZV9maW5kX21heF9mcmVlX3JhbmdlKGNvbnN0IHN0cnVjdCBpZ3RfYnVmICoqYnVmcywg aW50Cj4gYnVmX2NvdW50LAo+ICsJCQkJdWludDY0X3QgKnJhbmdlX3N0YXJ0LCB1aW50NjRfdAo+ ICpyYW5nZV9zaXplKQo+ICt7Cj4gKwkvKgo+ICsJICogS2VlcCB0aGUgZmlyc3QgcGFnZSByZXNl cnZlZCwgc28gd2UgY2FuIGRpZmZlcmVudGlhdGUgcGlubmVkCj4gKwkgKiBvYmplY3RzIGJhc2Vk IG9uIGEgbm9uLU5VTEwgb2Zmc2V0Lgo+ICsJICovCj4gKwl1aW50NjRfdCBzdGFydCA9IDB4MTAw MDsKPiArCS8qIEZvciBub3cgYWxsb2Mgb25seSBmcm9tIHRoZSBmaXJzdCA0R0IgYWRkcmVzcyBz cGFjZS4gKi8KPiArCWNvbnN0IHVpbnQ2NF90IGVuZCA9IDFVTEwgPDwgMzI7Cj4gKwl1aW50NjRf dCBtYXhfcmFuZ2Vfc3RhcnQgPSAwOwo+ICsJdWludDY0X3QgbWF4X3JhbmdlX3NpemUgPSAwOwo+ ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGJ1Zl9jb3VudDsgaSsrKSB7Cj4gKwkJ aWYgKGJ1ZnNbaV0tPmJvLT5vZmZzZXQ2NCA+PSBlbmQpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlp ZiAoYnVmc1tpXS0+Ym8tPm9mZnNldDY0IC0gc3RhcnQgPiBtYXhfcmFuZ2Vfc2l6ZSkgewo+ICsJ CQltYXhfcmFuZ2Vfc3RhcnQgPSBzdGFydDsKPiArCQkJbWF4X3JhbmdlX3NpemUgPSBidWZzW2ld LT5iby0+b2Zmc2V0NjQgLSBzdGFydDsKPiArCQl9Cj4gKwkJc3RhcnQgPSBidWZzW2ldLT5iby0+ b2Zmc2V0NjQgKyBidWZzW2ldLT5iby0+c2l6ZTsKPiArCX0KPiArCj4gKwlpZiAoc3RhcnQgPCBl bmQgJiYgZW5kIC0gc3RhcnQgPiBtYXhfcmFuZ2Vfc2l6ZSkgewo+ICsJCW1heF9yYW5nZV9zdGFy dCA9IHN0YXJ0Owo+ICsJCW1heF9yYW5nZV9zaXplID0gZW5kIC0gc3RhcnQ7Cj4gKwl9Cj4gKwo+ ICsJKnJhbmdlX3N0YXJ0ID0gbWF4X3JhbmdlX3N0YXJ0Owo+ICsJKnJhbmdlX3NpemUgPSBtYXhf cmFuZ2Vfc2l6ZTsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90Cj4gK2F1eF9wZ3RhYmxlX2Zp bmRfZnJlZV9yYW5nZShjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqKmJ1ZnMsIGludAo+IGJ1Zl9jb3Vu dCwKPiArCQkJICAgIHVpbnQzMl90IHNpemUpCj4gK3sKPiArCXVpbnQ2NF90IHJhbmdlX3N0YXJ0 Owo+ICsJdWludDY0X3QgcmFuZ2Vfc2l6ZTsKPiArCS8qIEEgY29tcHJlc3NlZCBzdXJmYWNlIG11 c3QgYmUgNjRrQiBhbGlnbmVkLiAqLwo+ICsJY29uc3QgdWludDMyX3QgYWxpZ24gPSAweDEwMDAw Owo+ICsJaW50IHBhZDsKPiArCj4gKwlhdXhfcGd0YWJsZV9maW5kX21heF9mcmVlX3JhbmdlKGJ1 ZnMsIGJ1Zl9jb3VudCwKPiArCQkJCQkmcmFuZ2Vfc3RhcnQsICZyYW5nZV9zaXplKTsKPiArCj4g KwlwYWQgPSBBTElHTihyYW5nZV9zdGFydCwgYWxpZ24pIC0gcmFuZ2Vfc3RhcnQ7Cj4gKwlyYW5n ZV9zdGFydCArPSBwYWQ7Cj4gKwlyYW5nZV9zaXplIC09IHBhZDsKPiArCWlndF9hc3NlcnQocmFu Z2Vfc2l6ZSA+PSBzaXplKTsKPiArCj4gKwlyZXR1cm4gcmFuZ2Vfc3RhcnQgKwo+ICsJICAgICAg IEFMSUdOX0RPV04ocmFuZCgpICUgKChyYW5nZV9zaXplIC0gc2l6ZSkgKyAxKSwgYWxpZ24pOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICthdXhfcGd0YWJsZV9yZXNlcnZlX3JhbmdlKGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICoqYnVmcywgaW50Cj4gYnVmX2NvdW50LAo+ICsJCQkgIGNvbnN0IHN0 cnVjdCBpZ3RfYnVmICpuZXdfYnVmKQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAobmV3X2J1 Zi0+YXV4LnN0cmlkZSkgewo+ICsJCXVpbnQ2NF90IHBpbl9vZmZzZXQgPSBuZXdfYnVmLT5iby0+ b2Zmc2V0NjQ7Cj4gKwo+ICsJCWlmICghcGluX29mZnNldCkKPiArCQkJcGluX29mZnNldCA9IGF1 eF9wZ3RhYmxlX2ZpbmRfZnJlZV9yYW5nZShidWZzLAo+ICsJCQkJCQkJCSBidWZfY28KPiB1bnQs Cj4gKwkJCQkJCQkJIG5ld19idQo+IGYtPmJvLT5zaXplKTsKPiArCQlkcm1faW50ZWxfYm9fc2V0 X3NvZnRwaW5fb2Zmc2V0KG5ld19idWYtPmJvLAo+IHBpbl9vZmZzZXQpOwo+ICsJCWlndF9hc3Nl cnQobmV3X2J1Zi0+Ym8tPm9mZnNldDY0ID09IHBpbl9vZmZzZXQpOwo+ICsJfQo+ICsKPiArCWZv ciAoaSA9IDA7IGkgPCBidWZfY291bnQ7IGkrKykKPiArCQlpZiAoYnVmc1tpXS0+Ym8tPm9mZnNl dDY0ID4gbmV3X2J1Zi0+Ym8tPm9mZnNldDY0KQo+ICsJCQlicmVhazsKPiArCj4gKwltZW1tb3Zl KCZidWZzW2kgKyAxXSwgJmJ1ZnNbaV0sIHNpemVvZihidWZzWzBdKSAqIChidWZfY291bnQgLQo+ IGkpKTsKPiArCj4gKwlidWZzW2ldID0gbmV3X2J1ZjsKPiArfQo+ICsKPiArdm9pZAo+ICtnZW4x Ml9hdXhfcGd0YWJsZV9pbml0KHN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvICppbmZvLAo+ICsJCSAg ICAgICBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBp Z3RfYnVmICpzcmNfYnVmLAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0X2J1 ZikKPiArewo+ICsJY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZnNbMl07Cj4gKwljb25zdCBzdHJ1 Y3QgaWd0X2J1ZiAqcmVzZXJ2ZWRfYnVmc1syXTsKPiArCWludCByZXNlcnZlZF9idWZfY291bnQ7 Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIXNyY19idWYtPmF1eC5zdHJpZGUgJiYgIWRzdF9idWYt PmF1eC5zdHJpZGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWJ1ZnNbMF0gPSBzcmNfYnVmOwo+ICsJ YnVmc1sxXSA9IGRzdF9idWY7Cj4gKwo+ICsJLyoKPiArCSAqIElkZWFsbHkgd2UnZCBuZWVkIGFu IElHVC13aWRlIEdGWCBhZGRyZXNzIHNwYWNlIGFsbG9jYXRvciwKPiB3aGljaAo+ICsJICogd291 bGQgY29uc2lkZXIgYWxsIGFsbG9jYXRpb25zIGFuZCB0aHVzIGF2b2lkIGV2aWN0aW9ucy4gRm9y Cj4gbm93IHVzZQo+ICsJICogYSBzaW1wbGVyIHNjaGVtZSBoZXJlLCB3aGljaCBvbmx5IGNvbnNp ZGVycyB0aGUgYnVmZmVycwo+IGludm9sdmVkIGluCj4gKwkgKiB0aGUgYmxpdCwgd2hpY2ggc2hv dWxkIGF0IGxlYXN0IG1pbmltaXplIHRoZSBjaGFuY2UgZm9yCj4gZXZpY3Rpb25zCj4gKwkgKiBp biB0aGUgY2FzZSBvZiBzdWJzZXF1ZW50IGJsaXRzOgo+ICsJICogICAxLiBJZiB0aGV5IHdlcmUg YWxyZWFkeSBib3VuZCAoYm8tPm9mZnNldDY0ICE9IDApLCB1c2UKPiB0aGlzCj4gKwkgKiAgICAg IGFkZHJlc3MuCj4gKwkgKiAgIDIuIFBpY2sgYSByYW5nZSByYW5kb21seSBmcm9tIHRoZSA0R0Ig YWRkcmVzcyBzcGFjZSwgdGhhdAo+IGlzIG5vdAo+ICsJICogICAgICBhbHJlYWR5IG9jY3VwaWVk IGJ5IGEgYm91bmQgb2JqZWN0LCBvciBhbiBvYmplY3Qgd2UKPiBwaW5uZWQuCj4gKwkgKi8KPiAr CXJlc2VydmVkX2J1Zl9jb3VudCA9IDA7Cj4gKwkvKiBGaXJzdCByZXNlcnZlIHNwYWNlIGZvciBh bnkgYnVmcyB0aGF0IGFyZSBib3VuZCBhbHJlYWR5LiAqLwo+ICsJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUoYnVmcyk7IGkrKykKPiArCQlpZiAoYnVmc1tpXS0+Ym8tPm9mZnNldDY0KQo+ICsJ CQlhdXhfcGd0YWJsZV9yZXNlcnZlX3JhbmdlKHJlc2VydmVkX2J1ZnMsCj4gKwkJCQkJCSAgcmVz ZXJ2ZWRfYnVmX2NvdW50KyssCj4gKwkJCQkJCSAgYnVmc1tpXSk7Cj4gKwo+ICsJLyogTmV4dCwg cmVzZXJ2ZSBzcGFjZSBmb3IgdW5ib3VuZCBidWZzIHdpdGggYW4gQVVYIHN1cmZhY2UuICovCj4g Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShidWZzKTsgaSsrKQo+ICsJCWlmICghYnVmc1tp XS0+Ym8tPm9mZnNldDY0ICYmIGJ1ZnNbaV0tPmF1eC5zdHJpZGUpCj4gKwkJCWF1eF9wZ3RhYmxl X3Jlc2VydmVfcmFuZ2UocmVzZXJ2ZWRfYnVmcywKPiArCQkJCQkJICByZXNlcnZlZF9idWZfY291 bnQrKywKPiArCQkJCQkJICBidWZzW2ldKTsKPiArCj4gKwkvKiBDcmVhdGUgQVVYIHBndGFibGUg ZW50cmllcyBvbmx5IGZvciBidWZzIHdpdGggYW4gQVVYIHN1cmZhY2UKPiAqLwo+ICsJaW5mby0+ YnVmX2NvdW50ID0gMDsKPiArCWZvciAoaSA9IDA7IGkgPCByZXNlcnZlZF9idWZfY291bnQ7IGkr Kykgewo+ICsJCWlmICghcmVzZXJ2ZWRfYnVmc1tpXS0+YXV4LnN0cmlkZSkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCWluZm8tPmJ1ZnNbaW5mby0+YnVmX2NvdW50XSA9IHJlc2VydmVkX2J1ZnNb aV07Cj4gKwkJaW5mby0+YnVmX3Bpbl9vZmZzZXRzW2luZm8tPmJ1Zl9jb3VudF0gPQo+ICsJCQly ZXNlcnZlZF9idWZzW2ldLT5iby0+b2Zmc2V0NjQ7Cj4gKwkJaW5mby0+YnVmX2NvdW50Kys7Cj4g Kwl9Cj4gKwo+ICsJaW5mby0+cGd0YWJsZV9ibyA9IGludGVsX2F1eF9wZ3RhYmxlX2NyZWF0ZShi dWZtZ3IsCj4gKwkJCQkJCSAgICBpbmZvLT5idWZzLAo+ICsJCQkJCQkgICAgaW5mby0+YnVmX2Nv dW50KTsKPiArCWlndF9hc3NlcnQoaW5mby0+cGd0YWJsZV9ibyk7Cj4gK30KPiArCj4gK3ZvaWQK PiArZ2VuMTJfYXV4X3BndGFibGVfY2xlYW51cChzdHJ1Y3QgYXV4X3BndGFibGVfaW5mbyAqaW5m bykKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJLyogQ2hlY2sgdGhhdCB0aGUgcGlubmVkIGJ1ZnMg a2VwdCB0aGVpciBvZmZzZXQgYWZ0ZXIgdGhlIGV4ZWMuCj4gKi8KPiArCWZvciAoaSA9IDA7IGkg PCBpbmZvLT5idWZfY291bnQ7IGkrKykKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChpbmZvLT5idWZz W2ldLT5iby0+b2Zmc2V0NjQsCj4gKwkJCQkgIGluZm8tPmJ1Zl9waW5fb2Zmc2V0c1tpXSk7Cj4g Kwo+ICsJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGluZm8tPnBndGFibGVfYm8pOwo+ICt9Cj4g Kwo+ICt1aW50MzJfdAo+ICtnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiArCQkJICAgICAgIGRybV9pbnRlbF9ibyAqYXV4X3Bn dGFibGVfYm8pCj4gK3sKPiArCXVpbnQ2NF90ICpwZ3RhYmxlX3B0cjsKPiArCXVpbnQzMl90IHBn dGFibGVfcHRyX29mZnNldDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFhdXhfcGd0YWJsZV9i bykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlwZ3RhYmxlX3B0ciA9IGludGVsX2JhdGNoYnVmZmVy X3N1YmRhdGFfYWxsb2MoYmF0Y2gsCj4gKwkJCQkJCSAgICAgIHNpemVvZigqcGd0YWJsZV9wCj4g dHIpLAo+ICsJCQkJCQkgICAgICBzaXplb2YoKnBndGFibGVfcAo+IHRyKSk7Cj4gKwlwZ3RhYmxl X3B0cl9vZmZzZXQgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwKPiAr CQkJCQkJCSAgICAgIHBndGFibGVfcAo+IHRyKTsKPiArCj4gKwkqcGd0YWJsZV9wdHIgPSBhdXhf cGd0YWJsZV9iby0+b2Zmc2V0NjQ7Cj4gKwlyZXQgPSBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhi YXRjaC0+Ym8sIHBndGFibGVfcHRyX29mZnNldCwKPiArCQkJCSAgICAgIGF1eF9wZ3RhYmxlX2Jv LCAwLAo+ICsJCQkJICAgICAgMCwgMCk7Cj4gKwlhc3NlcnQocmV0ID09IDApOwo+ICsKPiArCXJl dHVybiBwZ3RhYmxlX3B0cl9vZmZzZXQ7Cj4gK30KPiArCj4gK3ZvaWQKPiArZ2VuMTJfZW1pdF9h dXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+IHVpbnQz Ml90IHN0YXRlKQo+ICt7Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJldHVybjsKPiArCj4gKwlPVVRf QkFUQ0goTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOCk7Cj4gKwlPVVRfQkFUQ0goR0VOMTJfR0ZY X0FVWF9UQUJMRV9CQVNFX0FERFIpOwo+ICsJT1VUX1JFTE9DKGJhdGNoLT5ibywgMCwgMCwgc3Rh dGUpOwo+ICsKPiArCU9VVF9CQVRDSChNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44KTsKPiArCU9V VF9CQVRDSChHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUiArIDQpOwo+ICsJT1VUX1JFTE9D KGJhdGNoLT5ibywgMCwgMCwgc3RhdGUgKyA0KTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvaW50 ZWxfYXV4X3BndGFibGUuaCBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oCj4gaW5kZXggYzBmMDAx YjQuLjIwMjc4ZGIwIDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oCj4gKysr IGIvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmgKPiBAQCAtNCw5ICs0LDMyIEBACj4gICNpbmNsdWRl ICJpbnRlbF9idWZtZ3IuaCIKPiAgCj4gIHN0cnVjdCBpZ3RfYnVmOwo+ICtzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXI7Cj4gKwo+ICtzdHJ1Y3QgYXV4X3BndGFibGVfaW5mbyB7Cj4gKwlpbnQgYnVm X2NvdW50Owo+ICsJY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZnNbMl07Cj4gKwl1aW50NjRfdCBi dWZfcGluX29mZnNldHNbMl07Cj4gKwlkcm1faW50ZWxfYm8gKnBndGFibGVfYm87Cj4gK307Cj4g IAo+ICBkcm1faW50ZWxfYm8gKgo+ICBpbnRlbF9hdXhfcGd0YWJsZV9jcmVhdGUoZHJtX2ludGVs X2J1Zm1nciAqYnVmbWdyLAo+ICAJCQkgY29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQg YnVmX2NvdW50KTsKPiAgCj4gK3ZvaWQKPiArZ2VuMTJfYXV4X3BndGFibGVfaW5pdChzdHJ1Y3Qg YXV4X3BndGFibGVfaW5mbyAqaW5mbywKPiArCQkgICAgICAgZHJtX2ludGVsX2J1Zm1nciAqYnVm bWdyLAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjX2J1ZiwKPiArCQkgICAg ICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdF9idWYpOwo+ICsKPiArdm9pZAo+ICtnZW4xMl9h dXhfcGd0YWJsZV9jbGVhbnVwKHN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvICppbmZvKTsKPiArCj4g K3VpbnQzMl90Cj4gK2dlbjEyX2NyZWF0ZV9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAo+ICsJCQkgICAgICAgZHJtX2ludGVsX2JvICphdXhfcGd0YWJs ZV9ibyk7Cj4gK3ZvaWQKPiArZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+IHVpbnQzMl90IHN0YXRlKTsKPiArCj4gICNlbmRpZgo+ IGRpZmYgLS1naXQgYS9saWIvcmVuZGVyY29weV9nZW45LmMgYi9saWIvcmVuZGVyY29weV9nZW45 LmMKPiBpbmRleCAzMTg5NTk0Zi4uOTRlODE2YjYgMTAwNjQ0Cj4gLS0tIGEvbGliL3JlbmRlcmNv cHlfZ2VuOS5jCj4gKysrIGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCj4gQEAgLTk3MywyMTEgKzk3 Myw2IEBAIHN0YXRpYyB2b2lkIGdlbjhfZW1pdF9wcmltaXRpdmUoc3RydWN0Cj4gaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBvZmZzZXQKPiAgCj4gICNkZWZpbmUgQkFUQ0hfU1RB VEVfU1BMSVQgMjA0OAo+ICAKPiAtc3RhdGljIHZvaWQKPiAtYXV4X3BndGFibGVfZmluZF9tYXhf ZnJlZV9yYW5nZShjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqKmJ1ZnMsIGludAo+IGJ1Zl9jb3VudCwK PiAtCQkJCXVpbnQ2NF90ICpyYW5nZV9zdGFydCwgdWludDY0X3QKPiAqcmFuZ2Vfc2l6ZSkKPiAt ewo+IC0JLyoKPiAtCSAqIEtlZXAgdGhlIGZpcnN0IHBhZ2UgcmVzZXJ2ZWQsIHNvIHdlIGNhbiBk aWZmZXJlbnRpYXRlIHBpbm5lZAo+IC0JICogb2JqZWN0cyBiYXNlZCBvbiBhIG5vbi1OVUxMIG9m ZnNldC4KPiAtCSAqLwo+IC0JdWludDY0X3Qgc3RhcnQgPSAweDEwMDA7Cj4gLQkvKiBGb3Igbm93 IGFsbG9jIG9ubHkgZnJvbSB0aGUgZmlyc3QgNEdCIGFkZHJlc3Mgc3BhY2UuICovCj4gLQljb25z dCB1aW50NjRfdCBlbmQgPSAxVUxMIDw8IDMyOwo+IC0JdWludDY0X3QgbWF4X3JhbmdlX3N0YXJ0 ID0gMDsKPiAtCXVpbnQ2NF90IG1heF9yYW5nZV9zaXplID0gMDsKPiAtCWludCBpOwo+IC0KPiAt CWZvciAoaSA9IDA7IGkgPCBidWZfY291bnQ7IGkrKykgewo+IC0JCWlmIChidWZzW2ldLT5iby0+ b2Zmc2V0NjQgPj0gZW5kKQo+IC0JCQlicmVhazsKPiAtCj4gLQkJaWYgKGJ1ZnNbaV0tPmJvLT5v ZmZzZXQ2NCAtIHN0YXJ0ID4gbWF4X3JhbmdlX3NpemUpIHsKPiAtCQkJbWF4X3JhbmdlX3N0YXJ0 ID0gc3RhcnQ7Cj4gLQkJCW1heF9yYW5nZV9zaXplID0gYnVmc1tpXS0+Ym8tPm9mZnNldDY0IC0g c3RhcnQ7Cj4gLQkJfQo+IC0JCXN0YXJ0ID0gYnVmc1tpXS0+Ym8tPm9mZnNldDY0ICsgYnVmc1tp XS0+Ym8tPnNpemU7Cj4gLQl9Cj4gLQo+IC0JaWYgKHN0YXJ0IDwgZW5kICYmIGVuZCAtIHN0YXJ0 ID4gbWF4X3JhbmdlX3NpemUpIHsKPiAtCQltYXhfcmFuZ2Vfc3RhcnQgPSBzdGFydDsKPiAtCQlt YXhfcmFuZ2Vfc2l6ZSA9IGVuZCAtIHN0YXJ0Owo+IC0JfQo+IC0KPiAtCSpyYW5nZV9zdGFydCA9 IG1heF9yYW5nZV9zdGFydDsKPiAtCSpyYW5nZV9zaXplID0gbWF4X3JhbmdlX3NpemU7Cj4gLX0K PiAtCj4gLXN0YXRpYyB1aW50NjRfdAo+IC1hdXhfcGd0YWJsZV9maW5kX2ZyZWVfcmFuZ2UoY29u c3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQKPiBidWZfY291bnQsCj4gLQkJCSAgICB1aW50 MzJfdCBzaXplKQo+IC17Cj4gLQl1aW50NjRfdCByYW5nZV9zdGFydDsKPiAtCXVpbnQ2NF90IHJh bmdlX3NpemU7Cj4gLQkvKiBBIGNvbXByZXNzZWQgc3VyZmFjZSBtdXN0IGJlIDY0a0IgYWxpZ25l ZC4gKi8KPiAtCWNvbnN0IHVpbnQzMl90IGFsaWduID0gMHgxMDAwMDsKPiAtCWludCBwYWQ7Cj4g LQo+IC0JYXV4X3BndGFibGVfZmluZF9tYXhfZnJlZV9yYW5nZShidWZzLCBidWZfY291bnQsCj4g LQkJCQkJJnJhbmdlX3N0YXJ0LCAmcmFuZ2Vfc2l6ZSk7Cj4gLQo+IC0JcGFkID0gQUxJR04ocmFu Z2Vfc3RhcnQsIGFsaWduKSAtIHJhbmdlX3N0YXJ0Owo+IC0JcmFuZ2Vfc3RhcnQgKz0gcGFkOwo+ IC0JcmFuZ2Vfc2l6ZSAtPSBwYWQ7Cj4gLQlpZ3RfYXNzZXJ0KHJhbmdlX3NpemUgPj0gc2l6ZSk7 Cj4gLQo+IC0JcmV0dXJuIHJhbmdlX3N0YXJ0ICsKPiAtCSAgICAgICBBTElHTl9ET1dOKHJhbmQo KSAlICgocmFuZ2Vfc2l6ZSAtIHNpemUpICsgMSksIGFsaWduKTsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQKPiAtYXV4X3BndGFibGVfcmVzZXJ2ZV9yYW5nZShjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAq KmJ1ZnMsIGludAo+IGJ1Zl9jb3VudCwKPiAtCQkJICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqbmV3 X2J1ZikKPiAtewo+IC0JaW50IGk7Cj4gLQo+IC0JaWYgKG5ld19idWYtPmF1eC5zdHJpZGUpIHsK PiAtCQl1aW50NjRfdCBwaW5fb2Zmc2V0ID0gbmV3X2J1Zi0+Ym8tPm9mZnNldDY0Owo+IC0KPiAt CQlpZiAoIXBpbl9vZmZzZXQpCj4gLQkJCXBpbl9vZmZzZXQgPSBhdXhfcGd0YWJsZV9maW5kX2Zy ZWVfcmFuZ2UoYnVmcywKPiAtCQkJCQkJCQkgYnVmX2NvCj4gdW50LAo+IC0JCQkJCQkJCSBuZXdf YnUKPiBmLT5iby0+c2l6ZSk7Cj4gLQkJZHJtX2ludGVsX2JvX3NldF9zb2Z0cGluX29mZnNldChu ZXdfYnVmLT5ibywKPiBwaW5fb2Zmc2V0KTsKPiAtCQlpZ3RfYXNzZXJ0KG5ld19idWYtPmJvLT5v ZmZzZXQ2NCA9PSBwaW5fb2Zmc2V0KTsKPiAtCX0KPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgYnVm X2NvdW50OyBpKyspCj4gLQkJaWYgKGJ1ZnNbaV0tPmJvLT5vZmZzZXQ2NCA+IG5ld19idWYtPmJv LT5vZmZzZXQ2NCkKPiAtCQkJYnJlYWs7Cj4gLQo+IC0JbWVtbW92ZSgmYnVmc1tpICsgMV0sICZi dWZzW2ldLCBzaXplb2YoYnVmc1swXSkgKiAoYnVmX2NvdW50IC0KPiBpKSk7Cj4gLQo+IC0JYnVm c1tpXSA9IG5ld19idWY7Cj4gLX0KPiAtCj4gLXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvIHsKPiAt CWludCBidWZfY291bnQ7Cj4gLQljb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmc1syXTsKPiAtCXVp bnQ2NF90IGJ1Zl9waW5fb2Zmc2V0c1syXTsKPiAtCWRybV9pbnRlbF9ibyAqcGd0YWJsZV9ibzsK PiAtfTsKPiAtCj4gLXN0YXRpYyB2b2lkCj4gLWdlbjEyX2F1eF9wZ3RhYmxlX2luaXQoc3RydWN0 IGF1eF9wZ3RhYmxlX2luZm8gKmluZm8sCj4gLQkJICAgICAgIGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwKPiAtCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKnNyY19idWYsCj4gLQkJICAg ICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3RfYnVmKQo+IC17Cj4gLQljb25zdCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmc1syXTsKPiAtCWNvbnN0IHN0cnVjdCBpZ3RfYnVmICpyZXNlcnZlZF9idWZz WzJdOwo+IC0JaW50IHJlc2VydmVkX2J1Zl9jb3VudDsKPiAtCWludCBpOwo+IC0KPiAtCWlmICgh c3JjX2J1Zi0+YXV4LnN0cmlkZSAmJiAhZHN0X2J1Zi0+YXV4LnN0cmlkZSkKPiAtCQlyZXR1cm47 Cj4gLQo+IC0JYnVmc1swXSA9IHNyY19idWY7Cj4gLQlidWZzWzFdID0gZHN0X2J1ZjsKPiAtCj4g LQkvKgo+IC0JICogSWRlYWxseSB3ZSdkIG5lZWQgYW4gSUdULXdpZGUgR0ZYIGFkZHJlc3Mgc3Bh Y2UgYWxsb2NhdG9yLAo+IHdoaWNoCj4gLQkgKiB3b3VsZCBjb25zaWRlciBhbGwgYWxsb2NhdGlv bnMgYW5kIHRodXMgYXZvaWQgZXZpY3Rpb25zLiBGb3IKPiBub3cgdXNlCj4gLQkgKiBhIHNpbXBs ZXIgc2NoZW1lIGhlcmUsIHdoaWNoIG9ubHkgY29uc2lkZXJzIHRoZSBidWZmZXJzCj4gaW52b2x2 ZWQgaW4KPiAtCSAqIHRoZSBibGl0LCB3aGljaCBzaG91bGQgYXQgbGVhc3QgbWluaW1pemUgdGhl IGNoYW5jZSBmb3IKPiBldmljdGlvbnMKPiAtCSAqIGluIHRoZSBjYXNlIG9mIHN1YnNlcXVlbnQg YmxpdHM6Cj4gLQkgKiAgIDEuIElmIHRoZXkgd2VyZSBhbHJlYWR5IGJvdW5kIChiby0+b2Zmc2V0 NjQgIT0gMCksIHVzZQo+IHRoaXMKPiAtCSAqICAgICAgYWRkcmVzcy4KPiAtCSAqICAgMi4gUGlj ayBhIHJhbmdlIHJhbmRvbWx5IGZyb20gdGhlIDRHQiBhZGRyZXNzIHNwYWNlLCB0aGF0Cj4gaXMg bm90Cj4gLQkgKiAgICAgIGFscmVhZHkgb2NjdXBpZWQgYnkgYSBib3VuZCBvYmplY3QsIG9yIGFu IG9iamVjdCB3ZQo+IHBpbm5lZC4KPiAtCSAqLwo+IC0JcmVzZXJ2ZWRfYnVmX2NvdW50ID0gMDsK PiAtCS8qIEZpcnN0IHJlc2VydmUgc3BhY2UgZm9yIGFueSBidWZzIHRoYXQgYXJlIGJvdW5kIGFs cmVhZHkuICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShidWZzKTsgaSsrKQo+IC0J CWlmIChidWZzW2ldLT5iby0+b2Zmc2V0NjQpCj4gLQkJCWF1eF9wZ3RhYmxlX3Jlc2VydmVfcmFu Z2UocmVzZXJ2ZWRfYnVmcywKPiAtCQkJCQkJICByZXNlcnZlZF9idWZfY291bnQrKywKPiAtCQkJ CQkJICBidWZzW2ldKTsKPiAtCj4gLQkvKiBOZXh0LCByZXNlcnZlIHNwYWNlIGZvciB1bmJvdW5k IGJ1ZnMgd2l0aCBhbiBBVVggc3VyZmFjZS4gKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGJ1ZnMpOyBpKyspCj4gLQkJaWYgKCFidWZzW2ldLT5iby0+b2Zmc2V0NjQgJiYgYnVmc1tp XS0+YXV4LnN0cmlkZSkKPiAtCQkJYXV4X3BndGFibGVfcmVzZXJ2ZV9yYW5nZShyZXNlcnZlZF9i dWZzLAo+IC0JCQkJCQkgIHJlc2VydmVkX2J1Zl9jb3VudCsrLAo+IC0JCQkJCQkgIGJ1ZnNbaV0p Owo+IC0KPiAtCS8qIENyZWF0ZSBBVVggcGd0YWJsZSBlbnRyaWVzIG9ubHkgZm9yIGJ1ZnMgd2l0 aCBhbiBBVVggc3VyZmFjZQo+ICovCj4gLQlpbmZvLT5idWZfY291bnQgPSAwOwo+IC0JZm9yIChp ID0gMDsgaSA8IHJlc2VydmVkX2J1Zl9jb3VudDsgaSsrKSB7Cj4gLQkJaWYgKCFyZXNlcnZlZF9i dWZzW2ldLT5hdXguc3RyaWRlKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJaW5mby0+YnVmc1tp bmZvLT5idWZfY291bnRdID0gcmVzZXJ2ZWRfYnVmc1tpXTsKPiAtCQlpbmZvLT5idWZfcGluX29m ZnNldHNbaW5mby0+YnVmX2NvdW50XSA9Cj4gLQkJCXJlc2VydmVkX2J1ZnNbaV0tPmJvLT5vZmZz ZXQ2NDsKPiAtCQlpbmZvLT5idWZfY291bnQrKzsKPiAtCX0KPiAtCj4gLQlpbmZvLT5wZ3RhYmxl X2JvID0gaW50ZWxfYXV4X3BndGFibGVfY3JlYXRlKGJ1Zm1nciwKPiAtCQkJCQkJICAgIGluZm8t PmJ1ZnMsCj4gLQkJCQkJCSAgICBpbmZvLT5idWZfY291bnQpOwo+IC0JaWd0X2Fzc2VydChpbmZv LT5wZ3RhYmxlX2JvKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtZ2VuMTJfYXV4X3BndGFi bGVfY2xlYW51cChzdHJ1Y3QgYXV4X3BndGFibGVfaW5mbyAqaW5mbykKPiAtewo+IC0JaW50IGk7 Cj4gLQo+IC0JLyogQ2hlY2sgdGhhdCB0aGUgcGlubmVkIGJ1ZnMga2VwdCB0aGVpciBvZmZzZXQg YWZ0ZXIgdGhlIGV4ZWMuCj4gKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5idWZfY291bnQ7 IGkrKykKPiAtCQlpZ3RfYXNzZXJ0X2VxX3U2NChpbmZvLT5idWZzW2ldLT5iby0+b2Zmc2V0NjQs Cj4gLQkJCQkgIGluZm8tPmJ1Zl9waW5fb2Zmc2V0c1tpXSk7Cj4gLQo+IC0JZHJtX2ludGVsX2Jv X3VucmVmZXJlbmNlKGluZm8tPnBndGFibGVfYm8pOwo+IC19Cj4gLQo+IC1zdGF0aWMgdWludDMy X3QKPiAtZ2VuMTJfY3JlYXRlX2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCj4gLQkJCSAgICAgICBkcm1faW50ZWxfYm8gKmF1eF9wZ3RhYmxlX2JvKQo+ IC17Cj4gLQl1aW50NjRfdCAqcGd0YWJsZV9wdHI7Cj4gLQl1aW50MzJfdCBwZ3RhYmxlX3B0cl9v ZmZzZXQ7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmICghYXV4X3BndGFibGVfYm8pCj4gLQkJcmV0 dXJuIDA7Cj4gLQo+IC0JcGd0YWJsZV9wdHIgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2Fs bG9jKGJhdGNoLAo+IC0JCQkJCQkgICAgICBzaXplb2YoKnBndGFibGVfcAo+IHRyKSwKPiAtCQkJ CQkJICAgICAgc2l6ZW9mKCpwZ3RhYmxlX3AKPiB0cikpOwo+IC0JcGd0YWJsZV9wdHJfb2Zmc2V0 ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsCj4gLQkJCQkJCQkgICAg ICBwZ3RhYmxlX3AKPiB0cik7Cj4gLQo+IC0JKnBndGFibGVfcHRyID0gYXV4X3BndGFibGVfYm8t Pm9mZnNldDY0Owo+IC0JcmV0ID0gZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoYmF0Y2gtPmJvLCBw Z3RhYmxlX3B0cl9vZmZzZXQsCj4gLQkJCQkgICAgICBhdXhfcGd0YWJsZV9ibywgMCwKPiAtCQkJ CSAgICAgIDAsIDApOwo+IC0JYXNzZXJ0KHJldCA9PSAwKTsKPiAtCj4gLQlyZXR1cm4gcGd0YWJs ZV9wdHJfb2Zmc2V0Owo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZAo+IC1nZW4xMl9lbWl0X2F1eF9w Z3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gdWludDMyX3Qg c3RhdGUpCj4gLXsKPiAtCWlmICghc3RhdGUpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCU9VVF9CQVRD SChNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44KTsKPiAtCU9VVF9CQVRDSChHRU4xMl9HRlhfQVVY X1RBQkxFX0JBU0VfQUREUik7Cj4gLQlPVVRfUkVMT0MoYmF0Y2gtPmJvLCAwLCAwLCBzdGF0ZSk7 Cj4gLQo+IC0JT1VUX0JBVENIKE1JX0xPQURfUkVHSVNURVJfTUVNX0dFTjgpOwo+IC0JT1VUX0JB VENIKEdFTjEyX0dGWF9BVVhfVEFCTEVfQkFTRV9BRERSICsgNCk7Cj4gLQlPVVRfUkVMT0MoYmF0 Y2gtPmJvLCAwLCAwLCBzdGF0ZSArIDQpOwo+IC19Cj4gLQo+ICBzdGF0aWMKPiAgdm9pZCBfZ2Vu OV9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiAgCQkJ ICBkcm1faW50ZWxfY29udGV4dCAqY29udGV4dCwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2