From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 06/20] drm/i915: Allow fuzzy matching in pipe_config_compare. Date: Tue, 7 Jul 2015 12:11:46 +0200 Message-ID: <20150707101146.GE7568@phenom.ffwll.local> References: <1436252911-5703-1-git-send-email-maarten.lankhorst@linux.intel.com> <1436252911-5703-7-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 702646E4E2 for ; Tue, 7 Jul 2015 03:09:01 -0700 (PDT) Received: by wiclp1 with SMTP id lp1so45625080wic.0 for ; Tue, 07 Jul 2015 03:08:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436252911-5703-7-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMDcsIDIwMTUgYXQgMDk6MDg6MTdBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSW5zdGVhZCBvZiBkb2luZyBhZC1ob2MgY2hlY2tzIHdlIGFscmVhZHkgaGF2 ZSBhIHdheSBvZiBjaGVja2luZwo+IGlmIHRoZSBzdGF0ZSBpcyBjb21wYXRpYmxlIG9yIG5vdC4g VXNlIHRoaXMgdG8gZm9yY2UgYSBtb2Rlc2V0Lgo+IAo+IE9ubHkgZHVyaW5nIG1vZGVzZXRzLCBv ciB3aXRoIFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RFCj4gd2Ugc2hvdWxkIGNoZWNr IGlmIGEgZnVsbCBtb2Rlc2V0IGlzIHJlYWxseSBuZWVkZWQuCj4gCj4gRmFzdGJvb3Qgd2lsbCBh bGxvdyB0aGUgYWRqdXN0IHBhcmFtZXRlciB0byBpZ25vcmUgc29tZSBzdHVmZgo+IHRvbywgYW5k IGl0IHdpbGwgZml4IHVwIGRpZmZlcmVuY2VzIGluIHN0YXRlIHRoYXQgYXJlIGlnbm9yZWQKPiBi eSB0aGUgY29tcGFyZSBmdW5jdGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxOTggKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCA1OSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXgg OGNkM2E3ZWIxZTMwLi5lYjdjMmUyODE5YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTEyMjc3LDE5ICsxMjI3Nyw2IEBAIGVuY29kZXJfcmV0cnk6Cj4gIAlE Uk1fREVCVUdfS01TKCJwbGFuZSBicHA6ICVpLCBwaXBlIGJwcDogJWksIGRpdGhlcmluZzogJWlc biIsCj4gIAkJICAgICAgYmFzZV9icHAsIHBpcGVfY29uZmlnLT5waXBlX2JwcCwgcGlwZV9jb25m aWctPmRpdGhlcik7Cj4gIAo+IC0JLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3JjZSBhIG1vZGVz ZXQgKi8KPiAtCWlmIChwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvICE9Cj4gLQkgICAgdG9faW50ZWxf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPmhhc19hdWRpbykgewo+IC0JCXBpcGVfY29uZmlnLT5i YXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gLQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0 ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsKPiAtCX0KPiAtCj4gLQkvKgo+IC0JICogTm90ZSB3ZSBo YXZlIGFuIGlzc3VlIGhlcmUgd2l0aCBpbmZvZnJhbWVzOiBjdXJyZW50IGNvZGUKPiAtCSAqIG9u bHkgdXBkYXRlcyB0aGVtIG9uIHRoZSBmdWxsIG1vZGUgc2V0IHBhdGggcGVyIGh3Cj4gLQkgKiBy ZXF1aXJlbWVudHMuICBTbyBoZXJlIHdlIHNob3VsZCBiZSBjaGVja2luZyBmb3IgYW55Cj4gLQkg KiByZXF1aXJlZCBjaGFuZ2VzIGFuZCBmb3JjaW5nIGEgbW9kZSBzZXQuCj4gLQkgKi8KPiAgZmFp bDoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMTIzOTIsMjcgKzEyMzc5LDEyNCBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9mdXp6eV9jbG9ja19jaGVjayhpbnQgY2xvY2sxLCBpbnQgY2xvY2syKQo+ ICAJCQkgICAgYmFzZS5oZWFkKSBcCj4gIAkJaWYgKG1hc2sgJiAoMSA8PChpbnRlbF9jcnRjKS0+ cGlwZSkpCj4gIAo+ICsKPiArc3RhdGljIGJvb2wKPiAraW50ZWxfY29tcGFyZV9tX24odW5zaWdu ZWQgaW50IG0sIHVuc2lnbmVkIGludCBuLAo+ICsJCSAgdW5zaWduZWQgaW50IG0yLCB1bnNpZ25l ZCBpbnQgbjIpCj4gK3sKPiArCWlmIChtID09IG0yICYmIG4gPT0gbjIpCj4gKwkJcmV0dXJuIHRy dWU7Cj4gKwo+ICsJaWYgKCFtIHx8ICFuIHx8ICFtMiB8fCAhbjIpCj4gKwkJcmV0dXJuIGZhbHNl Owo+ICsKPiArCWlmIChtID4gbTIpIHsKPiArCQl3aGlsZSAobSA+IG0yKSB7CgpJIHRoaW5rIHdl IG5lZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHJlZHVjZSBwcmVjaXNpb24gYnkgZWF0aW5nIGxv dyBiaXRzLAppLmUuCgkJd2hpbGUgKG0gPiBtMiAmJiAhKG0gJiAxKSAmJiAhKG4gJiAxKSkgewoK PiArCQkJbSA+Pj0gMTsKPiArCQkJbiA+Pj0gMTsKPiArCQl9Cj4gKwl9IGVsc2UgaWYgKG0gPCBt Mikgewo+ICsJCXdoaWxlIChtIDwgbTIpIHsKPiArCQkJbTIgPj49IDE7Cj4gKwkJCW4yID4+PSAx Owo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gbSA9PSBtMiAmJiBuID09IG4yOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgYm9vbAo+ICtpbnRlbF9jb21wYXJlX2xpbmtfbV9uKGNvbnN0IHN0cnVjdCBp bnRlbF9saW5rX21fbiAqbV9uLAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19t X24gKm0yX24yKQoKSSB0aGluayB0aGVzZSBuZWVkIHRvIHRha2UgYWRqdXN0IGFzIGFuIGFndXJt ZW50IGFuZCBjaGVjayBmb3IgZXhhY3QgbWF0Y2gKKG5vdCBqdXN0IG1hdGNoaW5nIHJhdGlvKSwg bGlrZSBiZWZvcmUuCgo+ICt7Cj4gKwlpZiAobV9uLT50dSA9PSBtMl9uMi0+dHUgJiYKPiArCSAg ICBpbnRlbF9jb21wYXJlX21fbihtX24tPmdtY2hfbSwgbV9uLT5nbWNoX24sCj4gKwkJCSAgICAg IG0yX24yLT5nbWNoX20sIG0yX24yLT5nbWNoX24pICYmCj4gKwkgICAgaW50ZWxfY29tcGFyZV9t X24obV9uLT5saW5rX20sIG1fbi0+bGlua19uLAo+ICsJCQkgICAgICBtMl9uMi0+bGlua19tLCBt Ml9uMi0+bGlua19uKSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gZmFsc2U7Cj4g K30KPiArCj4gIHN0YXRpYyBib29sCj4gIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVu dF9jb25maWcsCj4gLQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ ICsJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiArCQkJICBib29s IGFkanVzdCkKPiAgewo+ICsJYm9vbCByZXQgPSB0cnVlOwo+ICsKPiArI2RlZmluZSBJTlRFTF9F UlJfT1JfREJHX0tNUyhmbXQsIC4uLikgXAo+ICsJZG8geyBcCj4gKwkJaWYgKCFhZGp1c3QpIFwK PiArCQkJRFJNX0VSUk9SKGZtdCwgIyNfX1ZBX0FSR1NfXyk7IFwKPiArCQllbHNlIFwKPiArCQkJ RFJNX0RFQlVHX0tNUyhmbXQsICMjX19WQV9BUkdTX18pOyBcCj4gKwl9IHdoaWxlICgwKQo+ICsK PiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfWChuYW1lKQlcCj4gIAlpZiAoY3VycmVudF9jb25m aWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUpIHsgXAo+IC0JCURSTV9FUlJPUigibWlzbWF0 Y2ggaW4gIiAjbmFtZSAiICIgXAo+ICsJCUlOVEVMX0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBp biAiICNuYW1lICIgIiBcCj4gIAkJCSAgIihleHBlY3RlZCAweCUwOHgsIGZvdW5kIDB4JTA4eClc biIsIFwKPiAgCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAo+ICAJCQkgIHBpcGVfY29uZmln LT5uYW1lKTsgXAo+IC0JCXJldHVybiBmYWxzZTsgXAo+ICsJCXJldCA9IGZhbHNlOyBcCj4gIAl9 Cj4gIAo+ICAjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19JKG5hbWUpCVwKPiAgCWlmIChjdXJyZW50 X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBcCj4gLQkJRFJNX0VSUk9SKCJt aXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCj4gKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21h dGNoIGluICIgI25hbWUgIiAiIFwKPiAgCQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIs IFwKPiAgCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAo+ICAJCQkgIHBpcGVfY29uZmlnLT5u YW1lKTsgXAo+IC0JCXJldHVybiBmYWxzZTsgXAo+ICsJCXJldCA9IGZhbHNlOyBcCj4gKwl9Cj4g Kwo+ICsjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19NX04obmFtZSkgXAo+ICsJaWYgKCFpbnRlbF9j b21wYXJlX2xpbmtfbV9uKCZjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAo+ICsJCQkJICAgICZwaXBl X2NvbmZpZy0+bmFtZSkpIHsgXAo+ICsJCUlOVEVMX0VSUl9PUl9EQkdfS01TKCJtaXNtYXRjaCBp biAiICNuYW1lICIgIiBcCj4gKwkJCSAgIihleHBlY3RlZCB0dSAlaSBnbWNoICVpLyVpIGxpbmsg JWkvJWksICIgXAo+ICsJCQkgICJmb3VuZCB0dSAlaSwgZ21jaCAlaS8laSBsaW5rICVpLyVpKVxu IiwgXAo+ICsJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lLnR1LCBcCj4gKwkJCSAgY3VycmVudF9j b25maWctPm5hbWUuZ21jaF9tLCBcCj4gKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUuZ21jaF9u LCBcCj4gKwkJCSAgY3VycmVudF9jb25maWctPm5hbWUubGlua19tLCBcCj4gKwkJCSAgY3VycmVu dF9jb25maWctPm5hbWUubGlua19uLCBcCj4gKwkJCSAgcGlwZV9jb25maWctPm5hbWUudHUsIFwK PiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNoX20sIFwKPiArCQkJICBwaXBlX2NvbmZpZy0+ bmFtZS5nbWNoX24sIFwKPiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5saW5rX20sIFwKPiArCQkJ ICBwaXBlX2NvbmZpZy0+bmFtZS5saW5rX24pOyBcCj4gKwkJcmV0ID0gZmFsc2U7IFwKPiArCX0K PiArCj4gKyNkZWZpbmUgUElQRV9DT05GX0NIRUNLX01fTl9BTFQobmFtZSwgYWx0X25hbWUpIFwK PiArCWlmICghaW50ZWxfY29tcGFyZV9saW5rX21fbigmY3VycmVudF9jb25maWctPm5hbWUsIFwK PiArCQkJCSAgICAmcGlwZV9jb25maWctPm5hbWUpICYmIFwKPiArCSAgICAhaW50ZWxfY29tcGFy ZV9saW5rX21fbigmY3VycmVudF9jb25maWctPmFsdF9uYW1lLCBcCj4gKwkJCQkgICAgJnBpcGVf Y29uZmlnLT5uYW1lKSkgeyBcCj4gKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNoIGlu ICIgI25hbWUgIiAiIFwKPiArCQkJICAiKGV4cGVjdGVkIHR1ICVpIGdtY2ggJWkvJWkgbGluayAl aS8laSwgIiBcCj4gKwkJCSAgIm9yIHR1ICVpIGdtY2ggJWkvJWkgbGluayAlaS8laSwgIiBcCj4g KwkJCSAgImZvdW5kIHR1ICVpLCBnbWNoICVpLyVpIGxpbmsgJWkvJWkpXG4iLCBcCj4gKwkJCSAg Y3VycmVudF9jb25maWctPm5hbWUudHUsIFwKPiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5n bWNoX20sIFwKPiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZS5nbWNoX24sIFwKPiArCQkJICBj dXJyZW50X2NvbmZpZy0+bmFtZS5saW5rX20sIFwKPiArCQkJICBjdXJyZW50X2NvbmZpZy0+bmFt ZS5saW5rX24sIFwKPiArCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUudHUsIFwKPiArCQkJ ICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUuZ21jaF9tLCBcCj4gKwkJCSAgY3VycmVudF9jb25m aWctPmFsdF9uYW1lLmdtY2hfbiwgXAo+ICsJCQkgIGN1cnJlbnRfY29uZmlnLT5hbHRfbmFtZS5s aW5rX20sIFwKPiArCQkJICBjdXJyZW50X2NvbmZpZy0+YWx0X25hbWUubGlua19uLCBcCj4gKwkJ CSAgcGlwZV9jb25maWctPm5hbWUudHUsIFwKPiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNo X20sIFwKPiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5nbWNoX24sIFwKPiArCQkJICBwaXBlX2Nv bmZpZy0+bmFtZS5saW5rX20sIFwKPiArCQkJICBwaXBlX2NvbmZpZy0+bmFtZS5saW5rX24pOyBc Cj4gKwkJcmV0ID0gZmFsc2U7IFwKPiAgCX0KPiAgCj4gIC8qIFRoaXMgaXMgcmVxdWlyZWQgZm9y IEJEVysgd2hlcmUgdGhlcmUgaXMgb25seSBvbmUgc2V0IG9mIHJlZ2lzdGVycyBmb3IKPiBAQCAt MTI0MjMsMzAgKzEyNTA3LDMwIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfSV9BTFQobmFtZSwgYWx0 X25hbWUpIFwKPiAgCWlmICgoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5h bWUpICYmIFwKPiAgCQkoY3VycmVudF9jb25maWctPmFsdF9uYW1lICE9IHBpcGVfY29uZmlnLT5u YW1lKSkgeyBcCj4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAo+ICsJ CQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAo+ICAJCQkJ ICAiKGV4cGVjdGVkICVpIG9yICVpLCBmb3VuZCAlaSlcbiIsIFwKPiAgCQkJCSAgY3VycmVudF9j b25maWctPm5hbWUsIFwKPiAgCQkJCSAgY3VycmVudF9jb25maWctPmFsdF9uYW1lLCBcCj4gIAkJ CQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAo+IC0JCQlyZXR1cm4gZmFsc2U7IFwKPiArCQkJcmV0 ID0gZmFsc2U7IFwKPiAgCX0KPiAgCj4gICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX0ZMQUdTKG5h bWUsIG1hc2spCVwKPiAgCWlmICgoY3VycmVudF9jb25maWctPm5hbWUgXiBwaXBlX2NvbmZpZy0+ bmFtZSkgJiAobWFzaykpIHsgXAo+IC0JCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gIiAjbmFtZSAi KCIgI21hc2sgIikgIgkgICBcCj4gKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNoIGlu ICIgI25hbWUgIigiICNtYXNrICIpICIgXAo+ICAJCQkgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVp KVxuIiwgXAo+ICAJCQkgIGN1cnJlbnRfY29uZmlnLT5uYW1lICYgKG1hc2spLCBcCj4gIAkJCSAg cGlwZV9jb25maWctPm5hbWUgJiAobWFzaykpOyBcCj4gLQkJcmV0dXJuIGZhbHNlOyBcCj4gKwkJ cmV0ID0gZmFsc2U7IFwKPiAgCX0KPiAgCj4gICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX0NMT0NL X0ZVWlpZKG5hbWUpIFwKPiAgCWlmICghaW50ZWxfZnV6enlfY2xvY2tfY2hlY2soY3VycmVudF9j b25maWctPm5hbWUsIHBpcGVfY29uZmlnLT5uYW1lKSkgeyBcCj4gLQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiAiICNuYW1lICIgIiBcCj4gKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNo IGluICIgI25hbWUgIiAiIFwKPiAgCQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwK PiAgCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAo+ICAJCQkgIHBpcGVfY29uZmlnLT5uYW1l KTsgXAo+IC0JCXJldHVybiBmYWxzZTsgXAo+ICsJCXJldCA9IGZhbHNlOyBcCj4gIAl9Cj4gIAo+ ICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykJXAo+IEBAIC0xMjQ1NiwzNSArMTI1NDAs MTggQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19wY2hfZW5jb2Rlcik7Cj4gIAlQSVBFX0NPTkZf Q0hFQ0tfSShmZGlfbGFuZXMpOwo+IC0JUElQRV9DT05GX0NIRUNLX0koZmRpX21fbi5nbWNoX20p Owo+IC0JUElQRV9DT05GX0NIRUNLX0koZmRpX21fbi5nbWNoX24pOwo+IC0JUElQRV9DT05GX0NI RUNLX0koZmRpX21fbi5saW5rX20pOwo+IC0JUElQRV9DT05GX0NIRUNLX0koZmRpX21fbi5saW5r X24pOwo+IC0JUElQRV9DT05GX0NIRUNLX0koZmRpX21fbi50dSk7Cj4gKwlQSVBFX0NPTkZfQ0hF Q0tfTV9OKGZkaV9tX24pOwo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19kcF9lbmNvZGVy KTsKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4KSB7Cj4gLQkJUElQRV9DT05G X0NIRUNLX0koZHBfbV9uLmdtY2hfbSk7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0koZHBfbV9uLmdt Y2hfbik7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0koZHBfbV9uLmxpbmtfbSk7Cj4gLQkJUElQRV9D T05GX0NIRUNLX0koZHBfbV9uLmxpbmtfbik7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0koZHBfbV9u LnR1KTsKPiAtCj4gLQkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykgewo+IC0JCQlQSVBF X0NPTkZfQ0hFQ0tfSShkcF9tMl9uMi5nbWNoX20pOwo+IC0JCQlQSVBFX0NPTkZfQ0hFQ0tfSShk cF9tMl9uMi5nbWNoX24pOwo+IC0JCQlQSVBFX0NPTkZfQ0hFQ0tfSShkcF9tMl9uMi5saW5rX20p Owo+IC0JCQlQSVBFX0NPTkZfQ0hFQ0tfSShkcF9tMl9uMi5saW5rX24pOwo+IC0JCQlQSVBFX0NP TkZfQ0hFQ0tfSShkcF9tMl9uMi50dSk7Cj4gLQkJfQo+IC0JfSBlbHNlIHsKPiAtCQlQSVBFX0NP TkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLmdtY2hfbSwgZHBfbTJfbjIuZ21jaF9tKTsKPiAtCQlQSVBF X0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLmdtY2hfbiwgZHBfbTJfbjIuZ21jaF9uKTsKPiAtCQlQ SVBFX0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLmxpbmtfbSwgZHBfbTJfbjIubGlua19tKTsKPiAt CQlQSVBFX0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLmxpbmtfbiwgZHBfbTJfbjIubGlua19uKTsK PiAtCQlQSVBFX0NPTkZfQ0hFQ0tfSV9BTFQoZHBfbV9uLnR1LCBkcF9tMl9uMi50dSk7Cj4gLQl9 Cj4gKwkJUElQRV9DT05GX0NIRUNLX01fTihkcF9tX24pOwo+ICsKPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShoYXNfZHJycyk7Cj4gKwkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykKPiArCQkJ UElQRV9DT05GX0NIRUNLX01fTihkcF9tMl9uMik7Cj4gKwl9IGVsc2UKPiArCQlQSVBFX0NPTkZf Q0hFQ0tfTV9OX0FMVChkcF9tX24sIGRwX20yX24yKTsKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tf SShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tf SShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwpOwo+IEBAIC0xMjU4MCw4ICsxMjY0Nyw5 IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg I3VuZGVmIFBJUEVfQ09ORl9DSEVDS19GTEFHUwo+ICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0NM T0NLX0ZVWlpZCj4gICN1bmRlZiBQSVBFX0NPTkZfUVVJUksKPiArI3VuZGVmIElOVEVMX0VSUl9P Ul9EQkdfS01TCj4gIAo+IC0JcmV0dXJuIHRydWU7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IEBA IC0xMjc3Myw4ICsxMjg0MSwxMSBAQCBjaGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAkJICAgICAidHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBtYXRj aCBhdG9taWMgaHcgc3RhdGUgIgo+ICAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4i LCBjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7Cj4gIAo+IC0JCWlmIChh Y3RpdmUgJiYKPiAtCQkgICAgIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5j b25maWcsICZwaXBlX2NvbmZpZykpIHsKPiArCQlpZiAoIWFjdGl2ZSkKPiArCQkJY29udGludWU7 Cj4gKwo+ICsJCWlmICghaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsIGNydGMtPmNvbmZp ZywKPiArCQkJCQkgICAgICAgJnBpcGVfY29uZmlnLCBmYWxzZSkpIHsKPiAgCQkJSTkxNV9TVEFU RV9XQVJOKDEsICJwaXBlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ghXG4iKTsKPiAgCQkJaW50ZWxfZHVt cF9waXBlX2NvbmZpZyhjcnRjLCAmcGlwZV9jb25maWcsCj4gIAkJCQkJICAgICAgICJbaHcgc3Rh dGVdIik7Cj4gQEAgLTEzMDc1LDE0ICsxMzE0NiwxNiBAQCBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlyZXR1cm4gcmV0Owo+ ICAKPiAgCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkp IHsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCQl0b19p bnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOwo+ICsKPiAgCQlpZiAoIWNydGNfc3RhdGUtPmVu YWJsZSkgewo+ICAJCQlpZiAobmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPiAgCQkJCWFueV9t cyA9IHRydWU7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAgCj4gLQkJaWYgKHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Y19zdGF0ZSktPnF1aXJrcyAmCj4gLQkJICAgIFBJUEVfQ09ORklHX1FVSVJL X0lOSVRJQUxfUExBTkVTKSB7Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5xdWlya3MgJiBQSVBFX0NP TkZJR19RVUlSS19JTklUSUFMX1BMQU5FUykgewo+ICAJCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9h ZmZlY3RlZF9wbGFuZXMoc3RhdGUsIGNydGMpOwo+ICAJCQlpZiAocmV0KQo+ICAJCQkJcmV0dXJu IHJldDsKPiBAQCAtMTMwOTYsMjEgKzEzMTY5LDI4IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9j b25maWcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCX0KPiAgCj4gIAkJaWYg KCFuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKSB7Cj4gKwkJCWlmICghKHBpcGVfY29uZmlnLT5x dWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERSkpCj4gKwkJCQljb250aW51 ZTsKCmRvdWJsZSBuZWdhdGl2ZSBpcyBoYXJkZXIgdG8gcmVhZCAuLi4gd2hhdCBhYm91dDoKCgkJ aWYgKCFuZWVkc19tb2Rlc2V0ICYmICFJTkhFUklURURfTU9ERSkKCQkJY29udGludWU7CgoJCUFu ZCB0aGVuIGp1c3QgdW5jb25kaXRpb25hbGx5IGRvaW5nIHRoZQoJCWFkZF9hZmZlY3RlZF9jb25u ZWN0b3JzPyBJdCdsbCBiZSByZWR1bmRhbnQgYWxtb3N0IGFsd2F5cywKCQlidXQgaXQgYWxzbyB3 b24ndCByZWFsbHkgbWF0dGVyIHNpbmNlIGl0J2xsIGJlIGZhc3QuCgo+ICsKPiAgCQkJcmV0ID0g ZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0Yyk7Cj4gIAkJCWlm IChyZXQpCj4gIAkJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAgCj4gLQkJcmV0ID0gaW50ZWxfbW9k ZXNldF9waXBlX2NvbmZpZyhjcnRjLAo+IC0JCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSkpOwo+ICsJCXJldCA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoY3J0YywgcGlwZV9j b25maWcpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAo+IC0JCWlmIChuZWVk c19tb2Rlc2V0KGNydGNfc3RhdGUpKQo+IC0JCQlhbnlfbXMgPSB0cnVlOwo+ICsJCWlmICghaW50 ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdGF0ZS0+ZGV2LAo+ICsJCQkJCSAgICAgICB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSwKPiArCQkJCQkgICAgICAgcGlwZV9jb25maWcsIHRy dWUpKQo+ICsJCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICsJCWVsc2UgaWYg KCFuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQo+ICsJCQljb250aW51ZTsKCkhtIGZvciBiZWJ1 Z2dpbmcgSSdkIGFsd2F5cyBkdW1wIHRoZSBwaXBlIGNvbmZpZywgZXZlbiBpZiB3ZSBub3RpY2Ug dGhhdApmYXN0Ym9vdCBpcyBwb3NpYmxlLiBQZXJoYXBzIGNoYW5nZXMgdGhlICJbbW9kZXNldF0i IGJlbG93IHRvIGEKCgluZWVkc19tb2RzZXQoKSA/ICJbbW9kZXNldDogZnVsbF0iIDogIlttb2Rl c2V0OiBmYXN0XSIKPiAgCj4gKwkJYW55X21zID0gdHJ1ZTsKPiAgCQlpbnRlbF9kdW1wX3BpcGVf Y29uZmlnKHRvX2ludGVsX2NydGMoY3J0YyksCj4gLQkJCQkgICAgICAgdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjX3N0YXRlKSwKPiArCQkJCSAgICAgICBwaXBlX2NvbmZpZywKPiAgCQkJCSAgICAg ICAiW21vZGVzZXRdIik7Cj4gIAl9Cj4gIAo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=