From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 06/20] drm/i915: Allow fuzzy matching in pipe_config_compare. Date: Wed, 08 Jul 2015 10:38:33 +0200 Message-ID: <559CE189.4030106@linux.intel.com> References: <1436252911-5703-1-git-send-email-maarten.lankhorst@linux.intel.com> <1436252911-5703-7-git-send-email-maarten.lankhorst@linux.intel.com> <20150707101146.GE7568@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 199A76E5D2 for ; Wed, 8 Jul 2015 01:38:35 -0700 (PDT) In-Reply-To: <20150707101146.GE7568@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDctMDctMTUgb20gMTI6MTEgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIFR1ZSwgSnVs IDA3LCAyMDE1IGF0IDA5OjA4OjE3QU0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ PiBJbnN0ZWFkIG9mIGRvaW5nIGFkLWhvYyBjaGVja3Mgd2UgYWxyZWFkeSBoYXZlIGEgd2F5IG9m IGNoZWNraW5nCj4+IGlmIHRoZSBzdGF0ZSBpcyBjb21wYXRpYmxlIG9yIG5vdC4gVXNlIHRoaXMg dG8gZm9yY2UgYSBtb2Rlc2V0Lgo+Pgo+PiBPbmx5IGR1cmluZyBtb2Rlc2V0cywgb3Igd2l0aCBQ SVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERQo+PiB3ZSBzaG91bGQgY2hlY2sgaWYgYSBm dWxsIG1vZGVzZXQgaXMgcmVhbGx5IG5lZWRlZC4KPj4KPj4gRmFzdGJvb3Qgd2lsbCBhbGxvdyB0 aGUgYWRqdXN0IHBhcmFtZXRlciB0byBpZ25vcmUgc29tZSBzdHVmZgo+PiB0b28sIGFuZCBpdCB3 aWxsIGZpeCB1cCBkaWZmZXJlbmNlcyBpbiBzdGF0ZSB0aGF0IGFyZSBpZ25vcmVkCj4+IGJ5IHRo ZSBjb21wYXJlIGZ1bmN0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE5OCArKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCA1OSBk ZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRl eCA4Y2QzYTdlYjFlMzAuLmViN2MyZTI4MTliNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTIyNzcsMTkgKzEyMjc3LDYgQEAgZW5jb2Rlcl9yZXRyeToK Pj4gIAlEUk1fREVCVUdfS01TKCJwbGFuZSBicHA6ICVpLCBwaXBlIGJwcDogJWksIGRpdGhlcmlu ZzogJWlcbiIsCj4+ICAJCSAgICAgIGJhc2VfYnBwLCBwaXBlX2NvbmZpZy0+cGlwZV9icHAsIHBp cGVfY29uZmlnLT5kaXRoZXIpOwo+PiAgCj4+IC0JLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3Jj ZSBhIG1vZGVzZXQgKi8KPj4gLQlpZiAocGlwZV9jb25maWctPmhhc19hdWRpbyAhPQo+PiAtCSAg ICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+aGFzX2F1ZGlvKSB7Cj4+IC0JCXBp cGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4+IC0JCXJldCA9IGRybV9hdG9t aWNfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdGF0ZSwgY3J0Yyk7Cj4+IC0JfQo+PiAtCj4+IC0JLyoK Pj4gLQkgKiBOb3RlIHdlIGhhdmUgYW4gaXNzdWUgaGVyZSB3aXRoIGluZm9mcmFtZXM6IGN1cnJl bnQgY29kZQo+PiAtCSAqIG9ubHkgdXBkYXRlcyB0aGVtIG9uIHRoZSBmdWxsIG1vZGUgc2V0IHBh dGggcGVyIGh3Cj4+IC0JICogcmVxdWlyZW1lbnRzLiAgU28gaGVyZSB3ZSBzaG91bGQgYmUgY2hl Y2tpbmcgZm9yIGFueQo+PiAtCSAqIHJlcXVpcmVkIGNoYW5nZXMgYW5kIGZvcmNpbmcgYSBtb2Rl IHNldC4KPj4gLQkgKi8KPj4gIGZhaWw6Cj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPj4gQEAgLTEy MzkyLDI3ICsxMjM3OSwxMjQgQEAgc3RhdGljIGJvb2wgaW50ZWxfZnV6enlfY2xvY2tfY2hlY2so aW50IGNsb2NrMSwgaW50IGNsb2NrMikKPj4gIAkJCSAgICBiYXNlLmhlYWQpIFwKPj4gIAkJaWYg KG1hc2sgJiAoMSA8PChpbnRlbF9jcnRjKS0+cGlwZSkpCj4+ICAKPj4gKwo+PiArc3RhdGljIGJv b2wKPj4gK2ludGVsX2NvbXBhcmVfbV9uKHVuc2lnbmVkIGludCBtLCB1bnNpZ25lZCBpbnQgbiwK Pj4gKwkJICB1bnNpZ25lZCBpbnQgbTIsIHVuc2lnbmVkIGludCBuMikKPj4gK3sKPj4gKwlpZiAo bSA9PSBtMiAmJiBuID09IG4yKQo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwo+PiArCWlmICghbSB8 fCAhbiB8fCAhbTIgfHwgIW4yKQo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKwlpZiAobSA+ IG0yKSB7Cj4+ICsJCXdoaWxlIChtID4gbTIpIHsKPiBJIHRoaW5rIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHdlIGRvbid0IHJlZHVjZSBwcmVjaXNpb24gYnkgZWF0aW5nIGxvdyBiaXRzLAo+IGkuZS4K PiAJCXdoaWxlIChtID4gbTIgJiYgIShtICYgMSkgJiYgIShuICYgMSkpIHsKQ291bGQgYmUgdXNl ZnVsLCBsZXRzIGhvcGUgZXZlcnlvbmUgcm91bmRzIGluIHRoZSBzYW1lIHdheS4gOikKPj4gKwkJ CW0gPj49IDE7Cj4+ICsJCQluID4+PSAxOwo+PiArCQl9Cj4+ICsJfSBlbHNlIGlmIChtIDwgbTIp IHsKPj4gKwkJd2hpbGUgKG0gPCBtMikgewo+PiArCQkJbTIgPj49IDE7Cj4+ICsJCQluMiA+Pj0g MTsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCXJldHVybiBtID09IG0yICYmIG4gPT0gbjI7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sCj4+ICtpbnRlbF9jb21wYXJlX2xpbmtfbV9uKGNvbnN0 IHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbV9uLAo+PiArCQkgICAgICAgY29uc3Qgc3RydWN0IGlu dGVsX2xpbmtfbV9uICptMl9uMikKPiBJIHRoaW5rIHRoZXNlIG5lZWQgdG8gdGFrZSBhZGp1c3Qg YXMgYW4gYWd1cm1lbnQgYW5kIGNoZWNrIGZvciBleGFjdCBtYXRjaAo+IChub3QganVzdCBtYXRj aGluZyByYXRpbyksIGxpa2UgYmVmb3JlLgpJIGp1c3QgaW1wbGVtZW50ZWQgaXQsIHRoZW4gcmVt ZW1iZXJlZCB3aHkgSSBkaWRuJ3QuCgpJdCB3aWxsIGNhdXNlIGEgZmFpbHVyZSBpbiBpbnRlbF9t b2Rlc2V0X2NoZWNrX3N0YXRlLgoKPj4gK3sKPj4gKwlpZiAobV9uLT50dSA9PSBtMl9uMi0+dHUg JiYKPj4gKwkgICAgaW50ZWxfY29tcGFyZV9tX24obV9uLT5nbWNoX20sIG1fbi0+Z21jaF9uLAo+ PiArCQkJICAgICAgbTJfbjItPmdtY2hfbSwgbTJfbjItPmdtY2hfbikgJiYKPj4gKwkgICAgaW50 ZWxfY29tcGFyZV9tX24obV9uLT5saW5rX20sIG1fbi0+bGlua19uLAo+PiArCQkJICAgICAgbTJf bjItPmxpbmtfbSwgbTJfbjItPmxpbmtfbikpCj4+ICsJCXJldHVybiB0cnVlOwo+PiArCj4+ICsJ cmV0dXJuIGZhbHNlOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgYm9vbAo+PiAgaW50ZWxfcGlwZV9j b25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCj4+IC0JCQkgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKPj4gKwkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnLAo+PiArCQkJICBib29sIGFkanVzdCkKPj4gIHsKPj4gKwlib29sIHJldCA9IHRy dWU7Cj4+ICsKPj4gKyNkZWZpbmUgSU5URUxfRVJSX09SX0RCR19LTVMoZm10LCAuLi4pIFwKPj4g KwlkbyB7IFwKPj4gKwkJaWYgKCFhZGp1c3QpIFwKPj4gKwkJCURSTV9FUlJPUihmbXQsICMjX19W QV9BUkdTX18pOyBcCj4+ICsJCWVsc2UgXAo+PiArCQkJRFJNX0RFQlVHX0tNUyhmbXQsICMjX19W QV9BUkdTX18pOyBcCj4+ICsJfSB3aGlsZSAoMCkKPj4gKwo+PiAgI2RlZmluZSBQSVBFX0NPTkZf Q0hFQ0tfWChuYW1lKQlcCj4+ICAJaWYgKGN1cnJlbnRfY29uZmlnLT5uYW1lICE9IHBpcGVfY29u ZmlnLT5uYW1lKSB7IFwKPj4gLQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBc Cj4+ICsJCUlOVEVMX0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4+ ICAJCQkgICIoZXhwZWN0ZWQgMHglMDh4LCBmb3VuZCAweCUwOHgpXG4iLCBcCj4+ICAJCQkgIGN1 cnJlbnRfY29uZmlnLT5uYW1lLCBcCj4+ICAJCQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAo+PiAt CQlyZXR1cm4gZmFsc2U7IFwKPj4gKwkJcmV0ID0gZmFsc2U7IFwKPj4gIAl9Cj4+ICAKPj4gICNk ZWZpbmUgUElQRV9DT05GX0NIRUNLX0kobmFtZSkJXAo+PiAgCWlmIChjdXJyZW50X2NvbmZpZy0+ bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBcCj4+IC0JCURSTV9FUlJPUigibWlzbWF0Y2gg aW4gIiAjbmFtZSAiICIgXAo+PiArCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4g IiAjbmFtZSAiICIgXAo+PiAgCQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwKPj4g IAkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwKPj4gIAkJCSAgcGlwZV9jb25maWctPm5hbWUp OyBcCj4+IC0JCXJldHVybiBmYWxzZTsgXAo+PiArCQlyZXQgPSBmYWxzZTsgXAo+PiArCX0KPj4g Kwo+PiArI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfTV9OKG5hbWUpIFwKPj4gKwlpZiAoIWludGVs X2NvbXBhcmVfbGlua19tX24oJmN1cnJlbnRfY29uZmlnLT5uYW1lLCBcCj4+ICsJCQkJICAgICZw aXBlX2NvbmZpZy0+bmFtZSkpIHsgXAo+PiArCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0 Y2ggaW4gIiAjbmFtZSAiICIgXAo+PiArCQkJICAiKGV4cGVjdGVkIHR1ICVpIGdtY2ggJWkvJWkg bGluayAlaS8laSwgIiBcCj4+ICsJCQkgICJmb3VuZCB0dSAlaSwgZ21jaCAlaS8laSBsaW5rICVp LyVpKVxuIiwgXAo+PiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS50dSwgXAo+PiArCQkJICBj dXJyZW50X2NvbmZpZy0+bmFtZS5nbWNoX20sIFwKPj4gKwkJCSAgY3VycmVudF9jb25maWctPm5h bWUuZ21jaF9uLCBcCj4+ICsJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmxpbmtfbSwgXAo+PiAr CQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5saW5rX24sIFwKPj4gKwkJCSAgcGlwZV9jb25maWct Pm5hbWUudHUsIFwKPj4gKwkJCSAgcGlwZV9jb25maWctPm5hbWUuZ21jaF9tLCBcCj4+ICsJCQkg IHBpcGVfY29uZmlnLT5uYW1lLmdtY2hfbiwgXAo+PiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5s aW5rX20sIFwKPj4gKwkJCSAgcGlwZV9jb25maWctPm5hbWUubGlua19uKTsgXAo+PiArCQlyZXQg PSBmYWxzZTsgXAo+PiArCX0KPj4gKwo+PiArI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfTV9OX0FM VChuYW1lLCBhbHRfbmFtZSkgXAo+PiArCWlmICghaW50ZWxfY29tcGFyZV9saW5rX21fbigmY3Vy cmVudF9jb25maWctPm5hbWUsIFwKPj4gKwkJCQkgICAgJnBpcGVfY29uZmlnLT5uYW1lKSAmJiBc Cj4+ICsJICAgICFpbnRlbF9jb21wYXJlX2xpbmtfbV9uKCZjdXJyZW50X2NvbmZpZy0+YWx0X25h bWUsIFwKPj4gKwkJCQkgICAgJnBpcGVfY29uZmlnLT5uYW1lKSkgeyBcCj4+ICsJCUlOVEVMX0VS Ul9PUl9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4+ICsJCQkgICIoZXhwZWN0 ZWQgdHUgJWkgZ21jaCAlaS8laSBsaW5rICVpLyVpLCAiIFwKPj4gKwkJCSAgIm9yIHR1ICVpIGdt Y2ggJWkvJWkgbGluayAlaS8laSwgIiBcCj4+ICsJCQkgICJmb3VuZCB0dSAlaSwgZ21jaCAlaS8l aSBsaW5rICVpLyVpKVxuIiwgXAo+PiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS50dSwgXAo+ PiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5nbWNoX20sIFwKPj4gKwkJCSAgY3VycmVudF9j b25maWctPm5hbWUuZ21jaF9uLCBcCj4+ICsJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLmxpbmtf bSwgXAo+PiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5saW5rX24sIFwKPj4gKwkJCSAgY3Vy cmVudF9jb25maWctPmFsdF9uYW1lLnR1LCBcCj4+ICsJCQkgIGN1cnJlbnRfY29uZmlnLT5hbHRf bmFtZS5nbWNoX20sIFwKPj4gKwkJCSAgY3VycmVudF9jb25maWctPmFsdF9uYW1lLmdtY2hfbiwg XAo+PiArCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUubGlua19tLCBcCj4+ICsJCQkgIGN1 cnJlbnRfY29uZmlnLT5hbHRfbmFtZS5saW5rX24sIFwKPj4gKwkJCSAgcGlwZV9jb25maWctPm5h bWUudHUsIFwKPj4gKwkJCSAgcGlwZV9jb25maWctPm5hbWUuZ21jaF9tLCBcCj4+ICsJCQkgIHBp cGVfY29uZmlnLT5uYW1lLmdtY2hfbiwgXAo+PiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5saW5r X20sIFwKPj4gKwkJCSAgcGlwZV9jb25maWctPm5hbWUubGlua19uKTsgXAo+PiArCQlyZXQgPSBm YWxzZTsgXAo+PiAgCX0KPj4gIAo+PiAgLyogVGhpcyBpcyByZXF1aXJlZCBmb3IgQkRXKyB3aGVy ZSB0aGVyZSBpcyBvbmx5IG9uZSBzZXQgb2YgcmVnaXN0ZXJzIGZvcgo+PiBAQCAtMTI0MjMsMzAg KzEyNTA3LDMwIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX0lfQUxUKG5hbWUsIGFsdF9uYW1lKSBc Cj4+ICAJaWYgKChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgJiYg XAo+PiAgCQkoY3VycmVudF9jb25maWctPmFsdF9uYW1lICE9IHBpcGVfY29uZmlnLT5uYW1lKSkg eyBcCj4+IC0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluICIgI25hbWUgIiAiIFwKPj4gKwkJCUlO VEVMX0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4+ICAJCQkJICAi KGV4cGVjdGVkICVpIG9yICVpLCBmb3VuZCAlaSlcbiIsIFwKPj4gIAkJCQkgIGN1cnJlbnRfY29u ZmlnLT5uYW1lLCBcCj4+ICAJCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUsIFwKPj4gIAkJ CQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAo+PiAtCQkJcmV0dXJuIGZhbHNlOyBcCj4+ICsJCQly ZXQgPSBmYWxzZTsgXAo+PiAgCX0KPj4gIAo+PiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfRkxB R1MobmFtZSwgbWFzaykJXAo+PiAgCWlmICgoY3VycmVudF9jb25maWctPm5hbWUgXiBwaXBlX2Nv bmZpZy0+bmFtZSkgJiAobWFzaykpIHsgXAo+PiAtCQlEUk1fRVJST1IoIm1pc21hdGNoIGluICIg I25hbWUgIigiICNtYXNrICIpICIJICAgXAo+PiArCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlz bWF0Y2ggaW4gIiAjbmFtZSAiKCIgI21hc2sgIikgIiBcCj4+ICAJCQkgICIoZXhwZWN0ZWQgJWks IGZvdW5kICVpKVxuIiwgXAo+PiAgCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSAmIChtYXNrKSwg XAo+PiAgCQkJICBwaXBlX2NvbmZpZy0+bmFtZSAmIChtYXNrKSk7IFwKPj4gLQkJcmV0dXJuIGZh bHNlOyBcCj4+ICsJCXJldCA9IGZhbHNlOyBcCj4+ICAJfQo+PiAgCj4+ICAjZGVmaW5lIFBJUEVf Q09ORl9DSEVDS19DTE9DS19GVVpaWShuYW1lKSBcCj4+ICAJaWYgKCFpbnRlbF9mdXp6eV9jbG9j a19jaGVjayhjdXJyZW50X2NvbmZpZy0+bmFtZSwgcGlwZV9jb25maWctPm5hbWUpKSB7IFwKPj4g LQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4+ICsJCUlOVEVMX0VSUl9P Ul9EQkdfS01TKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4+ICAJCQkgICIoZXhwZWN0ZWQg JWksIGZvdW5kICVpKVxuIiwgXAo+PiAgCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAo+PiAg CQkJICBwaXBlX2NvbmZpZy0+bmFtZSk7IFwKPj4gLQkJcmV0dXJuIGZhbHNlOyBcCj4+ICsJCXJl dCA9IGZhbHNlOyBcCj4+ICAJfQo+PiAgCj4+ICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWly aykJXAo+PiBAQCAtMTI0NTYsMzUgKzEyNTQwLDE4IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBh cmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAo+PiAgCVBJUEVfQ09ORl9DSEVDS19JKGhh c19wY2hfZW5jb2Rlcik7Cj4+ICAJUElQRV9DT05GX0NIRUNLX0koZmRpX2xhbmVzKTsKPj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfSShmZGlfbV9uLmdtY2hfbSk7Cj4+IC0JUElQRV9DT05GX0NIRUNLX0ko ZmRpX21fbi5nbWNoX24pOwo+PiAtCVBJUEVfQ09ORl9DSEVDS19JKGZkaV9tX24ubGlua19tKTsK Pj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShmZGlfbV9uLmxpbmtfbik7Cj4+IC0JUElQRV9DT05GX0NI RUNLX0koZmRpX21fbi50dSk7Cj4+ICsJUElQRV9DT05GX0NIRUNLX01fTihmZGlfbV9uKTsKPj4g IAo+PiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19kcF9lbmNvZGVyKTsKPj4gIAo+PiAgCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDgpIHsKPj4gLQkJUElQRV9DT05GX0NIRUNLX0koZHBfbV9u LmdtY2hfbSk7Cj4+IC0JCVBJUEVfQ09ORl9DSEVDS19JKGRwX21fbi5nbWNoX24pOwo+PiAtCQlQ SVBFX0NPTkZfQ0hFQ0tfSShkcF9tX24ubGlua19tKTsKPj4gLQkJUElQRV9DT05GX0NIRUNLX0ko ZHBfbV9uLmxpbmtfbik7Cj4+IC0JCVBJUEVfQ09ORl9DSEVDS19JKGRwX21fbi50dSk7Cj4+IC0K Pj4gLQkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykgewo+PiAtCQkJUElQRV9DT05GX0NI RUNLX0koZHBfbTJfbjIuZ21jaF9tKTsKPj4gLQkJCVBJUEVfQ09ORl9DSEVDS19JKGRwX20yX24y LmdtY2hfbik7Cj4+IC0JCQlQSVBFX0NPTkZfQ0hFQ0tfSShkcF9tMl9uMi5saW5rX20pOwo+PiAt CQkJUElQRV9DT05GX0NIRUNLX0koZHBfbTJfbjIubGlua19uKTsKPj4gLQkJCVBJUEVfQ09ORl9D SEVDS19JKGRwX20yX24yLnR1KTsKPj4gLQkJfQo+PiAtCX0gZWxzZSB7Cj4+IC0JCVBJUEVfQ09O Rl9DSEVDS19JX0FMVChkcF9tX24uZ21jaF9tLCBkcF9tMl9uMi5nbWNoX20pOwo+PiAtCQlQSVBF X0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLmdtY2hfbiwgZHBfbTJfbjIuZ21jaF9uKTsKPj4gLQkJ UElQRV9DT05GX0NIRUNLX0lfQUxUKGRwX21fbi5saW5rX20sIGRwX20yX24yLmxpbmtfbSk7Cj4+ IC0JCVBJUEVfQ09ORl9DSEVDS19JX0FMVChkcF9tX24ubGlua19uLCBkcF9tMl9uMi5saW5rX24p Owo+PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLnR1LCBkcF9tMl9uMi50dSk7Cj4+ IC0JfQo+PiArCQlQSVBFX0NPTkZfQ0hFQ0tfTV9OKGRwX21fbik7Cj4+ICsKPj4gKwkJUElQRV9D T05GX0NIRUNLX0koaGFzX2RycnMpOwo+PiArCQlpZiAoY3VycmVudF9jb25maWctPmhhc19kcnJz KQo+PiArCQkJUElQRV9DT05GX0NIRUNLX01fTihkcF9tMl9uMik7Cj4+ICsJfSBlbHNlCj4+ICsJ CVBJUEVfQ09ORl9DSEVDS19NX05fQUxUKGRwX21fbiwgZHBfbTJfbjIpOwo+PiAgCj4+ICAJUElQ RV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXkpOwo+PiAgCVBJ UEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCk7Cj4+IEBAIC0x MjU4MCw4ICsxMjY0Nyw5IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPj4gICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MKPj4gICN1bmRlZiBQ SVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVaWlkKPj4gICN1bmRlZiBQSVBFX0NPTkZfUVVJUksKPj4g KyN1bmRlZiBJTlRFTF9FUlJfT1JfREJHX0tNUwo+PiAgCj4+IC0JcmV0dXJuIHRydWU7Cj4+ICsJ cmV0dXJuIHJldDsKPj4gIH0KPj4gIAo+PiAgc3RhdGljIHZvaWQgY2hlY2tfd21fc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPj4gQEAgLTEyNzczLDggKzEyODQxLDExIEBAIGNoZWNrX2Ny dGNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJICAgICAidHJhbnNpdGlvbmFs IGFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBhdG9taWMgaHcgc3RhdGUgIgo+PiAgCQkgICAg ICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlLCBj cnRjLT5hY3RpdmUpOwo+PiAgCj4+IC0JCWlmIChhY3RpdmUgJiYKPj4gLQkJICAgICFpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGRldiwgY3J0Yy0+Y29uZmlnLCAmcGlwZV9jb25maWcpKSB7Cj4+ ICsJCWlmICghYWN0aXZlKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJaWYgKCFpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGRldiwgY3J0Yy0+Y29uZmlnLAo+PiArCQkJCQkgICAgICAgJnBp cGVfY29uZmlnLCBmYWxzZSkpIHsKPj4gIAkJCUk5MTVfU1RBVEVfV0FSTigxLCAicGlwZSBzdGF0 ZSBkb2Vzbid0IG1hdGNoIVxuIik7Cj4+ICAJCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNydGMs ICZwaXBlX2NvbmZpZywKPj4gIAkJCQkJICAgICAgICJbaHcgc3RhdGVdIik7Cj4+IEBAIC0xMzA3 NSwxNCArMTMxNDYsMTYgQEAgaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ICAJCXJldHVybiByZXQ7Cj4+ICAKPj4gIAlmb3JfZWFj aF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4+ICsJCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4+ICsJCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGNfc3RhdGUpOwo+PiArCj4+ICAJCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7Cj4+ ICAJCQlpZiAobmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPj4gIAkJCQlhbnlfbXMgPSB0cnVl Owo+PiAgCQkJY29udGludWU7Cj4+ICAJCX0KPj4gIAo+PiAtCQlpZiAodG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjX3N0YXRlKS0+cXVpcmtzICYKPj4gLQkJICAgIFBJUEVfQ09ORklHX1FVSVJLX0lO SVRJQUxfUExBTkVTKSB7Cj4+ICsJCWlmIChwaXBlX2NvbmZpZy0+cXVpcmtzICYgUElQRV9DT05G SUdfUVVJUktfSU5JVElBTF9QTEFORVMpIHsKPj4gIAkJCXJldCA9IGRybV9hdG9taWNfYWRkX2Fm ZmVjdGVkX3BsYW5lcyhzdGF0ZSwgY3J0Yyk7Cj4+ICAJCQlpZiAocmV0KQo+PiAgCQkJCXJldHVy biByZXQ7Cj4+IEBAIC0xMzA5NiwyMSArMTMxNjksMjggQEAgaW50ZWxfbW9kZXNldF9jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ICAJCX0KPj4gIAo+PiAg CQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpIHsKPj4gKwkJCWlmICghKHBpcGVfY29u ZmlnLT5xdWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERSkpCj4+ICsJCQkJ Y29udGludWU7Cj4gZG91YmxlIG5lZ2F0aXZlIGlzIGhhcmRlciB0byByZWFkIC4uLiB3aGF0IGFi b3V0Ogo+Cj4gCQlpZiAoIW5lZWRzX21vZGVzZXQgJiYgIUlOSEVSSVRFRF9NT0RFKQo+IAkJCWNv bnRpbnVlOwo+Cj4gCQlBbmQgdGhlbiBqdXN0IHVuY29uZGl0aW9uYWxseSBkb2luZyB0aGUKPiAJ CWFkZF9hZmZlY3RlZF9jb25uZWN0b3JzPyBJdCdsbCBiZSByZWR1bmRhbnQgYWxtb3N0IGFsd2F5 cywKPiAJCWJ1dCBpdCBhbHNvIHdvbid0IHJlYWxseSBtYXR0ZXIgc2luY2UgaXQnbGwgYmUgZmFz dC4KT2suCgo+PiArCj4+ICAJCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0 b3JzKHN0YXRlLCBjcnRjKTsKPj4gIAkJCWlmIChyZXQpCj4+ICAJCQkJcmV0dXJuIHJldDsKPj4g IAkJfQo+PiAgCj4+IC0JCXJldCA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoY3J0YywKPj4g LQkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSk7Cj4+ICsJCXJldCA9IGludGVs X21vZGVzZXRfcGlwZV9jb25maWcoY3J0YywgcGlwZV9jb25maWcpOwo+PiAgCQlpZiAocmV0KQo+ PiAgCQkJcmV0dXJuIHJldDsKPj4gIAo+PiAtCQlpZiAobmVlZHNfbW9kZXNldChjcnRjX3N0YXRl KSkKPj4gLQkJCWFueV9tcyA9IHRydWU7Cj4+ICsJCWlmICghaW50ZWxfcGlwZV9jb25maWdfY29t cGFyZShzdGF0ZS0+ZGV2LAo+PiArCQkJCQkgICAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSksCj4+ICsJCQkJCSAgICAgICBwaXBlX2NvbmZpZywgdHJ1ZSkpCj4+ICsJCQljcnRj X3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+PiArCQllbHNlIGlmICghbmVlZHNfbW9kZXNl dChjcnRjX3N0YXRlKSkKPj4gKwkJCWNvbnRpbnVlOwo+IEhtIGZvciBiZWJ1Z2dpbmcgSSdkIGFs d2F5cyBkdW1wIHRoZSBwaXBlIGNvbmZpZywgZXZlbiBpZiB3ZSBub3RpY2UgdGhhdAo+IGZhc3Ri b290IGlzIHBvc2libGUuIFBlcmhhcHMgY2hhbmdlcyB0aGUgIlttb2Rlc2V0XSIgYmVsb3cgdG8g YQo+Cj4gCW5lZWRzX21vZHNldCgpID8gIlttb2Rlc2V0OiBmdWxsXSIgOiAiW21vZGVzZXQ6IGZh c3RdIgpPay4KCn5NYWFydGVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==