From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH v2 2/2] drm/i915: Function per early graphics quirk Date: Wed, 27 Apr 2016 13:52:18 +0300 Message-ID: <1461754338.3986.31.camel@linux.intel.com> References: <1461324307-16019-1-git-send-email-joonas.lahtinen@linux.intel.com> <1461328105-13212-1-git-send-email-joonas.lahtinen@linux.intel.com> <1461328105-13212-2-git-send-email-joonas.lahtinen@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 5CC526EA5D for ; Wed, 27 Apr 2016 10:50:55 +0000 (UTC) In-Reply-To: <1461328105-13212-2-git-send-email-joonas.lahtinen@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: Intel graphics driver community testing & development Cc: x86@kernel.org, Ingo Molnar , "H. Peter Anvin" , Thomas Gleixner , Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org SGksCgpBZGRpbmcgeDg2IG1haW50YWluZXJzIGFzIENDIGFzIHRoZXkgd2VyZSBtaXNzaW5nIGZy b20gdGhlIG9yaWdpbmFsCnBhdGNoIGR1ZSB0byBzb21lIGNvbmZ1c2lvbiBpbiBiZXN0IHByYWN0 aWNlcy4KClRoaXMgcGF0Y2ggd2FzIG1lcmdlZCB0byB0aGUgZHJtLWludGVsLmdpdCBhZnRlciBy ZXZpZXdpbmcgYW5kIHRlc3RpbmcuCgpSZWdhcmRzLCBKb29uYXMKCk9uIHBlLCAyMDE2LTA0LTIy IGF0IDE1OjI4ICswMzAwLCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gTW92ZSBncmFwaGljcyBz dG9sZW4gbWVtb3J5IHJlbGF0ZWQgZWFybHkgcXVpcmsgaW50byBhIGZ1bmN0aW9uIHRvCj4gYWxs b3cgZWFzeSBhZGRpbmcgb2Ygb3RoZXIgZ3JhcGhpY3MgcXVpcmtzIHRvIGZpeCBtZW1vcnkgbWFw cyBvbgo+IG1hY2hpbmVzIHJ1bm5pbmcgb2xkIEJJT1MgdmVyc2lvbnMuCj4gCj4gV2hpbGUgYXQg aXQ7Cj4gLSBfZnVuY3MgLT4gX29wcyB0byBmb2xsb3cgZGUgZmFjdG8gbmFtaW5nCj4gLSBtYWtl IHRoZSBpdGVyYXRpb24gY29kZSB0YWQgbW9yZSByZWFkYWJsZQo+IC0gcmVtb3ZlIHVudXNlZCB2 YXJpYWJsZXMKPiAKPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IENjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AbGludXguaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5OiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4g wqBhcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMgfCAxODcgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiDCoDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25z KCspLCA4OSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2Vh cmx5LXF1aXJrcy5jIGIvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jCj4gaW5kZXggNzBl MGFiNi4uZDJmNzViNCAxMDA2NDQKPiAtLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtz LmMKPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKPiBAQCAtNDIzLDExICs0 MjMsNiBAQCBzdGF0aWMgc2l6ZV90IF9faW5pdCBjaHZfc3RvbGVuX3NpemUoaW50IG51bSwgaW50 IHNsb3QsIGludCBmdW5jKQo+IMKgCQlyZXR1cm4gKHNpemVfdCkoZ21zIC0gMHgxNyArIDkpICog TUIoNCk7Cj4gwqB9Cj4gwqAKPiAtc3RydWN0IGludGVsX3N0b2xlbl9mdW5jcyB7Cj4gLQlzaXpl X3QgKCpzaXplKShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpOwo+IC0JcGh5c19hZGRyX3Qg KCpiYXNlKShpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsIHNpemVfdCBzaXplKTsKPiAtfTsK PiAtCj4gwqBzdGF0aWMgc2l6ZV90IF9faW5pdCBnZW45X3N0b2xlbl9zaXplKGludCBudW0sIGlu dCBzbG90LCBpbnQgZnVuYykKPiDCoHsKPiDCoAl1MTYgZ21jaF9jdHJsOwo+IEBAIC00NDQsMTE1 ICs0MzksMTI5IEBAIHN0YXRpYyBzaXplX3QgX19pbml0IGdlbjlfc3RvbGVuX3NpemUoaW50IG51 bSwgaW50IHNsb3QsIGludCBmdW5jKQo+IMKgCQlyZXR1cm4gKHNpemVfdCkoZ21zIC0gMHhmMCAr IDEpICogTUIoNCk7Cj4gwqB9Cj4gwqAKPiAtdHlwZWRlZiBzaXplX3QgKCpzdG9sZW5fc2l6ZV9m bikoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKTsKPiArc3RydWN0IGludGVsX2Vhcmx5X29w cyB7Cj4gKwlzaXplX3QgKCpzdG9sZW5fc2l6ZSkoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5j KTsKPiArCXBoeXNfYWRkcl90ICgqc3RvbGVuX2Jhc2UpKGludCBudW0sIGludCBzbG90LCBpbnQg ZnVuYywgc2l6ZV90IHNpemUpOwo+ICt9Owo+IMKgCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfc3RvbGVuX2Z1bmNzIGk4MzBfc3RvbGVuX2Z1bmNzIF9faW5pdGNvbnN0ID0gewo+IC0JLmJh c2UgPSBpODMwX3N0b2xlbl9iYXNlLAo+IC0JLnNpemUgPSBpODMwX3N0b2xlbl9zaXplLAo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Vhcmx5X29wcyBpODMwX2Vhcmx5X29wcyBfX2luaXRj b25zdCA9IHsKPiArCS5zdG9sZW5fYmFzZSA9IGk4MzBfc3RvbGVuX2Jhc2UsCj4gKwkuc3RvbGVu X3NpemUgPSBpODMwX3N0b2xlbl9zaXplLAo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IGludGVsX3N0b2xlbl9mdW5jcyBpODQ1X3N0b2xlbl9mdW5jcyBfX2luaXRjb25zdCA9IHsK PiAtCS5iYXNlID0gaTg0NV9zdG9sZW5fYmFzZSwKPiAtCS5zaXplID0gaTgzMF9zdG9sZW5fc2l6 ZSwKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9lYXJseV9vcHMgaTg0NV9lYXJseV9vcHMg X19pbml0Y29uc3QgPSB7Cj4gKwkuc3RvbGVuX2Jhc2UgPSBpODQ1X3N0b2xlbl9iYXNlLAo+ICsJ LnN0b2xlbl9zaXplID0gaTgzMF9zdG9sZW5fc2l6ZSwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9zdG9sZW5fZnVuY3MgaTg1eF9zdG9sZW5fZnVuY3MgX19pbml0Y29u c3QgPSB7Cj4gLQkuYmFzZSA9IGk4NXhfc3RvbGVuX2Jhc2UsCj4gLQkuc2l6ZSA9IGdlbjNfc3Rv bGVuX3NpemUsCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZWFybHlfb3BzIGk4NXhfZWFy bHlfb3BzIF9faW5pdGNvbnN0ID0gewo+ICsJLnN0b2xlbl9iYXNlID0gaTg1eF9zdG9sZW5fYmFz ZSwKPiArCS5zdG9sZW5fc2l6ZSA9IGdlbjNfc3RvbGVuX3NpemUsCj4gwqB9Owo+IMKgCj4gLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfc3RvbGVuX2Z1bmNzIGk4NjVfc3RvbGVuX2Z1bmNzIF9f aW5pdGNvbnN0ID0gewo+IC0JLmJhc2UgPSBpODY1X3N0b2xlbl9iYXNlLAo+IC0JLnNpemUgPSBn ZW4zX3N0b2xlbl9zaXplLAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Vhcmx5X29wcyBp ODY1X2Vhcmx5X29wcyBfX2luaXRjb25zdCA9IHsKPiArCS5zdG9sZW5fYmFzZSA9IGk4NjVfc3Rv bGVuX2Jhc2UsCj4gKwkuc3RvbGVuX3NpemUgPSBnZW4zX3N0b2xlbl9zaXplLAo+IMKgfTsKPiDC oAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3N0b2xlbl9mdW5jcyBnZW4zX3N0b2xlbl9m dW5jcyBfX2luaXRjb25zdCA9IHsKPiAtCS5iYXNlID0gZ2VuM19zdG9sZW5fYmFzZSwKPiAtCS5z aXplID0gZ2VuM19zdG9sZW5fc2l6ZSwKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9lYXJs eV9vcHMgZ2VuM19lYXJseV9vcHMgX19pbml0Y29uc3QgPSB7Cj4gKwkuc3RvbGVuX2Jhc2UgPSBn ZW4zX3N0b2xlbl9iYXNlLAo+ICsJLnN0b2xlbl9zaXplID0gZ2VuM19zdG9sZW5fc2l6ZSwKPiDC oH07Cj4gwqAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9zdG9sZW5fZnVuY3MgZ2VuNl9z dG9sZW5fZnVuY3MgX19pbml0Y29uc3QgPSB7Cj4gLQkuYmFzZSA9IGdlbjNfc3RvbGVuX2Jhc2Us Cj4gLQkuc2l6ZSA9IGdlbjZfc3RvbGVuX3NpemUsCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZWFybHlfb3BzIGdlbjZfZWFybHlfb3BzIF9faW5pdGNvbnN0ID0gewo+ICsJLnN0b2xlbl9i YXNlID0gZ2VuM19zdG9sZW5fYmFzZSwKPiArCS5zdG9sZW5fc2l6ZSA9IGdlbjZfc3RvbGVuX3Np emUsCj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfc3RvbGVuX2Z1bmNz IGdlbjhfc3RvbGVuX2Z1bmNzIF9faW5pdGNvbnN0ID0gewo+IC0JLmJhc2UgPSBnZW4zX3N0b2xl bl9iYXNlLAo+IC0JLnNpemUgPSBnZW44X3N0b2xlbl9zaXplLAo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGludGVsX2Vhcmx5X29wcyBnZW44X2Vhcmx5X29wcyBfX2luaXRjb25zdCA9IHsKPiArCS5z dG9sZW5fYmFzZSA9IGdlbjNfc3RvbGVuX2Jhc2UsCj4gKwkuc3RvbGVuX3NpemUgPSBnZW44X3N0 b2xlbl9zaXplLAo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3N0b2xl bl9mdW5jcyBnZW45X3N0b2xlbl9mdW5jcyBfX2luaXRjb25zdCA9IHsKPiAtCS5iYXNlID0gZ2Vu M19zdG9sZW5fYmFzZSwKPiAtCS5zaXplID0gZ2VuOV9zdG9sZW5fc2l6ZSwKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9lYXJseV9vcHMgZ2VuOV9lYXJseV9vcHMgX19pbml0Y29uc3QgPSB7 Cj4gKwkuc3RvbGVuX2Jhc2UgPSBnZW4zX3N0b2xlbl9iYXNlLAo+ICsJLnN0b2xlbl9zaXplID0g Z2VuOV9zdG9sZW5fc2l6ZSwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9zdG9sZW5fZnVuY3MgY2h2X3N0b2xlbl9mdW5jcyBfX2luaXRjb25zdCA9IHsKPiAtCS5iYXNl ID0gZ2VuM19zdG9sZW5fYmFzZSwKPiAtCS5zaXplID0gY2h2X3N0b2xlbl9zaXplLAo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2Vhcmx5X29wcyBjaHZfZWFybHlfb3BzIF9faW5pdGNvbnN0 ID0gewo+ICsJLnN0b2xlbl9iYXNlID0gZ2VuM19zdG9sZW5fYmFzZSwKPiArCS5zdG9sZW5fc2l6 ZSA9IGNodl9zdG9sZW5fc2l6ZSwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBw Y2lfZGV2aWNlX2lkIGludGVsX3N0b2xlbl9pZHNbXSBfX2luaXRjb25zdCA9IHsKPiAtCUlOVEVM X0k4MzBfSURTKCZpODMwX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9JODQ1R19JRFMoJmk4NDVf c3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0k4NVhfSURTKCZpODV4X3N0b2xlbl9mdW5jcyksCj4g LQlJTlRFTF9JODY1R19JRFMoJmk4NjVfc3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0k5MTVHX0lE UygmZ2VuM19zdG9sZW5fZnVuY3MpLAo+IC0JSU5URUxfSTkxNUdNX0lEUygmZ2VuM19zdG9sZW5f ZnVuY3MpLAo+IC0JSU5URUxfSTk0NUdfSURTKCZnZW4zX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRF TF9JOTQ1R01fSURTKCZnZW4zX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9WTFZfTV9JRFMoJmdl bjZfc3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX1ZMVl9EX0lEUygmZ2VuNl9zdG9sZW5fZnVuY3Mp LAo+IC0JSU5URUxfUElORVZJRVdfSURTKCZnZW4zX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9J OTY1R19JRFMoJmdlbjNfc3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0czM19JRFMoJmdlbjNfc3Rv bGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0k5NjVHTV9JRFMoJmdlbjNfc3RvbGVuX2Z1bmNzKSwKPiAt CUlOVEVMX0dNNDVfSURTKCZnZW4zX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9HNDVfSURTKCZn ZW4zX3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9JUk9OTEFLRV9EX0lEUygmZ2VuM19zdG9sZW5f ZnVuY3MpLAo+IC0JSU5URUxfSVJPTkxBS0VfTV9JRFMoJmdlbjNfc3RvbGVuX2Z1bmNzKSwKPiAt CUlOVEVMX1NOQl9EX0lEUygmZ2VuNl9zdG9sZW5fZnVuY3MpLAo+IC0JSU5URUxfU05CX01fSURT KCZnZW42X3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9JVkJfTV9JRFMoJmdlbjZfc3RvbGVuX2Z1 bmNzKSwKPiAtCUlOVEVMX0lWQl9EX0lEUygmZ2VuNl9zdG9sZW5fZnVuY3MpLAo+IC0JSU5URUxf SFNXX0RfSURTKCZnZW42X3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9IU1dfTV9JRFMoJmdlbjZf c3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0JEV19NX0lEUygmZ2VuOF9zdG9sZW5fZnVuY3MpLAo+ IC0JSU5URUxfQkRXX0RfSURTKCZnZW44X3N0b2xlbl9mdW5jcyksCj4gLQlJTlRFTF9DSFZfSURT KCZjaHZfc3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX1NLTF9JRFMoJmdlbjlfc3RvbGVuX2Z1bmNz KSwKPiAtCUlOVEVMX0JYVF9JRFMoJmdlbjlfc3RvbGVuX2Z1bmNzKSwKPiAtCUlOVEVMX0tCTF9J RFMoJmdlbjlfc3RvbGVuX2Z1bmNzKSwKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNl X2lkIGludGVsX2Vhcmx5X2lkc1tdIF9faW5pdGNvbnN0ID0gewo+ICsJSU5URUxfSTgzMF9JRFMo Jmk4MzBfZWFybHlfb3BzKSwKPiArCUlOVEVMX0k4NDVHX0lEUygmaTg0NV9lYXJseV9vcHMpLAo+ ICsJSU5URUxfSTg1WF9JRFMoJmk4NXhfZWFybHlfb3BzKSwKPiArCUlOVEVMX0k4NjVHX0lEUygm aTg2NV9lYXJseV9vcHMpLAo+ICsJSU5URUxfSTkxNUdfSURTKCZnZW4zX2Vhcmx5X29wcyksCj4g KwlJTlRFTF9JOTE1R01fSURTKCZnZW4zX2Vhcmx5X29wcyksCj4gKwlJTlRFTF9JOTQ1R19JRFMo JmdlbjNfZWFybHlfb3BzKSwKPiArCUlOVEVMX0k5NDVHTV9JRFMoJmdlbjNfZWFybHlfb3BzKSwK PiArCUlOVEVMX1ZMVl9NX0lEUygmZ2VuNl9lYXJseV9vcHMpLAo+ICsJSU5URUxfVkxWX0RfSURT KCZnZW42X2Vhcmx5X29wcyksCj4gKwlJTlRFTF9QSU5FVklFV19JRFMoJmdlbjNfZWFybHlfb3Bz KSwKPiArCUlOVEVMX0k5NjVHX0lEUygmZ2VuM19lYXJseV9vcHMpLAo+ICsJSU5URUxfRzMzX0lE UygmZ2VuM19lYXJseV9vcHMpLAo+ICsJSU5URUxfSTk2NUdNX0lEUygmZ2VuM19lYXJseV9vcHMp LAo+ICsJSU5URUxfR000NV9JRFMoJmdlbjNfZWFybHlfb3BzKSwKPiArCUlOVEVMX0c0NV9JRFMo JmdlbjNfZWFybHlfb3BzKSwKPiArCUlOVEVMX0lST05MQUtFX0RfSURTKCZnZW4zX2Vhcmx5X29w cyksCj4gKwlJTlRFTF9JUk9OTEFLRV9NX0lEUygmZ2VuM19lYXJseV9vcHMpLAo+ICsJSU5URUxf U05CX0RfSURTKCZnZW42X2Vhcmx5X29wcyksCj4gKwlJTlRFTF9TTkJfTV9JRFMoJmdlbjZfZWFy bHlfb3BzKSwKPiArCUlOVEVMX0lWQl9NX0lEUygmZ2VuNl9lYXJseV9vcHMpLAo+ICsJSU5URUxf SVZCX0RfSURTKCZnZW42X2Vhcmx5X29wcyksCj4gKwlJTlRFTF9IU1dfRF9JRFMoJmdlbjZfZWFy bHlfb3BzKSwKPiArCUlOVEVMX0hTV19NX0lEUygmZ2VuNl9lYXJseV9vcHMpLAo+ICsJSU5URUxf QkRXX01fSURTKCZnZW44X2Vhcmx5X29wcyksCj4gKwlJTlRFTF9CRFdfRF9JRFMoJmdlbjhfZWFy bHlfb3BzKSwKPiArCUlOVEVMX0NIVl9JRFMoJmNodl9lYXJseV9vcHMpLAo+ICsJSU5URUxfU0tM X0lEUygmZ2VuOV9lYXJseV9vcHMpLAo+ICsJSU5URUxfQlhUX0lEUygmZ2VuOV9lYXJseV9vcHMp LAo+ICsJSU5URUxfS0JMX0lEUygmZ2VuOV9lYXJseV9vcHMpLAo+IMKgfTsKPiDCoAo+IC1zdGF0 aWMgdm9pZCBfX2luaXQgaW50ZWxfZ3JhcGhpY3Nfc3RvbGVuKGludCBudW0sIGludCBzbG90LCBp bnQgZnVuYykKPiArc3RhdGljIHZvaWQgX19pbml0Cj4gK2ludGVsX2dyYXBoaWNzX3N0b2xlbihp bnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCj4gKwkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0 IGludGVsX2Vhcmx5X29wcyAqZWFybHlfb3BzKQo+IMKgewo+ICsJcGh5c19hZGRyX3QgYmFzZTsK PiDCoAlzaXplX3Qgc2l6ZTsKPiArCj4gKwlzaXplID0gZWFybHlfb3BzLT5zdG9sZW5fc2l6ZShu dW0sIHNsb3QsIGZ1bmMpOwo+ICsJYmFzZSA9IGVhcmx5X29wcy0+c3RvbGVuX2Jhc2UobnVtLCBz bG90LCBmdW5jLCBzaXplKTsKPiArCj4gKwlpZiAoIXNpemUgfHwgIWJhc2UpCj4gKwkJcmV0dXJu Owo+ICsKPiArCXByaW50ayhLRVJOX0lORk8gIlJlc2VydmluZyBJbnRlbCBncmFwaGljcyBzdG9s ZW4gbWVtb3J5IGF0ICIKPiArCcKgwqDCoMKgwqDCoMKgIjB4JWxseC0weCVsbHhcbiIsIGJhc2Us IGJhc2UgKyBzaXplIC0gMSk7Cj4gKwo+ICsJLyogTWFyayB0aGlzIHNwYWNlIGFzIHJlc2VydmVk ICovCj4gKwllODIwX2FkZF9yZWdpb24oYmFzZSwgc2l6ZSwgRTgyMF9SRVNFUlZFRCk7Cj4gKwlz YW5pdGl6ZV9lODIwX21hcChlODIwLm1hcCwgQVJSQVlfU0laRShlODIwLm1hcCksICZlODIwLm5y X21hcCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9faW5pdCBpbnRlbF9ncmFwaGljc19xdWly a3MoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50 ZWxfZWFybHlfb3BzICplYXJseV9vcHM7Cj4gKwl1MTYgZGV2aWNlOwo+IMKgCWludCBpOwo+IC0J cGh5c19hZGRyX3Qgc3RhcnQ7Cj4gLQl1MTYgZGV2aWNlLCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsK PiDCoAo+IMKgCWRldmljZSA9IHJlYWRfcGNpX2NvbmZpZ18xNihudW0sIHNsb3QsIGZ1bmMsIFBD SV9ERVZJQ0VfSUQpOwo+IC0Jc3VidmVuZG9yID0gcmVhZF9wY2lfY29uZmlnXzE2KG51bSwgc2xv dCwgZnVuYywKPiAtCQkJCcKgwqDCoMKgwqDCoMKgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQpOwo+ IC0Jc3ViZGV2aWNlID0gcmVhZF9wY2lfY29uZmlnXzE2KG51bSwgc2xvdCwgZnVuYywgUENJX1NV QlNZU1RFTV9JRCk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW50ZWxfc3Rv bGVuX2lkcyk7IGkrKykgewo+IC0JCWlmIChpbnRlbF9zdG9sZW5faWRzW2ldLmRldmljZSA9PSBk ZXZpY2UpIHsKPiAtCQkJY29uc3Qgc3RydWN0IGludGVsX3N0b2xlbl9mdW5jcyAqc3RvbGVuX2Z1 bmNzID0KPiAtCQkJCShjb25zdCBzdHJ1Y3QgaW50ZWxfc3RvbGVuX2Z1bmNzICopaW50ZWxfc3Rv bGVuX2lkc1tpXS5kcml2ZXJfZGF0YTsKPiAtCQkJc2l6ZSA9IHN0b2xlbl9mdW5jcy0+c2l6ZShu dW0sIHNsb3QsIGZ1bmMpOwo+IC0JCQlzdGFydCA9IHN0b2xlbl9mdW5jcy0+YmFzZShudW0sIHNs b3QsIGZ1bmMsIHNpemUpOwo+IC0JCQlpZiAoc2l6ZSAmJiBzdGFydCkgewo+IC0JCQkJcHJpbnRr KEtFUk5fSU5GTyAiUmVzZXJ2aW5nIEludGVsIGdyYXBoaWNzIHN0b2xlbiBtZW1vcnkgYXQgMHgl bGx4LTB4JWxseFxuIiwKPiAtCQkJCcKgwqDCoMKgwqDCoMKgc3RhcnQsIHN0YXJ0ICsgc2l6ZSAt IDEpOwo+IC0JCQkJLyogTWFyayB0aGlzIHNwYWNlIGFzIHJlc2VydmVkICovCj4gLQkJCQllODIw X2FkZF9yZWdpb24oc3RhcnQsIHNpemUsIEU4MjBfUkVTRVJWRUQpOwo+IC0JCQkJc2FuaXRpemVf ZTgyMF9tYXAoZTgyMC5tYXAsCj4gLQkJCQkJCcKgwqBBUlJBWV9TSVpFKGU4MjAubWFwKSwKPiAt CQkJCQkJwqDCoCZlODIwLm5yX21hcCk7Cj4gLQkJCX0KPiAtCQkJcmV0dXJuOwo+IC0JCX0KPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnRlbF9lYXJseV9pZHMpOyBpKyspIHsK PiArCQlrZXJuZWxfdWxvbmdfdCBkcml2ZXJfZGF0YSA9IGludGVsX2Vhcmx5X2lkc1tpXS5kcml2 ZXJfZGF0YTsKPiArCj4gKwkJaWYgKGludGVsX2Vhcmx5X2lkc1tpXS5kZXZpY2UgIT0gZGV2aWNl KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJZWFybHlfb3BzID0gKHR5cGVvZihlYXJseV9vcHMp KWRyaXZlcl9kYXRhOwo+ICsKPiArCQlpbnRlbF9ncmFwaGljc19zdG9sZW4obnVtLCBzbG90LCBm dW5jLCBlYXJseV9vcHMpOwo+ICsKPiArCQlyZXR1cm47Cj4gwqAJfQo+IMKgfQo+IMKgCj4gQEAg LTYwMSw3ICs2MTAsNyBAQCBzdGF0aWMgc3RydWN0IGNoaXBzZXQgZWFybHlfcXJrW10gX19pbml0 ZGF0YSA9IHsKPiDCoAl7IFBDSV9WRU5ET1JfSURfSU5URUwsIDB4MzQwNiwgUENJX0NMQVNTX0JS SURHRV9IT1NULAo+IMKgCcKgwqBQQ0lfQkFTRV9DTEFTU19CUklER0UsIDAsIGludGVsX3JlbWFw cGluZ19jaGVjayB9LAo+IMKgCXsgUENJX1ZFTkRPUl9JRF9JTlRFTCwgUENJX0FOWV9JRCwgUENJ X0NMQVNTX0RJU1BMQVlfVkdBLCBQQ0lfQU5ZX0lELAo+IC0JwqDCoFFGTEFHX0FQUExZX09OQ0Us IGludGVsX2dyYXBoaWNzX3N0b2xlbiB9LAo+ICsJwqDCoFFGTEFHX0FQUExZX09OQ0UsIGludGVs X2dyYXBoaWNzX3F1aXJrcyB9LAo+IMKgCS8qCj4gwqAJwqAqIEhQRVQgb24gdGhlIGN1cnJlbnQg dmVyc2lvbiBvZiB0aGUgQmF5dHJhaWwgcGxhdGZvcm0gaGFzIGFjY3VyYWN5Cj4gwqAJwqAqIHBy b2JsZW1zOiBpdCB3aWxsIGhhbHQgaW4gZGVlcCBpZGxlIHN0YXRlIC0gc28gd2UgZGlzYWJsZSBp dC4KLS0gCkpvb25hcyBMYWh0aW5lbgpPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpJbnRl bCBDb3Jwb3JhdGlvbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK