From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 5/5] drm/i915: remove intel_pipe_set_base() (v3) Date: Tue, 18 Nov 2014 22:35:08 +0200 Message-ID: <20141118203508.GS10649@intel.com> References: <1416276639-30297-1-git-send-email-matthew.d.roper@intel.com> <1416276639-30297-6-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id DD78A6E0D4 for ; Tue, 18 Nov 2014 12:35:12 -0800 (PST) Content-Disposition: inline In-Reply-To: <1416276639-30297-6-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org, Gustavo Padovan List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMTcsIDIwMTQgYXQgMDY6MTA6MzlQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBGcm9tOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28u dWs+Cj4gCj4gQWZ0ZXIgc29tZSByZWZhY3RvciBpbnRlbF9wcmltYXJ5X3BsYW5lX3NldHBsYW5l KCkgZG9lcyB0aGUgc2FtZQo+IGFzIGludGVsX3BpcGVfc2V0X2Jhc2UoKSBzbyB3ZSBjYW4gZ2V0 IHJpZCBvZiBpdCBhbmQgcmVwbGFjZSB0aGUgY2FsbHMKPiB3aXRoIGludGVsX3ByaW1hcnlfcGxh bmVfc2V0cGxhbmUoKS4KPiAKPiB2MjogdGFrZSBWaWxsZSdzIGNvbW1lbnRzOgo+IAktIGdldCB0 aGUgcmlnaHQgYXJndW1lbnRzIGZvciB1cGRhdGVfcGxhbmUoKQo+IAktIHVzZSBkcm1fY3J0Y19n ZXRfaHZfdGltaW5nKCkKPiAKPiB2MyAoYnkgTWF0dCk6Cj4gIC0gUmViYXNlIHRvIGxhdGVzdCBk aS1uaWdodGx5IGNvZGViYXNlCj4gIC0gVXNlIHByaW1hcnktPmZ1bmNzLT51cGRhdGVfcGxhbmUo KSBpbiBfX2ludGVsX3NldF9tb2RlKCkKPiAgLSBVc2UgcHJpbWFyeS0+ZnVuY3MtPmRpc2FibGVf cGxhbmUoKSBpbiBpbnRlbF9jcnRjX2Rpc2FibGUoKQo+IAo+IFNpZ25lZC1vZmYtYnk6IEd1c3Rh dm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KPiBTaWduZWQtb2Zm LWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMjQgKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDk3 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRl eCAxYzE4ODZlLi45NjhlZjBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IEBAIC0yODkwLDcxICsyODkwLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVf c2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCWNydGMtPmNvbmZpZy5waXBlX3NyY19o ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiAgfQo+ICAKPiAtc3RhdGljIGludAo+ IC1pbnRlbF9waXBlX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IHgsIGludCB5 LAo+IC0JCSAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPiAtewo+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBjcnRjLT5wcmlt YXJ5LT5mYjsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxf ZmJfb2JqKG9sZF9mYik7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChpbnRlbF9jcnRjX2hhc19w ZW5kaW5nX2ZsaXAoY3J0YykpIHsKPiAtCQlEUk1fRVJST1IoInBpcGUgaXMgc3RpbGwgYnVzeSB3 aXRoIGFuIG9sZCBwYWdlZmxpcFxuIik7Cj4gLQkJcmV0dXJuIC1FQlVTWTsKPiAtCX0KPiAtCj4g LQkvKiBubyBmYiBib3VuZCAqLwo+IC0JaWYgKCFmYikgewo+IC0JCURSTV9FUlJPUigiTm8gRkIg Ym91bmRcbiIpOwo+IC0JCXJldHVybiAwOwo+IC0JfQo+IC0KPiAtCWlmIChpbnRlbF9jcnRjLT5w bGFuZSA+IElOVEVMX0lORk8oZGV2KS0+bnVtX3BpcGVzKSB7Cj4gLQkJRFJNX0VSUk9SKCJubyBw bGFuZSBmb3IgY3J0YzogcGxhbmUgJWMsIG51bV9waXBlcyAlZFxuIiwKPiAtCQkJICBwbGFuZV9u YW1lKGludGVsX2NydGMtPnBsYW5lKSwKPiAtCQkJICBJTlRFTF9JTkZPKGRldiktPm51bV9waXBl cyk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooY3J0Yy0+ cHJpbWFyeSwgZmIsIE5VTEwpOwo+IC0JaWYgKHJldCA9PSAwKQo+IC0JCWk5MTVfZ2VtX3RyYWNr X2ZiKG9sZF9vYmosIGludGVsX2ZiX29iaihmYiksCj4gLQkJCQkgIElOVEVMX0ZST05UQlVGRkVS X1BSSU1BUlkocGlwZSkpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQlpZiAocmV0ICE9IDApIHsKPiAtCQlEUk1fRVJST1IoInBpbiAmIGZlbmNlIGZhaWxlZFxuIik7 Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVf cHJpbWFyeV9wbGFuZShjcnRjLCBmYiwgeCwgeSk7Cj4gLQo+IC0JaWYgKGludGVsX2NydGMtPmFj dGl2ZSkKPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRldiwgSU5URUxfRlJPTlRCVUZGRVJf UFJJTUFSWShwaXBlKSk7Cj4gLQo+IC0JY3J0Yy0+cHJpbWFyeS0+ZmIgPSBmYjsKPiAtCWNydGMt PnggPSB4Owo+IC0JY3J0Yy0+eSA9IHk7Cj4gLQo+IC0JaWYgKG9sZF9mYikgewo+IC0JCWlmIChp bnRlbF9jcnRjLT5hY3RpdmUgJiYgb2xkX2ZiICE9IGZiKQo+IC0JCQlpbnRlbF93YWl0X2Zvcl92 YmxhbmsoZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiAtCQltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gLQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmopOwo+IC0JCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAtCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKPiAtCWludGVsX3VwZGF0ZV9mYmMoZGV2KTsKPiAtCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0 aWMgdm9pZCBpbnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg ewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtNTI2Nyw4ICs1 MjAyLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvbGRfb2JqID0gaW50ZWxfZmJfb2JqKGNydGMtPnByaW1hcnktPmZiKTsKPiAtCWVudW0gcGlw ZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiAgCj4gIAkvKiBjcnRjIHNob3Vs ZCBzdGlsbCBiZSBlbmFibGVkIHdoZW4gd2UgZGlzYWJsZSBpdC4gKi8KPiAgCVdBUk5fT04oIWNy dGMtPmVuYWJsZWQpOwo+IEBAIC01Mjc3LDE0ICs1MjEwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf Y3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWludGVsX2NydGNfdXBkYXRl X3NhcmVhKGNydGMsIGZhbHNlKTsKPiAgCWRldl9wcml2LT5kaXNwbGF5Lm9mZihjcnRjKTsKPiAg Cj4gLQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIpIHsKPiAtCQltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gLQkJaW50ZWxfdW5waW5fZmJfb2JqKG9sZF9vYmopOwo+IC0JCWk5MTVfZ2Vt X3RyYWNrX2ZiKG9sZF9vYmosIE5VTEwsCj4gLQkJCQkgIElOVEVMX0ZST05UQlVGRkVSX1BSSU1B UlkocGlwZSkpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWNy dGMtPnByaW1hcnktPmZiID0gTlVMTDsKPiAtCX0KPiArCWNydGMtPnByaW1hcnktPmZ1bmNzLT5k aXNhYmxlX3BsYW5lKGNydGMtPnByaW1hcnkpOwo+ICAKPiAgCS8qIFVwZGF0ZSBjb21wdXRlZCBz dGF0ZS4gKi8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2Nv bmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgewo+IEBAIC05NTc4LDYgKzk1MDQsOCBAQCBzdGF0 aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IGNydGMtPnByaW1hcnktPmZiOwo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1 Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKPiArCXN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwcmltYXJ5KTsKPiAgCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3 b3JrOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKPiBAQCAtOTczNyw3ICs5NjY1 LDE1IEBAIGZyZWVfd29yazoKPiAgCWlmIChyZXQgPT0gLUVJTykgewo+ICBvdXRfaGFuZzoKPiAg CQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7CgpUaGlzIHNob3VsZCBh bHJlYWQgZ2V0IGNhbGxlZCBmcm9tIHRoZSAudXBkYXRlX3BsYW5lKCkgaG9vay4KCj4gLQkJcmV0 ID0gaW50ZWxfcGlwZV9zZXRfYmFzZShjcnRjLCBjcnRjLT54LCBjcnRjLT55LCBmYik7Cj4gKwkJ cmV0ID0gcHJpbWFyeS0+ZnVuY3MtPnVwZGF0ZV9wbGFuZShwcmltYXJ5LCBjcnRjLCBmYiwKPiAr CQkJCQkJICAgaW50ZWxfcGxhbmUtPmNydGNfeCwKPiArCQkJCQkJICAgaW50ZWxfcGxhbmUtPmNy dGNfeSwKPiArCQkJCQkJICAgaW50ZWxfcGxhbmUtPmNydGNfaCwKPiArCQkJCQkJICAgaW50ZWxf cGxhbmUtPmNydGNfdywKPiArCQkJCQkJICAgaW50ZWxfcGxhbmUtPnNyY194LAo+ICsJCQkJCQkg ICBpbnRlbF9wbGFuZS0+c3JjX3ksCj4gKwkJCQkJCSAgIGludGVsX3BsYW5lLT5zcmNfaCwKPiAr CQkJCQkJICAgaW50ZWxfcGxhbmUtPnNyY193KTsKPiAgCQlpZiAocmV0ID09IDAgJiYgZXZlbnQp IHsKPiAgCQkJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCQkJZHJtX3NlbmRf dmJsYW5rX2V2ZW50KGRldiwgcGlwZSwgZXZlbnQpOwo+IEBAIC0xMDkxMywyNiArMTA4NDksMTUg QEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CSAqIG9uIHRoZSBEUExMLgo+ICAJICovCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjX21hc2tlZChk ZXYsIG1vZGVzZXRfcGlwZXMsIGludGVsX2NydGMpIHsKPiAtCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpvbGRfZmIgPSBjcnRjLT5wcmltYXJ5LT5mYjsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2xkX29iaiA9IGludGVsX2ZiX29iaihvbGRfZmIpOwo+IC0JCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+IC0KPiAtCQltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJcmV0ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9m Yl9vYmooY3J0Yy0+cHJpbWFyeSwgZmIsIE5VTEwpOwo+IC0JCWlmIChyZXQgIT0gMCkgewo+IC0J CQlEUk1fRVJST1IoInBpbiAmIGZlbmNlIGZhaWxlZFxuIik7Cj4gLQkJCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCQlnb3RvIGRvbmU7Cj4gLQkJfQo+IC0JCWlmIChvbGRf ZmIpCj4gLQkJCWludGVsX3VucGluX2ZiX29iaihvbGRfb2JqKTsKPiAtCQlpOTE1X2dlbV90cmFj a19mYihvbGRfb2JqLCBvYmosCj4gLQkJCQkgIElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50 ZWxfY3J0Yy0+cGlwZSkpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBpbnRlbF9jcnRjLT5iYXNlLnByaW1hcnk7 Cj4gKwkJaW50IHZkaXNwbGF5LCBoZGlzcGxheTsKPiAgCj4gLQkJY3J0Yy0+cHJpbWFyeS0+ZmIg PSBmYjsKPiAtCQljcnRjLT54ID0geDsKPiAtCQljcnRjLT55ID0geTsKPiArCQlkcm1fY3J0Y19n ZXRfaHZfdGltaW5nKG1vZGUsICZoZGlzcGxheSwgJnZkaXNwbGF5KTsKPiArCQlyZXQgPSBwcmlt YXJ5LT5mdW5jcy0+dXBkYXRlX3BsYW5lKHByaW1hcnksICZpbnRlbF9jcnRjLT5iYXNlLAo+ICsJ CQkJCQkgICBmYiwgMCwgMCwKPiArCQkJCQkJICAgaGRpc3BsYXksIHZkaXNwbGF5LAo+ICsJCQkJ CQkgICB4IDw8IDE2LCB5IDw8IDE2LAo+ICsJCQkJCQkgICBoZGlzcGxheSA8PCAxNiwgdmRpc3Bs YXkgPDwgMTYpOwo+ICAJfQo+ICAKPiAgCS8qIE5vdyBlbmFibGUgdGhlIGNsb2NrcywgcGxhbmUs IHBpcGUsIGFuZCBjb25uZWN0b3JzIHRoYXQgd2Ugc2V0IHVwLiAqLwo+IEBAIC0xMTM5OCwxMSAr MTEzMjMsMTYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9t b2RlX3NldCAqc2V0KQo+ICAJCQkJCSAgIGRpc2FibGVfcGlwZXMpOwo+ICAJfSBlbHNlIGlmIChj b25maWctPmZiX2NoYW5nZWQpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoc2V0LT5jcnRjKTsKPiArCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5 ID0gc2V0LT5jcnRjLT5wcmltYXJ5Owo+ICsJCWludCB2ZGlzcGxheSwgaGRpc3BsYXk7Cj4gIAo+ ICAJCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzZXQtPmNydGMpOwoKZGl0dG8K Ck90aGVyd2lzZSB0aGlzIGxvb2tzIG5pY2UuIFNvIGFzc3VtaW5nIGl0IHdvcmtzIGFuZCB3ZSBk aWRuJ3QgbWlzcyBhbnl0aGluZyBpbXBvcnRhbnQsCmFuZCB3ZSBjYW4ganVzdCBzb3J0IG91dCB0 aGUgcmVtYWluaW5nIHN0ZXJlbyBkb3VibGluZyBpc3N1ZSwgSSB0aGluayB0aGlzIHNob3VsZCBm aXgKc29tZSBvZiB0aGUgZGlzYXBwZWFyaW5nIHByaW1hcnkgcGxhbmUgaXNzdWVzIHdlIGhhdmUg Y3VycmVudGx5LgoKSSdtIG5vdCBxdWl0ZSBzdXJlIGlmIHdlJ3JlIG5vdyBjbG9zZSBlbm91Z2gg dG8gdW5pZnkgYWxsIHBsYW5lIGhhbmRsaW5nIGluCmludGVsX2NydGNfe2VuYWJsZSxkaXNhYmxl fV9wbGFuZXMoKS4gVGhlIHRyaWNrIHdpdGggdGhvc2UgaXMgdGhhdCB0aGV5CnNob3VkbG4ndCBh ZmZlY3QgdGhlIHVzZXIgdmlzaWJsZSBzdGF0ZSBvZiB0aGUgcGxhbmUsIHNvIHdlIG5lZWQgdG8K Zmlyc3QgbWFrZSBzdXJlIHRoYXQncyBrZXB0IHNlcGFyYXRlLiBTbyBJJ20gdGhpbmtpbmcgd2Ug d291bGQgd2FudCB0bwp2aXJ0dWFsaXplIHRoZSBjaGVjay9wcmVwYXJlL2NvbW1pdCBob29rcyBh bmQgbWFrZSBzdXJlIGFsbCB0aGUgdXNlciB2aXNpYmxlCnN0YXRlIGlzIHB1bGxlZCBvdXQgZnJv bSB0aGVtIGludG8gdGhlIC51cGRhdGVfcGxhbmUvLmRpc2FibGVfcGxhbmUgaG9va3MuCkRvZXMg dGhhdCBzb3VuZCBsaWtlIHdoYXQgb3RoZXIgcGVvcGxlIGhhZCBpbiBtaW5kPwoKVGhlcmUncyBh bHNvIHRoZSBwcmltYXJ5IHBsYW5lIGhhbmRsaW5nIGluIHRoZSBzcHJpdGUgY29kZSwgYnV0IGNs ZWFuaW5nCnRoYXQgdXAgdGhhdCBtYXkgcmVxdWlyZSBhIGJpdCBtb3JlIHdvcmsgc2luY2UgdGhh dCdzIGFjdHVhbGx5IGFuIGludGVybmFsCnNwZWNpYWwgY2FzZSBvZiBhIG51Y2xlYXIgZmxpcC4K Cj4gIAo+IC0JCXJldCA9IGludGVsX3BpcGVfc2V0X2Jhc2Uoc2V0LT5jcnRjLAo+IC0JCQkJCSAg c2V0LT54LCBzZXQtPnksIHNldC0+ZmIpOwo+ICsJCWRybV9jcnRjX2dldF9odl90aW1pbmcoc2V0 LT5tb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxheSk7Cj4gKwkJcmV0ID0gcHJpbWFyeS0+ZnVuY3Mt PnVwZGF0ZV9wbGFuZShwcmltYXJ5LCBzZXQtPmNydGMsIHNldC0+ZmIsCj4gKwkJCQkJCSAgIDAs IDAsIGhkaXNwbGF5LCB2ZGlzcGxheSwKPiArCQkJCQkJICAgc2V0LT54IDw8IDE2LCBzZXQtPnkg PDwgMTYsCj4gKwkJCQkJCSAgIGhkaXNwbGF5IDw8IDE2LCB2ZGlzcGxheSA8PCAxNik7Cj4gIAo+ ICAJCS8qCj4gIAkJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHByaW1hcnkgcGxhbmUgaXMg cmUtZW5hYmxlZCBpZiBpdAo+IC0tIAo+IDEuOC41LjEKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRl bCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK