From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 19/19] drm/i915: Modeset global_pipes() update Date: Thu, 2 Apr 2015 13:16:23 +0300 Message-ID: <20150402101623.GZ17410@intel.com> References: <1427800463-5388-1-git-send-email-mika.kahola@intel.com> <1427969131-3204-1-git-send-email-mika.kahola@intel.com> 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 1FD876E140 for ; Thu, 2 Apr 2015 03:16:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1427969131-3204-1-git-send-email-mika.kahola@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kahola Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMDIsIDIwMTUgYXQgMDE6MDU6MzFQTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gQ29tYmluZWQgVmFsbGV5dmlldywgSGFzd2VsbCBhbmQgQnJvYWR3ZWxsICcqX21vZGVz ZXRfZ2xvYmFsX3BpcGVzKCknCj4gaW50byBvbmUgZnVuY3Rpb24gJ2ludGVsX21vZGVzZXRfZ2xv YmFsX3BpcGVzKCknCj4gCj4gdjI6Cj4gLSB3ZSBkb24ndCBtb2RpZnkgJ2Rpc2FibGVfcGlwZXMn LCBzbyBwYXNzaW5nIHRoaXMgYXMgYSBwb2ludGVyCj4gICBpcyByZW1vdmVkIChiYXNlZCBvbiBW aWxsZSdzIGNvbW1lbnQpCj4gLSBpbnRyb2R1Y2VkIGEgbmV3IGZ1bmN0aW9uICdpbnRlbF9jYWxj X2NkY2xrKCknIHRoYXQgY29tYmluZXMKPiAgIHJvdXRpbmVzIGZyb20gJ3ZhbGxleXZpZXdfY2Fs Y19jZGNsaygpJyBhbmQgJ2hhc3dlbGxfY2FsY19jZGNsaygpJwo+IAo+IFNpZ25lZC1vZmYtYnk6 IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE5MSArKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA3Yjk3 OTA3Li4xOGExMjYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBA IC01MTc5LDY2ICs1MTc5LDYyIEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc2V0X2NkY2xrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjZGNsaykKPiAgCWludGVsX3VwZGF0ZV9jZGNsayhk ZXYpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHZhbGxleXZpZXdfY2FsY19jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3N0YXRpYyBpbnQgaW50ZWxfY2FsY19jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgaW50IG1heF9waXhj bGspCj4gIHsKPiAtCWludCBmcmVxXzMyMCA9IChkZXZfcHJpdi0+aHBsbF9mcmVxIDw8ICAxKSAl IDMyMDAwMCAhPSAwID8gMzMzMzMzIDogMzIwMDAwOwo+IC0JaW50IGxpbWl0ID0gSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikgPyA5NSA6IDkwOwo+ICsJaW50IGNkY2xrID0gMjAwMDAwOwo+ICAKPiAt CS8qCj4gLQkgKiBSZWFsbHkgb25seSBhIGZldyBjYXNlcyB0byBkZWFsIHdpdGgsIGFzIG9ubHkg NCBDRGNsa3MgYXJlIHN1cHBvcnRlZDoKPiAtCSAqICAgMjAwTUh6Cj4gLQkgKiAgIDI2N01Iego+ IC0JICogICAzMjAvMzMzTUh6IChkZXBlbmRzIG9uIEhQTEwgZnJlcSkKPiAtCSAqICAgNDAwTUh6 IChWTFYgb25seSkKPiAtCSAqIFNvIHdlIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHdlJ3JlIGFib3Zl IDkwJSAoVkxWKSBvciA5NSUgKENIVikKPiAtCSAqIG9mIHRoZSBsb3dlciBiaW4gYW5kIGFkanVz dCBpZiBuZWVkZWQuCj4gLQkgKgo+IC0JICogV2Ugc2VlbSB0byBnZXQgYW4gdW5zdGFibGUgb3Ig c29saWQgY29sb3IgcGljdHVyZSBhdCAyMDBNSHouCj4gLQkgKiBOb3Qgc3VyZSB3aGF0J3Mgd3Jv bmcuIEZvciBub3cgdXNlIDIwME1IeiBvbmx5IHdoZW4gYWxsIHBpcGVzCj4gLQkgKiBhcmUgb2Zm Lgo+IC0JICovCj4gLQlpZiAoIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gLQkgICAgbWF4 X3BpeGNsayA+IGZyZXFfMzIwKmxpbWl0LzEwMCkKPiAtCQlyZXR1cm4gNDAwMDAwOwo+IC0JZWxz ZSBpZiAobWF4X3BpeGNsayA+IDI2NjY2NypsaW1pdC8xMDApCj4gLQkJcmV0dXJuIGZyZXFfMzIw Owo+IC0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDApCj4gLQkJcmV0dXJuIDI2NjY2NzsKPiAtCWVs c2UKPiAtCQlyZXR1cm4gMjAwMDAwOwo+IC19CgpJJ2QgbGVhdmUgdGhlIHZhbGxleXZpZXdfY2Fs Y19jZGNsaygpIGFuZCBoYXN3ZWxsX2NhbGNfY2RjbGsoKSBhbG9uZS4KU3R1ZmZpbmcgdGhlbSBp bnRvIGEgc2luZ2xlIGZ1bmN0aW9uIG1ha2VzIHRoZSBwYXRjaCBxdWl0ZSB1Z2x5LiBBbHNvCkkg c3VwcG9zZSB3ZSBtaWdodCB3YW50IHRvIHR1cm4gaXQgaW50byBhIHZmdW5jIGluIHRoZSBmdXR1 cmUgYW5kCmhhdmluZyBzZXBhcmF0ZSBmdW5jcyBmb3IgZGlmZmVyZW50IHBsYXRmb3JtcyB3b3Vs ZCBtYWtlIHRoYXQgZWFzaWVyLgoKPiAtCj4gLS8qIGNvbXB1dGUgdGhlIG1heCBwaXhlbCBjbG9j ayBmb3IgbmV3IGNvbmZpZ3VyYXRpb24gKi8KPiAtc3RhdGljIGludCBpbnRlbF9tb2RlX21heF9w aXhjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjOwo+IC0JaW50IG1heF9waXhjbGsgPSAwOwo+ICsJaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpKSB7Cj4gKwkJaW50IGZyZXFfMzIwID0gKGRldl9wcml2LT5ocGxsX2ZyZXEgPDwg IDEpICUgMzIwMDAwICE9IDAgPyAzMzMzMzMgOiAzMjAwMDA7Cj4gKwkJaW50IGxpbWl0ID0gSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikgPyA5NSA6IDkwOwo+ICsJCS8qCj4gKwkJICogUmVhbGx5IG9u bHkgYSBmZXcgY2FzZXMgdG8gZGVhbCB3aXRoLCBhcyBvbmx5IDQgQ0RjbGtzIGFyZSBzdXBwb3J0 ZWQ6Cj4gKwkJICogICAyMDBNSHoKPiArCQkgKiAgIDI2N01Iego+ICsJCSAqICAgMzIwLzMzM01I eiAoZGVwZW5kcyBvbiBIUExMIGZyZXEpCj4gKwkJICogICA0MDBNSHogKFZMViBvbmx5KQo+ICsJ CSAqIFNvIHdlIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHdlJ3JlIGFib3ZlIDkwJSAoVkxWKSBvciA5 NSUgKENIVikKPiArCQkgKiBvZiB0aGUgbG93ZXIgYmluIGFuZCBhZGp1c3QgaWYgbmVlZGVkLgo+ ICsJCSAqCj4gKwkJICogV2Ugc2VlbSB0byBnZXQgYW4gdW5zdGFibGUgb3Igc29saWQgY29sb3Ig cGljdHVyZSBhdCAyMDBNSHouCj4gKwkJICogTm90IHN1cmUgd2hhdCdzIHdyb25nLiBGb3Igbm93 IHVzZSAyMDBNSHogb25seSB3aGVuIGFsbCBwaXBlcwo+ICsJCSAqIGFyZSBvZmYuCj4gKwkJICov Cj4gKwkJaWYgKCFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+ICsJCSAgICBtYXhfcGl4Y2xr ID4gZnJlcV8zMjAqbGltaXQvMTAwKQo+ICsJCQljZGNsayA9IDQwMDAwMDsKPiArCQllbHNlIGlm IChtYXhfcGl4Y2xrID4gMjY2NjY3KmxpbWl0LzEwMCkKPiArCQkJY2RjbGsgPSBmcmVxXzMyMDsK PiArCQllbHNlIGlmIChtYXhfcGl4Y2xrID4gMCkKPiArCQkJY2RjbGsgPSAyNjY2Njc7Cj4gKwkJ ZWxzZQo+ICsJCQljZGNsayA9IDIwMDAwMDsKPiArCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikpIHsKPiArCQkvKgo+ICsJCSAqIEZJWE1FIHNob3VsZCBhbHNvIGFjY291bnQgZm9yIHBs YW5lIHJhdGlvCj4gKwkJICogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQu Cj4gKwkJICovCj4gKwkJaWYgKG1heF9waXhjbGsgPiA1NDAwMDApCj4gKwkJCWNkY2xrID0gNjc1 MDAwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiA0NTAwMDApCj4gKwkJCWNkY2xrID0gNTQw MDAwOwo+ICsJCWVsc2UgaWYgKG1heF9waXhjbGsgPiAzMzc1MDAgfHwgIUlTX0hTV19VTFgoZGV2 X3ByaXYpKQo+ICsJCQljZGNsayA9IDQ1MDAwMDsKPiArCQllbHNlCj4gKwkJCWNkY2xrID0gMzM3 NTAwOwo+ICAKPiAtCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gLQkJ aWYgKGludGVsX2NydGMtPm5ld19lbmFibGVkKQo+IC0JCQltYXhfcGl4Y2xrID0gbWF4KG1heF9w aXhjbGssCj4gLQkJCQkJIGludGVsX2NydGMtPm5ld19jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5jcnRjX2Nsb2NrKTsKPiArCQkvKgo+ICsJCSAqIEZJWE1FIG1vdmUgdGhlIGNkY2xrIGNhY2x1 bGF0aW9uIHRvCj4gKwkJICogY29tcHV0ZV9jb25maWcoKSBzbyB3ZSBjYW4gZmFpbCBncmFjZWd1 bGx5Lgo+ICsJCSAqLwo+ICsJCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkg ewo+ICsJCQlEUk1fRVJST1IoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAo JWQga0h6KVxuIiwKPiArCQkJCSAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7Cj4g KwkJCWNkY2xrID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxOwo+ICsJCX0KPiAgCX0KPiAgCj4g LQlyZXR1cm4gbWF4X3BpeGNsazsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgdmFsbGV5dmlld19t b2Rlc2V0X2dsb2JhbF9waXBlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkJCSAgICB1 bnNpZ25lZCAqcHJlcGFyZV9waXBlcykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+IC0JaW50IG1heF9waXhjbGsgPSBpbnRlbF9tb2RlX21heF9waXhjbGsoZGV2X3By aXYpOwo+IC0KPiAtCWlmICh2YWxsZXl2aWV3X2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhj bGspID09IGRldl9wcml2LT5jZGNsa19mcmVxKQo+IC0JCXJldHVybjsKPiAtCj4gLQkvKiBkaXNh YmxlL2VuYWJsZSBhbGwgY3VycmVudGx5IGFjdGl2ZSBwaXBlcyB3aGlsZSB3ZSBjaGFuZ2UgY2Rj bGsgKi8KPiAtCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKQo+IC0JCWlmIChp bnRlbF9jcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUpCj4gLQkJCSpwcmVwYXJlX3BpcGVzIHw9ICgx IDw8IGludGVsX2NydGMtPnBpcGUpOwo+ICsJcmV0dXJuIGNkY2xrOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgdm9pZCB2bHZfcHJvZ3JhbV9wZmlfY3JlZGl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gQEAgLTUyNzcsMTIgKzUyNzMsMjggQEAgc3RhdGljIHZvaWQgdmx2X3Byb2dy YW1fcGZpX2NyZWRpdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJV0FS Tl9PTihJOTE1X1JFQUQoR0NJX0NPTlRST0wpICYgUEZJX0NSRURJVF9SRVNFTkQpOwo+ICB9Cj4g IAo+ICsvKiBjb21wdXRlIHRoZSBtYXggcGl4ZWwgY2xvY2sgZm9yIG5ldyBjb25maWd1cmF0aW9u ICovCj4gK3N0YXRpYyBpbnQgaW50ZWxfbW9kZV9tYXhfcGl4Y2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9w cml2LT5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiArCWludCBtYXhf cGl4Y2xrID0gMDsKPiArCj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykg ewo+ICsJCWlmIChpbnRlbF9jcnRjLT5uZXdfZW5hYmxlZCkKPiArCQkJbWF4X3BpeGNsayA9IG1h eChtYXhfcGl4Y2xrLAo+ICsJCQkJCSBpbnRlbF9jcnRjLT5uZXdfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIG1heF9waXhjbGs7Cj4g K30KPiArCj4gIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfbW9kZXNldF9nbG9iYWxfcmVzb3VyY2Vz KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJaW50IG1heF9waXhjbGsgPSBpbnRlbF9tb2RlX21h eF9waXhjbGsoZGV2X3ByaXYpOwo+IC0JaW50IHJlcV9jZGNsayA9IHZhbGxleXZpZXdfY2FsY19j ZGNsayhkZXZfcHJpdiwgbWF4X3BpeGNsayk7Cj4gKwlpbnQgcmVxX2NkY2xrID0gaW50ZWxfY2Fs Y19jZGNsayhkZXZfcHJpdiwgbWF4X3BpeGNsayk7Cj4gIAo+ICAJaWYgKHJlcV9jZGNsayAhPSBk ZXZfcHJpdi0+Y2RjbGtfZnJlcSkgewo+ICAJCS8qCj4gQEAgLTg2MzQsMzcgKzg2NDYsNiBAQCBz dGF0aWMgaW50IGlsa19tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAlyZXR1cm4gbWF4X3BpeGVsX3JhdGU7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQg aGFzd2VsbF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAt CQkJICAgICAgaW50IG1heF9waXhlbF9yYXRlKQo+IC17Cj4gLQlpbnQgY2RjbGs7Cj4gLQo+IC0J LyoKPiAtCSAqIEZJWE1FIHNob3VsZCBhbHNvIGFjY291bnQgZm9yIHBsYW5lIHJhdGlvCj4gLQkg KiBvbmNlIDY0YnBwIHBpeGVsIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KPiAtCSAqLwo+IC0JaWYg KG1heF9waXhlbF9yYXRlID4gNTQwMDAwKQo+IC0JCWNkY2xrID0gNjc1MDAwOwo+IC0JZWxzZSBp ZiAobWF4X3BpeGVsX3JhdGUgPiA0NTAwMDApCj4gLQkJY2RjbGsgPSA1NDAwMDA7Cj4gLQllbHNl IGlmIChtYXhfcGl4ZWxfcmF0ZSA+IDMzNzUwMCB8fCAhSVNfSFNXX1VMWChkZXZfcHJpdikpCj4g LQkJY2RjbGsgPSA0NTAwMDA7Cj4gLQllbHNlCj4gLQkJY2RjbGsgPSAzMzc1MDA7Cj4gLQo+IC0J LyoKPiAtCSAqIEZJWE1FIG1vdmUgdGhlIGNkY2xrIGNhY2x1bGF0aW9uIHRvCj4gLQkgKiBjb21w dXRlX2NvbmZpZygpIHNvIHdlIGNhbiBmYWlsIGdyYWNlZ3VsbHkuCj4gLQkgKi8KPiAtCWlmIChj ZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgewo+IC0JCURSTV9FUlJPUigicmVxdWVz dGVkIGNkY2xrICglZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+IC0JCQkgIGNkY2xr LCBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpOwo+IC0JCWNkY2xrID0gZGV2X3ByaXYtPm1heF9j ZGNsa19mcmVxOwo+IC0JfQo+IC0KPiAtCXJldHVybiBjZGNsazsKPiAtfQo+IC0KPiAgc3RhdGlj IHZvaWQgaGFzd2VsbF9zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xr KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IEBAIC04Nzg3LDIxICs4NzY4LDMzIEBAIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9z ZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQo+ICAJICAgICBjZGNs aywgZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBoYXN3ZWxs X21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkJIHVu c2lnbmVkICpwcmVwYXJlX3BpcGVzKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X2dsb2Jh bF9waXBlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJICAgICAgIHVuc2lnbmVkICpw cmVwYXJlX3BpcGVzLAo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGRpc2FibGVfcGlwZXMpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAtCWludCBtYXhfcGl4ZWxfcmF0ZSA9IGls a19tYXhfcGl4ZWxfcmF0ZShkZXZfcHJpdik7Cj4gKwlpbnQgbWF4X3BpeGNsazsKPiArCj4gKwkv KiB0aGlzIG1vZGVzZXQgaXMgdmFsaWQgb25seSBmb3IgVkxWLCBIU1csIGFuZCBCRFcgKi8KPiAr CWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FE V0VMTChkZXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJCW1heF9waXhjbGsgPSBpbnRlbF9tb2RlX21heF9waXhjbGsoZGV2X3ByaXYpOwo+ICsJZWxz ZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ICsJCW1heF9waXhj bGsgPSBpbGtfbWF4X3BpeGVsX3JhdGUoZGV2X3ByaXYpOwo+ICAKPiAtCWlmIChoYXN3ZWxsX2Nh bGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhlbF9yYXRlKSA9PQo+IC0JICAgIGRldl9wcml2LT5j ZGNsa19mcmVxKQo+ICsJaWYgKGludGVsX2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1heF9waXhjbGsp ID09IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBkaXNhYmxl L2VuYWJsZSBhbGwgY3VycmVudGx5IGFjdGl2ZSBwaXBlcyB3aGlsZSB3ZSBjaGFuZ2UgY2RjbGsg Ki8KPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKQo+IC0JCWlmIChjcnRjLT5iYXNl LmVuYWJsZWQpCj4gLQkJCSpwcmVwYXJlX3BpcGVzIHw9IDEgPDwgY3J0Yy0+cGlwZTsKPiArCQlp ZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlKQo+ICsJCQkqcHJlcGFyZV9waXBlcyB8PSAoMSA8 PCBjcnRjLT5waXBlKTsKPiArCj4gKwkvKiBtYXkgaGF2ZSBhZGRlZCBtb3JlIHRvIHByZXBhcmVf cGlwZXMgdGhhbiB3ZSBzaG91bGQgKi8KPiArCSpwcmVwYXJlX3BpcGVzICY9IH5kaXNhYmxlX3Bp cGVzOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxsX21vZGVzZXRfZ2xvYmFsX3Jlc291 cmNlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gQEAgLTg4MDksNyArODgwMiw3 IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfbW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0 ZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAgCWludCBtYXhfcGl4ZWxfcmF0ZSA9IGlsa19tYXhfcGl4ZWxfcmF0ZShkZXZf cHJpdik7Cj4gLQlpbnQgcmVxX2NkY2xrID0gaGFzd2VsbF9jYWxjX2NkY2xrKGRldl9wcml2LCBt YXhfcGl4ZWxfcmF0ZSk7Cj4gKwlpbnQgcmVxX2NkY2xrID0gaW50ZWxfY2FsY19jZGNsayhkZXZf cHJpdiwgbWF4X3BpeGVsX3JhdGUpOwo+ICAKPiAgCWlmIChyZXFfY2RjbGsgIT0gZGV2X3ByaXYt PmNkY2xrX2ZyZXEpIHsKPiAgCQlpZiAoSVNfQlJPQURXRUxMKGRldikpCj4gQEAgLTExOTMzLDE1 ICsxMTkyNiw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAkgKiBtb2RlIHNldCBvbiB0aGlzIGNydGMuICBGb3Igb3RoZXIgY3J0Y3Mgd2Ug bmVlZCB0byB1c2UgdGhlCj4gIAkgKiBhZGp1c3RlZF9tb2RlIGJpdHMgaW4gdGhlIGNydGMgZGly ZWN0bHkuCj4gIAkgKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfSEFTV0VMTChk ZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKSB7Cj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK PiAtCQkJdmFsbGV5dmlld19tb2Rlc2V0X2dsb2JhbF9waXBlcyhkZXYsICZwcmVwYXJlX3BpcGVz KTsKPiAtCQllbHNlCj4gLQkJCWhhc3dlbGxfbW9kZXNldF9nbG9iYWxfcGlwZXMoZGV2LCAmcHJl cGFyZV9waXBlcyk7Cj4gLQo+IC0JCS8qIG1heSBoYXZlIGFkZGVkIG1vcmUgdG8gcHJlcGFyZV9w aXBlcyB0aGFuIHdlIHNob3VsZCAqLwo+IC0JCXByZXBhcmVfcGlwZXMgJj0gfmRpc2FibGVfcGlw ZXM7Cj4gLQl9Cj4gKwlpbnRlbF9tb2Rlc2V0X2dsb2JhbF9waXBlcyhkZXYsICZwcmVwYXJlX3Bp cGVzLCBkaXNhYmxlX3BpcGVzKTsKPiAgCj4gIAlyZXQgPSBfX2ludGVsX3NldF9tb2RlX3NldHVw X3BsbHMoZGV2LCBtb2Rlc2V0X3BpcGVzLCBkaXNhYmxlX3BpcGVzKTsKPiAgCWlmIChyZXQpCj4g LS0gCj4gMS45LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK